de.sciss.fscape.graph
Type members
Classlikes
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
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
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
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
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
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
- Companion:
- object
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 ofxMin
,xMax
,yMin
,yMax
- for each blob - 2 -
numVertices
- the number of vertices (contour coordinates) for each blob - 3 -
vertices
- tuples ofx
andy
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
- Companion:
- object
Inserts a buffer into the stream of up to size
frames.
Inserts a buffer into the stream of up to size
frames.
- Companion:
- object
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
'''Warning:''' window parameter modulation is currently not working correctly (issue #30)
'''Warning:''' window parameter modulation is currently not working correctly (issue #30)
- Companion:
- object
'''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
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
Concatenates two signals.
Concatenates two signals.
- Companion:
- object
A scalar constant used as an input to a UGen.
A scalar constant used as an input to a UGen.
- Companion:
- object
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
A scalar information UGen that reports the control block size.
A scalar information UGen that reports the control block size.
- Companion:
- object
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
Creates a constant infinite signal.
Creates a constant infinite signal.
- Companion:
- object
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
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
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
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
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
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
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
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
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
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
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
Inserts a buffer into the stream of num
blocks.
Inserts a buffer into the stream of num
blocks.
- Companion:
- object
- Companion:
- object
- Companion:
- object
A single channel UGen of zero length.
A single channel UGen of zero length.
- Companion:
- object
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
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
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
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
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
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
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
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
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
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
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
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
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 afterin
has finished, if1
outputs the entire histogram for every input sample.- reset
when greater than zero, resets the count.
- See also:
- Companion:
- object
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 astrue
. Note that multi-channel expansion does not apply here, because the branches may have side-effects which are not supposed to be repeated across channels. Instead, ifcond
expands to multiple channels, they are combined using logical|
(OR).
- See also:
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 isfoo-123.jpg
and the indices contain4
and5
, then the UGen will read the imagesfoo-4
andfoo-5
(the placeholder123
is irrelevant).
- Companion:
- object
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 isfoo-123.jpg
and the indices contain4
and5
, then the UGen will write the imagesfoo-4
andfoo-5
(the placeholder123
is irrelevant).
- Companion:
- object
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Overlapping window summation with offset (fuzziness) that can be modulated.
Overlapping window summation with offset (fuzziness) that can be modulated.
- Companion:
- object
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
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
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. Currentlystep
values larger thansize
are clipped tosize
. This may change in the future
- See also:
- Companion:
- object
'''Warning:''' window parameter modulation is currently not working correctly (issue #30)
'''Warning:''' window parameter modulation is currently not working correctly (issue #30)
- Companion:
- object
'''Warning:''' window parameter modulation is currently not working correctly (issue #30)
'''Warning:''' window parameter modulation is currently not working correctly (issue #30)
- Companion:
- object
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
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 fromin
.- 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 operationop
. Where the constrain leads to otherwise identical rules, we flip the operand order (e.g.SrcOver
versusSrcAtop
).- 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
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
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 byAutoCorrelationPitches
.- 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
Debugging utility that plots 1D "windows" of the input data.
Debugging utility that plots 1D "windows" of the input data.
- Companion:
- object
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 asImpulse
). If you want to avoid that, you should wrap the input in aDC
.- label
an identifying label to prepend to the printing.
- Companion:
- object
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
andvalues
.
- Companion:
- object
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
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
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 aReal1IFFT
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 aReal1IFFT
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
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 aReal1IFFT
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 aReal1IFFT
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
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 aReal2IFFT
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 aReal2IFFT
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
'''Warning:''' window parameter modulation is currently not working correctly (issue #30)
'''Warning:''' window parameter modulation is currently not working correctly (issue #30)
- Companion:
- object
'''Warning:''' window parameter modulation is currently not working correctly (issue #30)
'''Warning:''' window parameter modulation is currently not working correctly (issue #30)
- Companion:
- object
'''Warning:''' window parameter modulation is currently not working correctly (issue #30)
'''Warning:''' window parameter modulation is currently not working correctly (issue #30)
- Companion:
- object
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
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
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 repeatnum
times. If the input ends before a full window is filled, the last window is padded with zeroes to obtain an input window if sizesize
- num
the number of repetitions of the input windows. one value is polled per iteration (outputting
num
windows of sizesize
). the minimumnum
is one (it will be clipped to this).- size
the window size. one value is polled per iteration (outputting
num
windows of sizesize
). the minimumsize
is one (it will be clipped to this).
- Companion:
- object
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 providedfactor
, in order to limit the buffer usage. In that case, the FIR anti-aliasing filter will be truncated.- rollOff
the FIR anti-aliasing roll-off width
- zeroCrossings
the number of zero-crossings in the truncated and windowed sinc FIR.
- Companion:
- object
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 providedfactor
, in order to limit the buffer usage. In that case, the FIR anti-aliasing filter will be truncated.- rollOff
the FIR anti-aliasing roll-off width
- 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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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 aDC
orDC(...).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
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
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
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
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
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
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
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
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
andvalues
.
- Companion:
- object
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
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 like0
, it has to be wrapped in aDC
, for example.
- Companion:
- object
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
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
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 within.
If bothclear
andin
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
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.
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]
- 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
andadd
end. see StrongestLocalMaxima see PitchesToViterbi- numStates
the number of different states, as reflected by the inner dimensions of matrices
mul
andadd
.
- Companion:
- object
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
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
withmode = 1
.- psd
the power spectrum density estimation, frame by frame corresponding with
in
. It should correspond with the shape ofin
, 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
Nominal signal range is -mul
to +mul
(exclusive).
Nominal signal range is -mul
to +mul
(exclusive).
- Companion:
- object
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
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
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