Chord arpeggio (the 0 3 7 trick)
What it is#
Chips rarely have enough channels for real chords, so one channel cycles through the chord tones extremely fast. At roughly 25–50 notes per second the ear fuses them into one shimmering chord — the signature chiptune sound. Slower rates (10–15 notes/s) sound like a deliberate arpeggio riff instead of a chord; both are useful (source: s-037-lab).
Why it works#
The numbers are semitone offsets from the base note (semitone-math): 0 3 7 minor, 0 4 7 major, 0 3 6 diminished. A fast arp is heard mostly by its highest note, so the inversion you choose decides which tone "sings" (chord-inversions). Which formula fits which scale degree is not constant — 0 3 7 on every note of a major scale clashes on three degrees; see diatonic-chords or let 037-lab compute them.
How to do it#
SID-Wizard#
- Chord table (
C=+F5orC=+K): entries$00–$7D= semitones up,$80–$FF= semitones down,$7F= loop the chord forever,$7E= return from the chord to the instrument's arp table.C=+Ntoggles note-mode, where you set the root note outside the table and type the chord's notes as notes (select editing mode with Space).Shift+K/Lselects a chord from anywhere,+/-inside the table. - Assign it: each instrument has a default chord number; override per note with
$70–$7Fin the instrument column or$07 xxin the effect column. - Speed:
$0C xx(big effect) or$Cx(small effect) sets the chord/arpeggio speed. - Arps in the instrument instead: the Arp column of the WF-ARP-Detune table (
$01–$5Fup,$E0–$FFdown,$81–$DFabsolute pitch,$7Fjump to the chord) — see instrument-tables. Note: an arp entry cancels a running slide or vibrato. - The chord table is not available in the Light, Bare and Demo player types (sid-player-routine).
(source: s-sid-wizard-manual)
The SID-Wizard book's arpeggio instrument: WF-ARP 11 7F (triangle, jump to the default chord), chord table 00 03 07 0C 07 03 ending in 7F (loop) — "it runs quite fast", so set chord speed 02 in the instrument or in the WF column left of the 7F; attack 8, release B. Chords "are essentially arpeggios in SID-Wizard, but they don't depend on instruments"; 7E returns to the wave table's next row; note-mode (default since 1.5, C=+N toggles) lets you type or play chord notes from a MIDI keyboard with the root shown above the table (source: s-witchmaster-creating-chiptunes-with-sid-wizard).
A player author's confirmation of the idiom: in linus-walleij's SID player the arpeggio macro is a table of bytes that "represents the number of halftones to transpose the current note UPWARDS. For example macro 0x00 0x03 0x07 creates a minor chord"; the table "can loop or end", and the arpeggio step is skipped while the instrument's vibrato runs (source: s-walleij-sid-player-routine).
What the player actually does (SW 1.97 player.asm)#
The exact stepping rules, from m64's duet research (WFARPTB, player.asm 2396–2537; source: s-duet-research-sidwizard-deep):
- The arp-speed counter is decremented on every player call that reaches the table; a step happens only on underflow, so a row is held (speed+1) calls and speed 0 steps every call. In a multispeed tune the unit is player calls, not frames — arps speed up with the framespeed. Small-FX
$Cxsets the speed and forces an instant step on the next call. - A WF-column value
$00–$0Fis a one-shot speed override for that row only (held value+1 calls); no waveform is written for such a row. On ordinary rows the waveform is written only on the step entering the row; on chord rows it is re-read and re-masked every step. - On a chord row (arp
$7F) the table does not advance; each step reads the chord table:$7Ereturns — and the next WF-table row executes immediately in the same step;$7Fwraps to the chord's first entry; anything else is a note-relative offset. Chord speed is the arp speed — same counter. - Chord entries are relative to the pattern note, and every chord step stores the row's detune column unconditionally —
$FF, elsewhere "keep previous", becomes a literal +255 detune on a chord row (quirk; keep the detune column at$00on$7Frows). - A pitch-yielding arp step is a plain frequency-table lookup written over the accumulator — this overwrite is the "arp cancels slide/vibrato" rule;
$80(NOP) leaves even the accumulated vibrato displacement untouched.
GoatTracker#
GoatTracker 2 removed v1's arpeggio command: "Everything that this command does can also be done with wavetables". A looping arp is a wavetable whose right bytes are the semitone offsets and whose left bytes keep the waveform: 41 00 / 00 04 / 00 07 / 00 0C / 00 00 / FF 02 (4-note pulse arpeggio, waveform unchanged in the loop); with delays in the left byte the arp slows — 21 00 / 02 03 / 02 07 / 02 00 / FF 02 is "a delayed minor chord arpeggio with sawtooth waveform. Each step takes 3 ticks". Because the wavetable "is never skipped", arps keep time at any tempo (source: s-goattracker-readme).
Furnace#
The instrument's Arpeggio macro is a per-tick "pitch sequence" in semitones — the same table idea, with the waveform and duty in parallel macros (furnace; source: s-furnace-c64-docs).
defMON#
There is no chord command: a sidTAB row's arpeggio is the note-transpose (TR, $00–$7F semitones added to the sequence note) stepped by the table itself, with JP (Step Jump) looping it — the manual names arpeggios and vibratos as the two things those loops exist "for". Because a sequence step can execute two sidTAB chunks at once, an arpeggio can run under a second program doing something else entirely (source: s-defmon-wiki-manual).
CheeseCutter#
An indexed chord table, activated per note with 80–9F in the sequence's command column (the value points to an index that holds each chord program's start): entries 00–3F = semitones up ("the familiar major chord would be 0-4-7"), 40–7F = semitones down (7F = −1, 7E = −2 — the Guide's SID cheat sheet includes a full up/down transpose table), 80–FF = wrap. Chords are read in tandem with the wave table, so the wave-delay value also paces the chord; they work over any wave program except absolute notes (80–DF). Chord program 0 is reserved as the swing-tempo program (shuffle-funktempo) (cheesecutter; source: s-cheesecutter-guide).
LSDj#
Cxychord command: runs an arpeggio of base, +x, +y semitones once per tick:C37plays 0, 3, 7, 0, 3, 7… (minor),C47major,C0C= 0, 0, C (octave on every third step),CC0= 0, C alternating,CCC= 0, C, C;C00resets. The instrument's CMD/RATE slows it down (0 fastest, F slowest).- Table arpeggios for anything longer than three notes or with its own rhythm: put semitone offsets in the table's transpose column (the manual's example forms a major chord) and loop with
H; the table speed follows the groove selected withG(instrument-tables). - Chains carry a transpose per phrase, so the same arp phrase serves every chord of a progression (orderlist).
(source: s-lsdj-manual)
Before 9.1.0, C on noise instruments alternates between the base shape and base + value on every tick (C01 on shape FF gives FF, F0, FF …) rather than a pitch interval; the table transpose column is 01–7F up, 80–FF down (sources: s-intense-tech-17-the-joys-of-noise, s-intense-tech-09-lets-table-this-discussion). From 9.1.0, with the noise channel reorganised into ordered notes, C on noise arpeggiates like on pulse and wave, limited to the notes the channel has: F 5 with C12 gives F, G# and C — an F minor triad — and larger values span octaves (source: s-intense-tech-19-new-noise-and-910-news).
Two more intense-tech details: the speed setting began as FX/SPEED in version 7 (7.7.4), renamed CMD/RATE in version 8 (sources: s-intense-tech-12-scoping-out-new-features, s-intense-tech-14-lets-appreciate-version-8); and C37 followed by Z10 on later steps plays the chord randomly as minor or major, possible since version 6 made the Z digits independent (randomization-and-probability; source: s-intense-tech-03-dont-sleep-on-z). sabrepulse's tutorial introduces the command with C07 on the first note of the lead — "magically transformed into a chord" — and suggests trying it on a couple more notes (source: s-sabrepulse-getting-started-with-lsdj).
Community practice (sources: s-chipmusic-tables-and-chords-threads, s-infu-getting-started-with-lsdj, s-intense-tech-06-groove-and-tick-tricks-part-1): LazierGunz's cheat sheet writes chords as hex transposes — the values are interval positions counted from 0, so a major-seventh table is 00 04 07 0B 0C 07 04 00 (C E G B C B G E); slow it with G01 on the table's first line and groove 01 = 2/2 rather than doubling rows; 00 04 00 07 00 0B 00 0C is a texture. The C command's speed is fixed, which is why tables win for anything expressive; danimal cannon: go down, out of order, add octave notes, use five-note patterns over more than an octave — "just don't go up the chord every time the same way". Arpeggios can also be phrases: a 3-tick groove and H71/H5A loops turn one phrase into a long arp. Infu's beginner pair: C47 major, C37 minor.
Grooves are the table's speed control (source: s-painperdu-06-grooves, credited to Joe Toye of Chiptune Belgium). "By default tables run at one tick per step", but a G command inside a table sets that table's speed — which halves what a slow arpeggio costs: "if I wanted to make a long arp that actually took two tables to make, that was a bit of a hassle; thanks to that trick I can now use half the space and control exactly how fast my tables go". A faster groove does the reverse, packing more commands into the same time for a percussion table. The workflow consequence is worth stating: with per-channel grooves, arps can live in phrases instead of tables — "if you're like me and you overuse tables for arps, using grooves and phrases might be a better idea". defense-mechanism makes the same point from the timing side: a table groove of 2, 3 or more ticks slows a table down for arpeggios and duty changes, and groove plus H combine "to create complex timing changes in both phrases and tables" (source: s-intense-tech-07-groove-and-tick-tricks-part-2; shuffle-funktempo).
Why the arpeggio exists at all, on this machine. Asked why C alternates instead of sounding a chord, the chipmusic-org answer is flat: "each channel is really just one channel"; slower table arpeggios come closest; "that's how the medium works, boss" (source: s-chipmusic-lsdj-faq). Hackaday's framing of the same constraint names the two classical escapes side by side — "clever composers evoke the feeling of multiple notes by quickly switching between pitches to make arpeggios that sound convincingly like chords, or switch between very different sound parameters to allow two different 'instruments' to share the same channel" — arpeggio and channel-interleaving, with the ghost-channel as the third (source: s-hackaday-gameboy-channelhacking).
Four notes, then five, then two channels (pain-perdu, source: s-painperdu-03-isometric-sav-walkthrough). C gives three notes at one tick each; writing the arp into a table at two ticks per note (00 44 77 CC — root, major third, fifth, octave) buys a fourth note and enough time to hear each one: "faster arps, you can just hear the click noise between each note and not really the note itself". Put the bass on the relative minor third instead of the root and the same table sounds a five-note chord. Then run both pulse channels on that table, one at 25 % duty and the other at 50 %, with the second offset by three ticks — at two ticks per note there are five usable offsets — and the pair reads as one wide sustained chord: "your brain just kind of glues them all together … you don't even hear the note switch in the arp, you just hear chords." Keeping the same instrument and swapping only the table (the same shape with a minor third for the minor chord) avoids one instrument per chord.
On the wave channel there is a way to get a second note without arpeggiating at all: draw it into the wave. The ghost-channel sounds base + harmonic simultaneously, which no C command can do — at the cost of being limited to the octave and the octave + fifth (source: s-chipmusic-lsdj-ghost-channel).
Impulse Tracker / Scream Tracker 3#
Jxy cycles base, +x, +y once per tick — the IT manual calls it "an effect similar to old C-64 chords" (source: s-it-manual): the Modsquad's chip lead has a chord channel of J47 (major) and J37 (minor) at volume 64 with J00 to stop, and their rules are "chords in one channel — never two — and no percussion inside them" (source: s-tw077-chip-off-the-block). Pinion admits that for "really neato chords" Jxx is "a bit… shitty sounding" in a sample tracker — but on a looped noise sample with a long falling pitch envelope a column of Jxx makes analog-style sweeps (instrument-envelopes; source: s-tw081-it-tip-of-the-week). Trixter's reminder that "a chord isn't a thing, it's any combination of notes" applies: an arp is a chord spread in time (source: s-tw039-chord-theory-debate).
MOD and XM use 0xy for the same command: ProTracker's help calls it "used to simulate chords … noisy and grainy on most samples, but ok on monotone ones" — C-3 00047 C major, 037 C minor — and FT2 plays the note on tick 1, +x on tick 2, +y on tick 3 (sources: s-protracker-23d-help, s-ft2-manual). ST3's manual says the same in its own letters: Jxy changes the pitch "50 times per second … best to use it with clear or tight-looped (chip) instruments. Old users of the Commodore 64 remember this effect which was used to make chords" (J37 = C minor) (source: s-st3-manual). Two quirks players emulate: Fasttracker 2's arpeggio runs backwards (the second parameter's note comes first), and in ProTracker mode arpeggios that leave the Amiga range wrap around an octave (sources: s-openmpt-manual-compatible-playback, s-openmpt-manual-song-properties).
One command-memory trap when porting a part between formats: in S3M the effect memory is mostly global to the column, so a bare J00 recalls the last non-zero parameter of any command in that column, not just the last arpeggio — where MOD's 0xy has no memory at all and IT keeps per-command memory. Only vibrato and tone portamento have their own memory in S3M (source: s-openmpt-manual-effect-reference; effect-command-crosswalk).
In the classic drivers (1986–1988)#
- soundmonitor: an arpeggio is always eight steps of semitone offsets on the ARP/S page — minor
0c 07 03 00 0c 07 03 00, "as if you played a chord with four fingers … A minor: A (0C), E' (07), C' (03), A (00)"; the note's option bit 3 turns it on and the byte after the last note picks the arpeggio (08first,10second,18third …). VGMPF calls arpeggios in Musicmaster "a first in an editor" (sources: s-64er-soundmonitor-article, s-vgmpf-soundmonitor-tfmx). - matt-gray-player: shared offset lists (
$00,$08,$12;$00,$08;$00,$04,$08) with the instrument choosing table and how many entries to use ($30= table 0 × 3,$22= table 2 × 2); V4.2's PLEX tables$07,$03,$00,$09,$05,$00,$08,$03,$00,$18,$0C,$00,$07,$05,$00,$07,$04,$00,$08,$05,$00are Gray's "note or chord plex"; he liked "the arpeggio chords" in Treasure Island Dizzy (sources: s-sidin02-matt-gray-driller, s-matt-gray-dominator-source, s-c64com-matt-gray-interview). - musicfile:
arp0–arp7with a length byte first —$02,$00,$03,$07(minor),$02,$00,$04,$07(major),$02,$00,$05,$08,$02,$00,$05,$09,$02,$00,$03,$08,$02,$00,$04,$09,$02,$00,$03,$06— and one 24-step descending run; awavearp($80,$10,$80,$10) and apulsearpbeside the tone arpeggio (source: s-realdmx-sid-players). jeroen-tel: "By quickly switching between three notes on one channel, you saved two channels" (source: s-vgmpf-maniacs-of-noise).
- hubbard-player: only an octave arpeggio — flag
$04, odd frames note + 12, even frames the note, a 25 Hz trill ("Simple octave arpeggio, also a signature sound"); chords are played as fast single notes in the patterns instead (source: s-realdmx-hubbard-player). - galway-player: 4-note stacks including the octave —
$00,$04,$07,$0c(major),$00,$03,$07,$0c(minor),$00,$05,$09,$0c,$00,$03,$06,$08,$00,$04,$08,$0c(Rambo, each doubled to 8 entries and stepped backwards, one note per frame); Arkanoid'sarp37: $0c,$00,$03,$07,arp39,arp59,arp5b(voice 2 only) — the "wibble" SIDwave credits him with (sources: s-realdmx-galway-rambo-player, s-realdmx-galway-arkanoid-player). - ocean-music-driver:
ARPONtablesframes per step, steps, offsets—ARP1 !by 3,4,0,4,7,9,ARP2 !by 1,3,24,12,0(the two-octave "chip" arpeggio),FARP1 !by 2,4,0,3,7,12,TARP1/2/3 !by 2,3,0,3,7 / 0,3,8 / 0,3,10— chord changes under a held note by swapping tables (source: s-realdmx-ocean-dunn-hughes-driver). - bjerregaard-player: note programs mixing semitone offsets and absolute notes,
n0 $07,$03,$00,$07,$ff(minor, from the fifth down),N5 $01,$BF,$A2,$9A,$00,$FE; Armada keeps MUSICFILE's$02,$00,$03,$07 … $02,$00,$02,$05three-note lists, the 1990 player adds a header byte for speed and loop point (ar0 !by $10,$00,$04,$09,$ff) and up to 25 tables (sources: s-realdmx-bjerregaard-player, s-realdmx-ouwehand-mon-tunes). - whittaker-player: 13 lists ending in
$88, one step per frame —$00,$03,$07,$88,$00,$04,$07,$0c,$88,$07,$0c,$0f,$88,$00,$0c,$88; Fred Gray's Mutants keeps its offsets in quarter-semitones ($00,$1c,$14= root, +7, +5) so the same table doubles as vibrato; Red's player indexes three 12-byte rows (minor / major) with a free-running counter (source: s-realdmx-fredgray-kimmel-whittaker). - Scene players: the Scoop MoN player writes chords as note names (
arp2 !by g0,c0,e0,arpend,arp6 !by c0,f0,a0,arpend); Audial Arts' leads are one instrument with different tables (ap3 !by 14,14,19,19,22,22,$ff,ap4 !by 12,15,19,$ff— one entry per frame); FAME'sarp1–arp4($00,$03,$07…$00,$04,$08) cycle every 3 frames and can be switched mid-step with$61–$64(sources: s-realdmx-deenen-test-tunes, s-realdmx-audial-arts-fame-players).
Heard in / history#
The 50 Hz arpeggio is, for Newman, "perhaps more than any other, characteristic of chip music": composers "deployed rapid arpeggios cycling around two or more notes at 50Hz to simulate the effect of multiple notes playing simultaneously", the rate being "a function of the C64's processor and screen-update interrupt-system", not a musical choice — with Akesson's reminder that Bach simulated polyphony with arpeggiation in the Partita No. 2. martin-galway: "fast arpeggios, and chorusing/echoes" make three channels sound like more; rob-hubbard's driver had an octave-arpeggio flag, and commando's channel 2 is "pseudo-polyphonic chordal backing through rapid arpeggiation" (source: s-newman-driving-the-sid-chip). Magnar Harestad on jeroen-tel: "his way of using funky bass lines with lively leads and arpeggios" (source: s-hugi38-interview-jeroen-tel).
Seen from a synthesizer keyboard (2015): chord arps "will be out of reach because you can't play them by hand … I don't think I know of a single traditional arpegiator that is fast enough for the purpose" (n00bstar); a Nord Lead's arpeggiator, or 160 notes per second, is "more than enough" (chunter); and a hand-drawn four-step LFO on pitch — "prime-fifth-octave-fifth" — reproduces the sound on a rompler, its jump-or-glide option standing in for "the pitch bend instructions" (Murenius) (source: s-chipmusic-typical-sid-sounds).
Who invented it, and the PWM trick#
- SIDwave credits martin-galway: "In the process, Martin invented the chord, aka arpeggio — to play 3 or more notes in the same voice, very fast, one after another, so that it sounds like a chord. People from the UK called it the arpeggio, it was also known as wibble, or wibbles" (1984–85; source: s-recollection-brief-history-of-sid). de.wikipedia describes Soundmonitor's arpeggios the same way — "sehr oft zu hören" in C64 games (source: s-soundmonitor-lineage-wikis).
- matt-gray: "the note or chord plex where you go very quickly between 2,3 or even 4 notes to give the impression of a full chord being played. That sound became unique almost to the SID and everyone is using it as a retro sound now … And if you put a pulse width mod on it such as a sweep, the bubbling chord took on a life of it's own" (pulse-width-modulation; source: s-rvg-matt-gray-interview).
From SIDin #6–#7 (2004–05)#
- asterion-sid-tracker: the ARP macro table holds values added to the note —
$00–$7Frelative,$80–$DFabsolute,$E0"skydrive" — ending with$FEor looping with$FF n; an octave arpeggio is the rows21: FE 0C / 22: 00 FF / 23: 00 20(the wave macro ends after one$41row while00, 0Cloops), and because the wave and arpeggio tables run at separateWASspeeds "you can achieve very complex tasks";Axin the pattern starts the arpeggio macro from indexx(source: s-sidin06-asterion-sid-tracker). - dustbin (Simulmondo, 1990s): "I think the best feature invented is the arpeggio… You can use it 'chopped' for funky tunes" (source: s-sidin07-dustbin-interview).
- The modules driver (1988) has no arpeggio at all: its fast note sequences are written as pattern notes, and shared drum/fill phrases are reached with a gosub command (
$9B lo) and left with$9B $03, the instrument restored on return (source: s-sidin07-inside-modules).
The arpeggio as a program, not a table#
Two of the era's drivers do not store chords at all. Galway's has no tracks or patterns either — "there are not the division in tracks and patterns … there are other methods to take advantage of the use of patterns: subroutine call", so a chord is a transposed call of a phrase, and "programming a track is like creating a music program using a high level language" (source: s-sidin04-galway-arkanoid; orderlist). And JCH's DOS AdLib player of November 1991 carried "C64-style arpeggio tables, his own vibrato and modulation control" across to the PC, which "immediately distanced the player from almost anything that used AdLib" — the C64 arpeggio as a portable idea rather than a SID one (source: s-chordian-player-editor-notes; opl-fm-instruments).
In the 512-byte players (2005)#
- 4mat's Empty (winner of the tiny-sid-compo 512-byte category) stores an arpeggio as the instrument's three pitch entries:
instdata $f3,$f7,$f0= +3, +7, +0 semitones over the pattern note ($f0–$ff= offset,$f0= the note itself; values≤ $efset the pitch high byte directly), stepped one per frame with the loop point in the high nibble ofinstpuls($15: loop to entry 1, pulse high$5) — "a classical arpeggio with 3 values", and the whole instrument is five bytes; a single counter serves pitch and waveform, so looping instruments cannot have a release step (source: s-sidin08-tiny-sid-512b). - A Life in Hell's Crue Gurl gives voice 2 to chords alone: its note byte indexes a
chordslist of frequency high bytes ($28,$2f,$3c…) and a parallelwavelist ($21,$21,$21…) walked one entry per frame,$00ending the list with the loop index in the next byte — coarse pitch, but a chord voice with zero arithmetic (source: s-sidin08-tiny-sid-512b). - A dump reminder of the two-octave "chip" arpeggio in a classic: the Last Ninja 2 intro's voice 3 cycles
F#4377 Hz → 1511 Hz → 755 Hz frame by frame on a triangle with ADSR00a9(sid2midi output printed by Tognon while testing the catweasel card; source: s-sidin09-catweasel-6581) — the same root/+24/+12 shape as the ocean-music-driver'sARP2above.
Arpeggios in 256 bytes (Tiny Sid 2, 2006)#
- Eric Odland's Miniature Rhapsody stores a whole bar in one byte,
xxyyzzzz:xxpicks one of four chord shapes from a 4-byte table whose 2-bit fields are the intervals minus one —%00111000"1 4 3 - maj7 3rd inversion",%01100100"2 3 2 - 4 root",%10111000"3 4 3 - min7 root",%11010000"min2 root";yya bass note (21, 24, 26);zzzzthe root. The player unpacks it into 17 notes (the four chord tones, then +12, +24, +36) and runs up and down them one note per frame, with voice 2 a frame behind voice 1 — a four-octave broken chord from a 16-byte song (source: s-sidin10-tiny-sid-2-part-1). - The 256-byte round of 2005 does it with no tables at all: Agemixer's My Block .. one block derives everything from a free-running counter Y — voice 3 plays 8-note patterns from a 4-entry table indexed by two bits of Y — while Tognon's own Random Ninja borrows a
$41 00 / $21 00voice-1 pattern and a$81 C8 / $41 A8 / $40 00drum straight out of a goattracker test tune, in GoatTracker wavetable notation, and gets its variety by picking voice 1's second waveform from a bit of the SID's own noise register$D41B(source: s-sidin09-tiny-sid-256b; randomization-and-probability). - Frantic's BLOCK ACID DUB: an arpeggio is two rows that set the frequency high byte and
JUMPback to each other (SID_FRQHI / $0c / SID_FRQHI | JUMP / $09, arpeggio) — no arpeggio code at all (source: s-sidin11-tiny-sid-2-part-2). - Tognon's RM keeps Red Max's voice-3 arpeggio by adding a constant frequency increment (
$0624) per step from a 2-entry table — "different from the original", tuned by ear when the real semitone routine ran out of space (source: s-sidin10-tiny-sid-2-part-1).
JITT64 (2010)#
Pattern command 05: the parameter byte packs a speed in bits 7–6 (0–3 ticks between steps), a first offset in bits 5–3 and a second offset in bits 2–0 that is added to the first arpeggio note, not to the root — so $23 (offsets 4 and 3) gives root, +4, +7, a major triad; the player cycles root → note 1 → note 2, a new note in the pattern clears the command, and 00 with bit 0 stops it. Chords of more than three notes, or offsets above 7 semitones, need the instrument's relative-note column instead (sources: s-sidin13-inside-jitt64, s-sidin13-jitt64-tracker).
- matt-gray-player, the 2015 readings: in V4.2 the plex is a pattern command,
$FD ci—cnotes from tablei, so$FD,$36plays table 6 as a three-note chord and$FD,$40the first four entries of table 0 — and it persists until the next instrument or slide; Tognon's empty template offers 16 tables (nine of three notes, four of four, three of two: "95% of arpeggio are based into 3 values") (source: s-sidin14-dominator-player). The earlier Serpent Demo build keeps the arpeggio in instrument byte 5 and lists eight four-note chords with the octave on top —$00,$03,$07,$0C,$00,$04,$07,$0C,$00,$05,$07,$0C,$00,$04,$09,$0C,$00,$03,$08,$0C,$00,$05,$09,$0C,$00,$07,$0A,$0C— and one running downward,$13,$0C,$07,$00(source: s-sidin15-serpent-demo-player).
Tips & pitfalls#
- Choose inversions so the top notes of successive chords move by small steps: the chord channel then plays a hidden second melody for free.
- Use the diatonic formula per scale degree; keep a cheat sheet of inversions (
0 3 7 → 0 4 9 → 0 5 8minor,0 4 7 → 0 3 8 → 0 5 9major). - Too slow and it stops being a chord; too many notes in a chord thins each one out (an inference from the fusion principle — unverified beyond the 3-note examples in the source).
Related#
chord-inversions · diatonic-chords · chord-progressions · instrument-tables · channel-interleaving · furnace
Sources#
s-037-lab · s-sid-wizard-manual · s-goattracker-readme · s-witchmaster-creating-chiptunes-with-sid-wizard · s-newman-driving-the-sid-chip · s-intense-tech-17-the-joys-of-noise · s-intense-tech-09-lets-table-this-discussion · s-chipmusic-tables-and-chords-threads · s-infu-getting-started-with-lsdj · s-intense-tech-06-groove-and-tick-tricks-part-1 · s-protracker-23d-help · s-ft2-manual · s-st3-manual · s-openmpt-manual-compatible-playback · s-openmpt-manual-song-properties · s-walleij-sid-player-routine · s-intense-tech-19-new-noise-and-910-news · s-intense-tech-12-scoping-out-new-features · s-intense-tech-14-lets-appreciate-version-8 · s-intense-tech-03-dont-sleep-on-z · s-sabrepulse-getting-started-with-lsdj · s-furnace-c64-docs · s-chipmusic-typical-sid-sounds · s-hugi38-interview-jeroen-tel · s-64er-soundmonitor-article · s-sidin02-matt-gray-driller · s-matt-gray-dominator-source · s-realdmx-sid-players · s-vgmpf-maniacs-of-noise · s-c64com-matt-gray-interview · s-recollection-brief-history-of-sid · s-rvg-matt-gray-interview · s-soundmonitor-lineage-wikis · s-realdmx-hubbard-player · s-realdmx-galway-rambo-player · s-realdmx-galway-arkanoid-player · s-realdmx-ocean-dunn-hughes-driver · s-realdmx-bjerregaard-player · s-realdmx-ouwehand-mon-tunes · s-realdmx-fredgray-kimmel-whittaker · s-realdmx-audial-arts-fame-players · s-realdmx-deenen-test-tunes · s-sidin06-asterion-sid-tracker · s-sidin07-dustbin-interview · s-sidin07-inside-modules · s-sidin08-tiny-sid-512b · s-sidin09-catweasel-6581 · s-sidin10-tiny-sid-2-part-1 · s-sidin11-tiny-sid-2-part-2 · s-sidin13-inside-jitt64 · s-sidin13-jitt64-tracker · s-sidin14-dominator-player · s-sidin15-serpent-demo-player · s-cheesecutter-guide · s-duet-research-sidwizard-deep · s-duet-research-sidwizard · s-painperdu-06-grooves · s-intense-tech-07-groove-and-tick-tricks-part-2 · s-chipmusic-lsdj-faq · s-hackaday-gameboy-channelhacking · s-openmpt-manual-effect-reference · s-sidin04-galway-arkanoid · s-chordian-player-editor-notes · s-sidin09-tiny-sid-256b · s-defmon-wiki-manual · s-lsdj-manual · s-tw077-chip-off-the-block · s-tw081-it-tip-of-the-week · s-tw039-chord-theory-debate · s-it-manual · s-chipmusic-lsdj-ghost-channel · s-painperdu-03-isometric-sav-walkthrough