Click once for a hit, twice for an accent · right-click clears · arrow keys move the cursor, Space places a hit · hold or Shift-click a pad to edit that step alone
Q hands the home row to the pads · W switches
the view · U holds note repeat ·
Shift on a pad is an accent
0x9n note on · 0x8n note off ·
0xBn control change · 0xF8 clock, 24 to a
quarter · 0xFA/0xFB/0xFC transport
Its clock is a setInterval, and that is not a shortcut —
every MIDI clock in the world is one. The wobble you are about to smooth is
the honest article.
A binding is { ch, cc, dest } and nothing else. Open the console
and push one onto DM.State.project.bindings by hand — the
object you type and the object LEARN writes are the same object, which is
what makes the whole feature nine lines.
no MIDI yet
Hold a pad, or Shift-click it, or press Enter on it — then every control here writes to that step and to no other
There is no per-step DRIVE or BITS here, and the reason is worth a sentence:
a WaveShaper’s control is a curve, a
Float32Array. Arrays have no setValueAtTime, so a
per-step drive could only be swapped from a timer — at whatever moment
the timer happened to fire, which is the M01 clock this course removed.
Designing the selected track’s sound
js/voices.js actually builds.
Drop an audio file here — or onto any track name in the grid above
Audio is never written into the project. The trim, pitch, tone
and gain above are numbers and they are saved and exported like everything else
— the buffer is not. A four-second stereo buffer at 48 kHz is about
4 MB once JSON-encoded, against a localStorage ceiling near
5 MB, so one dropped kick would evict your whole project. A shipping
product keeps the audio in IndexedDB and stores a key here.
Before you press that: decodeAudioData is handed an
ArrayBuffer and decodes it. Commit to an answer — what does
decoding the same buffer a second time do?
Inserts sit in the path · sends tap a copy out to a shared bus · hover any control to light its block
Eight tracks want reverb. Commit to two answers before you touch the switch: how many ConvolverNodes does each topology build, and will the two sound different?
Presets travel; audio does not. A preset is a plain object of
numbers, so it rides inside the project JSON and comes back with an
Import .json — the same reason a kit can be saved in M05 and
a four-second sample buffer cannot.
Sixteen slots · click to switch · while the transport runs the change is queued to the bar line
Before you press that: copying a pattern with slots[b] = slots[a]
then editing slot b — what happens to slot a? Commit to an answer, then run it
on the two scratch slots B7 and B8.
Each row plays one pattern for a number of bars, then the next row takes over
Eight channels into one bus · 1–8 select,
M mute, S solo
Press Play, guess how far a one-second stall knocks this clock out of time, then press the 1 s button.