Alternative tunings — chip music outside 12-TET
Twelve equal semitones per octave is a choice, not a law, and on most chips it is a choice made by a lookup table in the ROM rather than by the hardware. Change the table and every note in the tracker moves — the sequencer, the instruments and the effect commands never notice. This page is the why; rom-retuning is the how.
"Microtonality is a field that seems to me to be a little overlooked when it comes to chipmusic" — little-scale, opening a call for a microtonal compilation in December 2009 (source: s-little-scale-microtonal-compilation).
The vocabulary#
- 12-TET — twelve tone equal temperament. The octave (2/1) split into twelve identical steps of 2^(1/12) ≈ 1.05946, i.e. 100 cents each. Every interval on semitone-math is an approximation to a simple ratio: the fifth is 700 cents where 3/2 is 701.955.
- n-TET / n-EDO — the same idea with a different n. 24 gives quarter-tones; 19 and 31 are close to historical meantone; 15, 17 and 18 give scales with no familiar third at all. little-scale's phrasing for 18: "each step of pitch in Nanoloop is now only 2/3s of a semitone instead of a full semitone" (source: s-little-scale-nanoloop-18-tet).
- Just intonation — pitches as whole-number ratios of a tonic instead of powers of 2^(1/12): 3/2, 5/4, 9/8, 6/5. These are the intervals of the harmonic-series, so they beat less; the price is that they are only in tune relative to one tonic.
- Cents are the unit that lets the two systems be compared: 1200 × log₂(f₂/f₁). One cent is 1/100 of a 12-TET semitone; little-scale's shortcut for a spreadsheet is that "each percentage point of a MIDI number is equal to a cent" (source: s-little-scale-nanoloop-18-tet).
Why chips are good at this#
A chip voice is usually a divider: you write an integer, and you get clock ÷ (something × integer) Hz. Nothing in that chain knows about semitones. The twelve-note grid is imposed later, by the tracker, as a table of precomputed integers — 108 of them in lsdj, 72 in nanoloop (sources: s-little-scale-lsdj-tuning-tables, s-little-scale-nanoloop-18-tet). So a chip tracker is a fixed-tuning instrument holding an arbitrary-tuning oscillator, and the table is the only thing in between.
That also sets the limits, and they are asymmetric:
- At the bottom, notes simply do not exist. The game-boy-apu pulse channels cannot go below 64 Hz. In the koto retune the spreadsheet turns red below that: 55 Hz wants a register value of −335, and 25.96 Hz wants −3002 (source: s-little-scale-koto-tuning).
- At the top, resolution runs out. The Game Boy's period value is 11 bits and behaves as a negative period, so steps get coarser as pitch rises. In LSDj 3.8.9's own table the last entries repeat —
… F9 07 F9 07 F9 07 FA 07 FA 07 FA 07 FB 07 …— several notionally different semitones sharing one value (source: s-little-scale-lsdj-tuning-tables). A microtuning whose steps are smaller than a semitone hits that ceiling sooner. - Rounding is audible before it is visible. The koto sheet's "resultant" column shows 110 Hz landing on 109.96 and 132 on 132.00 — a few cents here, more higher up (source: s-little-scale-koto-tuning).
Chips with a finer pitch register have it easier. little-scale's own claim, untested in his post: "the SEGA Mega Drive, C64 SID chip and many other chipmusic-related consoles and computers support a frequency resolution that is fine enough for the composition of microtonal music" — the sid's 16-bit frequency registers in particular (source: s-little-scale-microtonal-compilation).
Four ways to get off the grid#
| route | what changes | cost |
|---|---|---|
| Patch the pitch table in the ROM | every note in the tracker, permanently | a flashed cartridge per tuning; version-specific offsets (rom-retuning) |
Retune with a tool — abrasive's lsdj_tune | the same, plus the displayed note names | needs a working build for your version (source: s-little-scale-abrasive-lsdj-tune) |
| Change the clock — a different crystal | pitch and tempo together, by one ratio | out of tune unless the ratio is exactly 2 (rom-retuning) |
| Fine-pitch per note — a tracker command | one note or one channel at a time | only where the tracker has one; LSDj's finetune and P are semitone-shaped, not cent-shaped |
The last row is the cheap version and the reason chips with fine-pitch commands need no ROM hacking at all: a commenter on the compilation post reports Little Piggy Tracker gaining a pfin command in 2009 for exactly this (source: s-little-scale-microtonal-compilation, unverified against that tracker's own documentation).
What it sounds like, and what it costs#
- A non-12 scale on a chromatic keyboard duplicates keys. Mapping the five degrees of hirajoshi onto twelve keys, little-scale's sheet spreads them 2-3-2-3-2, so adjacent semitone keys sound the same pitch and the tonic stays under the same finger every octave (source: s-little-scale-koto-tuning). A pentatonic ROM is a smaller instrument, not a differently-tuned one.
- The note names lie unless the tool rewrites them — the one thing hand-patching cannot do and
lsdj_tune --namescan (source: s-little-scale-abrasive-lsdj-tune). - Tables and arps stop meaning what they meant. A transpose of
+7in an instrument table is seven table steps, so in 18-TET it is a fourth-and-a-bit, not a fifth;0 3 7(chord-arpeggio) is no longer a minor chord. Every offset on semitone-math has to be re-derived for the new n. (This follows from how the table is indexed; the sources do not discuss it — unverified.) - Just intonation gives each key its own colour, which is the historical reason equal temperament won and the reason to give it up. nitro2k01, after retuning LSDj to a justly intonated 12-tone scale: "I look how it gives each scale it's own character. After doing that I've started to like F better than C when I need a major scale, even when working with the ET-12 scale" (source: s-little-scale-nanoloop-18-tet, comments).
- The same mismatch turns up uninvited elsewhere: the ghost-channel's higher partials are unusable partly because they are "slightly detuned from our modern equal temperament tuning" (nitro2k01, source: s-chipmusic-lsdj-ghost-channel). The harmonic-series is just intonation whether you asked for it or not.
Scene notes#
The 2009 Game Boy microtuning cluster is abrasive's idea, worked out publicly on little-scale's blog with nitro2k01 checking the emulator behaviour and Tom Gilmore (10k) supplying the underclocking fix. It produced a script, two documented ROM offsets, a koto commission, an 18-TET nanoloop, a 15-TET LSDj video and a call for a microtonal chip compilation with a closing date of 2010-02-20 (sources: s-little-scale-abrasive-lsdj-tune, s-little-scale-lsdj-tuning-tables, s-little-scale-microtonal-compilation).
Related#
rom-retuning · semitone-math · scales-and-modes · harmonic-series · detune · game-boy-apu · lsdj · nanoloop · abrasive · little-scale
Sources#
s-little-scale-nanoloop-18-tet · s-little-scale-lsdj-tuning-tables · s-little-scale-abrasive-lsdj-tune · s-little-scale-koto-tuning · s-little-scale-underclocking-and-retuning · s-little-scale-microtonal-compilation · s-chipmusic-lsdj-ghost-channel