Live

Shaping a sound live

Four cues, one question each:

question cue in a line
how loud is it? level(s, …) a fader on the whole sound, its reverb included
is it playing? gate(s, 0/1) a key: let go (the room rings on), press again (it comes back)
is it finished with? hush(s) stop it and free the machine
is the pattern moving? hold(s, 1/0) freeze its patterns where they are

xfade(a, b, 8) is two level()s at once: a down, b up, at equal power so the middle does not dip.

level(pad, 0.4, 6, exp3)     down to 0.4 over 6 beats, along a curve
gate(pad, 0, 4)              let go: it fades over 4 beats, its reverb rings on
gate(pad, 1)                 press again: back as it was
hold(pad)                    the notes stop changing; the rhythm goes on
hold(pad, 0)                 ... and change again
hush(pad, 6)                 fade it out over 6 beats and stop it

Pause and stop

gate(s, 0, 4) and hush(s, 4) sound the same: both fade the sound and let its reverb and delay ring on. The difference is what is left afterwards.

A paused sound still costs. In the console its lines dim, tagged paused (a held one is tagged held, one a bang(s, 4) metro is banging active, with the bang line), and resources() counts them -- so nothing is left running forgotten.

The tail

the sound its reverb / delay
hush(s) stops rings on
gate(s, 0) fades out rings on
seq(s, 0) its note ends, the sequence waits rings on
level(s, 0) fades out goes too

level is the fader after everything, the room included. To stop playing into the room and let it ring, gate or hush. To stop a sequence without cutting its note, and start it again later where it was, seq(s, 0) / seq(s, 1) (more).

Fading in

Write the line, and a level() after it:

synth(uid:noise, wave:pink, amp:1)
level(noise, 1, 12, exp3)

A level going up on a sound not yet heard fades it in from silence -- in either order: before the sound, level() waits for it to start; just after (the same run), it takes the fader to 0 and brings it up from there. On a sound that has been playing, it moves the fader from where it is.

fadeIn: on the line does the same, and is for written scores, where a line has to carry everything itself. A closed gate opened slowly works too; level() is the one to reach for.

Poly sounds

With poly:3, Ctrl+Enter on the line adds a voice -- up to three, the oldest making way -- so change a value, Ctrl+Enter, change it again, Ctrl+Enter, and the voices pile up each with its own. Ctrl+Alt+Enter gives the line to every voice sounding instead. A chord (held voices) is replaced: each voice releases on its r: as as many new ones come in on the line's a: -- a crossfade, each new voice rolling its own rand(), so a chord built up with Ctrl+Enter comes back a new chord of as many notes. Stepping voices (patterns) take the line in place, each on its own step -- a whole part transposed:

synth(uid:bass, wave:saw, poly:4, freq:Pwhite(40, 100), dur:0.1)
synth(uid:bass, wave:saw, poly:4, freq:Pwhite(80, 200), dur:0.1)   Ctrl+Alt+Enter: all four up an octave

Loudness, pausing and holding go with the cues below, not by running the line with amp:0:

synth(uid:s, wave:saw, poly:3, freq:Prand(220, 330, 440, inf), dur:0.25,
  reverb:{mix:0.5, time:4})
level(s, 0.5, 4)     every voice
gate(s, 0)           every voice -- and any started while closed
hold(s)              every voice -- and any started while held; a dur: waits too
bang(s)              its line again, every voice re-rolling its rand()s
bang(s, Pwhite(1, 5, inf))   ... again and again, the beats between drawn each time

hush(s) stops them all, lets their tails ring, and opens their gate and releases their hold for the next time.

Run with Ctrl+Enter, a hold(s, 1) line becomes hold(s, 0) and a gate(s, 0) line gate(s, 1) -- the line shows what the next press does (the tag beside the sound's line, held or paused, what it is now). Ctrl+Z puts the line back.

Tip: use ← → or ↑ ↓ to navigate the docs