package synth
The synth package provides some extension methods. In particular converting numbers to
constant graph elements, operators on graph elements and allowing succinct creation of named controls.
Furthermore, it contains the play function to quickly test graph functions.
- Alphabetic
- By Inheritance
- synth
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Type Members
-
sealed
trait
AddAction extends AnyRef
Add-actions are used by the server to determine where to place a node with respect to other nodes.
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:
0- addToHead1- addToTail2- addBefore3- addAfter4- addReplace
- final case class AllocatorExhausted(reason: String) extends RuntimeException with Product with Serializable
- final case class AudioBus(server: Server, index: Int, numChannels: Int) extends Bus with Product with Serializable
-
trait
AudioRated extends AnyRef
Utility trait that defines a
ratemethod returningaudio. - final case class Buffer(server: Server, id: Int) extends ModelImpl[BufferInfo] with Product with Serializable
- final class BufferManager extends ModelImpl[BufferInfo]
- sealed trait Bus extends AnyRef
- final case class Completion[-A](message: Option[(A) ⇒ Packet], action: Option[(A) ⇒ Unit]) extends Product with Serializable
-
sealed
trait
ControlABusMap extends AnyRef
A mapping from an audio bus to a synth control.
A mapping from an audio bus to a synth control.
Note that a mapped control acts similar to an
InFeedbackUGen in that it does not matter whether the audio bus was written before the execution of the synth whose control is mapped or not. If it was written before, no delay is introduced, otherwise a delay of one control block is introduced.- See also
- final case class ControlBus(server: Server, index: Int, numChannels: Int) extends Bus with Product with Serializable
- final case class ControlFillRange extends Product with Serializable
-
sealed
trait
ControlKBusMap extends AnyRef
A mapping from a control-rate bus to a synth control.
-
trait
ControlRated extends AnyRef
Utility trait that defines a
ratemethod returningcontrol. - sealed trait ControlSet extends AnyRef
- sealed trait Curve extends AnyRef
-
trait
DemandRated extends AnyRef
Utility trait that defines a
ratemethod returningdemand. -
sealed
trait
DoneAction extends Product
An enumeration of special codes used by some UGens to issue a related action when they they are "done".
An enumeration of special codes used by some UGens to issue a related action when they they are "done". For example, a
PlayBufcan 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:
0- doNothing1- pauseSelf2- freeSelf3- freeSelfPred4- freeSelfSucc5- freeSelfPredAll6- freeSelfSuccAll7- freeSelfToHead8- freeSelfToTail9- freeSelfPausePred10- freeSelfPauseSucc11- freeSelfPredDeep12- freeSelfSuccDeep13- freeAllInGroup14- freeGroup
-
final
case class
FillRange(index: Int, num: Int, value: Float) extends Product with Serializable
A fill range for control buses or buffers.
A fill range for control buses or buffers.
- index
sample offset into the buffer or channel offset into the bus. for multi channel buffers, multiply the frame offset by the number of channels
- num
the number of samples to fill. for multi channel buffers, multiple the number of frames by the number of channels
- value
the value to write to the bus or buffer in the given range
-
final
case class
FillValue(index: Int, value: Float) extends Product with Serializable
A tuple consisting of an index and value for that index.
A tuple consisting of an index and value for that index.
- index
sample offset into the buffer or channel offset into the bus. for multi channel buffers, multiply the frame offset by the number of channels
- value
the value to write to the bus or buffer in the given range
-
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
expandmethod. For each ugen in SuperCollider, there is a corresponding graph element defined in theugenpackage, and these elements take again graph elements as arguments. Multi-channel expansion is thus deferred to the transition fromSynthGraphtoUGenGraph.Currently, also a lot of unary and binary operations are directly defined on the
GEtrait, although they might go into a separateGEOpsimplicit class in future versions.- See also
-
final
class
GEOps extends AnyVal
GEOpsare operations for graph elements (GE).GEOpsare operations for graph elements (GE). Instead of having these operations directly defined in each UGen, which is a huge list, they appear here as extension methods. Therefore, you can writeSinOsc.ar.linLin ...as iflinLinwas defined forGEorSinOsc.Many of these operations are defined for constant numbers, as well, for example you can write
0.5.linLin .... These operations are defined separately.- See also
- final class GraphFunction[A] extends AnyRef
- final case class Group(server: Server, id: Int) extends Node with Product with Serializable
-
trait
HasDoneFlag extends AnyRef
Marks a ugen which sets a special done flag that can be read by ugens such as
Done. -
trait
HasSideEffect extends AnyRef
Marks a ugen which has side effects such as writing to a bus or buffer, communicating back to the client, etc.
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.
-
trait
IsIndividual extends AnyRef
Marks a ugen which is individual, that is two instances of that ugen are different even if all inputs are the same.
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
BufWrcould 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 isBufWr->BufRd->BufRd. We thus defensively mark every ugen as individual which writes to a Buffer or Bus. -
trait
Lazy extends Product
Elements implementing the
Lazytrait may participate in the building of aSynthGraphbody.Elements implementing the
Lazytrait may participate in the building of aSynthGraphbody. They can be added to the current graph by callingSynthGraph.builder.addLazy. Then, when the graph is expanded, theforcemethod is called on those registered elements, allowing them to either spawn new graph elements or actually expand toUGens which can be added to the ugen graph builder argument.In most cases, lazy elements will expanded to ugens, and thus the subtype
Lazy.Expanderis the most convenient way to implement this trait, as it already does most of the logic, and provides forGEsexpandmethod.- See also
-
sealed abstract
class
MaybeRate extends Product
This trait denotes an optional server calculation rate.
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.
- abstract class Node extends ModelImpl[NodeChange]
- final class NodeIdAllocator extends AnyRef
- final class NodeManager extends ModelImpl[Update]
-
sealed abstract
class
Rate extends MaybeRate with Ordered[Rate]
The server calculation rate of a UGen or a UGen output.
-
trait
RawUGen extends AnyRef
The raw UGen information as it is found in a final
UGenGraph. - final class RichDouble extends AnyVal with NAryGEOps
- final class RichFloat extends AnyVal with NAryGEOps
- final class RichInt extends AnyVal with NAryGEOps
-
trait
ScalarRated extends AnyRef
Utility trait that defines a
ratemethod returningscalar. - trait Server extends ServerLike with Model[Update]
- trait ServerConnection extends ServerLike with Model[Condition]
- sealed trait ServerLike extends AnyRef
- final case class Synth(server: Server, id: Int) extends Node with Product with Serializable
- final case class SynthDef(name: String, graph: UGenGraph) extends Product with Serializable
- final case class SynthGraph(sources: IndexedSeq[Lazy], controlProxies: Set[ControlProxyLike]) extends Product with Serializable
-
sealed
trait
UGen extends RawUGen with Product
A UGen during graph building process is a more rich thing than
RawUGen: it implements equality based onisIndividualstatus and may be omitted from the final graph based onhasSideEffectstatus. - final case class UGenGraph(constants: IndexedSeq[Float], controlValues: IndexedSeq[Float], controlNames: IndexedSeq[(String, Int)], ugens: IndexedSeq[IndexedUGen]) extends Product with Serializable
-
sealed
trait
UGenIn extends UGenInLike
An element that can be used as an input to a UGen.
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.
-
sealed
trait
UGenInLike extends GE
A super-trait that contains
UGenInandUGenInGroup. - sealed abstract class UGenSource[U] extends Expander[U]
-
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]) extends Product with Serializable
Specification of a Unit Generator.
Specification of a Unit Generator.
- name
the name of the unit generator, as seen by the server
- attr
a set of attributes which characterize the UGen, such as resource usage or uniqueness
- rates
at which calculation rates the UGen runs, and whether the rate is implied
- 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.- inputs
the inputs as passed to the underlying UGen (server-side object). Inputs are things which expand to
UGenInLikeelements. Typically they correspond to client-sideargsarguments. The order of this sequence must be correctly reflecting the UGen plugin interface, whereas the order of theargssequence may diverge for an improved user interface.- outputs
a list of output specifications
- doc
optional text documentation
- elemOption
diverging name of the graph element, as seen by the client
- trait UsesRandSeed extends IsIndividual
- trait WritesBuffer extends HasSideEffect with IsIndividual
- trait WritesBus extends HasSideEffect with IsIndividual
- trait WritesFFT extends HasSideEffect with IsIndividual
- implicit final class rangeOps extends AnyVal
Value Members
- implicit def doubleGEWrapper(d: Double): RichDouble
- implicit def doubleNumberWrapper(d: Double): numbers.RichDouble
- implicit def floatGEWrapper(f: Float): RichFloat
- implicit def floatNumberWrapper(f: Float): numbers.RichFloat
-
implicit
def
geOps(g: GE): GEOps
Provides operators for graph elements, such as
.abs,.linlinor.poll. -
final
val
inf: Float(Infinity)
Positive
Floatinfinity.Positive
Floatinfinity. Useful for sequence based demand UGens.-infgives you negative infinity. - implicit def intGEWrapper(i: Int): RichInt
- implicit def intNumberWrapper(i: Int): numbers.RichInt
- object Buffer extends Serializable
- object BufferManager
-
object
BuildInfo extends Product with Serializable
This object was generated by sbt-buildinfo.
- object Bus
- object Client
- object Completion extends Serializable
- object ControlABusMap
- object ControlFillRange extends Serializable
- object ControlKBusMap
- object ControlSet extends ControlSetValueImplicits with ControlSetVectorImplicits
- object Curve
- object DoneAction
- object FillRange extends Serializable
- object FillValue extends Serializable
-
object
GE
The UGen graph is constructed from interconnecting graph elements (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).
- object GEOps
- object GraphFunction
- object Group extends Serializable
- object Lazy
- object MaybeRate
-
object
Node
A representation for a node on the server's tree.
A representation for a node on the server's tree. A
Nodeis either aSynthor aGroup.Note that if the node is a group, all messages send to the node which are not specific to a
SynthorGroup, i.e. all messages found in this class, will affect all child nodes of the group. For example, ifrelease()is called on aGroup, the underlyingsetMsgis propagated to allSynths in the tree whose root is this group. - object NodeManager
-
object
Ops
Importing the contents of this object adds imperative (side-effect) functions to resources such as synths, buses, buffers.
Importing the contents of this object adds imperative (side-effect) functions to resources such as synths, buses, buffers. In general these reflect the OSC messages defined for each object, and send them straight to the server. For example, a
Synthhas functionnewMsgwhich returns an OSC message to instantiate the synth of the server. After importingOps, you will be able to directly launch a synth usingSynthDef.playorSynth.play. You will be able to directly allocate and read buffers, and so forth.The reason why these functions are separated from the rest of the API is to allow other frameworks such as SoundProcesses to avoid side-effects which they handle differently (e.g., using STM).
- object Rate
- object RichNumber
- object Server
- object ServerConnection
- object Synth extends Serializable
- object SynthDef extends Serializable
- object SynthGraph extends Serializable
- object UGen
- object UGenGraph extends Serializable
- object UGenInLike
- object UGenSource
- object UGenSpec extends Serializable
-
object
UndefinedRate extends MaybeRate with Product with Serializable
An undefined rate signifies that a rate is either unknown or will be implicitly resolved.
-
object
addAfter extends AddAction with Product with Serializable
An
AddActionwith id3, indicating that a node should be added to the same group as the target node, right after it. -
object
addBefore extends AddAction with Product with Serializable
An
AddActionwith id2, indicating that a node should be added to the same group as the target node, right before it. -
object
addReplace extends AddAction with Product with Serializable
An
AddActionwith id4, indicating that a node should replace an existing node, that is take the target node's exact position in the tree. -
object
addToHead extends AddAction with Product with Serializable
An
AddActionwith id0, indicating that a node should be add to the head of of a target group. -
object
addToTail extends AddAction with Product with Serializable
An
AddActionwith id1, indicating that a node should be add to the tail of of a target group. -
object
audio extends synth.Rate.Bus with Product with Serializable
Audio rated calculation (id
1) means that values are calculated at the audio sampling rate.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. -
object
control extends synth.Rate.Bus with Product with Serializable
Control rated calculation (id
1) means that one value is calculated per block.Control rated calculation (id
1) means that one value is calculated per block. With a default block size of64, 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. -
object
demand extends Rate with Product with Serializable
Demand rated calculation (id
1) means that the UGen is queried by trigger through a special UGen such asDemand. -
object
doNothing extends DoneAction with Product with Serializable
A
DoneActionwith id0, signifying that nothing should be done in particular when the UGen is finished. -
object
freeAllInGroup extends DoneAction with Product with Serializable
A
DoneActionwith id13, freeing the enclosing synth along with all other nodes in the group when the UGen is finished (i.e.A
DoneActionwith id13, 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) -
object
freeGroup extends DoneAction with Product with Serializable
A
DoneActionwith id14, freeing the enclosing group when the UGen is finished, and hence also frees this synth along with all other nodes in the group. -
object
freeSelf extends DoneAction with Product with Serializable
A
DoneActionwith id2, freeing the enclosing synth when the UGen is finished. -
object
freeSelfPausePred extends DoneAction with Product with Serializable
A
DoneActionwith id9, freeing the enclosing synth and pauses the predecessor node when the UGen is finished. -
object
freeSelfPauseSucc extends DoneAction with Product with Serializable
A
DoneActionwith id10, freeing the enclosing synth and pauses the successor node when the UGen is finished. -
object
freeSelfPred extends DoneAction with Product with Serializable
A
DoneActionwith id3, freeing the enclosing synth as well as the predecessor node when the UGen is finished. -
object
freeSelfPredAll extends DoneAction with Product with Serializable
A
DoneActionwith id5, freeing the enclosing synth when the UGen is finished.A
DoneActionwith id5, freeing the enclosing synth when the UGen is finished. If the predecessor node is a group, calls freeAll on that group. If the predecssor node is a synth, frees that synth. -
object
freeSelfPredDeep extends DoneAction with Product with Serializable
A
DoneActionwith id11, freeing the enclosing synth when the UGen is finished.A
DoneActionwith id11, 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. -
object
freeSelfSucc extends DoneAction with Product with Serializable
A
DoneActionwith id4, freeing the enclosing synth as well as the successor node when the UGen is finished. -
object
freeSelfSuccAll extends DoneAction with Product with Serializable
A
DoneActionwith id6, freeing the enclosing synth when the UGen is finished.A
DoneActionwith id6, 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. -
object
freeSelfSuccDeep extends DoneAction with Product with Serializable
A
DoneActionwith id12, freeing the enclosing synth when the UGen is finished.A
DoneActionwith id12, 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. -
object
freeSelfToHead extends DoneAction with Product with Serializable
A
DoneActionwith id7, freeing the enclosing synth and all preceding nodes in its group when the UGen is finished. -
object
freeSelfToTail extends DoneAction with Product with Serializable
A
DoneActionwith id8, freeing the enclosing synth and all succeeding nodes in its group when the UGen is finished. -
object
pauseSelf extends DoneAction with Product with Serializable
A
DoneActionwith id1, pausing the enclosing synth when the UGen is finished. -
object
scalar extends Rate with Product with Serializable
Scalar rated calculation (id
0) means that a value is only calculated once when aSynthis initialized.