Building Blocks

The building blocks bidules are aimed at the more experienced users. Their main feature is that they have inputs for their main parameters instead of a GUI which means that the parameter values are applied at each sample instead of at each block of samples. With these you can design your own effects and synths.

Audio File

Basic Audio Buffer

Really basic audio buffer that let you decide which index position to record/play. Take note that play has priority on record, meaning that if the buffer is both playing and recording, the buffer will output the sample at the given position inside the buffer before replacing it with the new one.

  • Size in ms: the length of the audio buffer in memory
  • Interpolation: method used to interpolate samples when the playback speed is different than 1.0
  • Audio Input: input for the audio signal you might want to record
  • Play Position Input: wanted index position to play at each sample
  • Play Gate Input: once a 1 is received the playing will continue for as long that 1 is received in this input
  • Record Gate Input: once a 1 is received the recording will continue for as long that 1 is received in this input
  • Record Position Input: wanted index position to record at each sample
  • Clear Contents Trigger input: send a trigger here to erase the contents of the buffer
  • # of samples in buffer Output: the total amount of samples (ie sample rate multiplied by time) available in the buffer, use this to know the upper bound to use (typically in an Accum) in the position inputs

Basic Audio Buffer 2

An evolution of the Basic Audio Buffer to include a display (where you can set the in and out points also throuh parameter linking) of the contents of the buffer. (Notice the extra + and - buttons (mouse wheel can also be used) in the toolbar to zoom in and out) This is a simplified version where the position index is internally managed.

  • Size in ms: the length of the audio buffer
  • Interpolation: method used to interpolate samples when the playback speed is different than 1.0
  • File/Save: set a filename to record the selected portion to a file and add it to the mediapool
  • Audio Input: input for the audio signal you might want to record
  • Play Gate Input: once a 1 is received the playing will continue for as long that 1 is received in this input
  • Playback speed multiplier Input: playback speed
  • Record Gate Input: once a 1 is received the recording will continue for as long that 1 is received in this input
  • Clear Contents Trigger input: send a trigger here to erase the contents of the buffer
  • # of samples in buffer Output: # of samples in buffer Output: the total amount of samples (ie sample rate multiplied by time) available in the buffer

Basic Audio Buffer 2 Ex

An evolution of the Basic Audio Buffer to include a display (where you can set the in and out points also throuh parameter linking) of the contents of the buffer. (Notice the extra + and - buttons (mouse wheel can also be used) in the toolbar to zoom in and out)

  • Size in ms: the length of the audio buffer
  • Interpolation: method used to interpolate samples when the playback speed is different than 1.0
  • File/Save: set a filename to record the selected portion to a file and add it to the mediapool
  • Audio Input: input for the audio signal you might want to record
  • Play Gate Input: once a 1 is received the playing will continue for as long that 1 is received in this input
  • Play Position Input: wanted index position to play at each sample
  • Record Gate Input: once a 1 is received the recording will continue for as long that 1 is received in this input
  • Record Position Input: wanted index position to record at each sample
  • # of samples in buffer Output: use this to know the upper bound to use in the play position input use this to know the upper bound to use (typically in an Accum) in the position inputs
  • Loop in point output: The index in the buffer for the loop start point as driven by the UI or parameter linking
  • Loop out point output: The index in the buffer for the loop end point as driven by the UI or parameter linking

Basic Audio File Player

Really basic file player that let you decide which position index to play.

  • Audio File: select a file from the MediaPool
  • Add Files: shortcut to add audio files to the MediaPool
  • Interpolation: calculation method for interpolating samples when playing at speeds different than 1x
  • Play Trigger Input: send a 1 to start the playback of the file
  • Play Gate Input: once a trigger is received the playing will continue for as long that 1 is received in this input
  • Play Position Input: wanted sample to play at each sample
  • Amplitude Input: wanted amplitude to apply to the output
  • # of samples in audio file Output: use this to know the upper bound to use in the play position input or to calculate the length of the file with the sample rate output
  • Sample Rate of Audio File Output: sampling rate of the currently selected audio file

Delay Line

Basic delay line

  • Audio Input: input for the audio signal
  • Delay Length: delay length (in samples)

Envelopes

ADSR Envelope

ADSR envelope

  • Gate Input: gate input for the duration of the A, D, and S parts of the envelope
  • Retrigger Input: retrigger the ADSR by sending a 1

The second output is an activity gate, it will output 1 for the entire time that the envelope is active.

AHDSR Envelope

AHDSR envelope, the H stands for hold, it's the amount of time the Attack value is maintained before going to the decay state

  • Gate Input: gate input for the duration of the A, H, D, and S parts of the envelope
  • Retrigger Input: retrigger the AHDSR by sending a 1

The second output is an activity gate, it will output 1 for the entire time that the envelope is active.

Basic ADSR Envelope

Basic ADSR envelope, same as the ADSR envelope except that the values used are inputs instead of sliders.

  • Attack Input: Attack time in ms
  • Decay Input: Decay time in ms
  • Sustain Input: Sustain level in %
  • Release Input: Release time in ms
  • Gate Input: gate input for the duration of the A, D, and S parts of the envelope
  • Retrigger Input: retrigger the ADSR by sending a 1

The second output is an activity gate. It will output 1 for the entire time that the envelope is active.

Basic AHDSR Envelope

Basic AHDSR envelope, same as the AHDSR envelope except that the values used are inputs instead of sliders.

  • Attack Input: Attack time in ms
  • Hold Input: Hold time in ms
  • Decay Input: Decay time in ms
  • Sustain Input: Sustain level in %
  • Release Input: Release time in ms
  • Gate Input: gate input for the duration of the A, H, D, and S parts of the envelope
  • Retrigger Input: retrigger the AHDSR by sending a 1

The second output is an activity gate. It will output 1 for the entire time that the envelope is active.

Basic Exponential Envelope

Basic exponential envelope.

Same as the Exponential Envelope except that the decay time is an input instead of a parameter.

Envelope Follower

Basic envelope follower.

The second output is an activity gate, it will output 1 for the entire time that the envelope is active.

Exponential Envelope

Exponential envelope.

The second output is an activity gate. It will output 1 for the entire time that the envelope is active.

Graphical (Trigger) Envelope

Graphical (Trigger) Envelope

Multipoint envelope automation whose transversal is activated (and reset) by a trigger signal. The base unit is in seconds. You can move points and delete them using the delete key (once they are highlighted in blue). you can select multiple points when holding the Ctrl(Windows)/Command(OS X) key.

Synched Graphical (Trigger) Envelope

Synched Graphical (Trigger) Envelope

Same thing as a Graphical (Trigger) Envelope, except that its time base is in quarter notes (PPQ) and it will follow the tempo of a sync source. It will NOT play if not synced or if the sync source is stopped

Filters

Allpass Filter

Basic allpass filter.

  • Audio Input: input for the audio signal
  • Delay Time: delay time for the filter (in ms)

Allpass Filter 2

Slightly different version of the Allpass filter consisting of a delay line and low pass filter

  • Audio Input: input for the audio signal
  • Delay Length: delay time (in samples)

Basic Filter

Collection of basic one pole, one zero and one pole/one zero 6db filters that you can cascade to create others.

  • Type: select the type of filter

Biquad Filter

Basic biquad filter.

  • Audio Input: input for the audio signal
  • Frequency Input: frequency to use for the filter for the current sample (in Hz)
  • Q/Bandwidth: Q/Bandwidth for the current sample, depending on the selected filter type

Comb Filter

Basic comb filter.

  • Audio Input: input for the audio signal
  • Delay Time: delay time for the filter in ms

Comb Filter 2

Better version of the comb filter.

  • Audio Input: input for the audio signal
  • Delay Time: delay time for the filter in samples
  • Filter Frequency: frequency value to use for the comb filter internal filter

Crossover Filter

Basic crossover filter.

  • Audio Input: input for the audio signal
  • Frequency Input: frequency to use for the filter for the current sample (in Hz)

FIR

Only does Hilbert 90 degree phase shift for now. And coeffs are only valid in 44100 or 48000 sampling rates (for now).

FIR Table

Brute-force convolution through a loaded impulse or a user drawn waveform, length can be set by user, fading out the impulse is optional but recommended if the impulse is longer than the maximum length

  • Audio Input: input for the audio signal
  • Audio Output: convolution result
  • Latency in samples: latency introduced by the convolution depending on the parameter values

Gate

Simple bidule that outputs 1 while the checkbox is on and 0 otherwise,

Gate Clock

Simple bidule that outputs 1 for a specified duration then 0

  • # of samples for the gate to be active: the clock length
  • Reset Clock: trigger input to reset clock

MIDI

Activity

Outputs a 1 at each sample a MIDI event occurs.

Aftertouch Creator

Creation of MIDI Aftertouch events. It stores the last value for any given Aftertouch note number and will output an Aftertouch event only if the value has changed. The amount of created events is bound by the MIDI specifications which means about a thousand events per second.

  • Aftertouch Note Number Input: the note number of the Aftertouch event to create
  • Aftertouch Normalized Value Input: the Aftertouch value remapped between 0 and 1
  • Trigger Input: to force the creation of an Aftertouch event (otherwise only created when the number or value input has changed)
  • Auto-detect value changes parameter: keep track of the incoming values and create new events when there is change if this is off, events are only created when a trigger is received.

Aftertouch Extractor

Extraction of MIDI Aftertouch events. When an Aftertouch event is received the outputs are changed to reflect that value.

  • Note Number Output: the note number of the Aftertouch event
  • Normalized Value Output: the Aftertouch value remapped between 0 and 1

Basic Channel Remapper

Change the MIDI channel of incoming MIDI events to the input value, specially useful when using extractors/creators to manipulate MIDI events

  • MIDI Channel Input: the channel to remap the event to

CC Creator

Creation of MIDI CC events. It stores the last value for any given CC number and will output a CC event only if the value has changed. The amount of created events is bound by the MIDI specifications which means about a thousand events per second.

  • CC Number Input: the number of the CC to create
  • CC Normalized Value Input: the CC value remapped between 0 and 1
  • Trigger Input: to force the creation of a CC (otherwise CCs are created only when CC number or value has changed)
  • 14bit CCs Mode: create 14bit CC instead of 7bit if the CC number is valid (0-31)
  • Auto-detect value changes parameter: keep track of the incoming values and create new events when there is change if this is off, events are only created when a trigger is received.

CC Creator (Multi)

Possibility to create all 128 MIDI CCs in a single bidule, this will keep track of the last value for all CCs and only output a new CC if the incoming value has changed

  • CC Normalized Value Input: the CC value remapped between 0 and 1

CC Extractor

Extraction of MIDI CC events. When a CC event is received the outputs are changed to reflect that value.

  • CC Number Output: the number of the CC
  • CC Normalized Value Output: the CC value remapped between 0 and 1
  • 14bit CCs Mode: interpret CCs 0 to 31(32-63) as 14bit instead of pair of 7bit

CC Extractor (Multi)

Extraction of all 128 MIDI CCs in a single bidule

  • CC Normalized Value Output: the CC value remapped between 0 and 1

Channel Extractor

Extraction of the MIDI Channel of any incoming MIDI event.

  • Channel Number Output: the channel number for the event

Channel Pressure Creator

Creation of MIDI Channel Pressure events. It stores the last value and will output an event only if the value has changed. The amount of created events is bound by the MIDI specifications which means about a thousand events per second.

  • Channel Pressure Normalized Value Input: the Channel Pressure value remapped between 0 and 1
  • Trigger Input: to force the creation of a Channel Pressure event (otherwise only created when the number or value input has changed)
  • Auto-detect value changes parameter: keep track of the incoming values and create new events when there is change if this is off, events are only created when a trigger is received.

Channel Pressure Extractor

Extraction of MIDI Channel Pressure events. When a Channel Pressure event is received the output is changed to reflect that value.

  • Normalized Value Output: the Channel Pressure value remapped between 0 and 1

MIDI Delay Basic

Delays the MIDI event for a specified amount of time in samples, the delay time is taken at the same sample index in the current buffer that the MIDI event.

  • Delay time in samples: the amount of samples to delay the event

MIDI Gate

Use a gate signal at audio rate to control if a MIDI event goes through or not, the gate value is taken at the same sample index in the current buffer that the MIDI event.

  • Gate Signal: 1 to let event pass, 0 to block

Map

Map: association between a number(key) and a MIDI event(value), the data will be kept until it is explicitely cleared or overwritten

  • Read Index Input: send the key for the MIDI event you wish to read, will be read as an integer
  • Read Trigger Input: send a 1 to read the MIDI event at the read index
  • Write Index Input: send the key for the MIDI event you wish to write, will be read as an integer
  • Write Trigger Input: send a 1 to write the MIDI event to the write index
  • Clear Index Input: send the key for the value you wish to remove from the map, will be read as an integer
  • Clear Trigger Input: send a 1 to clear the value at the clear index
  • Clear All Trigger Input: empty the contents
  • Write Event Input: send the MIDI event to be saved at the write index
  • Number of Elements Output: the current number of key-value pairs in the map
  • Event Output: the MIDI event when a read trigger occurs

Message Creator

Create MIDI messages directly (Note: there is no validation on the resulting MIDI message) by specifying the 3 data bytes.

  • data0, data1, data2 Inputs: value for the 3 data bytes of a MIDI message
  • Trigger Input: to force the creation of a message event (otherwise only created when an input has changed)
  • Auto-detect value changes parameter: keep track of the incoming values and create new events when there is change if this is off, events are only created when a trigger is received.

Message Extractor

Extracts MIDI messages directly (Note: there is no validation on the incoming MIDI message) to the 3 data bytes.

  • data0, data1, data2 outputs: value for the 3 data bytes of a MIDI message

Note Closer

Will act as a passthrough and keep track of opened notes, when it receives a trigger (1.0) signal on its audio input, it will send Note Off events (at the same sample index the trigger is received) for all currently opened notes.

Note Creator

The opposite of the MIDI Note Extractor: use values to generate MIDI notes.

  • Frequency Input: frequency value for the outgoing MIDI note (in Hz)
  • Amplitude Input: velocity value remapped between 0 and 1
  • Gate Input: input for the gate signal, set to 1 on MIDI Note On until a MIDI Note Off is received
  • Trigger input: input for triggers, set to 1 for the sample on which the MIDI note should be created
  • Add Microtonal info (param): if this is selected, the outgoing MIDI notes will carry a detune factor if the frequency input is not an exact MIDI note
Look at the Arpeggiator group's internals for an example of how to use the MIDI Note Creator.

Note Creator 2

MIDI note creator for creating multiple notes, this version doesn't keep memory of what note is on or off

  • Frequency Input: frequency value for the outgoing MIDI note (in Hz)
  • Amplitude Input: velocity value remapped between 0 and 1
  • Note On Trigger Input: send a 1 when you want to create a Note On event
  • Note Off Trigger Input: send a 1 when you want to create a Note Off event
  • Add Microtonal info (param): if this is selected, the outgoing MIDI notes will carry a detune factor if the frequency input is not an exact MIDI note

Note Extractor

Useful information extracted from MIDI Note On/Off events.

  • Frequency Output: frequency value for the incoming MIDI note with pitch bend applied (in Hz)
  • Amplitude Output: velocity value remapped between 0 and 1 (NOTE ON only!)
  • Gate Output: output for gate signal, set to 1 on MIDI Note On until a MIDI Note Off is received
  • Trigger Output: output for triggers, set to 1 for the sample on which the MIDI note is received
  • Stealing Mode: select "Use Lowest" to have portamento
  • Glide Time: used when in portamento mode
  • Wheel Range: range of the pitch bend in cents
  • Always Retrig: select this to send a trigger output even if the note is currently in legato (portamento mode)
Note that once a note is rececived, the frequency and amplitude outputs will continue to output the previous note's information, even if note becomes OFF (gate=0). This is useful to allow for proper envelope release. Please look at the "PhatSynth" group's internals for an example.

Note Extractor 2

MIDI note extractor similar to MIDI Note Creator 2 contrary to the MIDI Note Extractor this version doesn't keep memory of what note is on or off

  • Frequency Output: frequency value for the incoming MIDI note (in Hz)
  • Amplitude Output: velocity value remapped between 0 and 1
  • Note On Trigger Output: sends a 1 on a Note On event
  • Note Off Trigger Output: sends a 1 on a Note Off event

Pitchbend Creator

Creation of MIDI Pitchbend events from values, events will be created automatically when the input value changes

  • Normalized Value Input: the value for the Pitchbend remapped between -1 and 1 where 0 is no pitch change
  • Trigger Input: send a 1 to force the creation of a Pitchbend event even if the number hasn't changed
  • Auto-detect value changes parameter: keep track of the incoming values and create new events when there is change if this is off, events are only created when a trigger is received.

Pitchbend Extractor

Extraction of MIDI Pitchbend events. When a Pitchbend event is received the output is changed to reflect that value.

  • Normalized Value Output: the value for the Pitchbend remapped between -1 and 1 where 0 is no pitch change

Program Change Creator

Creation of MIDI Program Change events from values, events will be created automatically when the input value changes

  • Program Change Number Input: the program number for the event to create
  • Trigger Input: send a 1 to force the creation of a program change event even if the number hasn't changed
  • Auto-detect value changes parameter: keep track of the incoming values and create new events when there is change if this is off, events are only created when a trigger is received.

Program Change Extractor

Extraction of MIDI Program Change events. When a Program Change event is received the output is changed to reflect that value.

  • Program Number Output: the program number for the event

Stack

Stack for MIDI events that can be set either as FIFO (first in first out, i.e. events comes out in the same order they came in) or LIFO (last in first out i.e. events comes out in the opposite order they came in).

  • Pop Trigger Input: send a 1 to remove the next event from the stack
  • Push Trigger Input: send a 1 put the MIDI event at the current sample in the stack
  • Event Input: send your MIDI stream here
  • Empty Stack Trigger Output: sends a 1 when the last element of the stack has been popped
  • Event Output: outputs the popped MIDI event

Time Delta

Outputs the time in samples between the last two MIDI events.

Voice Counter

Outputs the current number of voices for the MIDI stream connected at its input.

Map

Map: association between a number(key) and another(value), the data will be kept until it is explicitely cleared or overwritten

  • Read Index Input: send the key for the value you wish to read, will be read as an integer
  • Read Trigger Input: send a 1 to read the value at the read index
  • Write Index Input: send the key for the value you wish to write, will be read as an integer
  • Write Trigger Input: send a 1 to write the value to the write index
  • Write Value Input: send the value to be saved at the write index
  • Clear Index Input: send the key for the value you wish to remove from the map, will be read as an integer
  • Clear Trigger Input: send a 1 to clear the value at the clear index
  • Clear All Trigger Input: empty the contents
  • Value Output: the value when a read trigger occurs
  • Number of Elements Output: the current number of key-value pairs in the map

Math

Accum

Accumulate at each sample by a specified amount and output the value at each sample with defined minimum and maximum values.

  • Accumulation type: select the wanted operation to use
  • Loop values between low/high: if this is selected, the accum will wrap around when hitting the lower/upper bound
  • Value to Accum Input: at each sample, use this value and the selected operation on the current value to get the new current value
  • Start Value Input: the start value
  • Reset Trigger Input: when a 1 is received, resets the accumulated value to the minimum
  • Inclusive Lower Bound Input: lower bound of the accum
  • Exclusive Higher Bound Input: upper bound for the accum
  • Wrap Around Output: outputs a 1 when wrapping from max to min value

Binary Logic Operator

Simple logic operator.

  • Left-Side Argument Input: input for the left-side argument of the logic operator
  • Right-Side Argument Input: input for the right-side argument of the logic operator

Binary Operator

Math binary operators.

  • +
  • -
  • *
  • /
  • %
  • **
  • MIN
  • MAX
  • LOUDEST
  • QUIETEST
  • atan2

Change

Monitors the incoming signal and outputs 0 when the current sample value is the same as the previous one, 1 when it's greater, and -1 when it's lower.

Clip

Clips the incoming signal between the specified minimum and maximum values. Don't forget to hit ENTER to validate a value you just typed.

Constant

Useful set of available constants; you can also specified your own.

Counter

Simple counter with specified minimum and maximum values. Don't forget to hit ENTER to validate a value you just typed.

  • Number of samples to increment at Input: used to specify the counting interval. (I.e. increment at each 10000 samples)
  • Reset Trigger Input: send a 1 to reset the counter

Function

Mathematical expression with up to 3 variables (fed into the three inputs) that is evaluated at each sample. Don't forget to hit ENTER to validate the function you just typed. The following functions and constants are available:

  • +,-,*,/
  • abs(x)
  • floor(x)
  • ceil(x)
  • exp(x)
  • ln(x)
  • sin(x)
  • sinh(x)
  • cos(x)
  • cosh(x)
  • tan(x)
  • tanh(x)
  • asin(x)
  • acos(x)
  • atan(x)
  • sqrt(x)
  • atan2(x,y)
  • mod(x,y)
  • min(x,y)
  • max(x,y)
  • pi()

Function (Recursive)

Same as the Function bidule except that you have access to the 4 previous values of each variable as well as the 4 previous results using the following functions with 1,2,3 or 4 as the parameter.

  • prevX(n)
  • prevY(n)
  • prevZ(n)
  • prevR(n)

Logic Gate

Simple logic gate.

  • Left-Side Argument Input: input for the left-side argument of the logic operator
  • Right-Side Argument Input: input for the right-side argument of the logic operator
  • Value for True Input: input to be redirected to the output when the operator result is true
  • Value for False Input: input to be redirected to the output when the operator result is false

Lookup Table

A 512 point lookup table with linear interpolation.

  • Index Input: input for 0-based index of the point you want
  • Value Output: value (interpolated if needed) for the wanted point

Unary Operator

Math unary operators.

  • INVERSION
  • RECIPROCAL
  • ABS
  • FLOOR
  • CEIL
  • SQUARE
  • CUBE
  • SQRT
  • EXP
  • LOG
  • LOG10
  • SIN
  • COS
  • TAN
  • ASIN
  • ACOS
  • ATAN
  • SINH
  • COSH
  • TANH
  • LOGICAL NOT
  • ROUND

Unit Converter

Useful sets of common unit conversions.

Value List

A list of values separated by a semi colon (';'). A value will be output until the next trigger is received - by sending a 1 in the trigger input. The second input is used to reset the list to its first member (without requiring to wait until the list loops back to start).

Value List 2

A variation on the Value List, it adds some useful outputs

  • Current Index Output Output: The index of the current value
  • Total Elements Output: The current number of values in the list
  • Wraparound Trigger Output: sends a single trigger when the current index goes back to 0

Value List Indexed

A list of values separated by a semi colon (';').

  • Index Input: Index of the value to output
  • Value Output: The value
  • Number of Values Output: The current number of values in the list

Variable

User-defined variable range with slider and input box. Don't forget to hit ENTER to validate a value you just typed.

  • Min and Max: define the range of the slider

Variable (Int)

Same as the Variable except that the value will always be an integer.

Crossfader (Basic)

A building block version of the Crossfader using a [0, 1] range as the fade value as an audio rate input

    Multi-tap Delay

    A 4-tap delay with up to 120000 milliseconds (2 minutes) delay

    • Audio Input: input for the audio signal
    • Delay for Tap n in samples Input: delay length for the current sample (in samples)
    • Tap n Output: the delayed signal

    OSC

    OSC Creator

    Let you send an OSC message at a specified OSC address, the number of arguments of the sent message is the number of connected inputs.

    • Parameter 1 to 8 Inputs: parameters for the OSC message
    • Trigger to send message Input: send a 1 to use the values at the parameter inputs to send an OSC message
    • Force int parameters (param): message will be send with integers instead of floats parameters

    OSC Creator 2

    More complex and flexible version of OSC Creator, the number of arguments of the sent message is the number of connected inputs and any parameter defined as String.

    • Parameter 1 to 8 Inputs: parameters for the OSC message
    • Trigger to send message Input: send a 1 to use the values at the parameter inputs to send an OSC message
    • OSC Parameter Type :
      • Float from input: take the incoming signal and use it for a float parameter to the OSC message.
      • Int from input: take the incoming signal and use it for a integer parameter to the OSC message.
      • String: take the value field and use it for a string parameter to the OSC message.
      • Format string with float input: C format string to generate the parameter value using the value field and the incoming signal as a float: param_%f
      • Format string with int input: C format string to generate the parameter value using the value field and the incoming signal as a int : voice_%d
    • OSC Parameter Value: only used for String, Format string with float input, Format string with int input.

    OSC Extractor

    Let you specify an OSC address to receive OSC message

    • Parameter 1 to 8 Outputs: parameters for the OSC message
    • Trigger on message received Ouput: sends a 1 when an OSC message is received at the specified address

    OSC MIDI

    Send and receive MIDI using OSC, the OSC address it sends to and receives from is the path and name of the bidule appended with MIDI ( e.g. /OSC_MIDI_0/MIDI if it's in the root of a layout, /GroupName/OSC_MIDI_0/MIDI if it's inside a group named GroupName and that group is in the root of the layout). The expected message format is 3 integer parameters representing the 3 MIDI bytes, an optional fourth float parameter can be use to apply a detune in cents.

    Oscillators

    Basic Oscillator

    A simple oscillator with a bandlimited (or not:) signal.

    • Frequency Input: frequency value (in Hz)
    • Amplitude Input: amplitude value between 0 and 1
    • Phase Reset Input: trigger input to reset the phase to 0
    • Phase Offset Input: input for the value to use as the applied phase offset.
    By using a combination of phase reset/phase offset you can create for example, PWM or Phase Distortion synthesis.

    Noise

    Generates different types of noise (white and pink for now)

    Pulse

    A simple pulse generator.

    • Frequency Input: frequency value (in Hz)
    • Amplitude Input: amplitude value between 0 and 1
    • Number of Harmonic Input: number of harmonics present in the pulse.

    Random

    Generates random values at the specific rate.

    • Rate Input: rate at which new values are generated
    • Amplitude Input: amplitude value between 0 and 1

    Sample And Hold

    Basic sample and hold.

    • Audio Input: input for the audio signal
    • Trigger Input: input for the signal with zero crossings

    Sanitizer

    Cleans the incoming signal of denormals, infinite and nans

    Smoother

    Smooths the incoming signal to avoid jumping values, mainly aimed to be used on control signals

    Stack

    Stack for samples that can be set either as FIFO (first in first out, i.e. samples comes out in the same order they came in) or LIFO (last in first out i.e. samples comes out in the opposite order they came in).

    • Value Input: send your value here
    • Pop Trigger Input: send a 1 to remove the next sample from the stack
    • Push Trigger Input: send a 1 put the sample from the Value input at the current sample index in the stack
    • Value Output: outputs the popped sample
    • Empty Stack Trigger Output: sends a 1 when the last element of the stack has been popped

    Sync Creator

    You can use this bidule to create your own sync source to control other bidules and plugins

    • Playing Gate Input: send 1 continuously for play and 0 for stop
    • Tempo in BPM Input: input for the tempo, the time signature can be set on the GUI
    • Reset Position at 0 Trigger Input: send a 1 here to reset the position a 0ppq
    • Offset in PPQ Input: offset to use when creating the sync information as the creator uses its own timeline, and restarts at 0 when requested

    Sync Extractor

    You can sync this bidule to any master bidule to use some of the sync info for your processing.

    • Playing Output: sends 1 when playing and 0 when not
    • BPM Output: the current BPM
    • Numerator Output: the current time signature numerator
    • Denominator Output: the current time signature denominator
    • Samples per beat Output: # of samples per beat
    • ppq Pos Output: the current ppq position
    • Last Bar started at Output: start ppq of the last bar
    • Trigger at bar Start Output: sends a 1 at each start of bar

    Trigger

    Sends a trigger (a value of 1) in the output signal when the the button is pressed, or at the start of each measure when synched to a syncsource.

    Trigger Clock

    Sends a trigger (a value of 1) in the output signal when the # of samples has been counted.

    • # of samples between triggers Input: # of samples before sending a trigger
    • Reset Clock Input: send a 1 here to restart the clock to the current # of samples input