package graph
- Alphabetic
- Public
- All
Type Members
-
final
case class
ARCWindow(in: GE, size: GE, lo: GE = 0.0, hi: GE = 1.0, lag: GE = 0.96) extends SingleOut with Product with Serializable
Automatic range control UGen.
Automatic range control UGen. It traces the range of a windowed input signal.
- in
signal to adjust
- size
window size of input
- lo
desired lower margin of output
- hi
desired upper margin of output
- lag
lag or feedback coefficient
-
final
case class
AffineTransform2D(in: GE, widthIn: GE, heightIn: GE, widthOut: GE = 0, heightOut: GE = 0, m00: GE, m10: GE, m01: GE, m11: GE, m02: GE, m12: GE, wrap: GE = 1, rollOff: GE = 0.86, kaiserBeta: GE = 7.5, zeroCrossings: GE = 15) extends SingleOut with Product with Serializable
An affine transformation UGen for image rotation, scaling, translation, shearing.
An affine transformation UGen for image rotation, scaling, translation, shearing. It uses either a sinc-based band-limited resampling algorithm, or bicubic interpolation, depending on the
zeroCrossingsparameter.All window defining parameters (
widthIn,heightIn,widthOut,heightOut) are polled once per matrix. All matrix and filter parameters are polled one per output pixel.- in
the signal to resample
- widthIn
the width (number of columns) of the input matrix
- heightIn
the height (number of rows) of the input matrix
- widthOut
the width (number of columns) of the output matrix. the special value zero (default) means it is the same as
widthIn.- heightOut
the height (number of rows) of the output matrix. the special value zero (default) means it is the same as
heightIn.- m00
coefficient of the first column of the first row (scale-x)
- m10
coefficient of the first column of the second row (shear-y)
- m01
coefficient of the second column of the first row (shear-x)
- m11
coefficient of the second column of the second row (scale-y)
- m02
coefficient of the third column of the first row (translate-x)
- m12
coefficient of the third column of the second row (translate-y)
- wrap
if non-zero, wraps coordinates around the input images boundaries. TODO: currently
wrap = 0is broken if using sinc interpolation!- rollOff
the FIR anti-aliasing roll-off width. Between zero and one.
- kaiserBeta
the FIR windowing function's parameter
- zeroCrossings
the number of zero-crossings in the truncated and windowed sinc FIR. If zero, algorithm uses bicubic interpolation instead.
- See also
-
final
case class
ArithmSeq(start: GE = 0, step: GE = 1, length: GE = Long.MaxValue) extends SingleOut with Product with Serializable
A UGen that produces an arithmetic sequence of values.
A UGen that produces an arithmetic sequence of values. If both
startandstepare of integer type (IntorLong), this produces an integer output, otherwise it produces a floating point output.E.g.
ArithmSeq(start = 1, step = 2)will produce a series1, 3, 5, 7, ....- start
the first output element
- step
the amount added to each successive element
- length
the number of elements to output
- final case class AudioFileIn(file: File, numChannels: Int) extends MultiOut with Product with Serializable
-
final
case class
AudioFileOut(in: GE, file: File, spec: AudioFileSpec) extends SingleOut with Product with Serializable
A UGen that reads in an audio file.
A UGen that reads in an audio file. The output signal is the monotonously increasing number of frames written, which can be used to monitor progress or determine the end of the writing process. The UGen keeps running until the
insignal ends.- in
the signal to write.
- file
the file to write to
- spec
the spec for the audio file, including numbers of channels and sample-rate
-
final
case class
BinaryOp(op: Int, a: GE, b: GE) extends SingleOut with Product with Serializable
A binary operator UGen, for example two sum or multiply two signals.
A binary operator UGen, for example two sum or multiply two signals. The left or
ainput is "hot", i.e. it keeps the UGen running, while the right orbinput may close early, and the last value will be remembered.- op
the identifier of the operator (e.g.
BinaryOp.Times.id)- a
the left operand which determines how long the UGen computes
- b
the right operand.
-
final
case class
Biquad(in: GE, b0: GE = 0.0, b1: GE = 0.0, b2: GE = 0.0, a1: GE = 0.0, a2: GE = 0.0) extends SingleOut with Product with Serializable
A second order filter section (biquad) UGen.
A second order filter section (biquad) UGen. Filter coefficients are given directly rather than calculated for you. The formula is equivalent to:
y(n) = b0 * x(n) + b1 * x(n-1) + b2 * x(n-2) - a1 * y(n-1) - a2 * y(n-2)
where
xisin, andyis the output. Note the naming and signum of the coefficients differs from SuperCollider'sSOS. - final case class Bleach(in: GE, filterLen: GE = 256, feedback: GE = 0.001, filterClip: GE = 8.0) extends SingleOut with Product with Serializable
-
final
case class
Blobs2D(in: GE, width: GE, height: GE, thresh: GE = 0.3, pad: GE = 0) extends MultiOut with Product with Serializable
A blob detection UGen.
A blob detection UGen. It is based on the meta-balls algorithm by Julien Gachadoat (http://www.v3ga.net/processing/BlobDetection/).
Currently, we output four channels: - 0 -
numBlobs- flushes for each window one element with the number of blobs detected - 1 -bounds- quadruplets ofxMin,xMax,yMin,yMax- for each blob - 2 -numVertices- the number of vertices (contour coordinates) for each blob - 3 -vertices- tuples ofxandyfor the vertices of each blob- in
the image(s) to analyse
- width
the width of the image
- height
the height of the image
- thresh
the threshold for blob detection between zero and one
- pad
size of "border" to put around input matrices. If greater than zero, a border of that size is created internally, filled with the threshold value
- final case class BufferDisk(in: GE) extends SingleOut with Product with Serializable
-
final
case class
BufferMemory(in: GE, size: GE) extends GE with Product with Serializable
Inserts a buffer into the stream of up to
sizeframes. -
final
case class
ChannelProxy(elem: GE, index: Int) extends GE.Lazy with Product with Serializable
Straight outta ScalaCollider.
- final case class Clip(in: GE, lo: GE, hi: GE) extends SingleOut with Product with Serializable
- final case class Complex1FFT(in: GE, size: GE, padding: GE = 0) extends FFTFullUGen with Product with Serializable
- final case class Complex1IFFT(in: GE, size: GE, padding: GE = 0) extends FFTFullUGen with Product with Serializable
- final case class Complex2FFT(in: GE, rows: GE, columns: GE = 0) extends FFT2FullUGen with Product with Serializable
- final case class Complex2IFFT(in: GE, rows: GE, columns: GE = 0) extends FFT2FullUGen with Product with Serializable
- final case class ComplexBinaryOp(op: Int, a: GE, b: GE) extends SingleOut with Product with Serializable
- final case class ComplexUnaryOp(op: Int, in: GE) extends SingleOut with Product with Serializable
-
final
case class
Concat(a: GE, b: GE) extends SingleOut with Product with Serializable
Concatenates two signals.
-
final
case class
ConstQ(in: GE, fftSize: GE, minFreqN: GE = 0.0008, maxFreqN: GE = 0.4096, numBands: GE = 432) extends SingleOut with Product with Serializable
A UGen that performs a constant Q spectral analysis, using an already FFT'ed input signal.
A UGen that performs a constant Q spectral analysis, using an already FFT'ed input signal. For each input window, the output signal consists of
numBandsfilter output values. These values are squared, since further processing might need to decimate them again or take the logarithm. Otherwise the caller needs to add.sqrtto get the actual filter outputs.The default settings specify a range of nine octaves and
numBands = 432thus being 48 bands per octave. At 44.1 kHz, the default minimum frequency would be 35.28 Hz, the maximum would be 18063.36 Hz.- in
the input signal which has already been windowed and FFT'ed using
Real1FFTin mode 0 or 2. The windows should have been rotated prior to the FFT so that the time signal starts in the middle of the window and then wraps around.- fftSize
the fft size which corresponds with the window size of the input
- minFreqN
the normalized minimum frequency (frequency in Hz, divided by the sampling rate). should be greater than zero and less than or equal to 0.5.
- maxFreqN
the normalized maximum frequency (frequency in Hz, divided by the sampling rate). should be greater than zero and less than or equal to 0.5.
- numBands
the number of bands or kernels to apply, spreading them evenly (logarithmically) across the range from minimum to maximum frequency.
-
sealed
trait
Constant extends UGenIn with StreamIn
A scalar constant used as an input to a UGen.
- final case class ConstantD(value: Double) extends Constant with DoubleLike with Product with Serializable
- final case class ConstantI(value: Int) extends Constant with IntLike with Product with Serializable
- final case class ConstantL(value: Long) extends Constant with LongLike with Product with Serializable
-
final
case class
ControlBlockSize() extends SingleOut with Product with Serializable
A scalar information UGen that reports the control block size.
-
final
case class
DC(in: GE) extends SingleOut with Product with Serializable
Creates a constant infinite signal.
-
final
case class
DCT_II(in: GE, size: GE, numCoeffs: GE, zero: GE = 0) extends SingleOut with Product with Serializable
A UGen for type II discrete cosine transform.
A UGen for type II discrete cosine transform.
- in
input signal
- size
input signal window size
- numCoeffs
number of coefficients output
- zero
if zero (default), the zero'th coefficient is _skipped_ in the output, if non-zero, the zero'th coefficient is included. In any case, the output window size is
numCoeffs.
-
final
case class
DEnvGen(levels: GE, lengths: GE, shapes: GE = 1, curvatures: GE = 0.0) extends SingleOut with Product with Serializable
An envelope generator UGen similar to SuperCollider's DemandEnvGen.
An envelope generator UGen similar to SuperCollider's DemandEnvGen.
For each parameter of the envelope (levels, durations and shapes), values are polled every time a new segment starts. The UGen keeps running as long as level inputs are provided. If any of the other inputs terminate early, their last values will be used for successive segments (e.g. one can use a constant length or shape).
Note that as a consequence of having a "hot"
levelsinput, the target level of the last segment may not be reached, as the UGen would terminate one sample earlier. As a workaround one can duplicate the last level value with a length of 1.The difference to
DemandEnvGenis that this UGen does not duplicate functionality in the form oflevelScale,levelBias,timeScale, and it does not provideresetandgatefunctionality. Durations are given as lengths in sample frames. - final case class DebugGen() extends SingleOut with Product with Serializable
-
case class
DebugIntPromise(in: GE, p: Promise[IndexedSeq[Int]]) extends ZeroOut with Product with Serializable
A debugging UGen that completes a promise with the input values it sees.
A debugging UGen that completes a promise with the input values it sees.
- in
the signal to monitor
-
final
case class
DebugOut(in: GE) extends ZeroOut with Product with Serializable
A UGen that simply consumes a signal and keeps running until the
insignal ends.A UGen that simply consumes a signal and keeps running until the
insignal ends.- in
the signal to keep 'alive'.
-
final
case class
DebugPoll(in: GE, label: String = "poll") extends ZeroOut with Product with Serializable
A UGen that prints snapshots of its input to the console.
A UGen that prints snapshots of its input to the console. Note that arguments have different order than in ScalaCollider!
- in
the input to be pulled. If this is a constant, the UGen will close after polling it. This is to prevent a dangling
DebugPollwhose trigger is infinite (such asImpulse). If you want to avoid that, you should wrap the input in aDC.- label
an identifying label to prepend to the printing.
-
case class
DebugSink(in: GE) extends ZeroOut with Product with Serializable
A debugging UGen that installs a persistent no-op sink, allowing the
inUGen to remain in the graph even if it does not have a side-effect and it is not connected to any other graph element.A debugging UGen that installs a persistent no-op sink, allowing the
inUGen to remain in the graph even if it does not have a side-effect and it is not connected to any other graph element.- in
the element to keep inside the graph
- final case class DebugTake(in: GE) extends SingleOut with Product with Serializable
- final case class DelayN(in: GE, maxLength: GE, length: GE) extends SingleOut with Product with Serializable
-
final
case class
DetectLocalMax(in: GE, size: GE) extends SingleOut with Product with Serializable
A UGen that outputs triggers for local maxima within a sliding window.
A UGen that outputs triggers for local maxima within a sliding window. If multiple local maxima occur within the current window, only the one with the largest value will cause the trigger.
By definition, the first and last value in the input stream cannot qualify for local maxima.
- in
the signal to analyze for local maxima
- size
the sliding window size. Each two emitted triggers are spaced apart at least by
sizeframes.
-
final
case class
Differentiate(in: GE) extends SingleOut with Product with Serializable
A UGen that outputs the differences between adjacent input samples.
A UGen that outputs the differences between adjacent input samples.
The length of the signal is the length of the input. The first output will the the first input (internal x1 state is zero).
-
final
case class
Done(in: GE) extends SingleOut with Product with Serializable
A UGen that outputs a single frame of
1when the input is finished. - final case class Drop(in: GE, length: GE) extends SingleOut with Product with Serializable
-
final
case class
Dseq(seq: GE, repeats: GE = 1) extends SingleOut with Product with Serializable
XXX TODO --- not implemented yet.
XXX TODO --- not implemented yet. A UGen that cycles over a list of values.
- seq
sequence of values to be returned
- repeats
the number of repetitions of the sequence
-
final
case class
Elastic(in: GE, num: GE = 1) extends SingleOut with Product with Serializable
Inserts a buffer into the stream of
numblocks. - final case class ElseGE(pred: IfOrElseIfThen[GE], branch: Graph, result: GE) extends ElseLike[GE] with GE.Lazy with Product with Serializable
- final case class ElseIf[+A](pred: IfOrElseIfThen[A], cond: GE) extends Product with Serializable
- final case class ElseIfThen[+A](pred: IfOrElseIfThen[A], cond: GE, branch: Graph, result: A) extends IfThenLike[A] with ElseOrElseIfThen[A] with Product with Serializable
- sealed trait ElseLike[+A] extends ElseOrElseIfThen[A]
- sealed trait ElseOrElseIfThen[+A] extends Then[A]
- final case class ElseUnit(pred: IfOrElseIfThen[Any], branch: Graph) extends ElseLike[Any] with Expander[Unit] with Product with Serializable
- sealed trait FFT2FullUGen extends SingleOut
- sealed trait FFT2HalfUGen extends SingleOut
- sealed trait FFTFullUGen extends SingleOut
- sealed trait FFTHalfUGen extends SingleOut
-
final
case class
FilterSeq(in: GE, gate: GE) extends SingleOut with Product with Serializable
A UGen that filters its input, retaining only those elements in the output sequence for which the predicate
gateholds.A UGen that filters its input, retaining only those elements in the output sequence for which the predicate
gateholds.You can think of it as
Gatebut instead of outputting zeroes when the gate is closed, no values are output at all. Consequently, the length of the output stream will differ from the length of the input stream.- See also
- final case class Fold(in: GE, lo: GE, hi: GE) extends SingleOut with Product with Serializable
- final case class FoldCepstrum(in: GE, size: GE, crr: GE, cri: GE, clr: GE, cli: GE, ccr: GE, cci: GE, car: GE, cai: GE) extends SingleOut with Product with Serializable
-
final
case class
Fourier(in: GE, size: GE, padding: GE = 0, dir: GE = 1.0, mem: GE = 131072) extends SingleOut with Product with Serializable
Disk-buffered (large) Fourier transform.
Disk-buffered (large) Fourier transform. Output windows will have a complex size of
(size + padding).nextPowerOfTwo- in
input signal to transform. This must be complex (Re, Im interleaved)
- size
the (complex) window size
- padding
the (complex) zero-padding size for each window
- dir
the direction is
1for forward and-1for backward transform. other numbers will do funny things.- mem
the amount of frames (chunk size) to buffer in memory. this should be a power of two.
-
final
case class
Frames(in: GE) extends SingleOut with Product with Serializable
A UGen that generates a signal that incrementally counts the frames of its input.
A UGen that generates a signal that incrementally counts the frames of its input. The first value output will be
1, and the last will correspond to the number of frames seen, i.e.Length(in). -
final
case class
Gate(in: GE, gate: GE) extends SingleOut with Product with Serializable
A UGen that passes through its input while the gate is open, and outputs zero while the gate is closed.
-
final
case class
GenWindow(size: GE, shape: GE, param: GE = 0.0) extends SingleOut with Product with Serializable
A repeated window generator UGen.
A repeated window generator UGen. It repeats the same window again and again (unless parameters are modulated). The parameters are demand-rate, polled once per window.
- size
the window size
- shape
the identifier of the window shape, such as
GenWindow.Hann.- param
parameter used by some window shapes, such as
GenWindow.Kaiser
-
final
case class
GeomSeq(start: GE = 1, grow: GE = 2, length: GE = Long.MaxValue) extends SingleOut with Product with Serializable
A UGen that produces a geometric sequence of values.
A UGen that produces a geometric sequence of values. If both
startandgroware of integer type (IntorLong), this produces an integer output, otherwise it produces a floating point output.E.g.
GeomSeq(start = 1, grow = 2)will produce a series1, 2, 4, 8, ....- start
the first output element
- grow
the multiplicative factor by which each successive element will grow
- length
the number of elements to output
-
final
case class
GimpSlur(in: GE, width: GE, height: GE, kernel: GE, kernelWidth: GE, kernelHeight: GE, repeat: GE = 1, wrap: GE = 0) extends SingleOut with Product with Serializable
A UGen similar to GIMP's Slur image filter.
A UGen similar to GIMP's Slur image filter. Instead of a hard-coded kernel, the probability table must be provided as a separate input. The kernel width and height should be odd, so that the kernel is considered to be symmetric around each input image's pixel. If they are odd, the centre corresponds to integer divisions
kernelWidth/2andkernelHeight/2.- in
image input
- width
image width
- height
image height
- kernel
normalized and integrated probability table. Like the image, the cells are read horizontally first, every
widthKernelcell begins a new cell. The cell probabilities must have been integrated from first to last, and must be normalized so that the last cell value equals one. A new kernel signal is read once per input image. (If the signal ends, the previous kernel will be used again).- kernelWidth
width of the kernel signal. Read once per input image.
- kernelHeight
height of the kernel signal. Read once per input image.
- repeat
number of recursive application of the displacement per image. Read once per input image.
- wrap
if non-zero, wraps pixels around the image bounds, otherwise clips.
-
final
case class
GramSchmidtMatrix(in: GE, rows: GE, columns: GE, normalize: GE = 0) extends SingleOut with Product with Serializable
A UGen that orthogonalizes an input matrix using the stabilized Gram-Schmidt algorithm.
A UGen that orthogonalizes an input matrix using the stabilized Gram-Schmidt algorithm. It processes the row vectors per matrix by making them orthogonal to one another, optionally also orthonormal.
- in
the input matrices
- rows
the number of rows of the input
- columns
the number of columns of the input
-
final
case class
HPF(in: GE, freqN: GE = 0.02) extends SingleOut with Product with Serializable
A second order high-pass filter UGen.
A second order high-pass filter UGen. It implements the same type of filter as the SuperCollider equivalent.
- in
the signal to filter
- freqN
the normalized cut-off frequency (frequency in Hertz divided by sampling rate)
-
final
case class
Hash(in: GE) extends SingleOut with Product with Serializable
A UGen that produces a continuous hash value, useful for comparisons and debugging applications.
A UGen that produces a continuous hash value, useful for comparisons and debugging applications. The hash is produced using the 64-bit Murmur 2 algorithm, however the continuous output is given without "finalising" the hash, and it is not initialized with the input's length (as it is unknown at that stage).
Not yet implemented: Only after the input terminates, one additional sample of finalised hash is given (you can use
.lastto only retain the final hash).- in
the signal to hash.
-
final
case class
If(cond: GE) extends Product with Serializable
Beginning of a conditional block.
Beginning of a conditional block.
- cond
the condition, which is treated as a boolean with zero being treated as
falseand non-zero astrue. Note that multi-channel expansion does not apply here, because the branches may have side-effects which are not supposed to be repeated across channels. Instead, ifcondexpands to multiple channels, they are combined using logical|(OR).
- See also
- sealed trait IfOrElseIfThen[+A] extends Then[A]
-
final
case class
IfThen[+A](cond: GE, branch: Graph, result: A) extends IfThenLike[A] with Product with Serializable
A side effecting conditional block.
- sealed trait IfThenLike[+A] extends IfOrElseIfThen[A] with Expander[Unit]
- final case class ImageFileIn(file: File, numChannels: Int) extends MultiOut with Product with Serializable
- final case class ImageFileOut(in: GE, file: File, spec: Spec) extends ZeroOut with Product with Serializable
- final case class ImageFileSeqIn(template: File, numChannels: Int, indices: GE) extends MultiOut with Product with Serializable
- final case class ImageFileSeqOut(in: GE, template: File, spec: Spec, indices: GE) extends ZeroOut with Product with Serializable
-
final
case class
Impulse(freqN: GE, phase: GE = 0.0) extends SingleOut with Product with Serializable
Impulse (repeated dirac) generator.
Impulse (repeated dirac) generator. For a single impulse that is never repeated, use zero.
- freqN
normalized frequency (reciprocal of frame period)
- phase
phase offset in cycles (0 to 1).
-
final
case class
LFSaw(freqN: GE, phase: GE = 0.0) extends SingleOut with Product with Serializable
Aliased sawtooth oscillator.
Aliased sawtooth oscillator. Note that the frequency is not in Hertz but the normalized frequency as we do not maintained one global sample rate. For a frequency in Hertz,
freqNwould be that frequency divided by the assumed sample rate.Note: Unlike SuperCollider where
LFSawstarts at zero for a zero phase, this oscillator begins at-1. To let it start at zero, use aphaseof0.5- freqN
normalized frequency (f/sr).
- phase
phase offset from 0 to 1. Note: negative values are currently broken.
-
final
case class
LPF(in: GE, freqN: GE = 0.02) extends SingleOut with Product with Serializable
A second order low-pass filter UGen.
A second order low-pass filter UGen. It implements the same type of filter as the SuperCollider equivalent.
- in
the signal to filter
- freqN
the normalized cut-off frequency (frequency in Hertz divided by sampling rate)
-
final
case class
Latch(in: GE, gate: GE) extends SingleOut with Product with Serializable
A sample-and-hold UGen.
A sample-and-hold UGen. It passes through its input while the gate is open, and outputs the last held value while the gate is closed.
- See also
-
final
case class
Length(in: GE) extends SingleOut with Product with Serializable
Reports the length of the input as a single value one the input has terminated.
-
final
case class
Limiter(in: GE, attack: GE, release: GE, ceiling: GE = 1.0) extends SingleOut with Product with Serializable
A UGen that limits the amplitude of its input signal.
A UGen that limits the amplitude of its input signal. Modelled after FScape 1.0 limiter module. N.B.: The UGen outputs a gain control signal, so the input must be multiplied by this signal to obtain the actually limited signal.
- in
input signal
- attack
the attack duration in frames, as -60 dB point
- release
the release duration in frames, as -60 dB point
- ceiling
the maximum allowed amplitude
-
final
case class
Line(start: GE, end: GE, length: GE) extends SingleOut with Product with Serializable
A line segment generating UGen.
A line segment generating UGen. The UGen terminates when the segment has reached the end.
A line can be used to count integers (in the lower ranges, where floating point noise is not yet relevant), e.g.
Line(a, b, b - a + 1)counts fromatob(inclusive).- start
starting value
- end
ending value
- length
length of the segment in sample frames
-
final
case class
Loudness(in: GE, sampleRate: GE, size: GE, spl: GE = 70, diffuse: GE = 1) extends SingleOut with Product with Serializable
A loudness measurement UGen, using Zwicker bands.
A loudness measurement UGen, using Zwicker bands. One value in Phon per window is output.
- in
the signal to analyse
- sampleRate
sample rate of the input signal
- size
the window size for which to calculate values
- spl
the reference of 0 dBFS in decibels
- diffuse
whether to assume diffuse field (
1) or free field (0)
-
final
case class
MatrixInMatrix(in: GE, rowsOuter: GE, columnsOuter: GE, rowsInner: GE, columnsInner: GE, rowStep: GE = 1, columnStep: GE = 1, mode: GE = 0) extends SingleOut with Product with Serializable
Note:
modeis not yet implemented. -
final
case class
MatrixOutMatrix(in: GE, rowsInner: GE, columnsInner: GE, columnsOuter: GE, rowOff: GE = 0, columnOff: GE = 0, rowNum: GE = 1, columnNum: GE = 1) extends SingleOut with Product with Serializable
A UGen that stitches together sequences of sub-matrices to a larger matrix.
A UGen that stitches together sequences of sub-matrices to a larger matrix. The matrix dimensions and offsets are updated per "matrix chunk" which is are
columnsOuter/columnNuminput matrices of sizerowsInner * columnsInner. In other words, the UGen has no intrinsic knowledge of the height of the output matrix.For example, if the input matrices are of size (5, 6) (rows, columns), and we want to assemble the cells (1, 1), (1, 2), (1, 3), (2, 1), (2, 2), (2, 3), that is copped matrices of size (2, 3) beginning at the second row and second column, and we want the outer matrix to have 9 columns, so that each three input matrices appear horizontally next to each other, the settings would be
rowsInner = 5,columnsInner = 6,columnsOuter = 9,rowOff = 1,columnOff = 1,rowNum = 2,columnNum = 3.For more complex behaviour, such as skipping particular rows or columns,
ScanImagecan be used.- in
the sequence of smaller matrices
- rowsInner
height of the input matrices
- columnsInner
width of input matrices
- columnsOuter
width of the output matrix. Must be an integer multiple of
columnNum.- rowOff
offset in rows within the input matrices, where copying to the output matrix begins
- columnOff
offset in columns within the input matrices, where copying to the output matrix begins
- rowNum
number of rows to copy from each input matrix
- columnNum
number of columns to copy from each input matrix.
-
final
case class
MelFilter(in: GE, size: GE, minFreq: GE = 55.0, maxFreq: GE = 18000.0, sampleRate: GE = 44100.0, bands: GE = 42) extends SingleOut with Product with Serializable
A UGen that maps short-time Fourier transformed spectra to the mel scale.
A UGen that maps short-time Fourier transformed spectra to the mel scale. To obtain the MFCC, one has to take the log of the output of this UGen and decimate it with a
DCT.Example:
def mfcc(in: GE) = { val fsz = 1024 val lap = Sliding(in, fsz, fsz/2) * GenWindow(fsz, GenWindow.Hann) val fft = Real1FFT(lap, fsz, mode = 1) val mag = fft.complex.mag.max(-80) val mel = MelFilter(mag, fsz/2, bands = 42) DCT_II(mel.log, 42, 13, zero = 0) }
- in
magnitudes of spectra, as output by
Real1FFT(..., mode = 1).complex.abs- size
bands in input spectrum (assumed to be
fft-size / 2). lowest band corresponds to DC and highest to(size - 1)/size * sampleRate/2.- minFreq
lower frequency to sample. Will be clipped between zero (inclusive) and Nyquist (exclusive).
- maxFreq
upper frequency to sample. Will be clipped between
minFreq(inclusive) and Nyquist (exclusive).- bands
number of filter bands output
-
final
case class
Metro(period: GE, phase: GE = 0L) extends SingleOut with Product with Serializable
Metronome (repeated dirac) generator.
Metronome (repeated dirac) generator. For a single impulse that is never repeated, use a period of zero. Unlike
Impulsewhich uses a frequency and generates fractional phases prone to floating point noise, this is UGen is useful for exact sample frame spacing. UnlikeImpulse, the phase cannot be modulated.- period
number of frames between impulses. Zero is short-hand for
Long.MaxValue- phase
phase offset in frames. Initialization time only!
-
final
case class
NormalizeWindow(in: GE, size: GE, mode: GE = NormalizeWindow.Normalize) extends SingleOut with Product with Serializable
A UGen that normalizes each input window according to a mode.
A UGen that normalizes each input window according to a mode. It can be used for normalizing the value range or removing DC offset. If the last window is not entirely filled, the output will pad that window always to zero (no matter the normalization mode!)
- in
the input signal
- size
the input's window size
- mode
0for normalizing the amplitude to 1,1for fitting into the range of 0 to 1,2for fitting into the range of -1 to 1,3for removing DC (creating a mean of zero).
-
final
case class
OffsetOverlapAdd(in: GE, size: GE, step: GE, offset: GE, minOffset: GE) extends SingleOut with Product with Serializable
Overlapping window summation with offset (fuzziness) that can be modulated.
-
final
case class
OnePole(in: GE, coef: GE) extends SingleOut with Product with Serializable
A one pole (IIR) filter UGen.
A one pole (IIR) filter UGen. Implements the formula :
out(i) = ((1 - abs(coef)) * in(i)) + (coef * out(i-1))
- in
input signal to be processed
- coef
feedback coefficient. Should be between -1 and +1
-
final
case class
OnePoleWindow(in: GE, size: GE, coef: GE) extends SingleOut with Product with Serializable
A one pole (IIR) filter UGen applied to windowed data.
A one pole (IIR) filter UGen applied to windowed data. Implements the formula :
out(i) = ((1 - abs(coef)) * in(i)) + (coef * out(i-1))
This filter runs in parallel for all frames of the window (or matrix). That is, in the above formula
outis replaced by each window element, andiis the window count.- in
input signal to be processed
- size
window size
- coef
feedback coefficient. Should be between -1 and +1
-
final
case class
OverlapAdd(in: GE, size: GE, step: GE) extends SingleOut with Product with Serializable
A UGen that performs overlap-and-add operation on a stream of input windows.
A UGen that performs overlap-and-add operation on a stream of input windows. The
sizeandstepparameters are demand-rate, polled once per (input) window.- in
the non-overlapped input
- size
the window size in the input
- step
the step between successive windows in the output. when smaller than
size, the overlapping portions are summed together.
- See also
- final case class PeakCentroid1D(in: GE, size: GE, thresh1: GE = 0.5, thresh2: GE = 0.33, radius: GE = 1) extends GE.Lazy with Product with Serializable
- final case class PeakCentroid2D(in: GE, width: GE, height: GE, thresh1: GE = 0.5, thresh2: GE = 0.33, radius: GE = 1) extends MultiOut with Product with Serializable
-
final
case class
Pearson(x: GE, y: GE, size: GE) extends SingleOut with Product with Serializable
A UGen that calculates the Pearson product-moment correlation coefficient of two input matrices.
A UGen that calculates the Pearson product-moment correlation coefficient of two input matrices.
- x
first matrix
- y
second matrix
- size
matrix or window size
-
final
case class
PitchAC(in: GE, sampleRate: GE, pitchMin: GE = 75.0, pitchMax: GE = 600.0, numCandidates: GE = 15, silenceThresh: GE = 0.03, voicingThresh: GE = 0.45, octaveCost: GE = 0.01, octaveJumpCost: GE = 0.35, voicedUnvoicedCost: GE = 0.14) extends GE.Lazy with Product with Serializable
A graph element that implements Boersma's auto-correlation based pitch tracking algorithm.
A graph element that implements Boersma's auto-correlation based pitch tracking algorithm.
cf. Paul Boersma, ACCURATE SHORT-TERM ANALYSIS OF THE FUNDAMENTAL FREQUENCY AND THE HARMONICS-TO-NOISE RATIO OF A SAMPLED SOUND, Institute of Phonetic Sciences, University of Amsterdam, Proceedings 17 (1993), 97-110
Note that this is currently implemented as a macro, thus being quite slow. A future version might implement it directly as a UGen. Currently
stepSizeis automatically given, and windowing is fixed to Hann. -
final
case class
PitchesToViterbi(lags: GE, strengths: GE, numIn: GE = 14, peaks: GE, maxLag: GE, voicingThresh: GE = 0.45, silenceThresh: GE = 0.03, octaveCost: GE = 0.01, octaveJumpCost: GE = 0.35, voicedUnvoicedCost: GE = 0.03) extends SingleOut with Product with Serializable
A UGen that takes concurrent pitch tracker paths, and conditions them for the Viterbi algorithm.
A UGen that takes concurrent pitch tracker paths, and conditions them for the Viterbi algorithm. The inputs are typically taken from
AutoCorrelationPitches, and from this a suitableaddsignal is produced to be used in theViterbiUGen. The output are matrices of size(numIn + 1).squared.Warning: This is still not thoroughly tested.
- lags
pitches given as sample periods, such as returned by
AutoCorrelationPitches.- strengths
strengths corresponding to the
lags, such as returned byAutoCorrelationPitches.- numIn
number of paths / candidates. to this the unvoiced candidate is added
- peaks
the peak amplitude of the underlying input signal, one sample per pitch frame, used for the unvoiced candidate.
- maxLag
the maximum lag time, corresponding to the minimum pitch
- voicingThresh
threshold for determining whether window is voiced or unvoiced.
- silenceThresh
threshold for determining whether window is background or foreground.
- octaveCost
weighting factor for low versus high frequency preference.
- octaveJumpCost
costs for moving pitches up and down. to match the parameters in Praat, you should multiply the "literature" value by
0.01 * sampleRate / stepSize(typically in the order of 0.25)- voicedUnvoicedCost
cost for transitioning between voiced and unvoiced segments. to match the parameters in Praat, the "literature" value by
0.01 * sampleRate / stepSize(typically in the order of 0.25) see StrongestLocalMaxima see Viterbi
-
final
case class
Plot1D(in: GE, size: GE, label: String = "plot") extends ZeroOut with Product with Serializable
Debugging utility that plots 1D "windows" of the input data.
-
final
case class
Poll(in: GE, trig: GE, label: String = "poll") extends ZeroOut with Product with Serializable
A UGen that prints snapshots of its input to the console.
A UGen that prints snapshots of its input to the console. Note that arguments have different order than in ScalaCollider!
- in
the input to be pulled. If this is a constant, the UGen will close after polling it. This is to prevent a dangling
Pollwhose trigger is infinite (such asImpulse). If you want to avoid that, you should wrap the input in aDC.- trig
trigger that causes the UGen to print a snapshot of the input.
- label
an identifying label to prepend to the printing.
-
final
case class
PriorityQueue(keys: GE, values: GE, size: GE) extends SingleOut with Product with Serializable
A sorting UGen that can be thought of as a bounded priority queue.
A sorting UGen that can be thought of as a bounded priority queue. It keeps all data in memory but limits the size to the top
sizeitems. By its nature, the UGen only starts outputting values once the input signal (keys) has finished.- keys
the sorting keys; higher values mean higher priority
- values
the values corresponding with the keys and eventually output by the UGen. It is well possible to use the same signal both for
keysandvalues.- size
the maximum size of the priority queue.
-
final
case class
Progress(in: GE, trig: GE, label: String = "render") extends ZeroOut with Product with Serializable
A UGen that contributes to the progress monitoring of a graph.
A UGen that contributes to the progress monitoring of a graph. It is possible to instantiate multiple instances of this UGen, in which cases their individual progress reports will simply be added up (and clipped to the range from zero to one).
- in
progress fraction from zero to one
- trig
trigger that causes the UGen to submit a snapshot of the progress to the control instance.
- label
the label can be used to distinguish the contributions of different progress UGens
-
final
case class
Real1FFT(in: GE, size: GE, padding: GE = 0, mode: GE = 0) extends FFTHalfUGen with Product with Serializable
Forward short-time Fourier transform UGen for a real-valued input signal.
Forward short-time Fourier transform UGen for a real-valued input signal. The FFT size is equal to
size + padding. The output is a succession of complex half-spectra, i.e. from DC to Nyquist. Depending onmode, the output window size is eithersize + paddingorsize + padding + 2.- in
the real signal to transform. If overlapping windows are desired, a
Slidingshould already have been applied to this signal, as well as multiplication with a window function.- size
the input window size
- padding
amount of zero padding for each input window.
- mode
packing mode.
0(default) is standard "packed" mode, whereby the real part of the bin at Nyquist is stored in the imaginary slot of the DC. This mode allows perfect reconstruction with aReal1IFFTusing the same mode.1is "unpacked" mode, whereby the output windows are made two samples longer, so that the Nyquist bin is included in the very end. By definition, the imaginary parts of DC and Nyquist are zero. This mode allows perfect reconstruction with aReal1IFFTusing the same mode.2is "discarded" mode, whereby the Nyquist bin is omitted. While it doesn't allow a perfect reconstruction, this mode is useful for analysis, because the output window size is equal to the fft-size, and the imaginary part of DC is correctly zero'ed.
- final case class Real1FullFFT(in: GE, size: GE, padding: GE = 0) extends FFTFullUGen with Product with Serializable
- final case class Real1FullIFFT(in: GE, size: GE, padding: GE = 0) extends FFTFullUGen with Product with Serializable
- final case class Real1IFFT(in: GE, size: GE, padding: GE = 0, mode: GE = 0) extends FFTHalfUGen with Product with Serializable
-
final
case class
Real2FFT(in: GE, rows: GE, columns: GE = 0, mode: GE = 0) extends FFT2HalfUGen with Product with Serializable
Forward short-time Fourier transform UGen for a real-valued input signal.
Forward short-time Fourier transform UGen for a real-valued input signal. The FFT size is equal to
rows * columns. The output is a succession of complex half-spectra, i.e. from DC to Nyquist.XXX TODO: Depending on
mode, the output window size is eithersize + paddingorsize + padding + 2.- in
the real signal to transform. If overlapping windows are desired, a
Slidingshould already have been applied to this signal, as well as multiplication with a window function.- rows
the input matrix number of rows
- columns
the input matrix number of columns
- mode
packing mode.
0(default) is standard "packed" mode, whereby the real part of the bin at Nyquist is stored in the imaginary slot of the DC. This mode allows perfect reconstruction with aReal2IFFTusing the same mode.1is "unpacked" mode, whereby the output windows are made two samples longer, so that the Nyquist bin is included in the very end. By definition, the imaginary parts of DC and Nyquist are zero. This mode allows perfect reconstruction with aReal2IFFTusing the same mode.2is "discarded" mode, whereby the Nyquist bin is omitted. While it doesn't allow a perfect reconstruction, this mode is useful for analysis, because the output window size is equal to the fft-size, and the imaginary part of DC is correctly zero'ed.
- final case class Real2FullFFT(in: GE, rows: GE, columns: GE = 0) extends FFT2FullUGen with Product with Serializable
- final case class Real2FullIFFT(in: GE, rows: GE, columns: GE = 0) extends FFT2FullUGen with Product with Serializable
- final case class Real2IFFT(in: GE, rows: GE, columns: GE = 0, mode: GE = 0) extends FFT2HalfUGen with Product with Serializable
-
final
case class
RepeatWindow(in: GE, size: GE = 1, num: GE = 2) extends SingleOut with Product with Serializable
A UGen that repeats the contents of input windows a number of times.
A UGen that repeats the contents of input windows a number of times.
- in
the input signal to group into windows of size
sizeand repeatnumtimes. If the input ends before a full window is filled, the last window is padded with zeroes to obtain an input window if sizesize- size
the window size. one value is polled per iteration (outputting
numwindows of sizesize). the minimumsizeis one (it will be clipped to this).- num
the number of repetitions of the input windows. one value is polled per iteration (outputting
numwindows of sizesize). the minimumnumis one (it will be clipped to this).
-
final
case class
Resample(in: GE, factor: GE, minFactor: GE = 0, rollOff: GE = 0.86, kaiserBeta: GE = 7.5, zeroCrossings: GE = 15) extends SingleOut with Product with Serializable
A band-limited resampling UGen.
A band-limited resampling UGen.
It uses an internal table for the anti-aliasing filter. Table resolution is currently fixed at 4096 filter samples per zero crossing and linear interpolation in the FIR table, but the total filter length can be specified through the
zeroCrossingsparameter. Note: If filter parameters are changed, the table must be recalculated which is very expensive. However,factormodulation is efficient.Note: Unlike most other UGens, all parameters but
inare read at "output rate". That is particular important forfactormodulation. For each frame output, one frame fromfactoris consumed.- in
the signal to resample
- factor
the resampling factor, where values greater than one mean the signal is stretched (sampling-rate increases or pitch lowers) and values less than one mean the signal is condensed (sampling-rate decreases or pitch rises)
- minFactor
the minimum expected resampling factor, which controls the amount of buffering needed for the input signal. This is used at initialization time only. The default value of zero makes the UGen settles on the first
factorvalue encountered. It is possible to use a value actually higher than the lowest providedfactor, in order to limit the buffer usage. In that case, the FIR anti-aliasing filter will be truncated.- rollOff
the FIR anti-aliasing roll-off width
- kaiserBeta
the FIR windowing function's parameter
- zeroCrossings
the number of zero-crossings in the truncated and windowed sinc FIR.
-
final
case class
ResampleWindow(in: GE, size: GE, factor: GE, minFactor: GE = 0, rollOff: GE = 0.86, kaiserBeta: GE = 7.5, zeroCrossings: GE = 15) extends SingleOut with Product with Serializable
A band-limited resampling UGen for images/matrices.
A band-limited resampling UGen for images/matrices. This works like
Resamplebut processes each window cell across time. Thus is is not _resampling each window by itself_, but each "pixel" or matrix cell in a window across successive windows.- in
the signal to resample
- size
the window size. Currently this is only read once upon initialization.
- factor
the resampling factor, where values greater than one mean the signal is stretched (sampling-rate increases or pitch lowers) and values less than one mean the signal is condensed (sampling-rate decreases or pitch rises)
- minFactor
the minimum expected resampling factor, which controls the amount of buffering needed for the input signal. This is used at initialization time only. The default value of zero makes the UGen settles on the first
factorvalue encountered. It is possible to use a value actually higher than the lowest providedfactor, in order to limit the buffer usage. In that case, the FIR anti-aliasing filter will be truncated.- rollOff
the FIR anti-aliasing roll-off width
- kaiserBeta
the FIR windowing function's parameter
- zeroCrossings
the number of zero-crossings in the truncated and windowed sinc FIR.
-
final
case class
ResizeWindow(in: GE, size: GE, start: GE = 0, stop: GE = 0) extends SingleOut with Product with Serializable
A UGen that resizes the windowed input signal by trimming each windows boundaries (if
startis greater than zero orstopis less than zero) or padding the boundaries with zeroes (ifstartis less than zero orstopis greater than zero).A UGen that resizes the windowed input signal by trimming each windows boundaries (if
startis greater than zero orstopis less than zero) or padding the boundaries with zeroes (ifstartis less than zero orstopis greater than zero). The output window size is thussize - start + stop.- in
the signal to window and resize
- size
the input window size
- start
the delta window size at the output window's beginning
- stop
the delta window size at the output window's ending
- final case class ReverseWindow(in: GE, size: GE, clump: GE = 1) extends SingleOut with Product with Serializable
-
final
case class
RotateFlipMatrix(in: GE, rows: GE, columns: GE, mode: GE) extends SingleOut with Product with Serializable
A UGen that can apply horizontal and vertical flip and 90-degree step rotations to a matrix.
A UGen that can apply horizontal and vertical flip and 90-degree step rotations to a matrix.
Unless mode is 90-degree rotation (4 or 5) and the matrix is not square, this needs one internal matrix buffer, otherwise two internal matrix buffers are needed.
- in
the matrix / matrices to rotate
- rows
the number of rows in the input
- columns
the number of columns in the input
- mode
0: pass, 1: flip horizontally, 2: flip vertically, 3: rotate 180 degrees, 4: rotate clockwise, 8: rotate anti-clockwise. See the companion object for constants. If you combine flipping and rotation, flipping is performed first, so a mode of 5 means flip horizontally, followed by rotate clockwise.
-
final
case class
RotateWindow(in: GE, size: GE, amount: GE = 0) extends SingleOut with Product with Serializable
A UGen that rotates the contents of a window, wrapping around its boundaries.
A UGen that rotates the contents of a window, wrapping around its boundaries. For example, it can be used to align the phases prior to FFT so that the sample that was formerly in the centre of the window moves to the beginning of the window.
- in
the signal to window and resize
- size
the input window size
- amount
the rotation amount in sample frames. Positive values "move" the contents to the right, negative values "move" the contents to the left. The amount is taken modulus
size.
-
final
case class
RunningMax(in: GE, trig: GE = 0) extends SingleOut with Product with Serializable
A UGen that tracks the maximum value seen so far, until a trigger resets it.
A UGen that tracks the maximum value seen so far, until a trigger resets it.
Note: This is different from SuperCollider's
RunningMaxUGen which outputs the maximum of a sliding window instead of waiting for a reset trigger. To track a sliding maximum, you can usePriorityQueue.- in
the signal to track
- trig
a trigger occurs when transitioning from non-positive to positive. At this point (an initially) the internal state is set to negative infinity.
-
final
case class
RunningMin(in: GE, trig: GE = 0) extends SingleOut with Product with Serializable
A UGen that tracks the minimum value seen so far, until a trigger resets it.
A UGen that tracks the minimum value seen so far, until a trigger resets it.
Note: This is different from SuperCollider's
RunningMinUGen which outputs the maximum of a sliding window instead of waiting for a reset trigger. To track a sliding minimum, you can usePriorityQueue.- in
the signal to track
- trig
a trigger occurs when transitioning from non-positive to positive. At this point (an initially) the internal state is set to positive infinity.
-
final
case class
RunningSum(in: GE, trig: GE = 0) extends SingleOut with Product with Serializable
A UGen that integrates the values seen so far, until a trigger resets it.
A UGen that integrates the values seen so far, until a trigger resets it.
Note: This is different from SuperCollider's
RunningSumUGen which outputs the sum of a sliding window instead of waiting for a reset trigger. To track a sliding sum, you can subtract a delayed version ofRunningSumfrom a non-delayedRunningSum.- in
the signal to track
- trig
a trigger occurs when transitioning from non-positive to positive. At this point (an initially) the internal state is set to zero.
-
final
case class
RunningWindowMax(in: GE, size: GE, trig: GE = 0) extends SingleOut with Product with Serializable
A UGen that like
RunningMaxcalculates the maximum observed value of the running input.A UGen that like
RunningMaxcalculates the maximum observed value of the running input. However, it operates on entire windows, i.e. it outputs windows that contain the maximum elements of all the past windows observed.- in
the windowed signal to monitor
- size
the window size. This should normally be a constant. If modulated, the internal buffer will be re-allocated, essentially causing a reset trigger.
- trig
a trigger signal that clears the internal state. When a trigger is observed, the _currently processed_ window is reset altogether until its end, beginning accumulation again from the successive window. Normally one will thus want to emit a trigger in sync with the _start_ of each window. Emitting multiple triggers per window does not have any effect different from emitting the first trigger in each window.
-
final
case class
RunningWindowMin(in: GE, size: GE, trig: GE = 0) extends SingleOut with Product with Serializable
A UGen that like
RunningMincalculates the minimum observed value of the running input.A UGen that like
RunningMincalculates the minimum observed value of the running input. However, it operates on entire windows, i.e. it outputs windows that contain the minimum elements of all the past windows observed.- in
the windowed signal to monitor
- size
the window size. This should normally be a constant. If modulated, the internal buffer will be re-allocated, essentially causing a reset trigger.
- trig
a trigger signal that clears the internal state. When a trigger is observed, the _currently processed_ window is reset altogether until its end, beginning accumulation again from the successive window. Normally one will thus want to emit a trigger in sync with the _start_ of each window. Emitting multiple triggers per window does not have any effect different from emitting the first trigger in each window.
-
final
case class
RunningWindowSum(in: GE, size: GE, trig: GE = 0) extends SingleOut with Product with Serializable
A UGen that like
RunningSumcalculates the sum of the running input.A UGen that like
RunningSumcalculates the sum of the running input. However, it operates on entire windows, i.e. it outputs windows that contain the sum elements of all the past windows observed.- in
the windowed signal to monitor
- size
the window size. This should normally be a constant. If modulated, the internal buffer will be re-allocated, essentially causing a reset trigger.
- trig
a trigger signal that clears the internal state. When a trigger is observed, the _currently processed_ window is reset altogether until its end, beginning accumulation again from the successive window. Normally one will thus want to emit a trigger in sync with the _start_ of each window. Emitting multiple triggers per window does not have any effect different from emitting the first trigger in each window.
-
final
case class
ScanImage(in: GE, width: GE, height: GE, x: GE = 0, y: GE = 0, next: GE = 0, wrap: GE = 1, rollOff: GE = 0.86, kaiserBeta: GE = 7.5, zeroCrossings: GE = 15) extends SingleOut with Product with Serializable
A UGen that scans the pixels of an image using an
xandyinput signal.A UGen that scans the pixels of an image using an
xandyinput signal. It uses either a sinc-based band-limited resampling algorithm, or bicubic interpolation, depending on thezeroCrossingsparameter.All window defining parameters (
width,height) are polled once per matrix. All scanning and filter parameters are polled one per output pixel.- in
the image to scan
- width
the width (number of columns) of the input matrix
- height
the height (number of rows) of the input matrix
- x
horizontal position of the dynamic scanning signal
- y
vertical position of the dynamic scanning signal
- next
a trigger that causes the UGen to read in a new image from
in.- wrap
if non-zero, wraps coordinates around the input images boundaries. TODO: currently
wrap = 0is broken if using sinc interpolation!- rollOff
the FIR anti-aliasing roll-off width. Between zero and one.
- kaiserBeta
the FIR windowing function's parameter
- zeroCrossings
the number of zero-crossings in the truncated and windowed sinc FIR. If zero, algorithm uses bicubic interpolation instead.
- See also
-
final
case class
SegModPhasor(freqN: GE, phase: GE = 0.0) extends SingleOut with Product with Serializable
A phasor UGen that takes new frequency values at the beginning of each cycle.
A phasor UGen that takes new frequency values at the beginning of each cycle. It can be used to implement the 'segmod' program of Döbereiner and Lorenz. In contrast,
LFSawcontinuously reads frequency values, it output values go from zero to one, and the phase argument is only used internally (the output signal always starts at zero).To turn this, for example, into a sine oscillator, you can use
(SegModPhasor(...) * 2 * math.Pi).sin.Warning: passing in zero frequencies will halt the process. XXX TODO
- freqN
normalized frequency (f/sr). One value per output cycle is read. Also note that the UGen terminates when the
freqNsignal ends. Thus, to use a constant frequency, wrap it in aDCorDC(...).take.- phase
phase offset in radians. The phase offset is only used internally to determine when to change the frequency. For example, with a phase of
0.25, when the output phase reaches 0.25, the next frequency value is read. With the default phase of 0.0, a frequency value is read after one complete cycle (output reaches 1.0).
-
final
case class
SetResetFF(trig: GE, reset: GE = 0) extends SingleOut with Product with Serializable
A flip-flop UGen with two inputs, one (set) triggering an output of 1, the other (reset) triggering an output of 0.
A flip-flop UGen with two inputs, one (set) triggering an output of 1, the other (reset) triggering an output of 0. Subsequent triggers happening within the same input slot have no effect. If both inputs receive a trigger at the same time, the reset input takes precedence.
-
final
case class
SinOsc(freqN: GE, phase: GE = 0.0) extends SingleOut with Product with Serializable
Sine oscillator.
Sine oscillator. Note that the frequency is not in Hertz but the normalized frequency as we do not maintained one global sample rate. For a frequency in Hertz,
freqNwould be that frequency divided by the assumed sample rate.- freqN
normalized frequency (f/sr).
- phase
phase offset in radians
-
final
case class
Slices(in: GE, spans: GE) extends SingleOut with Product with Serializable
A UGen that assembles slices of an input signal in random access fashion.
A UGen that assembles slices of an input signal in random access fashion. It does so by buffering the input to disk.
- in
the signal to re-arrange.
- spans
successive frame start (inclusive) and stop (exclusive) frame positions determining the spans that are output by the UGen. This parameter is read on demand. First, the first two values are read, specifying the first span. Only after this span has been output, the next two values from
spansare read, and so on. Values are clipped to zero (inclusive) and the length of the input signal (exclusive). If a start position is greater than a stop position, the span is output in reversed order.
- See also
-
final
case class
Sliding(in: GE, size: GE, step: GE) extends SingleOut with Product with Serializable
A UGen that produces a sliding window over its input.
A UGen that produces a sliding window over its input.
- in
the input to be repacked into windows
- size
the window size
- step
the stepping factor in the input, between windows
- See also
-
final
case class
SlidingPercentile(in: GE, len: GE = 3, frac: GE = 0.5, interp: GE = 0) extends SingleOut with Product with Serializable
A UGen that reports a percentile of a sliding window across its input.
A UGen that reports a percentile of a sliding window across its input. The UGen starts outputting values immediately, even if the median window
lenis not yet reached. This is becauselencan be modulated. If one wants to discard the initial values, use adrop.Note that for an even median length and no interpolation, the reported median may be either the value at index
len/2orlen/2 + 1in the sorted window.All arguments are polled at the same rate. Changing the
fracvalue may cause an internal table rebuild and can thus be expensive.- in
the input to analyze
- len
the length of the sliding median window
- frac
the percentile from zero to one. The default of 0.5 produces the median.
- interp
if zero (default), uses nearest-rank, otherwise uses linear interpolation. Note: currently not implemented, must be zero
-
final
case class
SlidingWindowPercentile(in: GE, winSize: GE, medianLen: GE = 3, frac: GE = 0.5, interp: GE = 0) extends SingleOut with Product with Serializable
A UGen that reports a percentile of a sliding window across every cell of a window'ed input (such as an image).
A UGen that reports a percentile of a sliding window across every cell of a window'ed input (such as an image).
The UGen starts outputting values immediately, even if the
medianLenis not yet reached. This is becausemedianLencan be modulated (per input window). If one wants to discard the initial values, use adrop, for example formedianLen/2 * winSizeframes.Note that for an even median length and no interpolation, the reported median may be either the value at index
medianLen/2ormedianLen/2 + 1in the sorted window.All arguments but
inare polled per input window. Changing thefracvalue may cause an internal table rebuild and can thus be expensive.- in
the window'ed input to analyze
- winSize
the size of the input windows
- medianLen
the length of the sliding median window (the filter window applied to every cell of the input window)
- frac
the percentile from zero to one. The default of 0.5 produces the median.
- interp
if zero (default), uses nearest-rank, otherwise uses linear interpolation. Note: currently not implemented, must be zero
-
final
case class
SortWindow(keys: GE, values: GE, size: GE) extends SingleOut with Product with Serializable
A UGen that sorts the input data window by window.
A UGen that sorts the input data window by window.
- keys
the sorting keys; output will be in ascending order
- values
the values corresponding with the keys and eventually output by the UGen. It is well possible to use the same signal both for
keysandvalues.- size
the window size.
-
final
case class
StrongestLocalMaxima(in: GE, size: GE, minLag: GE, maxLag: GE, thresh: GE = 0.0, octaveCost: GE = 0.0, num: GE = 14) extends MultiOut with Product with Serializable
A peak detection UGen, useful for implementing the auto-correlation based pitch detection method of Paul Boersma (1993).
A peak detection UGen, useful for implementing the auto-correlation based pitch detection method of Paul Boersma (1993). Taking an already calculated auto-correlation of size
size, the UGen looks for local maxima within a given range.The UGen has two outputs. The first output gives the lag times or periods of the
nstrongest peaks per window (to obtain a frequency, divide the sampling rate by these lag times). The second output gives the intensities of thesencandidates. If there are less thanncandidates, the empty slots are output as zeroes.- in
the auto-correlation windows
- size
the size of the auto-correlation windows. must be at least 2.
- minLag
the minimum lag time in sample frames, corresponding to the maximum frequency accepted
- maxLag
the maximum lag time in sample frames, corresponding to the minimum frequency accepted
- thresh
the "voicing" threshold for considered for local maxima within
minLagmaxLag.- octaveCost
a factor for favouring higher frequencies. use zero to turn off this feature.
- num
number of candidate periods output. This is clipped to be at least 1. see PitchesToViterbi see Viterbi
- final case class Take(in: GE, length: GE) extends SingleOut with Product with Serializable
- final case class TakeRight(in: GE, length: GE) extends SingleOut with Product with Serializable
- sealed trait Then[+A] extends Lazy
-
final
case class
Timer(trig: GE) extends SingleOut with Product with Serializable
A UGen that outputs the number of sample frames passed since last triggered.
A UGen that outputs the number of sample frames passed since last triggered. If no trigger is used, it simply outputs a linearly rising ramp.
- trig
trigger signal to reset the counter. Note that the UGen shuts down when
trigfinishes, so to use a constant like0, it has to be wrapped in aDC, for example.
-
final
case class
TransposeMatrix(in: GE, rows: GE, columns: GE) extends SingleOut with Product with Serializable
A UGen that transposes 2-dimensional matrices.
A UGen that transposes 2-dimensional matrices. This is a 2-dimensional windowed process, where each window has length
rows * columns. Input is assumed to be "left-to-right, top-to-bottom", so the first samples constitute the first row, the next samples constitute the second row, etc.Note: This is an in-place process which uses less memory but possibly more time. A faster variant would be to use
RotateMirrorMatrixThe output matrix is transposed (rows and columns exchanged). So an input of
(a, b, c, d, e, f)withrows = 2andcolumns = 3is interpreted as((a, b, c), (d, e, f)), transposed as((a, d), (b, e), (c, f))and output flat as(a, d, b, e, c, f).To rotate an image ninety degrees clockwise, you would have
rows = heightandcolumns = width.- in
the input matrices
- rows
the number of rows of the _input_
- columns
the number of columns of the _input_
- sealed trait UGenInGroup extends UGenInLike
-
final
case class
UGenOutProxy(ugen: MultiOut, outputIndex: Int) extends UGenProxy with Product with Serializable
A UGenOutProxy refers to a particular output of a multi-channel UGen.
A UGenOutProxy refers to a particular output of a multi-channel UGen. A sequence of these form the representation of a multi-channel-expanded UGen.
- sealed trait UGenProxy extends UGenIn
- final case class UnaryOp(op: Int, in: GE) extends SingleOut with Product with Serializable
- final case class UnzipWindow(in: GE, size: GE = 1) extends GE.Lazy with Product with Serializable
- final case class UnzipWindowN(numOutputs: Int, in: GE, size: GE = 1) extends MultiOut with Product with Serializable
-
final
case class
ValueDoubleSeq(elems: Double*) extends SingleOut with Product with Serializable
Loops the given values.
-
final
case class
ValueIntSeq(elems: Int*) extends SingleOut with Product with Serializable
Loops the given values.
-
final
case class
ValueLongSeq(elems: Long*) extends SingleOut with Product with Serializable
Loops the given values.
-
final
case class
Viterbi(mul: GE = 1.0, add: GE, numStates: GE, numFrames: GE = -1) extends SingleOut with Product with Serializable
A UGen performing a generalized Viterbi algorithm.
A UGen performing a generalized Viterbi algorithm. The Viterbi algorithm tries to find the best path among sequences of states, by evaluating transition probabilities. It runs over a predefined number of frames, accumulating data of different states. It maximizes the likelihood of the terminal state, and then backtracks to reconstruct the likely path (sequence of states). The output is the sequence of state indices (from zero inclusive to
numStatesexclusive).Note: This UGen must run until
numFramesor the inputs are exhausted, before it can begin outputting values.This implementation is generalized in the sense that instead of the canonical matrices "sequences of observations", "initial probabilities", "transition matrix", and "emission matrix", it takes two large matrices
mulandaddthat contain the equivalent information. These two matrices allow the UGen to operate in two different modes:- multiplicative (as in the Wikipedia article) by damping the probabilities over time - accumulative (as used in Praat for pitch tracking) by adding up the weights (if you have "costs", feed in their negative values).
Basically the internal delta matrix is created by the update function
delta = (delta_prev * mul) + add(with the corresponding matrix indices).The initial delta state is zero. Therefore, in order to provide the initial state, you obtain an initial vector
vby providing anaddmatrix ofnumStates x numStatescells, which is zero except for the first column filled byv(alternatively, each row filled with the next value ofv, or a diagonal matrix ofv; ifvcan take negative value, make sure to fill the initialnumStates x numStatescompletely by duplicatingv).For the classical data, set
addjust to the initial matrix as explained above (multiplying emitted first observations with initial probabilities), and then use exclusivelymulby passing in emitted observations multiplied by their transition probabilities:mul[t][i][j] = transitionProb[i][j] * emissionProb[observation[t]][i]
See https://en.wikipedia.org/wiki/Viterbi_algorithm
- mul
the generalized multiplicative matrix (combining transition probabilities, emission probabilities and observations). If only accumulation is used, set this to 1.0.
- add
the generalized accumulative matrix (combining transition probabilities, emission probabilities and observations). If only multiplication is used, set this to provide the initial state (see above), followed either by zeroes or by terminating the signal.
- numStates
the number of different states, as reflected by the inner dimensions of matrices
mulandadd.- numFrames
the number of observations. If
-1, the UGen runs until the input is exhausted. This happens when bothmulandaddend. see StrongestLocalMaxima see PitchesToViterbi
-
final
case class
WhiteNoise(mul: GE = 1.0) extends SingleOut with Product with Serializable
Nominal signal range is
-multo+mul(exclusive). -
final
case class
WindowApply(in: GE, size: GE, index: GE = 0, mode: GE = 0) extends SingleOut with Product with Serializable
A UGen that extracts for each input window the element at a given index.
A UGen that extracts for each input window the element at a given index.
- in
the window'ed signal to index
- size
the window size.
- index
the zero-based index into each window. One value per window is polled.
- mode
wrap mode.
0clips indices,1wraps them around,2folds them,3outputs zeroes when index is out of bounds.
-
final
case class
WindowIndexWhere(p: GE, size: GE) extends SingleOut with Product with Serializable
A UGen that determines for each input window the first index where a predicate holds.
A UGen that determines for each input window the first index where a predicate holds. It outputs one integer value per window; if the predicate does not hold across the entire window, the index will be
-1.- p
a predicate to detect the index
- size
the window size.
-
final
case class
WindowMaxIndex(in: GE, size: GE) extends SingleOut with Product with Serializable
A UGen that determines for each input window the index of the maximum element.
A UGen that determines for each input window the index of the maximum element. It outputs one integer value per window; if multiple elements have the same value, the index of the first element is reported (notably zero if the window contains only identical elements).
- in
the input signal.
- size
the window size.
- final case class Wrap(in: GE, lo: GE, hi: GE) extends SingleOut with Product with Serializable
- final case class ZipWindow(a: GE, b: GE, size: GE = 1) extends SingleOut with Product with Serializable
- final case class ZipWindowN(in: GE, size: GE = 1) extends SingleOut with Product with Serializable
Value Members
- object AffineTransform2D extends Serializable
- object BinaryOp extends Serializable
-
object
ComplexBinaryOp extends Serializable
Binary operator assuming operands are complex signals (real and imaginary interleaved).
Binary operator assuming operands are complex signals (real and imaginary interleaved). Outputs another complex stream even if the operator yields a purely real-valued result.
XXX TODO - need more ops such as conjugate, polar-to-cartesian, ...
-
object
ComplexUnaryOp extends Serializable
Unary operator assuming stream is complex signal (real and imaginary interleaved).
Unary operator assuming stream is complex signal (real and imaginary interleaved). Outputs another complex stream even if the operator yields a purely real-valued result (ex.
abs).XXX TODO - need more ops such as conjugate, polar-to-cartesian, ...
- object Constant
- object ConstantD extends Serializable
- object ConstantI extends Serializable
- object ConstantL extends Serializable
- object Else
- object GenWindow extends Serializable
- object ImageFile
- object ImageFileSeqIn extends Serializable
- object Mix
- object NormalizeWindow extends Serializable
- object RotateFlipMatrix extends Serializable
- object Then
- object UGenInGroup
- object UnaryOp extends Serializable
-
object
ValueSeq
Loops the given values.