fx(...) --- Shared Effects
fx() makes a bus: one reverb, one delay, one filter that several sounds
go through together — three voices in one room rather than three rooms. Any
sound can be sent to it: synths, audio files, speech.
Syntax
fx(room, reverb:{mix:0.5, time:4}) a bus called room, with a reverb fx(room, [a1, a2, a3]) these sounds go through it fx(room, a1, a2, delay:{time:0.375, fb:0.4, mix:0.2}) synth(uid:pad, wave:saw, freq:110, bus:room) ... or a sound says so itself audio(uid:rain, src:rain, bus:room) fx(room, reverb:{mix:follow(beat.phase, 0.2, 0.8)}) fx(room, filter:{type:lp, freq:follow(bass.low, 300, 6000)}, amp:0.8) level(room, 0, 8) the whole bus faded over 8 beats synth(uid:pad, bus:none) pad its own way again fx(room, reverb:{mix:0.4}) run again without its delay: the delay comes out fx(room, delay:off) ... or one taken out by name fx(room, off) the bus gone; its sounds go their own way
Parameters
| param | description |
|---|---|
| (first name) | The bus: any name. Made the first time it is named — by fx() or by a sound's bus: — with no effects until they are given. |
| (more names, or a list) | Sounds to send through it, by their uid. |
reverb |
{mix, time, damp, pre} — the same room as a synth's reverb. mix can follow(). |
delay |
{time, fb, mix, tone, sat} — an echo; fb up to 1.5, past 1 running away into a held squeal (feedback). mix and fb can follow(). |
filter |
{type, freq, q} — type lp, hp, bp or notch; freq and q can follow(). |
sub |
An octave pedal's sub, as a synth's sub: -- {level, octave, tone}. First in the bus. |
drive |
A soft clip, 0..1, as a synth's drive:. After the sub. |
fuzz |
A fuzz pedal, as a synth's fuzz: -- {starve, gain, bias, tone}, and level (0.25): how loud it comes out (a fuzz comes out as loud whatever goes in). After the drive, before the filter. |
fold, clip, ring, comb, crush |
As a synth's grit: a wavefolder, hard clipping, ring modulation, a comb fed back, a bitcrusher. After the fuzz; each value can follow(). |
amp |
The bus's own gain (1, at most 2). Can follow(). |
delay:off |
Takes that effect out (reverb:off, filter:off too). |
off |
fx(room, off) takes the bus away. |
On a sound — synth(), audio(), say() — bus:room sends it through
room, and bus:none takes it out again.
How it works
- Sending is by name. Every voice of a sound goes through the bus: the
ones sounding now, and those still to come — each new note of a synth,
each voice a
poly:synth adds. - A sound's own effects stay its own. A synth with its own
reverb:goes through that first, then into the bus with the others. - Changing the bus keeps it playing. Run
fx(room, …)again: a new mix or filter glides there; a new room crossfades while the old one rings out what it heard; adding or taking away a delay or filter rewires it with the old tails left to die away. - The line is the bus's effects. An
fx()line naming effects puts on those and takes off any it no longer names: take thedelay:{…}out of the line, run it again, and the echoes stop (those already sounding die away). A line that only sends sounds (fx(room, [a1, a2])) or only nudges (fx(room, delay:{mix:*0.5}), all relative) leaves the rest as it is. - One pedal for everything sent.
sub:,drive:andfuzz:on a bus are one pedal for every sound and voice in it, in that order, then the filter, delay and reverb. It is cheaper than a fuzz on each voice (four voices: under half the cost), and it is another sound: the bus hears the notes after their envelopes, so the fuzz squashes them (long sustains, as a pedal does), and it hears them together, so a chord's notes grind against each other. The sub follows the strongest pitch. - The bus is a name too:
level(room, 0.5)turns it down,level(room, 0, 8)fades every sound in it together. - Times are beats, as everywhere: reverb
timeandpre, delaytime.
Example — one fuzz for a whole bass
fx(dirt, sub:{level:1.2}, fuzz:{starve:0.2, gain:40, tone:6000}, filter:{type:lp, freq:2200}, reverb:{mix:0.3}) synth(uid:s1, wave:square, degree:Prand(0, 2, 3, 5, inf), stack:[0, 7], poly:4, root:A2, dur:1.5, bus:dirt)
Example — three sounds in one room
fx(room, reverb:{mix:0.5, time:4, damp:2500}) synth(uid:a1, wave:sine, freq:Prand(220, 330, 440, inf), dur:2, amp:0.06, pan:-0.7, bus:room) synth(uid:a2, wave:triangle, freq:Prand(165, 247, inf), dur:3, amp:0.05, pan:0.7, bus:room) synth(uid:a3, wave:saw, freq:55, amp:0.04, filter:{type:lp, freq:600}, bus:room) fx(room, reverb:{mix:0.9, time:8}) later: the room opens out under all three
Tip: use ← → or ↑ ↓ to navigate the docs