The difference between a sequence and a performance is that a performer never hits two notes exactly the same. Accents and jitter put the hand back in.
=N sets a note's velocity in the pattern: !"c2=1 c2=0.4 c2=0.7 c2=0.5" — same pitch, four different intents.
Velocity only matters if the patch listens. gain = vel * 0.6 is the start; run it into the cutoff formula too and hard notes get brighter as well as louder — that's most of what "dynamics" means on a synth.
|> humanize 0.3 on a pattern adds deterministic micro-jitter to onsets and velocities — loose, but the same loose every play (all Volta randomness replays bit-identically).
Accent grammar 101: downbeats strong, pickups weak, ONE surprise accent per bar.
The starting point#
The lesson opens with this song in the editor. Every edit recompiles and plays.
-- Velocity & feel: every note identical, the gain deaf to touch. Add the hand.
pluck = patch {
source = saw (freq pitch),
ampEnv = adsr 1ms 150ms 0 80ms,
filtEnv = adsr 0ms 120ms 0 60ms,
cutoff = 500Hz + filtEnv * 2500Hz,
gain = 0.6
}
line = play pluck !"c2 c2 eb2 c2 g2 c2 bb1 eb2"
What to watch#
Accented notes draw taller bursts than the ones around them. A flat pattern draws a picket fence; a performed one doesn't.
Goals#
The workbench checks these as you work; the solution is there when you want it.
- Accent the pattern with =N — three or more levels
- Make the gain listen to velocity
- Stretch: loosen the grid with humanize
Make it yours#
Take one repeated note (c2 eight times) and make it interesting using ONLY velocities. No pitch changes allowed.
Further reading#
Velocity and accents in the reference.