Detune

aliases detuning, unison, chip supersaw, fine tune
sources 0 3 7 lab — techniques & theory (summary) · SID-Wizard 1.8 User Manual (summary) · Little Sound Dj v9.2.6 Operating Manual (summary) · TW #59 — Tracking Hints (Vivid) · TW #75 — IT Percussion Tips (Zinc) · Impulse Tracker HINTS.TXT — Hints for Composers (summary) · ProTracker 2.3d help file (edited by echolevel) · Scream Tracker 3.2 User's Manual (ST3.DOC) · Scream Tracker 3.20 File Formats And Mixing Info (TECH.DOC) · FastTracker v2.08 Manual (Urban Jonsson, 1996) · OpenMPT manual — Samples · Intense Tech #12 — Scoping Out New Features (Defense Mechanism) · Intense Tech #19 — New Noise and 9.1.0 News (Defense Mechanism) · chipmusic.org — What are the typical C64/SID sounds/instruments? (2015) · realdmx: Reyn Ouwehand's Armada (MUSICFILE, 'Special version for Reyn Ouwehand', 1989) and Dutch Breeze (the 1990 MoN player) · realdmx: Martin Galway's Rambo II loader — the macro-language player, reverse-engineered by dmx87 · DUET research: SID-Wizard player.asm deep dive (summary) · DUET research: SID-Wizard 1.97 formats and player (summary) · Pain Perdu — Hidden LSDJ Tricks EP3: \"Isometric\" save-file walkthrough (video, 2016) · roboctopus — The Kinda Sorta Supersaw-lite; or, a Beefy Saw Bass (2013) · roboctopus — LSDJ & You: Echo Chamber (2014) · ProTracker 2.3A ReadMe, 2.0A effect and format docs, version table · MOS 6581 Sound Interface Device (SID) datasheet — the text behind Appendix O · The CheeseCutter Guide — the recovered site manual (Wayback) · defMON wiki — features, interface overview, seqED key map · defMONing 101: A defMON Operator Field Guide (iLKke, 2013) · SIDin #12 — Tiny Sid 2, part 3: Plaster (512 b) and Back To Basics (256 b) (Stefano Tognon, 2008) · SIDin #15 — Matt Gray interview (technical questions during Reformation, 2015)
created 2026-08-30 · updated 2026-08-31

What it is#

If you can spare a channel, play the lead on two channels a few cents apart (or use a fine-tune setting). The slow beating between them sounds huge — the chip version of a supersaw. Small detune (5–10 cents) = fat; large detune (a quarter tone) = seasick, sometimes exactly right (source: s-037-lab).

It is not a later discovery: the sid's own 1982 datasheet lists it under Unison as one of the two things to do with voices played together — "a slight detuning of each oscillator or tuning to musical intervals" gives "a rich, animated sound" (source: s-mos-6581-datasheet). The other one is the interval, and the trade is the same on every chip: a channel spent on width is a channel not spent on a part.

How to do it#

SID-Wizard#

  • Per instrument: the Detune column of the WF-ARP-Detune table ($00–$FE detune upwards per row, $FF keep) — so a "lead B" instrument can be a detuned copy of "lead A".
  • Per note: $Dx small effect detunes the current note; $0D xx (big effect) detunes upwards with finer range.
  • Not available in the Light and Bare players (sid-player-routine).

(source: s-sid-wizard-manual)

What the player actually does (SW 1.97 player.asm)#

From m64's duet research (player.asm 2445–2448, 2539–2541, 3399–3404; source: s-duet-research-sidwizard-deep):

  • The detune value is added at the output stage every frame, never into the pitch accumulator — so vibrato, slides and arps cannot destroy it, and it detunes upward only (0..254 frequency LSBs; small-FX $Dx sets x×8, big-FX $0D the raw value).
  • It is never reset — not by note start, not by player init: a pattern detune stays on the channel until a table row or another FX changes it. The table column's $FF means "keep previous" — except on chord rows, where it is stored unconditionally and becomes a literal +255 (quirk: keep $00 in the detune column of $7F chord rows).
  • The addition has a path-dependent carry-in (no CLC), giving a deterministic ±1 LSB jitter tied to the table state — part of the SW sound a bit-exact reimplementation must reproduce.

SID: two voices on one sound#

Seen from a synth player's side (n00bstar, 2015): put two channels on the same sound with one "detuned by a tiny bit"; kept mono "you get a flanger/phaser like effect", hard-panned "a kind of chorus"; it is "rarely used in 'heavy' sections because of the wasted channel" (source: s-chipmusic-typical-sid-sounds).

CheeseCutter#

Detune is command 3 of the command table (the descendant of JCH's "Super Table"), and it is 16-bit — two parameter bytes, so the offset is a full frequency value rather than a low-byte nudge. Being a command rather than a table column, it can be attached to a single note or left running (source: s-cheesecutter-guide).

defMON#

The AF column (Finetune/Bend) is one byte doing three jobs, and the split is what to remember: $00$19 is finetune, with $19 = one whole semitone up — so a single step is 1/25 of a semitone, about 4 cents, and a fat-lead offset is $01$03. Above that, $21$7F continues as pitch up (wrapping), $80$BF is bend-up speed and $C0$FF bend-down speed (pitch-slide-and-portamento). Detune and portamento therefore live in the same column and cannot both be active on a row; transpose is a separate column (TR), so a detuned copy of a part is TR unchanged and AF $01$02 (sources: s-defmon-wiki-manual, s-defmon-wiki-defmoning-101).

LSDj#

The pulse instrument's FINETUNE detunes PU1 downwards and PU2 upwards, and PU2 TSP. transposes pulse 2 — the manual notes these "create interesting phase effects when the same phrase is played on both pulse channels", which is the standard fat-lead recipe: one chain in both pulse columns. Fxy on a pulse instrument sets PU2 TSP (x) and finetune (y, 1/32 semitone per step) from a phrase or table; WAVE instruments have their own FINETUNE (source: s-lsdj-manual).

Version notes: the wave instrument got its own FINETUNE (-F+F) in lsdj 7.7.4, and from 9.1.0 instrument FINETUNE has two digits — an old value of 01 equals the new 10 (sources: s-intense-tech-12-scoping-out-new-features, s-intense-tech-19-new-noise-and-910-news).

PC trackers#

Vivid's flange/chorus: the same sample on two channels, the second delayed by a sample offset (9xx) or note delay (EDx), with a fine pitch slide (E1x/E2x in ProTracker) on one of them to control the beating — "works pretty fine on brass leads" (source: s-tw059-tracking-hints). Zinc's stereo doubling with two slightly different samples, or the same sample slightly offset, panned apart, is the same idea across the stereo field (source: s-tw075-it-percussion-tips). A permanent detune is a different tuning on the duplicated sample, and the unit depends on the format (sources: s-protracker-23d-help, s-st3-manual, s-st3-tech-doc, s-ft2-manual, s-openmpt-manual-samples): ProTracker finetune −8…+7 shifts A from 412.0 Hz to 457.0 Hz in steps of roughly 1/8 semitone (0 = 436.4, +1 = 439.0, +2 = 441.6 …), also settable per note with E5x; ST3 replaces it with C4Spd, the frequency at C-4 (8363 = none; S2x maps the MOD values to 7895–8757 Hz; +/- on the field halve or double it, / sets it by note); FT2 widened finetune to a signed byte, 1/128 semitone (audible in steps of 8), plus a relative tone; IT/OpenMPT set the C-5 frequency directly. Fine pitch slides (E1x/E2x) are "Great for creating chorus effects" (ProTracker), and MPTM has +xx for a per-note finetune.

StereoMan's IT flanging: the same sample on two channels at exactly the same pan, one with a fine pitch slide (EE1, or volume-column u11… then u00); put the pair at X00/XFF instead for a three-dimensional sound (source: s-it-hints).

Detune as character, not just as width#

pain-perdu's two uses in one song (source: s-painperdu-03-isometric-sav-walkthrough):

  • Drunk unison. The intro layers a wave instrument and two pulses on the same note, one of them detuned and given a very slow low-frequency vibrato — "it just sounds like it's drunk". The detune is not there to fatten; it is there to be heard wobbling (vibrato).
  • Phasing by offset and by timbre. Two pulse channels run the same arp table offset by three ticks, one at 25 % duty and the other at 50 % — "you have interesting phasing going on". Nothing is detuned in pitch at all; the beating comes from the offset and the duty difference (chord-arpeggio, pulse-width-modulation).

A third route, and a documented failure: a real supersaw is "one oscillator sound[ing] like 7 (!) detuned saw waves", and in principle the LSDj wave channel could fake it by hand-drawing slightly out-of-sync waveforms and frame-switching between them — but "the WAV channel synth is a bit noisy when switching frames, so it doesn't sound very clean" (2013, before the silky wave). What worked instead was one hand-drawn wave shaped like a supersaw (source: s-lsdj-and-you-supersaw-bass; ghost-channel, wavetable-programming). The cheap version on two channels: copy the phrases into pulse 2, shift them one tick later, lower the volume and set PU FINE TUNE to 2, "which will create a sort of chorus effect when the notes play in unison with pulse channel one" (source: s-lsdj-and-you-echo-chamber).

Where the finetune value lives in a MOD#

ProTracker's finetune is a signed nibble in the sample record07 for 0…+7 and 8 = −8 through F = −1 — set per sample and changed from the pattern with E5x; the same value collides with glissando in E3, a bug fixed in ProTracker 1.0B, and tone portamento with finetune was fixed in 1.0C (source: s-protracker-23-readme-and-docs). So a MOD's detuning is a property of the sample, not of the channel: two channels detuned against each other need two sample entries.

Detune as a way to save bytes#

In the sub-kilobyte players, detune is not width but duplication: it is what lets two voices share one track. In the 2007 tiny-sid-compo entries voices 2 and 3 read the same track and are held apart by three different devices — voice 2's transpose XORed with $F0 at each step, voice 3's instrument XORed with $07 at each pattern, and voice 3 adding a fixed $1E to its frequency low byte every frame. The last of those is a detune in its cheapest possible form: one constant, one adc, no table, no per-instrument field. Tognon lists it among the standard moves of the form, next to "alternating note lengths for swing" (shuffle-funktempo) and the shared counter that drives pulse width and filter at once (source: s-sidin12-tiny-sid-2-part-3).

When the whole tune is detuned#

A player's note table can be flat, and then everything on the machine is. matt-gray's V4.2 tunes come out at A4 = 424 Hz on PAL (440 on NTSC), which Tognon spotted while disassembling Dominator. Gray: "That was just an accident. I was sure I got the frequencies from the back of the C64 Reference manual. I only realized this once I started to remake them. So I've had to tune them up by 30%. Some of Galway's tracks were the same, Green Beret for instance was at 424hz." (source: s-sidin15-matt-gray-interview; 424 Hz to 440 Hz is 64 cents, about a third of a semitone — arithmetic on the two sourced figures, not the interview's own number.) Two practical consequences:

  • Before you layer anything against an old SID tune, check its A. A tune whose table came from the c64-programmers-reference-guide's frequency listing may sit a third of a semitone below concert pitch, and so may everything sampled from it.
  • Retune it as audio with fine-tune, not with a pitch-shifter. Gray converts the SID sounds to samples and retunes with the sampler's fine-tune, "because using sound shifter or melodyne introduces some horrible frequencies to SID sounds" — the chip-samples version of the same advice the tracker manuals give about finetune versus resampling (source: s-sidin15-matt-gray-interview).

Tips & pitfalls#

  • Detune only one of the pair so the perceived pitch centre stays right.
  • Costs a whole channel; on the SID that is a third of the machine — reserve it for the hook.

In the MoN drivers#

MUSICFILE's "double voices" routine adds a constant dubvoice ($0c in Cybernoid II, $10 in the 1988 test tune and Armada) to a voice's frequency low byte when its instrument's filcount has bit 3 set; the 1990 Dutch Breeze player replaces it with a per-instrument detune flag (fx3 bit 0) adding detune = $50 to $d400 (source: s-realdmx-ouwehand-mon-tunes). Galway's Rambo loader uses ring modulation and sync ($41 | RINGBIT, SYNCBIT) for its "rising notes" instead (source: s-realdmx-galway-rambo-player).

chord-arpeggio · instrument-design · channel-interleaving · cheesecutter · defmon · matt-gray-player · semitone-math

Sources#

s-037-lab · s-sid-wizard-manual · s-protracker-23d-help · s-st3-manual · s-st3-tech-doc · s-ft2-manual · s-openmpt-manual-samples · s-intense-tech-12-scoping-out-new-features · s-intense-tech-19-new-noise-and-910-news · s-chipmusic-typical-sid-sounds · s-realdmx-ouwehand-mon-tunes · s-realdmx-galway-rambo-player · s-duet-research-sidwizard-deep · s-duet-research-sidwizard · s-painperdu-03-isometric-sav-walkthrough · s-lsdj-and-you-supersaw-bass · s-lsdj-and-you-echo-chamber · s-protracker-23-readme-and-docs · s-mos-6581-datasheet · s-cheesecutter-guide · s-defmon-wiki-manual · s-defmon-wiki-defmoning-101 · s-sidin12-tiny-sid-2-part-3 · s-sidin15-matt-gray-interview · s-lsdj-manual · s-tw059-tracking-hints · s-tw075-it-percussion-tips · s-it-hints

source file wiki/techniques/detune.md · graph