Retrigger and resync

What it is#

Re-playing the current note at a fixed tick rate without new note rows: drum rolls, ratchets, stutters, and — with a falling volume — a one-channel echo. "Resync" restarts the sound generator itself at a very high rate, which on the game-boy-apu pulse channels has the quirk of making the sound half an octave deeper (source: s-lsdj-manual).

How to do it#

LSDj#

Rxy: x changes pulse/noise volume per retrig (0 none, 1–7 increase, 9–F decrease), y sets the rate (1 fastest, F slowest, 0 = retrig once). R8x is resync: R80 resyncs at 360 Hz, R8F stops it. Examples from the manual: R01 retrig every tick, RF4 retrig every fourth tick with decreasing amplitude (echo effect). CMD/RATE in the instrument slows R down. Dxx delays a note by ticks, which combines with retrigs for flams (source: s-lsdj-manual).

What a hardware trigger does (bit 7 of NRx4; sources: s-pandocs-audio-registers, s-pandocs-audio-details): the channel is switched on (unless its DAC is off), an expired length timer is reset, the period divider is reloaded, the envelope timer is reset and the volume set from NRx2; on CH1 the sweep restarts, on CH4 the LFSR is reset to 0, on CH3 the wave read index restarts while the last sample stays in the output buffer. A pulse channel's duty step is not reset — only its timer is — so "retriggering a pulse channel often enough will cause its 'duty step' to never advance": very fast retrigs freeze the waveform, which is presumably the mechanism behind the resync pitch drop (inference). Because a trigger zeroes the noise LFSR, retriggering CH4 at a steady rate repeats the same noise burst and turns it into a pitched, pulse-like tone (inference from the LFSR reset); a retrigger is also the cure for a noise generator locked up by a 15→7-bit switch (game-boy-apu).

From Intense Tech (sources: s-intense-tech-17-the-joys-of-noise, s-intense-tech-18-adsr-makes-life-easier): depending on the version R00 retrigs once or every tick — in 8.9.3 R01 retrigs every tick. On the noise channel a fast retrig chops the noise into a pulse wave: the pitch follows the R rate, the tempo (tick length) and the noise shape; a shorter LENGTH or ADSR controls the loudness; R80R8F, "the super-fast retrig", ignores tempo and LENGTH. With the 8.1.0 ADSR, R's per-retrig volume change gives a tremolo. Infu's hi-hat is a noise instrument with R02 on its notes (source: s-infu-getting-started-with-lsdj); Dire Hit's late discovery: "the first number of an R command is an envelope" (source: s-chipmusic-tables-and-chords-threads).

Version history of R (sources: s-intense-tech-12-scoping-out-new-features, s-intense-tech-14-lets-appreciate-version-8): the "super-fast retrig" R8x arrived in the 7.7.4 development version as the much-requested return of the old wave-channel pitch wrap — the sound generator restarting at a very fast rate; on the wave channel the resulting pitch can be tuned by the R value rather than left to P, and on a pulse kick it reaches "about 3 whole tones lower than the pulse channel is normally capable of" (three whole tones = the manual's half octave). FX/SPEED, the 7.7.4 setting that slows C, P, R and V, became CMD/RATE in version 8; version 8 also made R on the wave channel restart the synth from its first wave frame, and with the version-8 ADSR RFx behaves like a tremolo.

R as the noise channel's dynamics control (source: s-defensemech-noise-channel-92l): the hardware envelope is a single smooth slope, so a decaying repeat cannot be written with E at all. R with a volume digit "will reduce this by one level and keep these numbers" — ghost snares, quieter repeats, and triplet fills from a four-tick retrig; leaving the instrument untriggered and changing only the shape is the variant. On kicks, R did not reset the pitch before LSDj 9.4.0, so a stutter needed an L 00 00 on the restarting tick; since 9.4.0 a plain R retriggers the pitch and the workaround is gone (source: s-defensemech-every-lsdj-kick).

The instrument number is itself a retrigger (source: s-painperdu-01-instrument-retriggering). A note plays without one; what the instrument number does is restart everything the instrument owns — the envelope, its table, and on the wave channel the synth's wave cycle. "It's really important to know that instrument and note are actually independent." Leave it off and a rising envelope keeps rising across the following notes, so triggering once per beat turns a run into a swell that resets on the beat, and a long PINGPONG wave instrument (LENGTH F, slow SPEED) finally gets to complete its cycle instead of restarting every note. With a table set to AUTOMATE the table advances per instrument value rather than per tick, so the stock L/R panning table gives L R L R when every note carries the number and L L R R when only every second one does (stereo-panning). It also costs less: fewer instrument numbers means fewer blocks and less CPU. The trap is drums — a kick on the wave channel is another instrument, so it re-triggers the lead that follows; the fix is to fit the synth's cycle between the hits (LENGTH 3 at SPEED 6 steps a frame every 16th note).

Impulse Tracker / Scream Tracker 3#

Qxy replays the sample every y frames with a volume change x per hit: 0 none · 1–5 = −1, −2, −4, −8, −16 · 6 = ×⅔ · 7 = ×½ · 8 none · 9–D = +1, +2, +4, +8, +16 · E = ×1½ · F = ×2 (source: s-it-manual). Catspaw's frame arithmetic: at speed 6, Q03 hits again exactly halfway through the row, Q02 gives three hits, Q04 a lopsided pair; avoid odd speeds (5, 7, 9) because no retrig can land on the half-row — get the feel with tempo instead. vegas's tip of 1996 is the same arithmetic from the other side: "Use EVEN speed values like 2, 4, or 6, to make your retrigs sound smoother" — Qxy intervals that divide a speed-6 row evenly (source: s-tw062-interview-vegas). Recipes: ride cymbal Q43 (32 → 24), a snare roll Q53 then Q43 on consecutive rows, and the tom "thwump" QC2 from volume 04 rising by 8 per hit (source: s-tw058-the-finishing-touches). Q00 reuses the last value (volume-slides). ST3's manual gives the same table (with 8 marked "?") and the worked examples Q72 at speed 8 = 64, 32, 16, 8 and QC2 at speed 6 = 12, 20, 28 (source: s-st3-manual). ProTracker's E9x retrigs every x ticks — "If you retrig with 1 in speed 6 that note will be trigged 6 times in one note slot. Retrig on hi-hats!" — and FT2 keeps E9x and adds Rxy with the volume table, which OpenMPT calls "very buggy" (a volume command in the same cell skips ticks) (sources: s-protracker-23d-help, s-ft2-manual, s-openmpt-manual-compatible-playback). IT-compatible players refuse to retrigger a channel that has already stopped, so a very short hi-hat sample needs a silent loop at its end (source: s-openmpt-manual-compatible-playback).

Other trackers#

(unverified) SID-Wizard has no retrig command — use a wave table that re-gates (wavetable-programming).

Tips & pitfalls#

  • A retrig with decreasing volume is a fake-echo that costs no extra rows.
  • Resync on a lead adds a buzzy sub-octave — use it as a bass trick, not by accident.

fake-echo · rhythm-and-groove · instrument-design

Sources#

s-lsdj-manual · s-it-manual · s-tw058-the-finishing-touches · s-pandocs-audio-registers · s-pandocs-audio-details · s-intense-tech-17-the-joys-of-noise · s-intense-tech-18-adsr-makes-life-easier · s-infu-getting-started-with-lsdj · s-chipmusic-tables-and-chords-threads · s-st3-manual · s-protracker-23d-help · s-ft2-manual · s-openmpt-manual-compatible-playback · s-intense-tech-12-scoping-out-new-features · s-intense-tech-14-lets-appreciate-version-8 · s-tw062-interview-vegas · s-painperdu-01-instrument-retriggering · s-defensemech-noise-channel-92l · s-defensemech-every-lsdj-kick

source file wiki/techniques/retrigger.md · 1 unverified · graph