DUET docs: instruments, the mixer and the bounce (summary)

author m64
date 2026-08-28
source url local repo duetracker @ commit 85155dd (2026-08-28, not yet published)
created 2026-08-30 · updated 2026-08-31

Where sounds live in duet (m64's tracker, not yet published), what the built-in console does, and how audio gets out — from instruments.md, mixer.md and bounce.md.

Key claims#

The six instrument lists (F4)#

One page, up to six lists on the left, the selected slot's editor on the right; TAB/F4 rotate the lists:

listholdsshown whenslots
I##impulse-tracker instrumentsINSTRUMENTS mode255
P##the song's samplesevery session with an .it255
S##SID pool — the project's sid-wizard instruments[DUET]36 with one chip ("a second chip costs seven slots")
W##the loaded module's own bank[SWM], [CO]36 in a one-SID module
D##DUST patchesa DUST slot armed32
K##DUSK patchesa DUSK slot armed32
  • Every slot exists from the start; an empty one reads - empty -; clearing never renumbers the others — a grid cell's number keeps meaning the same slot. A patch slot is never empty: an untouched D## holds THREE SAWS, a K## AFTERGLOW. Ctrl+D copies a slot to the next free one; BKSP clears (patches: back to the default); on patches DEL also wipes the cells naming the slot.
  • Slot buttons: [CLEAR] / [CLR+NOTES] (also wipes every cell that used it, with a count), [LOAD] (a file into this slot), [SAVE] (a P## is written at once as a .wav beside the song at its own C5 rate; an S##/W## asks a name, then SAVED bassguit.swi - a copy; S01 stays in the project), [EDIT] (P## sample surgery), [OSC] (the scope on what the keyboard plays). An I## has no LOAD/SAVE — it is made from samples, not loaded from a file.

Loading, importing, auditioning#

  • I (or Ctrl+F4 from any page) opens the instrument dialog; its title lists what the session takes: [IT].wav; [SWM].swi; [DUET]/[CO].swi .wav. Type to filter; SPACE auditions the highlighted file without loading (at the note the frame names, SHIFT+UP/DOWN move the octave); a .swi cannot be auditioned while the song plays ("the song is using every SID voice"). TAB opens FAVORITES — eight remembered directories (s stores, x clears, 18 jump).
  • A loaded file goes to the next free slot: IMPORTED kick.wav -> P03 (8363 Hz mono), OPENED agogo.swi -> S04 (in [SWM]/[CO]: -> W07, this tune's own bank). Nothing stays linked to the file — the sound is in the song or project from then on.
  • [IMPORT] reads parts out of another file without opening it: instruments out of .swm/.sws/.swt/.swq, samples out of an .it, D##/K## patches out of a .zon. The picker auditions with SPACE, imports with ENTER (staying up, so several parts land in a row); for a module's instrument, c toggles +CHORDS — "brings the chord it arps along" into this session's chord bank. A saved project is a preset bank: a D## patch "comes with everything — self-contained"; a K## that plays a sample brings the wavetable into a free P## slot (K01 IMPORTED IMPWAVE + wavetable -> P01 (1 KB)), and refuses if the source .zon's .it lacks the sample. Patches have no audition — import, then jam.
  • [+I##] (INSTRUMENTS mode only) makes a new I## over a picked sample: I03 created - every key plays P01.
  • Jam from anywhere: SPACE toggles JAM on the instruments page too; the letter rows play the selected slot through its own engine — the status line names it: [jam: PCM], [jam: SID 8580], [jam: DUST], [jam: DUSK]. ; and ' step the selection; on the pattern page the footer names the jam instrument per side (P01 S02), and ENTER on a filled instrument field in the grid jumps to that slot.

The mixer#

  • One strip per grid column, chip and armed synth slot, in signal order: CH01…, SID1…, DUST1 01, DUSK1 01, then pinned behind a seam the output section: IT SUM (the whole PCM side on one strip), MASTER, DYN. Meters above every strip (DUSK and MASTER stereo pairs; DYN's bar hangs from the top, showing the gain reduction).
  • Strip rows: LVL (a channel: VOL 0–64, the song's own; a chip/synth/IT SUM/MASTER: a dB fader — +/- 0.5 dB, SHIFT+UP/DOWN 3 dB, 0 = 0 dB) · PAN (channel 0–64; chip L100..R100; DUST pan; DUSK stereo BALANCE — "far side turns down") · MUT · SOL · EQ (BYP/ON) · LO · MID · HI — LOW shelf 120 Hz, MID peak 1.2 kHz, HIGH shelf 8 kHz, ±1 dB a step up to ±12.
  • Born bypassed: every stage that is not the song's own starts BYP — chip and synth faders, IT SUM, MASTER, every EQ, the compressor, the limiter. "Untouched, the mixer changes nothing — the mix is the engines' own." A nudge arms the stage it touches; ENTER/b bypasses and re-arms.
  • DYN (after the MASTER fader): compressor THR (default −18 dB), RAT 1.5–20 with a 6 dB soft knee, ATK 0.1–30 ms, REL 50–1600 ms, MK makeup; limiter CEI, a ceiling the output "NEVER passes" (default −0.3 dB). See reverb-and-compression.
  • Mute and solo: m/s on a strip (= ALT+F9/ALT+F10). A channel's mute is the song's and travels in the .it; a chip strip's mute silences the whole chip and is never saved; the grid's per-voice mute is the project's and shows on the chip strip's title as dots (SID1 x.. = voice 1 muted). Solo is never saved.
  • The sends: four units — A DLY, B REV, C CHO, D DRV — with a 0–100 send per strip; IT SUM sends the whole PCM side at once; MASTER and DYN send nothing. A bypassed unit still takes the amount (the status line says so). A send taps the strip after its fader, pan and EQ; returns land in the mix before the MASTER chain.
  • The units (each with a return strip — level, mute — "the effect keeps running, tail and all" — solo, and its own EQ): DELAY (TIME in rows — 3R = 360 ms at speed 6, tempo 125 — or free ms; FEEDBACK ≤ 95; TONE; MODE MONO/WIDE/PING; WIDTH; TO REVERB — pours the echo into the reverb; DUCK) · REVERB (ROOM/PLATE/HALL; DECAY 0.25–12 s; DAMPING; PRE-DELAY; WIDTH; LOW CUT; DUCK) · CHORUS (RATE 0.05–8 Hz; DEPTH; VOICES 2/3/4; SPREAD; FEEDBACK — "past about 40 it flanges"; TONE; DUCK) · DRIVE (SHAPE SOFT/HARD/FOLD/CRUSH; AMOUNT; TONE; BITS and RATE — dialing either picks CRUSH; DUCK). DUCK bows the return under the dry while the dry is loud (compare sidechain-pump). F8 (stop) empties the tanks — no reverb ringing over silence.
  • Sends from the grid (automation): the send levels are pattern commands ad, one letter per unit, at the end of a channel's or synth column's effect list; the value is $00$64 hex for 0–100, so b40 sends 64 % into the reverb. The picker places a letter with a starting amount of $23 (35 of 100). A SID column takes the same four the SID-Wizard way — effects $18/$19/$1A/$1B with the amount as data; a co-play's tracks take none. Placing a send arms its bypassed unit ("this cell would have been silent"); while playing, the command overrides the console amount until the next send command on that column; on stop the console's own amounts return.
  • What is saved: a channel's VOL, PAN and mute → the .it; every dB fader, EQ, DYN, the sends and units → the .zon. An [IT] session's SAVE warns: "MIXER and FX settings are .zon-only, NOT written."

Export and bounce#

  • EXPORT AUDIO (Ctrl+E, SHIFT+F10, or [ EXPORT WAV ]): FILE (lands beside the song; a taken name gets -2, -3 — never overwrites) · LENGTH (AUTO = the song's own; a SID-Wizard module "loops forever", so the field starts at 3:00) · FADE (last N seconds) · MIXER (AS YOU HEAR IT — EQ, comp, limiter apply — or RAW SONG; with an untouched mixer, "same render either way") · FMT ("PCM16 to share, FLOAT32 to master from") · WRITE (MIX, STEMS or MIX+STEMS, with a per-strip checklist). The report gives length, format, size, speed, peak dB, comp and lim gain reduction, clipped-sample count. Every render is 48 kHz stereo. In a project the popup's choices are saved.
  • Stems go to name-stems/, one .wav per strip in the mixer's order and names (01-CH01.wav …, SID1SID4, DUST1, DUSK1…). Stems leave out the master DYN, the DRIVE and every DUCK — the nonlinear stages — and the report says so.
  • BOUNCE BLOCK (Ctrl+B on a marked block; no mark = the cursor's whole side): renders at once, SPACE plays the result. Fields: NAME · MIXER · TAIL (CUT, or +0.5s+5s — a note off on every column at the block's end, then that much ring-out) · FMT · CHANS (STEREO, or MONO folds L+R) · LOOP (ON writes the P## looping FORWARD over its whole length) · SLOT. [ WRITE WAV ] writes beside the song; [ WRITE P02 ] writes into the sample slot at C5 48000 Hz — from then on an ordinary sample of the .it. The bounce needs the IT clock: an [SWM] session and a co-play's SWM-side blocks refuse (whole-tune export with Ctrl+E instead). Ctrl+B on the instruments page writes the selected P## out at once at its own rate.
  • CLI: --render out.wav project.zon (the mix, as you hear it) · --stems · --bare (RAW SONG, no saved SID mutes) · --seconds 1:30 (without it a SID-Wizard module renders ten minutes) · --fade 3 · --bounce-block P:R0-R1[:C0-C1] (pattern and rows hex as the grid shows them, channels decimal 1-based as the mixer counts them) · --tail secs (needs --bounce-block). Refusals name their reason (module alone, malformed spec, channels past the song, a silent block).
  • The save report: a save writes the whole song, unplaced patterns included; when it kept one, the SAVE REPORT lists them (rows in use, bytes). ESC keeps them; ENTER twice clears them (806 bytes off the next save), Ctrl+Z restores all in one step. An [SWM] session gets the same for phrases, with a line of its own: "SID-Wizard would have dropped these - DUET keeps them."

Practical takeaways#

  • The default signal path is honest: nothing colours the mix until a stage is armed, so an .it mixed in DUET sounds the same in any IT player until you reach for the console.
  • Send automation from the pattern (ad + hex amount, or $18$1B on SID columns) makes the four units per-row performable — fake-echo throws, one-row reverb sends, drive stabs.
  • BOUNCE BLOCK into a P## slot is the resampling workflow (chip-samples): render a SID or synth passage, get it back as an IT sample at C5 48000 Hz, loop it, and spend the voices elsewhere.
  • Stems skipping the nonlinear master stages is the right way to hand a mix to another engineer — document-worthy practice for any tracker-to-DAW handoff.

Notable quotes#

  • "Untouched, the mixer changes nothing — the mix is the engines' own."
  • "SID-Wizard would have dropped these - DUET keeps them." (unplaced phrases in the save report)

Relevance to the wiki#

Fills in the console and export half of duet: the six instrument lists with their exact slot counts, the born-bypassed mixer with its full unit specs, the send-automation vocabulary, and the three export roads with their receipts. Also a modern reference point for reverb-and-compression and resampling workflows in tracker terms.

Pages touched#

duet (maintainer rewrite) · sidechain-pump.

source file wiki/summaries/s-duet-docs-sounds-mixer-bounce.md · graph