Synthesizer Components

This is a list of all components that were already implemented. If you want to learn how to implement a component of your own, please refer to Creation of sound components.

Component list

Ports displayed bold are Sound ports, others are Control ports.

Hardware implementation do not exist for all components, especially for most of the control components, a hardware implementation would be rather unfeasible.

All control values are of datatype float. If the control value is used for boolean functions, then a value of 0.0 is interpreted as false, everything else as true.

Arithmetic

Component Internal name Input Ports Output Ports Properties HW <th colspan="2"> Description</th>
Constant const - - <ol><li>Value</li></ol> ✗ <td colspan="2"> Constant control value</td>
Control Addition addcc <ol><li>Summand1</li><li>Summand2</li></ol> <ol><li>Result</li></ol> - ✓ <td colspan="2"> Adds two control values </td>
Control Division divcc <ol><li>Dividend</li><li>Divisor</li></ol> <ol><li>Quotient</li></ol> - ✗ <td colspan="2"> Divides Dividend by Divisor </td>
Control Multiplication mulcc <ol><li>Multiplicand</li><li>Multiplier</li></ol> <ol><li>Product</li></ol> - ✓ <td colspan="2"> Multiplies Multiplicand with Multiplier </td>
Control Subtraction subcc <ol><li>Minuend</li><li>Subtrahend</li></ol> <ol><li>Difference</li></ol> - ✓ <td colspan="2"> Subtracts Subtrahend from Minuend </td>
Sample Addition addss <ol><li class="sound">Sound1</li><li class="sound">Sound2</li></ol> <ol><li class="sound">Result</li></ol> - ✓ <td colspan="2"> Adds two soundwave samplewise </td>
Sample Control Addition addsc <ol><li class="sound">Sound1</li><li>Summand</li></ol> <ol><li class="sound">Result</li></ol> - ✗ <td colspan="2"> Adds a control value to each sound sample </td>
Sample Control Multiplication mulsc <ol><li class="sound">Sound1</li><li>Multiplier</li></ol> <ol><li class="sound">Result</li></ol> - ✗ <td colspan="2"> Multiplies a control value witch each sound sample </td>
Sample Control Addition subsc <ol><li class="sound">Sound1</li><li>Subtrahend</li></ol> <ol><li class="sound">Result</li></ol> - ✗ <td colspan="2"> Subtracts a control value from each sound sample </td>
Sample Multiplication mulss <ol><li class="sound">Sound1</li><li class="sound">Sound2</li></ol> <ol><li class="sound">Result</li></ol> - ✓ <td colspan="2"> Multiplies two soundwave samplewise </td>
Sample Subtraction subss <ol><li class="sound">Sound1</li><li class="sound">Sound2</li></ol> <ol><li class="sound">Result</li></ol> - ✓ <td colspan="2"> Subtracts two soundwave samplewise </td>

Control

Component Internal name Input Ports Output Ports Properties HW <th colspan="2"> Description</th>
Sound2Control soundtocontrol <ol><li>Lower</li><li>Upper</li><li class="sound">SoundIn</li></ol> <ol><li>ControlOut</li></ol> - ✗ <td colspan="2"> Calculates the average value of an incoming soundwave and maps this value to a range between Lower and Upper </td>
Timer timer <ol><li>TriggerIn</li><li>Loop</li><li>Delay</li></ol> <ol><li>TriggerOut</li></ol> - ✗ <td colspan="2"> Will send out a true after delay when triggered, or peridocally every delay seconds whenn loop is true. </td>

Effect

Component Internal name Input Ports Output Ports Properties HW <th colspan="2"> Description</th>
Delay delay <ol><li>Delay</li><li class="sound">SoundIn</li></ol> <ol><li class="sound">SoundOut</li></ol> - ✗ <td colspan="2"> Delays an incoming sound signal by Delay seconds </td>
Pulse Width Modulation pwm <ol><li class="sound">SoundIn1</li><li class="sound">SoundIn2</li></ol> <ol><li class="sound">SoundOut</li></ol> - ✓ <td colspan="2"> Compares both incoming sounds sample and returns a sample with maximum amplitude if the first is larger then the other or a sample with minimum amplitude otherwise </td>

Envelope

Component Internal name Input Ports Output Ports Properties HW <th colspan="2"> Description</th>
ADSR Envelope adsr <ol><li class="sound">SoundIn</li><li>Attack</li><li>Decay</li><li>Sustain</li><li>Release</li><li>Trigger</ol> <ol><li>SoundOut</li></ol> - ✓ <td colspan="2"> Modifies the amplitude of an incoming sound signal. Once trigger receives a 1, the sound signal goes from 0% to 100% amplitude over attack seconds, falls over decay seconds to stays at sustain % as long as trigger is still 1 and fades out to 0% over release seconds</td>
Ramp Envelope ramp <ol><li class="sound">SamplesIn</li><li>Rising Time</li><li>Falling Time</li><li>Trigger</li></ol> <ol><li class="sound">SamplesOut</li></ol> - ✓ <td colspan="2"> When triggered, increases the volume from 0% to 100% over rising time seconds and decreases again over falling time seconds.</td>

Filter

Component Internal name Input Ports Output Ports Properties HW <th colspan="2"> Description</th>
FIR fir <ol><li class="sound">SoundIn</li><li>Cutoff Frequency</li></ol> <ol><li class="sound">SoundOut</li></ol> <ol><li>Filter Type</li></ol> ✓ <td colspan="2"> A FIR filter implementation. Filter Type can be set to Lowpass or Highpass</td>

General

Component Internal name Input Ports Output Ports Properties HW <th colspan="2"> Description</th>  
Mixer mixer <ol><li class="sound">Sound1</li><li class="sound">Sound2</li><li>Bias</li></ol> <ol><li class="sound">Output</li></ol> - Mixes together two waveforms, weighed by Bias</td>
Recorder adc - <ol><li class="sound">SoundOut</li></ol> - ✗ <td colspan="2"> Records sound from a microphone</td>  

Logic

Component Internal name Input Ports Output Ports Properties HW <th colspan="2"> Description</th>
Accumulator accumulatorcc <ol><li>AccIn</li><li>Reset</li></ol> <ol><li>Out</li></ol> - ✗ <td colspan="2"> Accumulates incoming control values and pushes them to the output.</td>
AND and <ol><li>Value1</li><li>Value2</li></ol> <ol><li>Result</li></ol> - ✗ <td colspan="2"> Boolean AND</td>
Demultiplexer demux <ol><li>Data</li><li>Selector</li></ol> <ol><li>Data1</li><li>Data2</li></ol> - ✗ <td colspan="2"> Puses the incoming Data to one of the outputs, depending on whether Selector is true or false</td>
Multiplexer mux <ol><li>MuxIn1</li><li>MuxIn2</li><li>Selector</li></ol> <ol><li>Data</li></ol> - ✗ <td colspan="2"> Multiplexes between two incoming control signals.</td>
NOT not <ol><li>Value</li></ol> <ol><li>Negation</li></op> - ✗ <td colspan="2"> Logical NOT</td>
OR or <ol><li>Value1</li><li>Value2</li></ol> <ol><li>Result</li></ol> - ✗ <td colspan="2"> Boolean OR</td>

OSC

Component Internal name Input Ports Output Ports Properties HW <th colspan="2"> Description</th>
IO input - <ol><li>Value</li></ol> <ol><li>OSC Name</li><li>Value range</li></ol> ✗ <td colspan="2"> IO components can be communicated with via OSC messages. They will also appear in the COSMIC android app.</td>

Oscillator

Component Internal name Input Ports Output Ports Properties HW <th colspan="2"> Description</th>
Sawtooth Generator saw <ol><li>Frequency</li></ol> <ol><li class="sound">SoundOut</li></ol> - ✓ <td colspan="2"> Generates a sawtooth soundwave with a given frequency</td>
Sine Generator sine <ol><li>Frequency</li></ol> <ol><li class="sound">SoundOut</li></ol> - ✓ <td colspan="2"> Generates a sine soundwave with a given frequency</td>
Square Generator square <ol><li>Frequency</li></ol> <ol><li class="sound">SoundOut</li></ol> - ✓ <td colspan="2"> Generates a square soundwave with a given frequency</td>
Triangle Generator triangle <ol><li>Frequency</li></ol> <ol><li class="sound">SoundOut</li></ol> - ✓ <td colspan="2"> Generates a triangle soundwave with a given frequency</td>

Sink

Component Internal name Input Ports Output Ports Properties HW <th colspan="2"> Description</th>
Logger log <ol><li class="sound">Sound</li><li>Trigger</li></ol> - <ol><li>Logging Prefix</li><li>Filename</li></ol> ✗ <td colspan="2"> Logs all samples to console and to a file, as long as Trigger is true, preceeded by Logging Prefix. It is usually better to use the more sophisticated logging framework</td>
Sound Output dac <ol><li class="sound">Sound</li></ol> - - ✗ <td colspan="2"> Plays back an incoming soundwave using ALSA</td>

Source

Component Internal name Input Ports Output Ports Properties HW <th colspan="2"> Description</th>
White Noise noise - <ol><li class="sound">Samples</li></ol> - ✓ <td colspan="2"> Generates White noise</td>
Wave Player smplply <ol><li>Trigger</li></ol> <ol><li class="sound">Output</li></ol> <ol><li>Filename</li></ol> ✗ <td colspan="2"> When triggered, plays the wave file specified in the parameter. The filename has to be relative to the waves directory.</td>