Beat repeat

ATMOSYNTH built-in module

A slice of what just came through, held and played round and round. Repeat at nothing is the signal passing straight through and nothing else; turn it up and the door on the delay line shuts, what is already inside goes round at unity, and the last Slice beats of sound loop where the music was. Slice is counted in beats against the one tempo the whole instrument keeps — the same one the arpeggiator and the sequencer count against — so a quarter is a sixteenth note, a half is an eighth, a four is a whole bar, and moving the tempo moves the stutter with it. There is no tempo knob here, and that is the point: a second tempo would be free to disagree with the first. The knob is a continuum rather than a switch, and the middle of it is worth finding — at nothing the door is open and the loop is silent, at everything the door is shut and nothing new gets in, and half way the door is half open, so fresh sound keeps arriving while what is already round goes round again, which is a synced delay. One knob, because those are three positions of one door rather than three effects. Repeat is an input as well, with a depth for how far a signal there moves it, and that is what this is really played by: a square LFO chopping it in and out, a sample and hold opening it at random, an envelope, or the knob itself under a controller. What it catches is whatever was in the line at the instant the door shut, so a stutter lands in time by being pressed in time — nothing here is told where the bar began. Decay is how much of each pass is lost on the way into the next: at nothing the loop holds for as long as you keep it, turned up it fades where it stands, and at everything it plays once and is gone. Nothing stands between the line and itself but that one knob, which is what lets the hold be exact — a filter in the loop is heard again on every pass, and a lowpass with any resonance at all has a frequency it hands back louder than it was given, so a loop closed through one does not hold, it climbs. Damp is that lowpass moved to where it is heard once: it is the tone of the repeat, and it is what takes the edge off the seam, since the end of a slice and its beginning were never going to meet and that joint is heard once a pass. Moving Slice while the loop runs rewrites what is in the line rather than re-cutting it, which is a tape being pulled: shorter for a pitch up, longer for a pitch down. With Decay at nothing the hold is exact, which takes a little code: a loop made of a delay line alone is rarely a whole number of samples long, and one that is not reads each pass from between two samples, losing some of its top every time round until it fades. This one cuts the slice to the nearest whole sample, a hundredth of a millisecond at most, so each pass is an exact copy of the last. It holds sound that outlives the note that made it, so it is added shared — per voice, each note would take its own loop with it when it ended.

What it is made of

The Web Audio nodes inside this module and how they are wired. Fork it to open the same graph in the editor, where every part can be changed.

A patch connects to it through audio input ‘In’, audio input ‘Repeat’ and audio output ‘Out’.

  • ‘in’ is an audio input this module declares, set to input in. Its output reaches input 0 of ‘loop’.
  • ‘repeatin’ is an audio input this module declares, set to input repeat. Its output reaches input 0 of ‘depth’.
  • ‘depth’ is a gain node. Its output modulates the repeat of ‘loop’. A patch can set its gain, through ‘Repeat amount’.
  • ‘beat’ is a constantSource node, set to signal beat. Its output reaches input 0 of ‘slice’.
  • ‘slice’ is a gain node. Its output modulates the length of ‘loop’. A patch can set its gain, through ‘Slice (beats)’.
  • ‘loop’ is a audioWorklet node, set to processorName atmosynth-beat-repeat, numberOfInputs 1, numberOfOutputs 2. It runs its author's own code. Its output reaches input 0 of ‘damp’. Its output reaches input 0 of ‘out’. A patch can set its repeat, through ‘Repeat’. A patch can set its decay, through ‘Decay’.
  • ‘damp’ is a biquadFilter node, set to type lowpass. Its output reaches input 0 of ‘out’. A patch can set its frequency, through ‘Damp (Hz, lower is darker)’.
  • ‘out’ is an audio output this module declares, set to output out.
  • ‘Slice (beats)’ is a setting a patch can turn, from 0.0625 to 4.
  • ‘Repeat’ is a setting a patch can turn, from 0 to 1.
  • ‘Repeat amount’ is a setting a patch can turn, from -1 to 1.
  • ‘Decay’ is a setting a patch can turn, from 0 to 1.
  • ‘Damp (Hz, lower is darker)’ is a setting a patch can turn, from 200 to 18000.

No published patch uses this module yet

When somebody publishes a patch built on it, that patch will be listed here.

Browse Explore