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.
The graph holds an Audio Output node, or an Audio Input one. Without at least one of the two, no chain is lifted and every audio node stays at frame rate.
The timeline is playing. The audio thread is switched on at the play transition and off again at the pause, so a paused project is silent whatever is wired.
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
Parametric EQ is three sweepable bands plus a low and a high cut. Each band has
bandN_freq,bandN_gainin dB andbandN_q, defaulting to 100 Hz, 1000 Hz and 8000 Hz, andlow_cutandhigh_cutbracket the lot. See Parametric EQ.Delay is an echo line.
timeis in milliseconds, 250 by default,feedbacksets how much comes back round, andmixbalances dry against wet.modepicks Simple, Ping Pong, which alternates across the stereo field, or Tape, which degrades each repeat. It writes a second channel onoutput_right.Dynamics compresses, limits, gates or expands, chosen on
mode.thresholdis in dB and defaults to -12, withratio,attackandreleasein milliseconds, a softkneeandmakeup_gain. Wire another signal intosidechainto duck one sound under another, and readgain_reductionto see how hard it is working.Filter is a biquad, switchable between Low-pass, High-pass, Band-pass and Notch with
cutoffandresonance. It smooths a control value as readily as it filters a sound.
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
Pitch Detect reports the fundamental as
frequency,midi_noteand a readablenote_name, with aconfidencefigure to gate on.min_freqandmax_freqbracket the search, 50 Hz to 2000 Hz by default, andsmoothingsteadies the reading.Spectrogram keeps a scrolling history of the spectrum,
history_framesdeep, on a Linear or Logscaledown to adb_floorof -60 dB. Itsdataoutput is a flat list ofwidthbyheightnumbers rather than a picture, so wire it into something that draws numbers.Envelope Follower and Audio Analysis turn sound into control values, from a single amplitude up to kick, snare, hi-hat and an estimated tempo. Both are covered in Inputs.
Sequencing and envelopes
Step Sequencer runs
stepssteps, 16 by default, at adivisionof 1/8.directioncovers Forward, Reverse, Pendulum, Random and Drunk,swingpushes the off-beats late, andgate_modeswitches from a hand-drawngate_patternto Euclidean, which spreadseuclidean_fillshits evenly across the bar and rotates them. Four value lanes,values_atovalues_d, run alongside the gate, withprobabilityandratchetpatterns per step.Piano Roll plays four voices from parallel lists of
starts,pitches,velocitiesanddurations, and emitsnote_1tonote_4with matching velocities and gates, plusany_gate,playheadandphase.loop_modeis Loop, Once or Ping-Pong.ADSR shapes a level from a trigger.
triggerfires when it crossesthresholdon a Rising, Falling or Bothedge,retriggerdecides what a second hit does while the first is still running, andattack_curve,decay_curveandrelease_curvebend each stage away from a straight line.Value Tracker is not a sound node despite sitting in the same category. It accumulates a number over time as a Sum, Max, Min, Average, EMA, Rate or Count, with
resetandgateinputs, an optional slidingwindowand optional bounds that Clamp or Wrap.
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.
| Parameter | Type | Default | What it does |
|---|---|---|---|
trigger | Boolean or Number | — | Rising edge advances one step. Leave unconnected for internal BPM clock. |
reset | Boolean or Number | — | Rising edge resets sequencer to step 0 |
bpm | Number | 120 | Tempo in beats per minute |
division | String | "1/8" | Step duration as a note division. One of: 1, 1/2, 1/4, 1/8, 1/16, 1/32. |
steps | Number | 16 | Number of steps in the pattern |
direction | String | "Forward" | Step advancement direction. One of: Forward, Reverse, Pendulum, Random, Drunk. |
swing | Number | 0 | Swing amount (0 = straight, 1 = max triplet feel) |
gate_mode | String | "Manual" | Gate pattern source: Manual CSV or Euclidean algorithm. One of: Manual, Euclidean. |
gate_pattern | String | "" | CSV gate pattern (0/1 per step). Empty = all on. Used in Manual mode. |
euclidean_fills | Number | 4 | Number of hits for Euclidean rhythm generation |
euclidean_rotation | Number | 0 | Rotation offset for Euclidean pattern |
probability | String | "" | CSV probability per step (0-100). Empty = all 100%. |
ratchet | String | "" | CSV ratchet count per step (1-4 sub-divisions). Empty = all 1. |
values_a | String | "" | CSV values for lane A. Empty = 0.0 for all steps. |
values_b | String | "" | CSV values for lane B. Empty = 0.0 for all steps. |
values_c | String | "" | CSV values for lane C. Empty = 0.0 for all steps. |
values_d | String | "" | CSV values for lane D. Empty = 0.0 for all steps. |
run | Boolean | true | Play/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.