Audio

Making and shaping sound in the graph: sources, filters, envelopes and sequencers running on their own clock, out to the audio device.

Sound runs on a clock of its own. The visible graph cooks once a frame; audio needs tens of thousands of samples a second, so the audio nodes are lifted out of the frame-rate graph into a small chain that a dedicated audio thread runs continuously. Numbers, signals & audio covers what a signal is and how it differs from a plain list of numbers.

Two things have to be true before anything is heard.

Sources

Audio Input takes a microphone or an interface, and Audio File plays a file from disk with its own start, end, speed and loop_mode, trimmed by dragging the in and out handles on its scrub bar. A rising edge on Audio File's trigger restarts it from the trim start, which is how a clip is fired from a step, a beat or a key. Its waveform output now reports the samples the speakers received rather than a separate cook-side estimate, so a trigger, a changed speed and the loop mode reach an analysis chain and the sound at the same time. Both nodes are covered in Inputs.

For synthesis, Oscillate is the one generator that reaches the audio thread. It makes sine, triangle, sawtooth, square and pulse waves plus white, pink and brown noise. Its sample_rate decides which clock it lives on: left at 0 it is a control wobble at frame rate, and raised it becomes an audible tone.

Shaping a signal

All four run on either clock. Give them audio and they process it sample by sample; give them a plain number and they do the same job once a frame, which is how a delay becomes a trailing animation and a compressor becomes a limiter on a slider.

Following a sound

Sequencing and envelopes

Both sequencers carry their own bpm, at 120. Setting Piano Roll's to 0 makes it follow the project tempo from the Score node; Step Sequencer has no such fallback and always uses the number in the box. See Tempo sync.

ParameterTypeDefaultWhat it does
triggerBoolean or NumberRising edge advances one step. Leave unconnected for internal BPM clock.
resetBoolean or NumberRising edge resets sequencer to step 0
bpmNumber120Tempo in beats per minute
divisionString"1/8"Step duration as a note division. One of: 1, 1/2, 1/4, 1/8, 1/16, 1/32.
stepsNumber16Number of steps in the pattern
directionString"Forward"Step advancement direction. One of: Forward, Reverse, Pendulum, Random, Drunk.
swingNumber0Swing amount (0 = straight, 1 = max triplet feel)
gate_modeString"Manual"Gate pattern source: Manual CSV or Euclidean algorithm. One of: Manual, Euclidean.
gate_patternString""CSV gate pattern (0/1 per step). Empty = all on. Used in Manual mode.
euclidean_fillsNumber4Number of hits for Euclidean rhythm generation
euclidean_rotationNumber0Rotation offset for Euclidean pattern
probabilityString""CSV probability per step (0-100). Empty = all 100%.
ratchetString""CSV ratchet count per step (1-4 sub-divisions). Empty = all 1.
values_aString""CSV values for lane A. Empty = 0.0 for all steps.
values_bString""CSV values for lane B. Empty = 0.0 for all steps.
values_cString""CSV values for lane C. Empty = 0.0 for all steps.
values_dString""CSV values for lane D. Empty = 0.0 for all steps.
runBooleantruePlay/pause the sequencer clock

Reaching the speakers

Audio Output is the end of the chain. Wire a signal into left, and into right as well for stereo, and set volume and mute, both applied at the device. It reports the current level and the device's real device_sample_rate.

A frame-rate value wired into an audio node's control reaches it: the value is read once per cook and ramped smoothly across the samples in between, which is how a Step Sequencer drives an oscillator's frequency and how a slider changes a filter's cutoff without clicking.

An audio-rate signal wired into a control does not reach it. The control is refilled from its own value after the signal has been summed in, so the wire has no effect. This is why an ADSR cannot shape an oscillator's amplitude once both are running at audio rate. Audio-rate wires between the signal inputs of the nodes above are unaffected, and a frame-rate ADSR driving a frame-rate value works as expected.

Not connected yet

Five nodes here are complete and cannot be heard.

Audio Mixer never joins the audio chain, and because the chain is traced backwards from the output, it stops the trace at itself. Everything upstream of a Mixer therefore stays at frame rate as well, so a graph routed through one is silent rather than merely unmixed. Its master_gain, gain_N, mute_N and solo_N controls have no reader anywhere, and there are no pan controls at all, though the node describes them. There is no working way to sum two audio signals at audio rate today, and none to multiply them either: the Math node's audio side reads input ports the node does not have, so it writes silence.

Additive Synth is registered under a name the node no longer uses, so it is never lifted onto the audio thread and cannot produce sound. Wavetable and Granular are lifted, but the sample data they need never reaches the audio thread, so both render silence. All three still compute a correct buffer at frame rate, which can be read, drawn or analysed; none of it can be heard. The same gap silences Convolve used as a reverb, though its image side is unaffected. See Image effects.

Rendering audio to a file does not work either, for a separate reason. See Audio export.

See also