de.sciss.synth

Type members

Classlikes

sealed
trait AddAction

Add-actions are used by the server to determine where to place a node with respect to other nodes. They form an enumeration of integers which are represented by case objects being subclasses of this abstract class.

Add-actions are used by the server to determine where to place a node with respect to other nodes. They form an enumeration of integers which are represented by case objects being subclasses of this abstract class.

The following actions are known:

Utility trait that defines a rate method returning audio.

Utility trait that defines a rate method returning audio.

Utility trait that defines a rate method returning control.

Utility trait that defines a rate method returning control.

Utility trait that defines a rate method returning demand.

Utility trait that defines a rate method returning demand.

object DoneAction
Companion
class
sealed
trait DoneAction extends Product

An enumeration of special codes used by some UGens to issue a related action when they they are "done". For example, a PlayBuf can be instructed to free its enclosing synth when the buffer has been played to the end, using the freeSelf done-action.

An enumeration of special codes used by some UGens to issue a related action when they they are "done". For example, a PlayBuf can be instructed to free its enclosing synth when the buffer has been played to the end, using the freeSelf done-action.

The following actions are known:

Companion
object
object GE

The UGen graph is constructed from interconnecting graph elements (GE). Graph elements can be decomposed into a sequence of UGenIn objects. Graph elements are ordinary UGens, UGen proxies, Control proxies, Constants, and collections of UGen inputs which result from multichannel expansion (UGenInSeq).

The UGen graph is constructed from interconnecting graph elements (GE). Graph elements can be decomposed into a sequence of UGenIn objects. Graph elements are ordinary UGens, UGen proxies, Control proxies, Constants, and collections of UGen inputs which result from multichannel expansion (UGenInSeq).

Companion
class
trait GE extends Product

The main trait used in synthesis graph, a graph element, abbreviated as GE.

The main trait used in synthesis graph, a graph element, abbreviated as GE.

Graph elements are characterized by having a calculation rate (possibly unknown), and they embody future UGens, which are created by invoking the expand method. For each ugen in SuperCollider, there is a corresponding graph element defined in the ugen package, and these elements take again graph elements as arguments. Multi-channel expansion is thus deferred to the transition from SynthGraph to UGenGraph.

Currently, also a lot of unary and binary operations are directly defined on the GE trait, although they might go into a separate GEOps implicit class in future versions.

See also
Companion
object

Marks a ugen which sets a special done flag that can be read by ugens such as Done.

Marks a ugen which sets a special done flag that can be read by ugens such as Done.

Marks a ugen which has side effects such as writing to a bus or buffer, communicating back to the client, etc. Only side-effect ugens are valid roots of the ugen graph, that way other orphaned non-side-effect ugens are automatically removed from the graph.

Marks a ugen which has side effects such as writing to a bus or buffer, communicating back to the client, etc. Only side-effect ugens are valid roots of the ugen graph, that way other orphaned non-side-effect ugens are automatically removed from the graph.

Marks a ugen which is individual, that is two instances of that ugen are different even if all inputs are the same. This is the case for example for all ugens that depend on the random seed (as indicated by the sub-type HasRandSeed) or which mix onto buses or buffers (e.g. RecordBuf).

Marks a ugen which is individual, that is two instances of that ugen are different even if all inputs are the same. This is the case for example for all ugens that depend on the random seed (as indicated by the sub-type HasRandSeed) or which mix onto buses or buffers (e.g. RecordBuf).

Note that for example BufWr could be considered not individual as two identically parametrized BufWr instances produce exactly the same behaviour as one of them. However, they are in certain spots of the UGen graph in which they could be behave differently, for example if the computation order is BufWr -> BufRd -> BufRd. We thus defensively mark every ugen as individual which writes to a Buffer or Bus.

object Lazy
Companion
class
trait Lazy extends Product

Elements implementing the Lazy trait may participate in the building of a SynthGraph body. They can be added to the current graph by calling SynthGraph.builder.addLazy. Then, when the graph is expanded, the force method is called on those registered elements, allowing them to either spawn new graph elements or actually expand to UGens which can be added to the ugen graph builder argument.

Elements implementing the Lazy trait may participate in the building of a SynthGraph body. They can be added to the current graph by calling SynthGraph.builder.addLazy. Then, when the graph is expanded, the force method is called on those registered elements, allowing them to either spawn new graph elements or actually expand to UGens which can be added to the ugen graph builder argument.

In most cases, lazy elements will expanded to ugens, and thus the subtype Lazy.Expander is the most convenient way to implement this trait, as it already does most of the logic, and provides for GEs expand method.

See also
Companion
object
object MaybeRate
Companion
class
sealed abstract
class MaybeRate extends Product

This trait denotes an optional server calculation rate. Either the rate is explicit, Rate, or it is undefined, UndefinedRate. In the latter case, a rate is implicitly derived from the input arguments of a UGen.

This trait denotes an optional server calculation rate. Either the rate is explicit, Rate, or it is undefined, UndefinedRate. In the latter case, a rate is implicitly derived from the input arguments of a UGen.

Companion
object
object Rate
Companion
class
sealed abstract
class Rate extends MaybeRate with Ordered[Rate]

The server calculation rate of a UGen or a UGen output.

The server calculation rate of a UGen or a UGen output.

The following rates are known:

  • scalar (only calculated once when a Synth is initialized.
  • control (one value per block)
  • audio (full audio sample rate)
  • demand (calculation specially triggered on demand)
Companion
object
trait RawUGen

The raw UGen information as it is found in a final UGenGraph.

The raw UGen information as it is found in a final UGenGraph.

Utility trait that defines a rate method returning scalar.

Utility trait that defines a rate method returning scalar.

object SynthGraph
Companion
class
final case
class SynthGraph(sources: IndexedSeq[Lazy], controlProxies: Set[ControlProxyLike])
Companion
object
sealed
trait UGen extends RawUGen with Product

A UGen during graph building process is a more rich thing than RawUGen: it implements equality based on isIndividual status and may be omitted from the final graph based on hasSideEffect status.

A UGen during graph building process is a more rich thing than RawUGen: it implements equality based on isIndividual status and may be omitted from the final graph based on hasSideEffect status.

Companion
object
object UGen
Companion
class
object UGenGraph
Companion
class
final case
class UGenGraph(constants: IndexedSeq[Float], controlValues: IndexedSeq[Float], controlNames: IndexedSeq[(String, Int)], ugens: IndexedSeq[IndexedUGen])
Companion
object
sealed
trait UGenIn extends UGenInLike

An element that can be used as an input to a UGen. This is after multi-channel-expansion, hence implementing classes are SingleOutUGen, UGenOutProxy, ControlOutProxy, and Constant.

An element that can be used as an input to a UGen. This is after multi-channel-expansion, hence implementing classes are SingleOutUGen, UGenOutProxy, ControlOutProxy, and Constant.

object UGenInLike
Companion
class
sealed
trait UGenInLike extends GE

A super-trait that contains UGenIn and UGenInGroup.

A super-trait that contains UGenIn and UGenInGroup.

Companion
object
object UGenSource
Companion
class
sealed abstract
class UGenSource[U] extends Expander[U]
Companion
object
object UGenSpec
Companion
class
final case
class UGenSpec(name: String, attr: Set[Attribute], rates: Rates, args: IndexedSeq[Argument], inputs: IndexedSeq[Input], outputs: IndexedSeq[Output], doc: Option[Doc], elemOption: Option[String])

Specification of a Unit Generator.

Specification of a Unit Generator.

Value Params
args

the constructor arguments of the UGen representation. This is the interface for the client-side instantiation and may include types other than GE, for example integers for fixed number of channels, etc., as well as definitions for default values.

attr

a set of attributes which characterize the UGen, such as resource usage or uniqueness

doc

optional text documentation

elemOption

diverging name of the graph element, as seen by the client

inputs

the inputs as passed to the underlying UGen (server-side object). Inputs are things which expand to UGenInLike elements. Typically they correspond to client-side args arguments. The order of this sequence must be correctly reflecting the UGen plugin interface, whereas the order of the args sequence may diverge for an improved user interface.

name

the name of the unit generator, as seen by the server

outputs

a list of output specifications

rates

at which calculation rates the UGen runs, and whether the rate is implied

Companion
object
case
object UndefinedRate extends MaybeRate

An undefined rate signifies that a rate is either unknown or will be implicitly resolved.

An undefined rate signifies that a rate is either unknown or will be implicitly resolved.

case
object addAfter extends AddAction

An AddAction with id 3, indicating that a node should be added to the same group as the target node, right after it.

An AddAction with id 3, indicating that a node should be added to the same group as the target node, right after it.

case
object addBefore extends AddAction

An AddAction with id 2, indicating that a node should be added to the same group as the target node, right before it.

An AddAction with id 2, indicating that a node should be added to the same group as the target node, right before it.

case
object addReplace extends AddAction

An AddAction with id 4, indicating that a node should replace an existing node, that is take the target node's exact position in the tree.

An AddAction with id 4, indicating that a node should replace an existing node, that is take the target node's exact position in the tree.

case
object addToHead extends AddAction

An AddAction with id 0, indicating that a node should be add to the head of of a target group.

An AddAction with id 0, indicating that a node should be add to the head of of a target group.

case
object addToTail extends AddAction

An AddAction with id 1, indicating that a node should be add to the tail of of a target group.

An AddAction with id 1, indicating that a node should be add to the tail of of a target group.

case
object audio extends Bus

Audio rated calculation (id 1) means that values are calculated at the audio sampling rate. For example, if the server and sound hardware run at 44.1 kHz, then 44100 samples are calculated per second. On the server, audio rate calculation is performed in chunks, depending on the block size setting.

Audio rated calculation (id 1) means that values are calculated at the audio sampling rate. For example, if the server and sound hardware run at 44.1 kHz, then 44100 samples are calculated per second. On the server, audio rate calculation is performed in chunks, depending on the block size setting.

case
object control extends Bus

Control rated calculation (id 1) means that one value is calculated per block. With a default block size of 64, for every 64 audio samples one control value is calculated. Thus, if the sampling rate is 44.1 kHz, the control rate would be 44100/64 = approx. 689 per second.

Control rated calculation (id 1) means that one value is calculated per block. With a default block size of 64, for every 64 audio samples one control value is calculated. Thus, if the sampling rate is 44.1 kHz, the control rate would be 44100/64 = approx. 689 per second.

case
object demand extends Rate

Demand rated calculation (id 1) means that the UGen is queried by trigger through a special UGen such as Demand.

Demand rated calculation (id 1) means that the UGen is queried by trigger through a special UGen such as Demand.

case
object doNothing extends DoneAction

A DoneAction with id 0, signifying that nothing should be done in particular when the UGen is finished.

A DoneAction with id 0, signifying that nothing should be done in particular when the UGen is finished.

case
object freeAllInGroup extends DoneAction

A DoneAction with id 13, freeing the enclosing synth along with all other nodes in the group when the UGen is finished (i.e. does a freeAll on the group)

A DoneAction with id 13, freeing the enclosing synth along with all other nodes in the group when the UGen is finished (i.e. does a freeAll on the group)

case
object freeGroup extends DoneAction

A DoneAction with id 14, freeing the enclosing group when the UGen is finished, and hence also frees this synth along with all other nodes in the group.

A DoneAction with id 14, freeing the enclosing group when the UGen is finished, and hence also frees this synth along with all other nodes in the group.

case
object freeSelf extends DoneAction

A DoneAction with id 2, freeing the enclosing synth when the UGen is finished.

A DoneAction with id 2, freeing the enclosing synth when the UGen is finished.

case

A DoneAction with id 9, freeing the enclosing synth and pauses the predecessor node when the UGen is finished.

A DoneAction with id 9, freeing the enclosing synth and pauses the predecessor node when the UGen is finished.

case

A DoneAction with id 10, freeing the enclosing synth and pauses the successor node when the UGen is finished.

A DoneAction with id 10, freeing the enclosing synth and pauses the successor node when the UGen is finished.

case
object freeSelfPred extends DoneAction

A DoneAction with id 3, freeing the enclosing synth as well as the predecessor node when the UGen is finished.

A DoneAction with id 3, freeing the enclosing synth as well as the predecessor node when the UGen is finished.

case

A DoneAction with id 5, freeing the enclosing synth when the UGen is finished.  If the predecessor node is a group, calls freeAll on that group. If the predecessor node is a synth, frees that synth.

A DoneAction with id 5, freeing the enclosing synth when the UGen is finished.  If the predecessor node is a group, calls freeAll on that group. If the predecessor node is a synth, frees that synth.

case

A DoneAction with id 11, freeing the enclosing synth when the UGen is finished. If the predecessor node is a group, calls deepFree on that group. If the predecessor node is a synth, frees that synth.

A DoneAction with id 11, freeing the enclosing synth when the UGen is finished. If the predecessor node is a group, calls deepFree on that group. If the predecessor node is a synth, frees that synth.

case

A DoneAction with id 15, freeing the enclosing synth and resuming the successor node when the UGen is finished.

A DoneAction with id 15, freeing the enclosing synth and resuming the successor node when the UGen is finished.

case
object freeSelfSucc extends DoneAction

A DoneAction with id 4, freeing the enclosing synth as well as the successor node when the UGen is finished.

A DoneAction with id 4, freeing the enclosing synth as well as the successor node when the UGen is finished.

case

A DoneAction with id 6, freeing the enclosing synth when the UGen is finished.  If the successor node is a group, calls freeAll on  that group. If the successor node is a synth, frees that synth.

A DoneAction with id 6, freeing the enclosing synth when the UGen is finished.  If the successor node is a group, calls freeAll on  that group. If the successor node is a synth, frees that synth.

case

A DoneAction with id 12, freeing the enclosing synth when the UGen is finished.  If the successor node is a group, calls deepFree on that group. If the successor node is a synth,  frees that synth.

A DoneAction with id 12, freeing the enclosing synth when the UGen is finished.  If the successor node is a group, calls deepFree on that group. If the successor node is a synth,  frees that synth.

case
object freeSelfToHead extends DoneAction

A DoneAction with id 7, freeing the enclosing synth and all preceding nodes in its group when the UGen is finished.

A DoneAction with id 7, freeing the enclosing synth and all preceding nodes in its group when the UGen is finished.

case
object freeSelfToTail extends DoneAction

A DoneAction with id 8, freeing the enclosing synth and all succeeding nodes  in its group when the UGen is finished.

A DoneAction with id 8, freeing the enclosing synth and all succeeding nodes  in its group when the UGen is finished.

case
object pauseSelf extends DoneAction

A DoneAction with id 1, pausing the enclosing synth when the UGen is finished.

A DoneAction with id 1, pausing the enclosing synth when the UGen is finished.

case
object scalar extends Rate

Scalar rated calculation (id 0) means that a value is only calculated once when a Synth is initialized.

Scalar rated calculation (id 0) means that a value is only calculated once when a Synth is initialized.