de.sciss.fscape.graph

Type members

Classlikes

Companion:
class
final case class ARCWindow(in: D, size: I, lo: D, hi: D, lag: D) extends SingleOut[Double]

Automatic range control UGen. It traces the range of a windowed input signal.

Automatic range control UGen. It traces the range of a windowed input signal.

If all values of a window are the same, the lo value is output.

Value parameters:
hi

desired upper margin of output

in

signal to adjust

lag

lag or feedback coefficient

lo

desired lower margin of output

size

window size of input

Companion:
object
final case class AffineTransform2D(in: D, widthIn: I, heightIn: I, widthOut: I, heightOut: I, m00: D, m10: D, m01: D, m11: D, m02: D, m12: D, wrap: I, rollOff: D, kaiserBeta: D, zeroCrossings: I) extends SingleOut[Double]

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 zeroCrossings parameter.

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 zeroCrossings parameter.

All window defining parameters (widthIn, heightIn, widthOut, heightOut) are polled once per matrix. All matrix and filter parameters are polled one per output pixel.

Value parameters:
heightIn

the height (number of rows) of the input matrix

heightOut

the height (number of rows) of the output matrix. the special value zero (default) means it is the same as heightIn.

in

the signal to resample

kaiserBeta

the FIR windowing function's parameter

m00

coefficient of the first column of the first row (scale-x)

m01

coefficient of the second column of the first row (shear-x)

m02

coefficient of the third column of the first row (translate-x)

m10

coefficient of the first column of the second row (shear-y)

m11

coefficient of the second column of the second row (scale-y)

m12

coefficient of the third column of the second row (translate-y)

rollOff

the FIR anti-aliasing roll-off width. Between zero and one.

widthIn

the width (number of columns) 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.

wrap

if non-zero, wraps coordinates around the input images boundaries. TODO: currently wrap = 0 is broken if using sinc interpolation!

zeroCrossings

the number of zero-crossings in the truncated and windowed sinc FIR. If zero, algorithm uses bicubic interpolation instead.

See also:
Companion:
object
object ArithmSeq extends ProductReader[ArithmSeq[_, _]]
Companion:
class
final case class ArithmSeq[A, L](start: GE[A], step: GE[A], length: GE[L])(implicit num: Num[A], numL: NumInt[L]) extends SingleOut[A] with ProductWithAdjuncts

A UGen that produces an arithmetic sequence of values. If both start and step are of integer type (Int or Long), this produces an integer output, otherwise it produces a floating point output.

A UGen that produces an arithmetic sequence of values. If both start and step are of integer type (Int or Long), this produces an integer output, otherwise it produces a floating point output.

E.g. ArithmSeq(start = 1, step = 2) will produce a series 1, 3, 5, 7, ....

Value parameters:
length

the number of elements to output

start

the first output element

step

the amount added to each successive element

Companion:
object
Companion:
class
final case class AudioFileIn(file: URI, numChannels: Int) extends MultiOut[Double]
Companion:
object
Companion:
class
final case class AudioFileOut(in: D, file: URI, spec: AudioFileSpec) extends SingleOut[Long]

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 in signal ends.

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 in signal ends.

Value parameters:
file

the file to write to

in

the signal to write.

spec

the spec for the audio file, including numbers of channels and sample-rate

Companion:
object
object BinaryOp extends ProductReader[SingleOut[_]]
Companion:
class
final case class BinaryOp[A, B, C](op: Op[A, B, C], a: GE[A], b: GE[B]) extends SingleOut[C]

A binary operator UGen, for example two sum or multiply two signals. The left or a input is "hot", i.e. it keeps the UGen running, while the right or b input may close early, and the last value will be remembered.

A binary operator UGen, for example two sum or multiply two signals. The left or a input is "hot", i.e. it keeps the UGen running, while the right or b input may close early, and the last value will be remembered.

Value parameters:
a

the left operand which determines how long the UGen computes

b

the right operand.

op

the operator (e.g. BinaryOp.Times)

Companion:
object
object Biquad extends ProductReader[Biquad]
Companion:
class
final case class Biquad(in: D, b0: D, b1: D, b2: D, a1: D, a2: D) extends SingleOut[Double]

A second order filter section (biquad) UGen. Filter coefficients are given directly rather than calculated for you. The formula is equivalent to:

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 x is in, and y is the output. Note the naming and signum of the coefficients differs from SuperCollider's SOS.

Companion:
object
object Bleach extends ProductReader[Bleach]
Companion:
class
final case class Bleach(in: D, filterLen: I, feedback: D, filterClip: D) extends SingleOut[Double]
Companion:
object
object Blobs2D extends ProductReader[Blobs2D]
Companion:
class
final case class Blobs2D(in: D, width: I, height: I, thresh: D, pad: I) extends MultiOut[Any]

A blob detection UGen. It is based on the meta-balls algorithm by Julien Gachadoat (http://www.v3ga.net/processing/BlobDetection/).

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 of xMin, xMax, yMin, yMax - for each blob
  • 2 - numVertices - the number of vertices (contour coordinates) for each blob
  • 3 - vertices - tuples of x and y for the vertices of each blob
Value parameters:
height

the height of the image

in

the image(s) to analyse

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

thresh

the threshold for blob detection between zero and one

width

the width of the image

Companion:
object
object BlockSize
Companion:
class
final case class BufferDisk[A](in: GE[A])(implicit num: Num[A]) extends SingleOut[A] with ProductWithAdjuncts
Companion:
object
Companion:
class
final case class BufferMemory[A](in: GE[A], size: I) extends SingleOut[A]

Inserts a buffer into the stream of up to size frames.

Inserts a buffer into the stream of up to size frames.

Companion:
object
Companion:
class
final case class ChannelProxy[A](elem: GE[A], index: Int) extends Lazy[A]

Straight outta ScalaCollider.

Straight outta ScalaCollider.

Companion:
object
object Clip extends ProductReader[Clip[_]]
Companion:
class
final case class Clip[A](in: GE[A], lo: GE[A], hi: GE[A])(implicit num: Num[A]) extends SingleOut[A] with ProductWithAdjuncts
Companion:
object
object CombN extends ProductReader[CombN]
Companion:
class
final case class CombN(in: D, maxLength: I, length: I, decay: D) extends SingleOut[Double]

A comb filter delay line UGen with no interpolation.

A comb filter delay line UGen with no interpolation.

Value parameters:
decay

the feedback's -60 dB decay time in sample frames. The value can be obtained from the decay time in seconds by multiplication with the sampling rate. Negative numbers are allowed and mean that the feedback signal is phase inverted.

in

the signal to filter

length

the delay time in sample frames. The value can be obtained from the delay time in seconds by multiplication with the sampling rate.

maxLength

the maximum delay time in sample frames. this is only read once and constrains the values of length

Companion:
object
Companion:
class
final case class Complex1FFT(in: D, size: I, padding: I) extends FFTFullUGen
Companion:
object
Companion:
class
final case class Complex1IFFT(in: D, size: I, padding: I) extends FFTFullUGen
Companion:
object
Companion:
class
final case class Complex2FFT(in: D, rows: I, columns: I) extends FFT2FullUGen

'''Warning:''' window parameter modulation is currently not working correctly (issue #30)

'''Warning:''' window parameter modulation is currently not working correctly (issue #30)

Companion:
object
Companion:
class
final case class Complex2IFFT(in: D, rows: I, columns: I) extends FFT2FullUGen

'''Warning:''' window parameter modulation is currently not working correctly (issue #30)

'''Warning:''' window parameter modulation is currently not working correctly (issue #30)

Companion:
object

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.

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, ...

Companion:
class
final case class ComplexBinaryOp(op: Int, a: D, b: D) extends SingleOut[Double]

Binary operation UGen between two complex signals. Complex signals are represented by interleaved real and imaginary components.

Binary operation UGen between two complex signals. Complex signals are represented by interleaved real and imaginary components.

'''Note:''' Unlike the "normal" real-valued BinaryOp, this UGen terminates as soon as one of the two inputs a or b terminates.

Companion:
object

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).

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, ...

Companion:
class
final case class ComplexUnaryOp(op: Int, in: D) extends SingleOut[Double]
Companion:
object
object Concat extends ProductReader[Concat[_]]
Companion:
class
final case class Concat[A](a: GE[A], b: GE[A]) extends SingleOut[A]

Concatenates two signals.

Concatenates two signals.

Companion:
object
object Const
Companion:
class
sealed trait Const[A1] extends UGenIn[A1] with StreamIn

A scalar constant used as an input to a UGen.

A scalar constant used as an input to a UGen.

Companion:
object
object ConstB
Companion:
class
final case class ConstB(value: Boolean) extends Const[Boolean] with StreamIn
Companion:
object
object ConstD
Companion:
class
final case class ConstD(value: Double) extends Const[Double] with DoubleLike
Companion:
object
object ConstI
Companion:
class
final case class ConstI(value: Int) extends Const[Int] with IntLike
Companion:
object
object ConstL
Companion:
class
final case class ConstL(value: Long) extends Const[Long] with LongLike
Companion:
object
object ConstQ extends ProductReader[ConstQ]
Companion:
class
final case class ConstQ(in: D, fftSize: I, minFreqN: D, maxFreqN: D, numBands: I) extends SingleOut[Double]

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 numBands filter 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 .sqrt to get the actual filter outputs.

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 numBands filter 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 .sqrt to get the actual filter outputs.

The default settings specify a range of nine octaves and numBands = 432 thus 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.

Value parameters:
fftSize

the fft size which corresponds with the window size of the input

in

the input signal which has already been windowed and FFT'ed using Real1FFT in 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.

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.

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.

numBands

the number of bands or kernels to apply, spreading them evenly (logarithmically) across the range from minimum to maximum frequency.

Companion:
object
final case class ControlBlockSize() extends SingleOut[Int]

A scalar information UGen that reports the control block size.

A scalar information UGen that reports the control block size.

Companion:
object
Companion:
class
final case class Convolution(in: D, kernel: D, kernelLen: I, kernelUpdate: B, mode: I) extends SingleOut[Double]

A UGen that convolves an input signal with a fixed or changing filter kernel. kernelUpdate is read synchronous with in, and while it is zero the most recent kernel is reused (making it possible to use more efficient calculation in the frequency domain). When kernelUpdate becomes 1, a new kernel is polled.

A UGen that convolves an input signal with a fixed or changing filter kernel. kernelUpdate is read synchronous with in, and while it is zero the most recent kernel is reused (making it possible to use more efficient calculation in the frequency domain). When kernelUpdate becomes 1, a new kernel is polled.

For example, if you want to update the kernel every ten sample frames, then kernelUpdate could be given as Metro(10).tail or Metro(10, 1). If the kernel is never updated, then kernelUpdate could be given as constant zero. If a new kernel is provided for each input sample, the value could be given as constant one.

Value parameters:
in

the signal to be filtered

kernel

the filter kernel. This is read in initially and when kernelUpdate is one.

kernelLen

the filter length in sample frames. One value is polled whenever a new kernel is required.

kernelUpdate

a gate value read synchronous with in, specifying whether a new kernel is to be read in (non-zero) after the next frame, or if the previous kernel is to be reused (zero, default).

mode

currently unused; leave at zero

Companion:
object
object DC extends ProductReader[DC[_]]
Companion:
class
final case class DC[A](in: GE[A]) extends SingleOut[A]

Creates a constant infinite signal.

Creates a constant infinite signal.

Companion:
object
object DCT_II extends ProductReader[DCT_II]
Companion:
class
final case class DCT_II(in: D, size: I, numCoeffs: I, zero: I) extends SingleOut[Double]

A UGen for type II discrete cosine transform.

A UGen for type II discrete cosine transform.

Value parameters:
in

input signal

numCoeffs

number of coefficients output

size

input signal window size

zero

if zero (default), the zero'th coefficient is ''skipped'' in the output, if greater than zero, the zero'th coefficient is included. In any case, the output window size is numCoeffs.

Companion:
object
object DEnvGen extends ProductReader[DEnvGen[_]]
Companion:
class
final case class DEnvGen[L](levels: D, lengths: GE[L], shapes: I, curvatures: D)(implicit numL: NumInt[L]) extends SingleOut[Double] with ProductWithAdjuncts

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" levels input, 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 DemandEnvGen is that this UGen does not duplicate functionality in the form of levelScale, levelBias, timeScale, and it does not provide reset and gate functionality. Durations are given as lengths in sample frames.

Companion:
object
case class DebugAnyPromise[A](in: GE[A], p: Promise[IndexedSeq[Any]]) extends ZeroOut

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.

Value parameters:
in

the signal to monitor

case class DebugDoublePromise(in: D, p: Promise[IndexedSeq[Double]]) extends ZeroOut

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.

Value parameters:
in

the signal to monitor

case class DebugIntPromise(in: I, p: Promise[IndexedSeq[Int]]) extends ZeroOut

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.

Value parameters:
in

the signal to monitor

object DebugSink extends ProductReader[DebugSink[_]]
Companion:
class
case class DebugSink[A](in: GE[A]) extends ZeroOut

A debugging UGen that installs a persistent no-op sink, allowing the in UGen 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 in UGen to remain in the graph even if it does not have a side-effect and it is not connected to any other graph element.

Value parameters:
in

the element to keep inside the graph

Companion:
object
Companion:
class
final case class DebugThrough[A](in: GE[A], label: String) extends SingleOut[A]

A UGen that passes through its input, and upon termination prints the number of frames seen.

A UGen that passes through its input, and upon termination prints the number of frames seen.

For convenience, import DebugThrough._ allows to write

 val sin = SinOsc(freq) <| "my-sin"
Value parameters:
in

the input to be pulled.

label

an identifying label to prepend to the printing.

Companion:
object
object DelayN extends ProductReader[DelayN[_]]
Companion:
class
final case class DelayN[A](in: GE[A], maxLength: I, length: I) extends SingleOut[A]
Companion:
object
Companion:
class
final case class DetectLocalMax[A](in: GE[A], size: I)(implicit ord: Ord[A]) extends SingleOut[Boolean] with ProductWithAdjuncts

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.

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.

If a local maximum spreads across multiple samples (adjacent values are the same), the location of the last sample is reported.

Value parameters:
in

the signal to analyze for local maxima

size

the sliding window size. Each two emitted triggers are spaced apart at least by size frames.

Companion:
object
Companion:
class
final case class Differentiate[A](in: GE[A])(implicit num: Num[A]) extends SingleOut[A] with ProductWithAdjuncts

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 be the first input (internal x1 state is zero).

Companion:
object
object Distinct extends ProductReader[Distinct[_]]
Companion:
class
final case class Distinct[A](in: GE[A])(implicit eq: Eq[A]) extends SingleOut[A] with ProductWithAdjuncts

A UGen that collects distinct values from the input and outputs them in the original order.

A UGen that collects distinct values from the input and outputs them in the original order.

'''Note:''' Currently keeps all seen values in memory.

Companion:
object
object Done extends ProductReader[Done[_]]
Companion:
class
final case class Done[A](in: GE[A]) extends SingleOut[Boolean]

A UGen that outputs a single frame of 1 when the input is finished.

A UGen that outputs a single frame of 1 when the input is finished.

Companion:
object
object Drop extends ProductReader[Drop[_, _]]
Companion:
class
final case class Drop[A, L](in: GE[A], length: GE[L])(implicit numL: NumInt[L]) extends SingleOut[A] with ProductWithAdjuncts
Companion:
object
object DropRight extends ProductReader[DropRight[_, _]]
Companion:
class
final case class DropRight[A, L](in: GE[A], length: GE[L])(implicit numL: NumInt[L]) extends SingleOut[A] with ProductWithAdjuncts
Companion:
object
object DropWhile extends ProductReader[DropWhile[_]]
Companion:
class
final case class DropWhile[A](in: GE[A], p: B) extends SingleOut[A]
Companion:
object
object Elastic extends ProductReader[Elastic[_]]
Companion:
class
final case class Elastic[A](in: GE[A], num: I) extends SingleOut[A]

Inserts a buffer into the stream of num blocks.

Inserts a buffer into the stream of num blocks.

Companion:
object
object Else
object ElseGE extends ProductReader[ElseGE[_]]
Companion:
class
final case class ElseGE[A](pred: IfOrElseIfThen[GE[A]], branch: Graph, result: GE[A]) extends ElseLike[GE[A]] with Lazy[A]
Companion:
object
final case class ElseIf[+A](pred: IfOrElseIfThen[A], cond: B)
Companion:
class
final case class ElseIfThen[+A](pred: IfOrElseIfThen[A], cond: B, branch: Graph, result: A) extends IfThenLike[A] with ElseOrElseIfThen[A]
Companion:
object
sealed trait ElseLike[+A] extends ElseOrElseIfThen[A]
sealed trait ElseOrElseIfThen[+A] extends Then[A]
Companion:
class
final case class ElseUnit(pred: IfOrElseIfThen[Any], branch: Graph) extends ElseLike[Any] with Expander[Unit]
Companion:
object
object Empty extends ProductReader[Empty[_]]
Companion:
class
final case class Empty[A]() extends SingleOut[A]

A single channel UGen of zero length.

A single channel UGen of zero length.

Companion:
object
object ExpExp extends ProductReader[ExpExp]
Companion:
class
final case class ExpExp(in: D, inLow: D, inHigh: D, outLow: D, outHigh: D) extends SingleOut[Double]
Companion:
object
object ExpLin extends ProductReader[ExpLin]
Companion:
class
final case class ExpLin(in: D, inLow: D, inHigh: D, outLow: D, outHigh: D) extends SingleOut[Double]
Companion:
object
sealed trait FFT2FullUGen extends SingleOut[Double]
sealed trait FFT2HalfUGen extends SingleOut[Double]
sealed trait FFTFullUGen extends SingleOut[Double]
sealed trait FFTHalfUGen extends SingleOut[Double]
object Feed extends ProductReader[Feed[_]]
Companion:
class
final case class Feed[A](init: GE[A]) extends Lazy[A]

First stage of a feedback process. This UGen outputs the signal eventually fed to it via .back.

First stage of a feedback process. This UGen outputs the signal eventually fed to it via .back.

Companion:
object
object FilterSeq extends ProductReader[FilterSeq[_]]
Companion:
class
final case class FilterSeq[A](in: GE[A], gate: B) extends SingleOut[A]

A UGen that filters its input, retaining only those elements in the output sequence for which the predicate gate holds.

A UGen that filters its input, retaining only those elements in the output sequence for which the predicate gate holds.

You can think of it as Gate but 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:
Companion:
object
object Flatten extends ProductReader[Flatten[_]]
Companion:
class
final case class Flatten[A](elem: GE[A]) extends Lazy[A]

A graph element that flattens the channels from a nested multi-channel structure.

A graph element that flattens the channels from a nested multi-channel structure.

Value parameters:
elem

the element to flatten

Companion:
object
object Fold extends ProductReader[Fold[_]]
Companion:
class
final case class Fold[A](in: GE[A], lo: GE[A], hi: GE[A])(implicit num: Num[A]) extends SingleOut[A] with ProductWithAdjuncts
Companion:
object
Companion:
class
final case class FoldCepstrum(in: D, size: I, crr: D, cri: D, clr: D, cli: D, ccr: D, cci: D, car: D, cai: D) extends SingleOut[Double]

We operate on a complex cepstrum (size is the number of complex frames). We distinguish a left L (causal) and right R (anti-causal) half. The formulas then are

We operate on a complex cepstrum (size is the number of complex frames). We distinguish a left L (causal) and right R (anti-causal) half. The formulas then are

reL_out = crr * reL + ccr * reR
reR_out = clr * reR + car * reL
imL_out = cri * imL + cci * imR
imR_out = cli * imR + cai * imL

Note that causal and anti-causal are misnamed in the coefficient.

For example, to make the signal causal for minimum phase reconstruction: We add the conjugate anti-causal (right) part to the causal (left) part: crr = 1, ccr = 1, cri = 1, cci = -1 and clear the anti-causal (right) part: clr = 0, car = 0, cli = 0, cai = 0 (you can just call FoldCepstrum.minPhase for this case)

Companion:
object
object Fourier extends ProductReader[Fourier[_]]
Companion:
class
final case class Fourier[L](in: D, size: GE[L], padding: GE[L], dir: I, mem: I)(implicit num: NumInt[L]) extends SingleOut[Double] with ProductWithAdjuncts

Disk-buffered (large) Fourier transform. Output windows will have a complex size of (size + padding).nextPowerOfTwo

Disk-buffered (large) Fourier transform. Output windows will have a complex size of (size + padding).nextPowerOfTwo

Value parameters:
dir

the direction is 1 for forward and -1 for backward transform. other numbers will do funny things.

in

input signal to transform. This must be complex (Re, Im interleaved)

mem

the amount of frames (chunk size) to buffer in memory. this should be a power of two.

padding

the (complex) zero-padding size for each window

size

the (complex) window size

Companion:
object
object Frames extends ProductReader[Frames[_]]
Companion:
class
final case class Frames[A](in: GE[A]) extends SingleOut[Long]

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).

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).

Companion:
object
object Gate extends ProductReader[Gate[_]]
Companion:
class
final case class Gate[A](in: GE[A], gate: B) extends SingleOut[A]

A UGen that passes through its input while the gate is open, and outputs zero while the gate is closed.

A UGen that passes through its input while the gate is open, and outputs zero while the gate is closed.

See also:
Companion:
object
object GenWindow extends ProductReader[GenWindow[_]]
Companion:
class
final case class GenWindow[L](size: GE[L], shape: I, param: D)(implicit numL: NumInt[L]) extends SingleOut[Double] with ProductWithAdjuncts

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.

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.

Value parameters:
param

parameter used by some window shapes, such as GenWindow.Kaiser

shape

the identifier of the window shape, such as GenWindow.Hann.

size

the window size

Companion:
object
object GeomSeq extends ProductReader[GeomSeq[_, _]]
Companion:
class
final case class GeomSeq[A, L](start: GE[A], grow: GE[A], length: GE[L])(implicit num: Num[A], numL: NumInt[L]) extends SingleOut[A] with ProductWithAdjuncts

A UGen that produces a geometric sequence of values. If both start and grow are of integer type (Int or Long), this produces an integer output, otherwise it produces a floating point output.

A UGen that produces a geometric sequence of values. If both start and grow are of integer type (Int or Long), this produces an integer output, otherwise it produces a floating point output.

E.g. GeomSeq(start = 1, grow = 2) will produce a series 1, 2, 4, 8, ....

Value parameters:
grow

the multiplicative factor by which each successive element will grow

length

the number of elements to output

start

the first output element

Companion:
object
Companion:
class
final case class GimpSlur(in: D, width: I, height: I, kernel: D, kernelWidth: I, kernelHeight: I, repeat: I, wrap: I) extends SingleOut[Double]

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/2 and kernelHeight/2.

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/2 and kernelHeight/2.

Value parameters:
height

image height

in

image input

kernel

normalized and integrated probability table. Like the image, the cells are read horizontally first, every widthKernel cell 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).

kernelHeight

height of the kernel signal. Read once per input image.

kernelWidth

width of the kernel signal. Read once per input image.

repeat

number of recursive application of the displacement per image. Read once per input image.

width

image width

wrap

if great than zero, wraps pixels around the image bounds, otherwise clips.

Companion:
object
final case class GramSchmidtMatrix(in: D, rows: I, columns: I, normalize: I) extends SingleOut[Double]

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.

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.

Value parameters:
columns

the number of columns of the ''input''

in

the input matrices

rows

the number of rows of the ''input''

Companion:
object
object HPF extends ProductReader[HPF]
Companion:
class
final case class HPF(in: D, freqN: D) extends SingleOut[Double]

A second order high-pass filter UGen. It implements the same type of filter as the SuperCollider equivalent.

A second order high-pass filter UGen. It implements the same type of filter as the SuperCollider equivalent.

Value parameters:
freqN

the normalized cut-off frequency (frequency in Hertz divided by sampling rate)

in

the signal to filter

Companion:
object
object Hash extends ProductReader[Hash[_]]
Companion:
class
final case class Hash[A](in: GE[A]) extends SingleOut[Long]

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).

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 .last to only retain the final hash).

Value parameters:
in

the signal to hash.

Companion:
object
object Histogram extends ProductReader[Histogram[_]]
Companion:
class
final case class Histogram[A](in: GE[A], bins: I, lo: GE[A], hi: GE[A], mode: I, reset: B)(implicit num: Num[A]) extends SingleOut[Int] with ProductWithAdjuncts

A UGen that calculates running histogram of an input signal with given boundaries and bin-size. The bins are divided linearly, if another mapping (e.g. exponential) is needed, it must be pre-applied to the input signal.

A UGen that calculates running histogram of an input signal with given boundaries and bin-size. The bins are divided linearly, if another mapping (e.g. exponential) is needed, it must be pre-applied to the input signal.

'''Note:''' currently parameter modulation (bin, lo, hi, mode, reset) is not working correctly.

Value parameters:
bins

the number of bins. this is read at initialization time only or when reset fires

hi

the highest bin boundary. input values above this value are clipped. this value may be updated (although that is seldom useful).

in

the input signal

lo

the lowest bin boundary. input values below this value are clipped. this value may be updated (although that is seldom useful).

mode

if 0 (default), outputs only after in has finished, if 1 outputs the entire histogram for every input sample.

reset

when greater than zero, resets the count.

See also:
Companion:
object
final case class If(cond: B)

Beginning of a conditional block.

Beginning of a conditional block.

Value parameters:
cond

the condition, which is treated as a boolean with zero being treated as false and non-zero as true. 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, if cond expands to multiple channels, they are combined using logical | (OR).

See also:
sealed trait IfOrElseIfThen[+A] extends Then[A]
object IfThen extends ProductReader[IfThen[_]]
Companion:
class
final case class IfThen[+A](cond: B, branch: Graph, result: A) extends IfThenLike[A]

A side effecting conditional block. To turn it into a full if-then-else construction, call Else or ElseIf.

A side effecting conditional block. To turn it into a full if-then-else construction, call Else or ElseIf.

See also:
Companion:
object
sealed trait IfThenLike[+A] extends IfOrElseIfThen[A] with Expander[Unit]
Companion:
class
final case class ImageFileIn(file: URI, numChannels: Int) extends MultiOut[Double]
Companion:
object
Companion:
class
final case class ImageFileOut(in: GE[Double], file: URI, spec: Spec) extends ZeroOut
Companion:
object
final case class ImageFileSeqIn(template: URI, numChannels: Int, indices: GE[Int]) extends MultiOut[Double]

Reads a sequence of images, outputting them directly one after the other, determining their file names by formatting a template with a numeric argument given through indices.

Reads a sequence of images, outputting them directly one after the other, determining their file names by formatting a template with a numeric argument given through indices.

Value parameters:
template

a file which contains a single placeholder for java.util.Formatter syntax, such as %d to insert an integer number. Alternatively, if the file name does not contain a % character but a digit or a sequence of digits, those digits will be replaced by %d to produce a valid template. Therefore, if the template is foo-123.jpg and the indices contain 4 and 5, then the UGen will read the images foo-4 and foo-5 (the placeholder 123 is irrelevant).

Companion:
object
final case class ImageFileSeqOut(in: D, template: URI, spec: Spec, indices: I) extends ZeroOut

Writes a sequence of images, taken their data one by one from the input in, and writing them to individual files, determining their file names by formatting a template with a numeric argument given through indices.

Writes a sequence of images, taken their data one by one from the input in, and writing them to individual files, determining their file names by formatting a template with a numeric argument given through indices.

Value parameters:
template

a file which contains a single placeholder for java.util.Formatter syntax, such as %d to insert an integer number. Alternatively, if the file name does not contain a % character but a digit or a sequence of digits, those digits will be replaced by %d to produce a valid template. Therefore, if the template is foo-123.jpg and the indices contain 4 and 5, then the UGen will write the images foo-4 and foo-5 (the placeholder 123 is irrelevant).

Companion:
object
object Impulse extends ProductReader[Impulse]
Companion:
class
final case class Impulse(freqN: D, phase: D) extends SingleOut[Boolean]

Impulse (repeated dirac) generator. For a single impulse that is never repeated, use zero.

Impulse (repeated dirac) generator. For a single impulse that is never repeated, use zero.

Value parameters:
freqN

normalized frequency (reciprocal of frame period)

phase

phase offset in cycles (0 to 1).

Companion:
object
object Indices extends ProductReader[Indices[_]]
Companion:
class
final case class Indices[A](in: GE[A]) extends SingleOut[Long]

A UGen that generates a signal that incrementally counts the frames of its input. The first value output will be 0, and the last will correspond to the number of frames seen minutes one.

A UGen that generates a signal that incrementally counts the frames of its input. The first value output will be 0, and the last will correspond to the number of frames seen minutes one.

Companion:
object
object LFSaw extends ProductReader[LFSaw]
Companion:
class
final case class LFSaw(freqN: D, phase: D) extends SingleOut[Double]

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, freqN would be that frequency divided by the assumed sample rate.

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, freqN would be that frequency divided by the assumed sample rate.

'''Note:''' Unlike SuperCollider where LFSaw starts at zero for a zero phase, this oscillator begins at -1. To let it start at zero, use a phase of 0.5

Value parameters:
freqN

normalized frequency (f/sr). '''Note:''' negative values are currently broken.

phase

phase offset from 0 to 1. '''Note:''' negative values are currently broken.

Companion:
object
object LPF extends ProductReader[LPF]
Companion:
class
final case class LPF(in: D, freqN: D) extends SingleOut[Double]

A second order low-pass filter UGen. It implements the same type of filter as the SuperCollider equivalent.

A second order low-pass filter UGen. It implements the same type of filter as the SuperCollider equivalent.

Value parameters:
freqN

the normalized cut-off frequency (frequency in Hertz divided by sampling rate)

in

the signal to filter

Companion:
object
object Latch extends ProductReader[Latch[_]]
Companion:
class
final case class Latch[A](in: GE[A], gate: B) extends SingleOut[A]

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.

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:
Companion:
object
object LeakDC extends ProductReader[LeakDC]
Companion:
class
final case class LeakDC(in: D, coeff: D) extends Lazy[Double]

A filter UGen to remove very low frequency content DC offset.

A filter UGen to remove very low frequency content DC offset.

This is a one-pole highpass filter implementing the formula

y[n] = x[n] - x[n-1] + coeff * y[n-1]
Value parameters:
coeff

the leak coefficient determines the filter strength. the value must be between zero and one (exclusive) for the filter to remain stable. values closer to one produce less bass attenuation.

in

input signal to be filtered

Companion:
object
object Length extends ProductReader[Length[_]]
Companion:
class
final case class Length[A](in: GE[A]) extends SingleOut[Long]

Reports the length of the input as a single value one the input has terminated.

Reports the length of the input as a single value one the input has terminated.

Companion:
object
object Limiter extends ProductReader[Limiter]
Companion:
class
final case class Limiter(in: D, attack: I, release: I, ceiling: D) extends SingleOut[Double]

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.

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.

Value parameters:
attack

the attack duration in frames, as -60 dB point

ceiling

the maximum allowed amplitude

in

input signal

release

the release duration in frames, as -60 dB point

Companion:
object
object LinExp extends ProductReader[LinExp]
Companion:
class
final case class LinExp(in: D, inLow: D, inHigh: D, outLow: D, outHigh: D) extends SingleOut[Double]
Companion:
object
final case class LinKernighanTSP(init: I, weights: D, size: I, mode: I, timeOut: D) extends MultiOut[Any]

A UGen that solves the traveling salesman problem (TSP) using the Lin-Kernighan heuristic. For each input value of size, a corresponding initial tour and edge weight sequence are read, the tour is optimized and output along with the tour's cost.

A UGen that solves the traveling salesman problem (TSP) using the Lin-Kernighan heuristic. For each input value of size, a corresponding initial tour and edge weight sequence are read, the tour is optimized and output along with the tour's cost.

Currently, we output two channels:

  • 0 - tour - the optimized tour
  • 1 - cost - the cost of the optimized tour, i.e. the sum of its edge weights
Value parameters:
init

the initial tour, for example linear or randomized. Should consist of size zero-based vertex indices

mode

currently unused and should remain at the default value of zero.

size

for each complete graph, the number of vertices.

timeOut

currently unused and should remain at the default value of zero.

weights

the symmetric edge weights, a sequence of length size * (size - 1) / 2, sorted as vertex connections (0,1), (0,2), (0,3), ... (0,size-1), (1,2), (1,3), ... (1,size-1), etc., until (size-2,size-1).

Companion:
object
object LinLin extends ProductReader[LinLin]
Companion:
class
final case class LinLin(in: D, inLow: D, inHigh: D, outLow: D, outHigh: D) extends SingleOut[Double]
Companion:
object
object Line extends ProductReader[Line[_]]
Companion:
class
final case class Line[L](start: D, end: D, length: GE[L])(implicit numL: NumInt[L]) extends SingleOut[Double] with ProductWithAdjuncts

A line segment generating UGen. The UGen terminates when the segment has reached the end.

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 from a to b (inclusive).

Value parameters:
end

ending value

length

length of the segment in sample frames

start

starting value

Companion:
object
Companion:
class
final case class Loudness(in: D, sampleRate: D, size: I, spl: D, diffuse: I) extends SingleOut[Double]

A loudness measurement UGen, using Zwicker bands. One value in Phon per window is output.

A loudness measurement UGen, using Zwicker bands. One value in Phon per window is output.

The original algorithm outputs a minimum value of 3.0. This is still the case, but if a window is entirely silent (all values are zero), the output value is also 0.0. Thus one may either distinguish between these two cases, or just treat output value of <= 3.0 as silences.

Value parameters:
diffuse

whether to assume diffuse field (1) or free field (0)

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

Companion:
object
Companion:
class
final case class Masking2D(fg: D, bg: D, rows: I, columns: I, threshNoise: D, threshMask: D, blurRows: I, blurColumns: I) extends SingleOut[Double]
Companion:
object
object MatchLen extends ProductReader[MatchLen[_, _]]
Companion:
class
final case class MatchLen[A, B](in: GE[A], ref: GE[B]) extends SingleOut[A]

A UGen that extends or truncates its first argument to match the length of the second argument. If in is shorter than ref, it will be padded with the zero element of its number type. If in is longer, the trailing elements will be dropped.

A UGen that extends or truncates its first argument to match the length of the second argument. If in is shorter than ref, it will be padded with the zero element of its number type. If in is longer, the trailing elements will be dropped.

Companion:
object
Companion:
class
final case class MatrixInMatrix[A](in: GE[A], rowsOuter: I, columnsOuter: I, rowsInner: I, columnsInner: I, rowStep: I, columnStep: I, mode: I) extends SingleOut[A]

Note: mode is not yet implemented.

Note: mode is not yet implemented.

Companion:
object
final case class MatrixOutMatrix[A](in: GE[A], rowsInner: I, columnsInner: I, columnsOuter: I, rowOff: I, columnOff: I, rowNum: I, columnNum: I) extends SingleOut[A]

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/columnNum input matrices of size rowsInner * columnsInner. In other words, the UGen has no intrinsic knowledge of the height of the output 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/columnNum input matrices of size rowsInner * 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, ScanImage can be used.

Value parameters:
columnNum

number of columns to copy from each input matrix.

columnOff

offset in columns within the input matrices, where copying to the output matrix begins

columnsInner

width of input matrices

columnsOuter

width of the output matrix. Must be an integer multiple of columnNum.

in

the sequence of smaller matrices

rowNum

number of rows to copy from each input matrix

rowOff

offset in rows within the input matrices, where copying to the output matrix begins

rowsInner

height of the input matrices

Companion:
object
Companion:
class
final case class MelFilter(in: D, size: I, minFreq: D, maxFreq: D, sampleRate: D, bands: I) extends SingleOut[Double]

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.

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)
}
Value parameters:
bands

number of filter bands output

in

magnitudes of spectra, as output by Real1FFT(..., mode = 1).complex.abs

maxFreq

upper frequency to sample. Will be clipped between minFreq (inclusive) and Nyquist (exclusive).

minFreq

lower frequency to sample. Will be clipped between zero (inclusive) and Nyquist (exclusive).

size

bands in input spectrum (assumed to be fft-size / 2). lowest band corresponds to DC and highest to (size - 1)/size * sampleRate/2.

Companion:
object
object Metro extends ProductReader[Metro[_]]
Companion:
class
final case class Metro[A](period: GE[A], phase: GE[A])(implicit num: NumInt[A]) extends SingleOut[Boolean] with ProductWithAdjuncts

Metronome (repeated dirac) generator. For a single impulse that is never repeated, use a period of zero. Unlike Impulse which uses a frequency and generates fractional phases prone to floating point noise, this is UGen is useful for exact sample frame spacing. Unlike Impulse, the phase cannot be modulated.

Metronome (repeated dirac) generator. For a single impulse that is never repeated, use a period of zero. Unlike Impulse which uses a frequency and generates fractional phases prone to floating point noise, this is UGen is useful for exact sample frame spacing. Unlike Impulse, the phase cannot be modulated.

Value parameters:
period

number of frames between impulses. Zero is short-hand for an infinitely long period. One value is read per output period.

phase

phase offset in frames. One value is read per output period.

Companion:
object
object Mix
final case class NormalizeWindow(in: D, size: I, mode: I) extends SingleOut[Double]

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!)

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!)

A window size of 1 should be avoided (and does not really make sense), although the UGen makes efforts to not output NaN values.

Value parameters:
in

the input signal

mode

0 for normalizing the amplitude to 1, 1 for fitting into the range of 0 to 1, 2 for fitting into the range of -1 to 1, 3 for removing DC (creating a mean of zero).

size

the input's window size

Companion:
object
Companion:
class
final case class NumChannels[A](in: GE[A]) extends SingleOut[Int]

A graph element that produces an integer with number-of-channels of the input element.

A graph element that produces an integer with number-of-channels of the input element.

Companion:
object
final case class OffsetOverlapAdd[A](in: GE[A], size: I, step: I, offset: I, minOffset: I)(implicit num: Num[A]) extends SingleOut[A] with ProductWithAdjuncts

Overlapping window summation with offset (fuzziness) that can be modulated.

Overlapping window summation with offset (fuzziness) that can be modulated.

Companion:
object
object OnePole extends ProductReader[OnePole]
Companion:
class
final case class OnePole(in: D, coef: D) extends SingleOut[Double]

A one pole (IIR) filter UGen. Implements the formula :

A one pole (IIR) filter UGen. Implements the formula :

out(i) = ((1 - abs(coef)) * in(i)) + (coef * out(i-1))
Value parameters:
coef

feedback coefficient. Should be between -1 and +1

in

input signal to be processed

Companion:
object
final case class OnePoleWindow(in: D, size: I, coef: D) extends SingleOut[Double]

A one pole (IIR) filter UGen applied to windowed data. Implements the formula :

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 out is replaced by each window element, and i is the window count.

Value parameters:
coef

feedback coefficient. Should be between -1 and +1

in

input signal to be processed

size

window size

Companion:
object
Companion:
class
final case class OverlapAdd[A](in: GE[A], size: I, step: I)(implicit num: Num[A]) extends SingleOut[A] with ProductWithAdjuncts

A UGen that performs overlap-and-add operation on a stream of input windows. The size and step parameters are demand-rate, polled once per (input) window.

A UGen that performs overlap-and-add operation on a stream of input windows. The size and step parameters are demand-rate, polled once per (input) window.

Value parameters:
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. Currently step values larger than size are clipped to size. This may change in the future

See also:
Companion:
object
final case class PeakCentroid1D(in: D, size: I, thresh1: D, thresh2: D, radius: I) extends Lazy[Double]

'''Warning:''' window parameter modulation is currently not working correctly (issue #30)

'''Warning:''' window parameter modulation is currently not working correctly (issue #30)

Companion:
object
final case class PeakCentroid2D(in: D, width: I, height: I, thresh1: D, thresh2: D, radius: I) extends MultiOut[Double]

'''Warning:''' window parameter modulation is currently not working correctly (issue #30)

'''Warning:''' window parameter modulation is currently not working correctly (issue #30)

Companion:
object
object Pearson extends ProductReader[Pearson]
Companion:
class
final case class Pearson(x: D, y: D, size: I) extends SingleOut[Double]

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.

Value parameters:
size

matrix or window size

x

first matrix

y

second matrix

Companion:
object
final case class PenImage(src: D, alpha: D, dst: D, width: I, height: I, x: D, y: D, next: B, rule: I, op: I, wrap: I, rollOff: D, kaiserBeta: D, zeroCrossings: I) extends SingleOut[Double]

A UGen that writes the pixels of an image using an x and y input signal. It uses either a sinc-based band-limited resampling algorithm, or bicubic interpolation, depending on the zeroCrossings parameter.

A UGen that writes the pixels of an image using an x and y input signal. It uses either a sinc-based band-limited resampling algorithm, or bicubic interpolation, depending on the zeroCrossings parameter.

All window defining parameters (width, height) are polled once per matrix. All writing and filter parameters are polled one per output pixel.

Value parameters:
alpha

the alpha component of the source signal (0.0 transparent to 1.0 opaque).

dst

the "background" image to draw on. A DC(0.0) can be used, for example, to have a "black" background.

height

the height (number of rows) of the input and output matrix

kaiserBeta

the FIR windowing function's parameter

next

a trigger that causes the UGen to emit the current image and begin a new one. An image of size width * height will be output, and new background data will be read from in.

op

BinaryOp.Op identifier for the operand in the application of the Porter-Duff composition (+ in the standard definition).

rollOff

the FIR anti-aliasing roll-off width. Between zero and one.

rule

quasi-Porter-Duff rule id for composition between background (in) and pen foreground. It is assumed that <em>A<sub>r</sub></em> = <em>A<sub>d</sub></em> = <em>1</em>, and instead of addition we use a custom binary operation op. Where the constrain leads to otherwise identical rules, we flip the operand order (e.g. SrcOver versus SrcAtop).

src

the source signal's amplitude or "pen color"

width

the width (number of columns) of the input and output matrix

wrap

if non-zero, wraps coordinates around the input images boundaries. TODO: currently wrap = 0 is broken if using sinc interpolation!

x

horizontal position of the dynamic pen signal

y

vertical position of the dynamic pen signal

zeroCrossings

the number of zero-crossings in the truncated and windowed sinc FIR. If zero (default), algorithm uses bicubic interpolation instead.

See also:
Companion:
object
Companion:
class
object PitchAC extends ProductReader[PitchAC]
Companion:
class
final case class PitchAC(in: D, sampleRate: D, pitchMin: D, pitchMax: D, numCandidates: I, silenceThresh: D, voicingThresh: D, octaveCost: D, octaveJumpCost: D, voicedUnvoicedCost: D) extends Lazy[Double]

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 stepSize is automatically given, and windowing is fixed to Hann.

Companion:
object
final case class PitchesToViterbi(lags: D, strengths: D, numIn: I, peaks: D, maxLag: I, voicingThresh: D, silenceThresh: D, octaveCost: D, octaveJumpCost: D, voicedUnvoicedCost: D) extends SingleOut[Double]

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 suitable add signal is produced to be used in the Viterbi UGen. The output are matrices of size (numIn + 1).squared.

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 suitable add signal is produced to be used in the Viterbi UGen. The output are matrices of size (numIn + 1).squared.

'''Warning:''' This is still not thoroughly tested.

Value parameters:
lags

pitches given as sample periods, such as returned by AutoCorrelationPitches.

maxLag

the maximum lag time, corresponding to the minimum pitch

numIn

number of paths / candidates. to this the unvoiced candidate is added

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)

peaks

the peak amplitude of the underlying input signal, one sample per pitch frame, used for the unvoiced candidate.

silenceThresh

threshold for determining whether window is background or foreground.

strengths

strengths corresponding to the lags, such as returned by AutoCorrelationPitches.

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

voicingThresh

threshold for determining whether window is voiced or unvoiced.

Companion:
object
object Plot1D extends ProductReader[Plot1D[_]]
Companion:
class
final case class Plot1D[A](in: GE[A], size: I, label: String)(implicit num: Num[A]) extends ZeroOut with ProductWithAdjuncts

Debugging utility that plots 1D "windows" of the input data.

Debugging utility that plots 1D "windows" of the input data.

Companion:
object
object Poll extends ProductReader[Poll[_]]
Companion:
class
final case class Poll[A](in: GE[A], gate: B, label: String) extends ZeroOut

A UGen that prints snapshots of its input to the console. Note that arguments have different order than in ScalaCollider!

A UGen that prints snapshots of its input to the console. Note that arguments have different order than in ScalaCollider!

Value parameters:
gate

gate that causes the UGen to print a snapshot of the input when open.

in

the input to be pulled. If this is a constant, the UGen will close after polling it. This is to prevent a dangling Poll whose trigger is infinite (such as Impulse). If you want to avoid that, you should wrap the input in a DC.

label

an identifying label to prepend to the printing.

Companion:
object
Companion:
class
final case class PriorityQueue[A, B](keys: GE[A], values: GE[B], size: I)(implicit ord: Ord[A]) extends SingleOut[B] with ProductWithAdjuncts

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 size items. By its nature, the UGen only starts outputting values once the input signal (keys) has finished.

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 size items. By its nature, the UGen only starts outputting values once the input signal (keys) has finished.

Both inputs are "hot" and the queue filling ends when either of keys or values is finished.

Value parameters:
keys

the sorting keys; higher values mean higher priority

size

the maximum size of the priority queue.

values

the values corresponding with the keys and eventually output by the UGen. It is well possible to use the same signal both for keys and values.

Companion:
object
Companion:
class
final case class Progress(in: D, trig: B, label: String) extends ZeroOut

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).

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).

Value parameters:
in

progress fraction from zero to one

label

the label can be used to distinguish the contributions of different progress UGens

trig

trigger that causes the UGen to submit a snapshot of the progress to the control instance.

Companion:
object
Companion:
class
final case class ProgressFrames[A, L](in: GE[A], numFrames: GE[L], label: String)(implicit numL: NumInt[L]) extends ZeroOut with ProductWithAdjuncts

A variant of progress UGen for the common case where one wants to count the incoming frames of a signal.

A variant of progress UGen for the common case where one wants to count the incoming frames of a signal.

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).

The progress update is automatically triggered, using a combination where both the progress fraction (0.2%) and elapsed time (100ms) must have increased.

Value parameters:
in

signal whose length to monitor

label

the label can be used to distinguish the contributions of different progress UGens

numFrames

the expected length of the input signal

Companion:
object
Companion:
class
final case class Real1FFT(in: D, size: I, padding: I, mode: I) extends FFTHalfUGen

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 on mode, the output window size is either size + padding or size + padding + 2.

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 on mode, the output window size is either size + padding or size + padding + 2.

Value parameters:
in

the real signal to transform. If overlapping windows are desired, a Sliding should already have been applied to this signal, as well as multiplication with a window function.

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 a Real1IFFT using the same mode. 1 is "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 a Real1IFFT using the same mode. 2 is "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.

padding

amount of zero padding for each input window.

size

the time domain input window size

Companion:
object
Companion:
class
final case class Real1FullFFT(in: D, size: I, padding: I) extends FFTFullUGen
Companion:
object
final case class Real1FullIFFT(in: D, size: I, padding: I) extends FFTFullUGen
Companion:
object
Companion:
class
final case class Real1IFFT(in: D, size: I, padding: I, mode: I) extends FFTHalfUGen

Backward or inverse short-time Fourier transform UGen for a real-valued output signal. The FFT size is equal to size. The output is a succession of time domain signals of length size - padding. Depending on mode, the output input size is supposed to be either size or size + 2.

Backward or inverse short-time Fourier transform UGen for a real-valued output signal. The FFT size is equal to size. The output is a succession of time domain signals of length size - padding. Depending on mode, the output input size is supposed to be either size or size + 2.

Value parameters:
in

the complex signal to transform.

mode

packing mode of the input signal. 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 a Real1IFFT using the same mode. 1 is "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 a Real1IFFT using the same mode. 2 is "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.

padding

amount of zero padding for each output window. These are the number of sample frames to drop from each output window after the FFT.

size

the frequency domain input window size (fft size)

Companion:
object
Companion:
class
final case class Real2FFT(in: D, rows: I, columns: I, mode: I) extends FFT2HalfUGen

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.

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 either size + padding or size + padding + 2.

'''Warning:''' window parameter modulation is currently not working correctly (issue #30)

Value parameters:
columns

the input matrix number of columns

in

the real signal to transform. If overlapping windows are desired, a Sliding should already have been applied to this signal, as well as multiplication with a window function.

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 a Real2IFFT using the same mode. 1 is "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 a Real2IFFT using the same mode. 2 is "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.

rows

the input matrix number of rows

Companion:
object
Companion:
class
final case class Real2FullFFT(in: D, rows: I, columns: I) extends FFT2FullUGen

'''Warning:''' window parameter modulation is currently not working correctly (issue #30)

'''Warning:''' window parameter modulation is currently not working correctly (issue #30)

Companion:
object
final case class Real2FullIFFT(in: D, rows: I, columns: I) extends FFT2FullUGen

'''Warning:''' window parameter modulation is currently not working correctly (issue #30)

'''Warning:''' window parameter modulation is currently not working correctly (issue #30)

Companion:
object
Companion:
class
final case class Real2IFFT(in: D, rows: I, columns: I, mode: I) extends FFT2HalfUGen

'''Warning:''' window parameter modulation is currently not working correctly (issue #30)

'''Warning:''' window parameter modulation is currently not working correctly (issue #30)

Companion:
object
object Reduce extends ProductReader[GE[_]]
Companion:
class
final case class Reduce[A](elem: GE[A], op: Op[A, A, A]) extends Lazy[A]

A UGen that reduces the channels of the input signal, so it become a single-channel signal.

A UGen that reduces the channels of the input signal, so it become a single-channel signal.

Companion:
object
object ReduceWindow extends ProductReader[GE[_]]
Companion:
class
final case class ReduceWindow[A](in: GE[A], size: I, op: Op[A, A, A]) extends SingleOut[A]

A UGen that reduces all elements in each window to single values, for example by calculating the sum or product.

A UGen that reduces all elements in each window to single values, for example by calculating the sum or product.

Companion:
object
Companion:
class
final case class RepeatWindow[A, L](in: GE[A], size: I, num: GE[L])(implicit numL: NumInt[L]) extends SingleOut[A] with ProductWithAdjuncts

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.

Value parameters:
in

the input signal to group into windows of size size and repeat num times. If the input ends before a full window is filled, the last window is padded with zeroes to obtain an input window if size size

num

the number of repetitions of the input windows. one value is polled per iteration (outputting num windows of size size). the minimum num is one (it will be clipped to this).

size

the window size. one value is polled per iteration (outputting num windows of size size). the minimum size is one (it will be clipped to this).

Companion:
object
Companion:
class
final case class Resample(in: D, factor: D, minFactor: D, rollOff: D, kaiserBeta: D, zeroCrossings: I) extends SingleOut[Double]

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 zeroCrossings parameter. Note: If filter parameters are changed, the table must be recalculated which is very expensive. However, factor modulation is efficient.

Note: Unlike most other UGens, all parameters but in are read at "output rate". That is particular important for factor modulation. For each frame output, one frame from factor is consumed. Currently, modulating rollOff, kaiserBeta or zeroCrossings is not advised, as this case is not properly handled internally.

Value parameters:
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)

in

the signal to resample

kaiserBeta

the FIR windowing function's parameter

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 factor value encountered. It is possible to use a value actually higher than the lowest provided factor, 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

zeroCrossings

the number of zero-crossings in the truncated and windowed sinc FIR.

Companion:
object
final case class ResampleWindow(in: D, size: I, factor: D, minFactor: D, rollOff: D, kaiserBeta: D, zeroCrossings: I) extends SingleOut[Double]

A band-limited resampling UGen for images/matrices. This works like Resample but 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.

A band-limited resampling UGen for images/matrices. This works like Resample but 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.

Value parameters:
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)

in

the signal to resample

kaiserBeta

the FIR windowing function's parameter

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 factor value encountered. It is possible to use a value actually higher than the lowest provided factor, 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

size

the window size. Currently this is only read once upon initialization.

zeroCrossings

the number of zero-crossings in the truncated and windowed sinc FIR.

Companion:
object
Companion:
class
final case class ResizeWindow[A](in: GE[A], size: I, start: I, stop: I) extends SingleOut[A]

A UGen that resizes the windowed input signal by trimming each windows boundaries (if start is greater than zero or stop is less than zero) or padding the boundaries with zeroes (if start is less than zero or stop is greater than zero). The output window size is thus size - start + stop.

A UGen that resizes the windowed input signal by trimming each windows boundaries (if start is greater than zero or stop is less than zero) or padding the boundaries with zeroes (if start is less than zero or stop is greater than zero). The output window size is thus size - start + stop.

Value parameters:
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

Companion:
object
Companion:
class
final case class ReverseWindow[A](in: GE[A], size: I, clump: I) extends SingleOut[A]

Reverses the (clumped) elements of input windows.

Reverses the (clumped) elements of input windows.

E.g. ReverseWindow(ArithmSeq(1, 1, 9), 3) gives 7,8,9, 4,5,6, 1,2,3. The behavior when size % clump != 0 is to clump "from both sides" of the window, e.g. ReverseWindow(ArithmSeq(1, 1, 9), 4) gives 6,7,8,9, 5, 1,2,3,4.

Value parameters:
clump

the grouping size of window elements

in

the window'ed signal to reverse

size

the window size

Companion:
object
final case class RotateFlipMatrix[A](in: GE[A], rows: I, columns: I, mode: I) extends SingleOut[A]

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.

Value parameters:
columns

the number of columns in the input

in

the matrix / matrices to rotate

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.

rows

the number of rows in the input

Companion:
object
Companion:
class
final case class RotateWindow[A](in: GE[A], size: I, amount: I) extends SingleOut[A]

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.

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.

Value parameters:
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.

in

the signal to window and resize

size

the input window size

Companion:
object
Companion:
class
final case class RunningMax[A](in: GE[A], gate: B)(implicit ord: Ord[A]) extends SingleOut[A] with ProductWithAdjuncts

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 RunningMax UGen which outputs the maximum of a sliding window instead of waiting for a reset trigger. To track a sliding maximum, you can use PriorityQueue.

Value parameters:
gate

a gate that when greater than zero (and initially) sets the the internal state is set to negative infinity.

in

the signal to track

Companion:
object
Companion:
class
final case class RunningMin[A](in: GE[A], gate: B)(implicit ord: Ord[A]) extends SingleOut[A] with ProductWithAdjuncts

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 RunningMin UGen which outputs the maximum of a sliding window instead of waiting for a reset trigger. To track a sliding minimum, you can use PriorityQueue.

Value parameters:
gate

a gate that when greater than zero (and initially) sets the the internal state is set to positive infinity.

in

the signal to track

Companion:
object
Companion:
class
final case class RunningProduct[A](in: GE[A], gate: B)(implicit num: Num[A]) extends SingleOut[A] with ProductWithAdjuncts

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.

Value parameters:
gate

a gate that when greater than zero (and initially) sets the the internal state is set to one.

in

the signal to track

Companion:
object
Companion:
class
final case class RunningSum[A](in: GE[A], gate: B)(implicit num: Num[A]) extends SingleOut[A] with ProductWithAdjuncts

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 RunningSum UGen 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 of RunningSum from a non-delayed RunningSum.

Value parameters:
gate

a gate that when greater than zero (an initially) sets the the internal state is set to zero.

in

the signal to track

Companion:
object
final case class RunningWindowMax[A](in: GE[A], size: I, gate: B)(implicit ord: Ord[A]) extends SingleOut[A] with ProductWithAdjuncts

A UGen that like RunningMax calculates 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.

A UGen that like RunningMax calculates 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.

Value parameters:
gate

a gate signal that clears the internal state. When a gate is open (> 0), the ''currently processed'' window is reset altogether until its end, beginning accumulation again from the successive window.

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.

Companion:
object
final case class RunningWindowMin[A](in: GE[A], size: I, gate: B)(implicit ord: Ord[A]) extends SingleOut[A] with ProductWithAdjuncts

A UGen that like RunningMin calculates 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.

A UGen that like RunningMin calculates 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.

Value parameters:
gate

a gate signal that clears the internal state. When a gate is open (> 0), the ''currently processed'' window is reset altogether until its end, beginning accumulation again from the successive window.

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.

Companion:
object
final case class RunningWindowProduct[A](in: GE[A], size: I, gate: B)(implicit num: Num[A]) extends SingleOut[A] with ProductWithAdjuncts

A UGen that like RunningProduct calculates the product 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.

A UGen that like RunningProduct calculates the product 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.

Value parameters:
gate

a gate signal that clears the internal state. When a gate is open (> 0), the ''currently processed'' window is reset altogether until its end, beginning accumulation again from the successive window.

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.

Companion:
object
final case class RunningWindowSum[A](in: GE[A], size: I, gate: B)(implicit num: Num[A]) extends SingleOut[A] with ProductWithAdjuncts

A UGen that like RunningSum calculates 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.

A UGen that like RunningSum calculates 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.

Value parameters:
gate

a gate signal that clears the internal state. When a gate is open (> 0), the ''currently processed'' window is reset altogether until its end, beginning accumulation again from the successive window.

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.

Companion:
object
Companion:
class
trait SampleRate extends GE[Double]

A sample rate element simply signalizes that it refers to a sampling rate in Hertz. When in implicit scope, it enables extension methods on graph elements, such as 440.hertz or 2.3.seconds.

A sample rate element simply signalizes that it refers to a sampling rate in Hertz. When in implicit scope, it enables extension methods on graph elements, such as 440.hertz or 2.3.seconds.

Companion:
object
Companion:
class
final case class ScanImage(in: D, width: I, height: I, x: D, y: D, next: B, wrap: I, rollOff: D, kaiserBeta: D, zeroCrossings: I) extends SingleOut[Double]

A UGen that scans the pixels of an image using an x and y input signal. It uses either a sinc-based band-limited resampling algorithm, or bicubic interpolation, depending on the zeroCrossings parameter.

A UGen that scans the pixels of an image using an x and y input signal. It uses either a sinc-based band-limited resampling algorithm, or bicubic interpolation, depending on the zeroCrossings parameter.

All window defining parameters (width, height) are polled once per matrix. All scanning and filter parameters are polled one per output pixel.

Value parameters:
height

the height (number of rows) of the input matrix

in

the image to scan

kaiserBeta

the FIR windowing function's parameter

next

a trigger that causes the UGen to read in a new image from in.

rollOff

the FIR anti-aliasing roll-off width. Between zero and one.

width

the width (number of columns) of the input matrix

wrap

if non-zero, wraps coordinates around the input images boundaries. TODO: currently wrap = 0 is broken if using sinc interpolation!

x

horizontal position of the dynamic scanning signal

y

vertical position of the dynamic scanning signal

zeroCrossings

the number of zero-crossings in the truncated and windowed sinc FIR. If zero (default), algorithm uses bicubic interpolation instead.

See also:
Companion:
object
Companion:
class
final case class SegModPhasor(freqN: D, phase: D) extends SingleOut[Double]

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 to LFSaw which continuously reads frequency values, its output values go from zero to one, and the phase argument is only used internally (the output signal always starts at zero).

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 to LFSaw which continuously reads frequency values, its 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

Value parameters:
freqN

normalized frequency (f/sr). One value per output cycle is read. Also note that the UGen terminates when the freqN signal ends. Thus, to use a constant frequency, wrap it in a DC or DC(...).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).

Companion:
object
Companion:
class
final case class SetResetFF(set: B, reset: B) extends SingleOut[Boolean]

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.

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.

Both inputs are "hot" and the UGen runs until both have been terminated.

Companion:
object
object Sheet1D extends ProductReader[Sheet1D[_]]
Companion:
class
final case class Sheet1D[A](in: GE[A], size: I, label: String) extends ZeroOut

Debugging utility that displays 1D "windows" of the input data as a spreadsheet or table view.

Debugging utility that displays 1D "windows" of the input data as a spreadsheet or table view.

'''Warning:''' window parameter modulation is currently not working correctly (issue #30)

Companion:
object
object SinOsc extends ProductReader[SinOsc]
Companion:
class
final case class SinOsc(freqN: D, phase: D) extends SingleOut[Double]

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, freqN would be that frequency divided by the assumed sample rate.

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, freqN would be that frequency divided by the assumed sample rate.

Value parameters:
freqN

normalized frequency (f/sr).

phase

phase offset in radians

Companion:
object
object Slices extends ProductReader[Slices[_, _]]
Companion:
class
final case class Slices[A, L](in: GE[A], spans: GE[L])(implicit num: Num[A], numL: NumInt[L]) extends SingleOut[A] with ProductWithAdjuncts

A UGen that assembles slices of an input signal in random access fashion. It does so by buffering the input to disk.

A UGen that assembles slices of an input signal in random access fashion. It does so by buffering the input to disk.

Value parameters:
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 spans are 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:
Companion:
object
object Sliding extends ProductReader[Sliding[_]]
Companion:
class
final case class Sliding[A](in: GE[A], size: I, step: I) extends SingleOut[A]

A UGen that produces a sliding window over its input.

A UGen that produces a sliding window over its input.

When the input terminates and the last window is not full, it will be flushed with its partial content. Otherwise, all windows are guaranteed to be zero-padded to the window length if they had been only partially filled when the input ended.

Unlike the sliding operation of Scala collections, the UGen always performs steps for partial windows, e.g. Sliding(ArithmSeq(1, length = 4), size = 3, step = 1) will produce the flat output 1, 2, 3, 2, 3, 4, 3, 4, 0, 4, thus there are four windows, the first two of which are full, the third which is full by padding, and the last is partial.

Value parameters:
in

the input to be repacked into windows

size

the window size. this is clipped to be at least one

step

the stepping factor in the input, between windows. This clipped to be at least one. If step size is larger than window size, frames in the input are skipped.

See also:
Companion:
object
final case class SlidingPercentile[A](in: GE[A], len: I, frac: D, interp: I)(implicit num: Num[A]) extends SingleOut[A] with ProductWithAdjuncts

A UGen that reports a percentile of a sliding window across its input. The UGen starts outputting values immediately, even if the median window len is not yet reached. This is because len can be modulated. If one wants to discard the initial values, use a drop.

A UGen that reports a percentile of a sliding window across its input. The UGen starts outputting values immediately, even if the median window len is not yet reached. This is because len can be modulated. If one wants to discard the initial values, use a drop.

Note that for an even median length and no interpolation, the reported median may be either the value at index len/2 or len/2 + 1 in the sorted window.

All arguments are polled at the same rate. Changing the frac value may cause an internal table rebuild and can thus be expensive.

Value parameters:
frac

the percentile from zero to one. The default of 0.5 produces the median.

in

the input to analyze

interp

if zero (default), uses nearest-rank, otherwise uses linear interpolation. '''Note:''' currently not implemented, must be zero

len

the length of the sliding median window

Companion:
object
final case class SlidingWindowPercentile[A](in: GE[A], winSize: I, medianLen: I, frac: D, interp: I)(implicit num: Num[A]) extends SingleOut[A] with ProductWithAdjuncts

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 medianLen is not yet reached. This is because medianLen can be modulated (per input window). If one wants to discard the initial values, use a drop, for example for medianLen/2 * winSize frames.

Note that for an even median length and no interpolation, the reported median may be either the value at index medianLen/2 or medianLen/2 + 1 in the sorted window.

All arguments but in are polled per input window. Changing the frac value may cause an internal table rebuild and can thus be expensive.

Value parameters:
frac

the percentile from zero to one. The default of 0.5 produces the median.

in

the window'ed input to analyze

interp

if zero (default), uses nearest-rank, otherwise uses linear interpolation. '''Note:''' currently not implemented, must be zero

medianLen

the length of the sliding median window (the filter window applied to every cell of the input window)

winSize

the size of the input windows

Companion:
object
object SortWindow extends ProductReader[SortWindow[_, _]]
Companion:
class
final case class SortWindow[A, B](keys: GE[A], values: GE[B], size: I)(implicit ord: Ord[A]) extends SingleOut[B] with ProductWithAdjuncts

A UGen that sorts the input data window by window.

A UGen that sorts the input data window by window.

Value parameters:
keys

the sorting keys; output will be in ascending order

size

the window size.

values

the values corresponding with the keys and eventually output by the UGen. It is well possible to use the same signal both for keys and values.

Companion:
object
final case class StrongestLocalMaxima(in: D, size: I, minLag: I, maxLag: I, thresh: D, octaveCost: D, num: I) extends MultiOut[Double]

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.

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 n strongest peaks per window (to obtain a frequency, divide the sampling rate by these lag times). The second output gives the intensities of these n candidates. If there are less than n candidates, the empty slots are output as zeroes.

Value parameters:
in

the auto-correlation windows

maxLag

the maximum lag time in sample frames, corresponding to the minimum frequency accepted

minLag

the minimum lag time in sample frames, corresponding to the maximum frequency accepted

num

number of candidate periods output. This is clipped to be at least 1. see PitchesToViterbi see Viterbi

octaveCost

a factor for favouring higher frequencies. use zero to turn off this feature.

size

the size of the auto-correlation windows. must be at least 2.

thresh

the "voicing" threshold for considered for local maxima within minLag maxLag.

Companion:
object
object Take extends ProductReader[Take[_, _]]
Companion:
class
final case class Take[A, L](in: GE[A], length: GE[L])(implicit numL: NumInt[L]) extends SingleOut[A] with ProductWithAdjuncts
Companion:
object
object TakeRight extends ProductReader[TakeRight[_, _]]
Companion:
class
final case class TakeRight[A, L](in: GE[A], length: GE[L])(implicit numL: NumInt[L]) extends SingleOut[A] with ProductWithAdjuncts
Companion:
object
object TakeWhile extends ProductReader[TakeWhile[_]]
Companion:
class
final case class TakeWhile[A](in: GE[A], p: B) extends SingleOut[A]
Companion:
object
object Then
Companion:
class
sealed trait Then[+A] extends Lazy
Companion:
object
object Timer extends ProductReader[Timer]
Companion:
class
final case class Timer(trig: B) extends SingleOut[Long]

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.

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.

Value parameters:
trig

trigger signal to reset the counter. Note that the UGen shuts down when trig finishes, so to use a constant like 0, it has to be wrapped in a DC, for example.

Companion:
object
final case class TransposeMatrix[A](in: GE[A], rows: I, columns: I) extends SingleOut[A]

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.

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:''' The UGens takes up twice the matrix size of memory.

The output matrix is transposed (rows and columns exchanged). So an input of (a, b, c, d, e, f) with rows = 2 and columns = 3 is 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 = height and columns = width.

Value parameters:
columns

the number of columns of the input

in

the input matrices

rows

the number of rows of the input

See also:
Companion:
object
object Trig extends ProductReader[Trig[_]]
Companion:
class
final case class Trig[A](in: GE[A])(implicit num: Num[A]) extends SingleOut[Boolean] with ProductWithAdjuncts

A UGen that creates a trigger when input changes from non-positive to positive. This is useful when a gate argument of another UGen should indeed be used like a single trigger, as a constant positive input will not produce a held signal.

A UGen that creates a trigger when input changes from non-positive to positive. This is useful when a gate argument of another UGen should indeed be used like a single trigger, as a constant positive input will not produce a held signal.

Companion:
object
object TrigHold extends ProductReader[TrigHold[_]]
Companion:
class
final case class TrigHold[L](in: B, length: GE[L], clear: B)(implicit numL: NumInt[L]) extends SingleOut[Boolean] with ProductWithAdjuncts

A UGen that holds an input trigger signal for a given duration. When a trigger is received from in, the output changes from zero to one for the given length amount of frames. If a new trigger arrives within this period, the internal length counter is reset (the high state is kept for further length frames).

A UGen that holds an input trigger signal for a given duration. When a trigger is received from in, the output changes from zero to one for the given length amount of frames. If a new trigger arrives within this period, the internal length counter is reset (the high state is kept for further length frames).

Value parameters:
clear

an auxiliary trigger or gate signal that resets the output to low if there is currently no high in. This signal is read synchronously with in. If both clear and in are high at a given point, then the UGen outputs high but has its length counter reset.

in

an input trigger or gate signal. Whenever the signal is positive, the internal hold state is reset. If a strict trigger is needed instead of a gate signal, a Trig UGen can be inserted.

length

the number of sample frames to hold the high output once a high input is received. A new value is polled whenever in is high.

Companion:
object
Companion:
class
sealed trait UGenInGroup[A] extends UGenInLike[A]
Companion:
object
final case class UGenOutProxy[A](ugen: MultiOut[A], outputIndex: Int) extends UGenProxy[A]

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.

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[A] extends UGenIn[A]
object UnaryOp extends ProductReader[SingleOut[_]]
Companion:
class
final case class UnaryOp[A, B](op: Op[A, B], in: GE[A]) extends SingleOut[B]
Companion:
object
Companion:
class
final case class UnzipWindow[A](in: GE[A], size: I) extends Lazy[A]
Companion:
object
Companion:
class
final case class UnzipWindowN[A](numOutputs: Int, in: GE[A], size: I) extends MultiOut[A]
Companion:
object
final case class ValueBooleanSeq(elems: Boolean*) extends SingleOut[Boolean]

Loops the given values.

Loops the given values.

Companion:
object
final case class ValueDoubleSeq(elems: Double*) extends SingleOut[Double]

Loops the given values.

Loops the given values.

Companion:
object
Companion:
class
final case class ValueIntSeq(elems: Int*) extends SingleOut[Int]

Loops the given values.

Loops the given values.

Companion:
object
Companion:
class
final case class ValueLongSeq(elems: Long*) extends SingleOut[Long]

Loops the given values.

Loops the given values.

Companion:
object
object ValueSeq

Loops the given values.

Loops the given values.

object Viterbi extends ProductReader[Viterbi]
Companion:
class
final case class Viterbi(mul: D, add: D, numStates: I, numFrames: I) extends SingleOut[Int]

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 numStates exclusive).

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 numStates exclusive).

'''Note:''' This UGen must run until numFrames or 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 mul and add that 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 v by providing an add matrix of numStates x numStates cells, which is zero except for the first column filled by v (alternatively, each row filled with the next value of v, or a diagonal matrix of v; if v can take negative value, make sure to fill the initial numStates x numStates completely by duplicating v).

For the classical data, set add just to the initial matrix as explained above (multiplying emitted first observations with initial probabilities), and then use exclusively mul by 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

Value parameters:
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.

mul

the generalized multiplicative matrix (combining transition probabilities, emission probabilities and observations). If only accumulation is used, set this to 1.0.

numFrames

the number of observations. If -1, the UGen runs until the input is exhausted. This happens when ''both'' mul and add end. see StrongestLocalMaxima see PitchesToViterbi

numStates

the number of different states, as reflected by the inner dimensions of matrices mul and add.

Companion:
object
final case class WPE_Dereverberate(in: D, fftSize: I, winStep: I, delay: I, taps: I, alpha: D, psdLen: I) extends D

A graph element performing end-to-end blind de-reverberation of an input signal. It performs the FFT/IFFT setup around invocations of WPE_ReverbFrame.

A graph element performing end-to-end blind de-reverberation of an input signal. It performs the FFT/IFFT setup around invocations of WPE_ReverbFrame.

'''Note:''' this does not yet work correctly with multi-channel input.

Value parameters:
alpha

the decay factor for the filter coefficients

delay

the delay in spectral frames to avoid suppression of early reflections

fftSize

the fft-size

in

the reverberant time domain signal

psdLen

the number of preceding spectral frames to include as "context" in the psd

taps

the filter size in spectral frames to capture the late reverberation

winStep

the step size for the sliding window; typically 1/4 of fftSize

Companion:
object
final case class WPE_ReverbFrame(in: D, psd: D, bins: I, delay: I, taps: I, alpha: D) extends MultiOut[Double]

A UGen implementation of a single frame Weighted Prediction Error (WPE) de-reverberation algorithm in the frequency domain. It takes a DFT'ed input signal frame by frame and returns the estimated reverberated components. To actually obtain the de-reverberated signal, subtract the output from the input signal, then perform inverse FFT and overlap-add reconstruction.

A UGen implementation of a single frame Weighted Prediction Error (WPE) de-reverberation algorithm in the frequency domain. It takes a DFT'ed input signal frame by frame and returns the estimated reverberated components. To actually obtain the de-reverberated signal, subtract the output from the input signal, then perform inverse FFT and overlap-add reconstruction.

The algorithm closely follows the Python package described in L. Drude, J. Heymann, Ch. Boeddeker, R. Haeb-Umbach, 'NARA-WPE: A Python package for weighted prediction error dereverberation in Numpy and Tensorflow for online and offline processing' and its Numpy implementation (MIT licensed).

'''Note:''' this does not yet work correctly with multi-channel input.

Value parameters:
alpha

the decay factor for the filter coefficients

bins

the number of frequency bins (should be fftSize / 2 + 1)

delay

the delay in spectral frames to avoid suppression of early reflections

in

the sequence of complex FFT'ed frames. Should have been obtained through Real1FFT with mode = 1.

psd

the power spectrum density estimation, frame by frame corresponding with in. It should correspond with the shape of in, however being monophonic instead of multi-channel and using real instead of complex numbers (half the signal window length).

taps

the filter size in spectral frames to capture the late reverberation

Companion:
object
Companion:
class
final case class WhiteNoise(mul: D) extends SingleOut[Double]

Nominal signal range is -mul to +mul (exclusive).

Nominal signal range is -mul to +mul (exclusive).

Companion:
object
Companion:
class
final case class WindowApply[A](in: GE[A], size: I, index: I, mode: I) extends SingleOut[A]

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.

For example, the first element per window can be extracted with index = 0, and the last element per window can be extracted with index = -1, mode = 1 (wrap).

If the input in terminates before a window of size is full, it will be padded with zeroes.

Value parameters:
in

the window'ed signal to index

index

the zero-based index into each window. One value per window is polled.

mode

wrap mode. 0 clips indices, 1 wraps them around, 2 folds them, 3 outputs zeroes when index is out of bounds.

size

the window size.

Companion:
object
final case class WindowIndexWhere(p: B, size: I) extends SingleOut[Int]

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 or if the window size is zero, the index will be -1.

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 or if the window size is zero, the index will be -1.

Value parameters:
p

a predicate to detect the index

size

the window size.

Companion:
object
Companion:
class
final case class WindowMaxIndex[A](in: GE[A], size: I)(implicit ord: Ord[A]) extends SingleOut[Int] with ProductWithAdjuncts

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).

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).

Value parameters:
in

the input signal.

size

the window size.

Companion:
object
object Wrap extends ProductReader[Wrap[_]]
Companion:
class
final case class Wrap[A](in: GE[A], lo: GE[A], hi: GE[A])(implicit num: Num[A]) extends SingleOut[A] with ProductWithAdjuncts
Companion:
object
object Zip extends ProductReader[Zip[_]]
Companion:
class
final case class Zip[A](a: GE[A], b: GE[A]) extends SingleOut[A]
Companion:
object
object ZipWindow extends ProductReader[ZipWindow[_]]
Companion:
class
final case class ZipWindow[A](a: GE[A], b: GE[A], size: I) extends SingleOut[A]
Companion:
object
Companion:
class
final case class ZipWindowN[A](in: GE[A], size: I) extends SingleOut[A]
Companion:
object