Chip samples — tiny looped waveforms
What it is#
In a sample tracker, a "chip" is a very small looped sample — a single waveform cycle or a few hundred bytes of a real instrument — that stands in for a sound-chip voice. A chiptune module is built from nothing else, which is why the whole song is a few kilobytes. The tracker's own documentation was a classic source: DennisC tracked a tune "using only st3.doc for samples" (source: s-tw037-death-of-the-chiptune-debate).
How to do it#
Choosing chips (Modsquad rules that survive the jokes)#
- Anything over about 5 k: shrink it. Big percussion can simply be clipped short — "take real drum samples and cut off both ends until they are small enough". Pick your instruments before you start tracking.
- Collect candidate samples from many modules, then keep only the ones whose waveform "touches the top and bottom" — i.e. properly normalised; a sample that doesn't was made by someone who "didn't care enough" (source: s-tw077-chip-off-the-block).
Generating waveforms#
The Modsquad's QBasic one-liners write raw 8-bit files of 1000 samples: sine PRINT #1, CHR$(SIN(A/20)*60+128), square (CHR$(0) for the first half, CHR$(255) for the second), white noise CHR$(INT(RND*255+1)), and an "acid" chirp SIN(A*A/20) mixed with decaying noise (source: s-tw077-chip-off-the-block). Any scripting language does the same today; loop the file and tune it. Found sound counts too — Spieg sampled his motherboard's electrical noise from an onboard SB16 (source: s-tw074-motherboard-sampling). The Modsquad's second, satirical series repeats the advice in earnest: plot a waveform on graph paper and enter it in FT2's sampler, and its QBasic listing writes a real 256-byte-per-cycle 8-bit unsigned "acid" sample with decaying peaks (source: s-tw087-music-theory-a-modern-approach).
One tracker generates them from text: schism-tracker has no sample drawing at all — "Tell the Milky Tracker guys to add NNAs ;)" — but Alt-Y makes a throwaway sample out of a typed string, which is the fastest way to get an arbitrary buzz into a slot when nothing else is at hand (source: s-schism-tracker-wiki). Draw them: FT2's sample editor draws with the right mouse button (source: s-ft2-manual); OpenMPT's draw mode exists "to fix small mistakes in the sample waveform or to create chip samples", and Resize creates a sample slot from nothing; normalise before converting to 8-bit; the IT-compatible ping-pong quirk ("Do not repeat last sample point in ping pong loop") is only audible on ping-pong-looped chip samples (sources: s-openmpt-manual-samples, s-openmpt-manual-compatible-playback). ProTracker's tuning tone plus Resample tunes any waveform to a note, Upsample/Downsample shift it an octave, and Boost brightens hi-hats (source: s-protracker-23d-help). ST3 keeps samples under 64000 bytes, which chip samples never approach (source: s-st3-manual).
Preparing samples#
- Centre and normalise: in impulse-tracker
ALT-Hcentres the waveform (also cures trigger/cut clicks) andALT-Mamplifies to the maximum without clipping (source: s-tw081-it-tip-of-the-week). - Tune every melodic sample: line-out into a guitar tuner, play
C-4, adjustC4spd/sample tuning until it reads in tune (source: s-tw077-general-tracking-tips); or set the C-5 speed by ear for percussion (s-tw075-it-percussion-tips). - Filter what the sound doesn't need ("why should a bassdrum have high frequencies?") and process at 16-bit, ≥22 kHz before converting down (source: s-tw059-tracking-hints).
ST-01samples from old Amiga mods are 8-bit 8 kHz; 22 kHz 8-bit is fine for most things (source: s-tw077-general-tracking-tips).
Impulse Tracker's sample tools#
Alt-E/Alt-F resize with/without interpolation (Graham the Happy Scum: +1 then −1 sample as a crude low-pass "smoothing"), Alt-G reverse, Alt-A/Alt-Q signed and 8/16-bit conversion, Alt-B/Alt-L cut before/after the loop — Onix4MAN loops the first 50–100 bytes and pre-loop-cuts to remove start clicks; a crude noise gate is Alt-A, Alt-M at 103–104 %, Alt-A; quarter-tone scales come from loading a sample twice with one copy's rate × 1.0293 (2^(1/24)). IT can render new samples of itself: put a break in one pattern, restart with the WAV-writer driver, play, reload the WAV as a sample. One channel of a stereo WAV: Ctrl-F halves the sample keeping every second byte (cut the first and last byte first for the right channel), then double the frequency (sources: s-tw086-wrecking-samples-with-impulse-tracker, s-it-hints, s-it-manual).
Trackers with real chips#
On the C64 and Game Boy the "sample" is the instrument definition itself — see instrument-tables and wavetable-programming; the closest PC-tracker equivalent to pulse-width-modulation is switching between pulse chips of different widths (s-037-lab).
The C64 has a sample channel of sorts too — the digi, or volume-register sample: the 6581 "produces a DC output with its intensity being regulated by the global volume register", so writing 4-bit sample values to it fast enough gives "a crude, virtual fourth 4-bit PCM channel"; furnace offers this as the system Commodore 64 (SID 6581) with software PCM and notes that the 8580 "fixed this problem, making such PCM nearly inaudible" (source: s-furnace-c64-docs). commodore-64.eu calls it the "sample bug" and names Ghostbusters and Arkanoid as games that used it (source: s-commodore-64-eu-sid-chip; secondary). SID musicians also use looped samples the way PC chiptunes do: in Gallefoss's Electronic Transfer "the bass tone is a sample loop (like how chip modules do it)" (4mat, source: s-chipmusic-sid-music-hints-n-tips). Background on sid.
How the composers used it:
- bob-yannes confirms the mechanism from the design side — the volume register's DC step — and that "Game programs often used this method to synthesize speech or play 'sampled' sounds" (source: s-sidmusic-yannes-interview).
- martin-galway: "I saw some utilities from the USA and picked them apart" — first the "flatulence stuff that shipped in Arkanoid", later real drum samples; "Things were better once I got to Game Over" (source: s-sidmusic-galway-interviews); in 2001: "my samples sounded like farts and burps" (source: s-remix64-galway-interview).
- rob-hubbard: the "Go!" in BMX Kidz is his own voice; PowerPlay Hockey and Kings of the Beach "both had samples" (source: s-sidmusic-hubbard-interviews).
- jeroen-tel on Turbo Outrun: "Having samples (and my own voice) inside a tune, that was awesome"; for Agony the Amiga samples were cut down to a low rate (source: s-sidmusic-jeroen-tel-interviews).
Game Boy: crunched wavetables and kits#
lsdj has two ways to get a real sample into the game-boy, and one of them is a chip sample in the strict sense (sources: s-intense-tech-05-wave-cruncher-instrument-library, s-intense-tech-08-dotcnts-wave-cruncher, s-intense-tech-20-lsdpatch, s-intense-tech-21-whats-new-in-lsdj-92):
Before either of them, the cheapest option on the wave channel is to draw the sound rather than sample it, and the rule that makes drawn waves usable as instruments is that volume is height: "the overall height (amplitude) of the waveform determines its volume … decrease the height even more for lower volumes. This works for any waveform you draw" — the wave's overall height, not its height above the bottom of the screen, so a quiet version of a sound is the same shape drawn smaller (source: s-lsdj-and-you-collapse-of-the-waveform; wavetable-programming, instrument-envelopes).
- Crunched wavetables — lsdj-wave-cruncher takes one tonal note (a bell, an FM electric piano, a steel drum) and reduces it to 16 four-bit waves of one cycle each, which the wave-channel synth plays at any pitch, bends and arpeggiates like any instrument: the single-cycle chip sample of the Amiga era, rebuilt for the wave channel. Crunch with
--normalizeand--linearor--exp, patch the.sntinto a synth slot of the save with liblsdj'slsdj-wavetable-import, start from PLAY ONCE, LENGTH3, SPEED3; details on wavetable-programming. - Kits — full samples patched into the ROM with lsdpatch, one sample per pitch. LSDPatch's kit editor resamples with dithering to 4 bits and normalises to full volume, lets you trim volume, pitch and length afterwards, and blends the last sample of each wave frame into the first of the next to hide the hardware's wave-RAM refresh bug (game-boy-apu); "half speed" fits samples up to 4.4 s at half the sample rate, played back with the kit instrument's SPEED 0.5x. LSDj 9.2 rewrote the kit timing, so kits made with LSDPatcher 1.11.5 or later sound "much cleaner, smoother", noticeably in cymbals. Songs travel with their kits as
.lsdprj.
Preparing the source material (sources: s-little-scale-lsdj-kits, s-chipmusic-lsdj-kit-threads). What reaches the ROM is decided before the patcher opens. A kit is 3FA0 bytes — "just over two seconds worth of audio per kit, so whatever you put in has to count" — so cropping is the whole discipline: the silence before the attack, the tail, and the dead space inside. little-scale's worked example goes from 500 ms to 75 ms "and it still has the important essence of what it was". Then the numbers that decide how it sounds: the kit sample rate is 11,468 Hz, so its Nyquist limit is 5,734 Hz, and everything above that comes back as hiss — a lowpass there is the single most effective step ("I've found it to make a pretty good difference"). (The same thread carries one dissent — herr_prof gives the rate as 8192 Hz — but it is asserted without a source, while LLTH names the LSDj manual and posts a correction of his own earlier figure; the wiki follows the manual figure, which lsdpatch also uses. Note that the 9.2.6 manual does not print a rate anywhere, so the citation is to an older edition through the thread. Source: s-chipmusic-lsdj-kit-threads.) Remove DC offset and roll off unneeded lows so normalisation has more to work with, and fade the first and last few milliseconds to kill the clicks that cropping leaves.
Level last: because the kit channel is quiet against the pulses, little-scale normalises and then adds 3–6 dB more, accepting the clipping — "yes, it looks terrible but it doesn't sound too bad". The 2013 forum consensus takes the opposite route and mixes down to it instead: with the wave instrument already at volume 3, "the best way to make your kits louder is to turn all the other channels down", most instruments around 7X. Export mono, 8-bit PCM, 11,468 Hz, and give each sample a three-character name — that is what LSDj shows.
Two workarounds worth knowing: a sample longer than the limit can be sped up 2× in the editor and played back at the kit instrument's SPEED 0.5, which is how 4–5 second guitar chords fit; and a click heard at the end of a long sample in the patcher's preview usually is not there on hardware.
The first sampled drums on the C64 (1986–1988)#
- Spring 1986: chris-huelsbeck finds a partly-BASIC "Digidrums" program, builds a userport sampler with a school friend ("breaking CIA chips") and adds "percussion, bass and vocal samples to Musicmaster as a 4th voice"; nothing is released until July 1987, so martin-galway's Arkanoid (February 1987) is the first game with sampled drums (source: s-vgmpf-chris-huelsbeck). The sampler served Jinks, Bad Cat, Antics, To Be On Top and great-giana-sisters (source: s-emuwiki-huelsbeck-interview).
- April 1987: the scene's Rockmonitor adds sample playback to soundmonitor "to Hülsbeck's chagrin at the time" (source: s-vgmpf-soundmonitor-tfmx).
- Summer 1988: the new 8580 "played samples too quietly"; Hülsbeck "decided to improve on the analog SID sounds instead" and wrote tfmx — a dated example of the sid revision changing a composer's technique. On Giana Sisters: "On the 8580 revision, the percussion of Title is quiet" (source: s-vgmpf-soundmonitor-tfmx).
- maniacs-of-noise: charles-deenen's starter disk for a new composer held "Turbo Ass, his music driver, and some 4-bit samples"; VGMPF credits jeroen-tel with the "Sample driver" of Turrican (C64, 1990) and Deenen with Hawkeye's "Mix-E-Load" (source: s-vgmpf-maniacs-of-noise).
Hülsbeck's own claims (1987–96), and MoN's digi routine#
- To 64'er's readers in 2/88 he described the method in lay terms: a tone or noise is recorded "mit einem Mikrofon auf Tonband", stored in the computer, and can be "in Noten verarbeitet" — "So können mit dem C64 Sounds produziert werden, die er eigentlich nicht erzeugen kann" (source: s-64er-rainbow-arts-feature).
- In 1996 he claimed priority himself: "I think I was the first programmer who made sample sounds in musics with the SID chip, but the first release 'Bad cat' from Rainbow Arts that featured 'my' trick was delayed about 3 month … So Martin Galway got the fame with 'Arkanoid'" (source: s-imr-huelsbeck-interview).
- By early 1989 the musicfile driver had, per C=Lehti, "a complete two-channel digitized-data play routine" (source: s-c-lehti-maniacs-of-noise).
Two 1987 methods, and what came after (the scene's account)#
- SIDwave: "Mid-1987, both Chris Hülsbeck and Martin Galway add sampled drums to their music. But it's Galway who runs with the glory, because his game is released first. But there is a difference: Galway's digi drum routine, is real-time, and does some poking and fiddling with very few numbers, to create small scratches and drums, using the SID volume register, D418. Chris Hülsbeck does it another way, his routine plays sample data from RAM, as a streaming of data to D418, using NMI." The Banana then mixed two Funky Drummer samples for "2-voice drums, on top of the 3 voice SID tune" (3-voice drums "craps up the sound so much"); the Dutch USA-Team built rockmonitor on Soundmonitor with a drum track; Digitronix used "4bit samples instead of eight and 'mixing' them on the NMI" for two sample channels plus three SID voices (sources: s-recollection-brief-history-of-sid, s-soundmonitor-lineage-wikis).
- Galway on where his samples came from (SIDId's note): "hacking into someone else's code … a drum synthesizer package called Digidrums … Never would I claim to have invented that technique, I just got it published first"; MicroRhythm (Firebird, 1986) was a sample drum machine before either (source: s-sidid-player-list).
- Later: 8-bit playback demos by Mahoney (SIDId: "8-bit samples at 44.1kHz via the volume register"), THCM and SounDemoN — whose 2006 technique "makes use of waveform $00 in combination with the test bit and uses the frequency register to write the 8-bit sample data", already found in 1993 by Chris Brenner's DigiMaster — and Algorithm's "Free-Running-Oscillator samples" (FRO-DIGI); Geir Tjelta's 2009 player "samples itself" on voice 3 for a fake reverb (sources: s-recollection-brief-history-of-sid, s-sidid-player-list).
One composer's digi voice, and why it stayed private (1991)#
JCH added samples to his own editor in June 1991 by the $D418 volume-click trick driven from an NMI — the same route as the 1986–88 drivers above — and sampled Korg M1 sounds with an SFX Sound Sampler cartridge. His first digi tune was "Better Late than Never" (1991-06-23) and he made only four in total, because the jch-editor was merely "hacked" for the digi voice and was "too hairy to be used by anyone else but me". It is a useful counterweight to the 1986–88 firsts: by 1991 the technique was reachable by a bedroom composer, but productising it — making it survive in an editor other people use — was still the hard part (source: s-chordian-my-computer-chronicles; multispeed).
DigiOrganizer: a 4-bit sample track for any tune (Polonius/Padua, documented 2004)#
digiorganizer is the streaming method as an editor: it adds a sampled voice — "full 4° voices in a easy way" — to a single-speed tune written in any other editor, and Tognon's listing in sidin #6 shows the machinery (source: s-sidin06-digiorganizer).
- Format: 4-bit samples packed two per byte ("4+4 format: low nibble, high nibble of 2 samples"), stored page-aligned from
$A000(up to$2Fsamples); the high nibble is played first; a sample's last page is padded with$FF, so the volume ends at 15. Source material is converted to 8-bit mono at 6 kHz (sox sample16.wav -c1 -b -v .8 -r 6000 sample8.wav, with a low-pass to tame aliasing) and then to packed 4-bit with the DOS toolS64_ENG(Reiter/Apidya). - Playback: a CIA #2 NMI (timer B cascaded from timer A) whose rate is the timer-A low byte — the per-sample "speed" (
$A0in the demo definitions); two alternating handlers write(byte >> 4) | $10and(byte & $0F) | $10to$D418, a third idles after the end page is reached. Sample definitions arestart page, end page, speedtriples (A7 AE A0), so one "instrument" can chain several loaded blocks. - Cohabitation rules: the 3-voice player must not write the volume from its IRQ ("some very high noise sound"), and since every nibble write forces the low-pass bit, only the low-pass filter can be used while samples play (Polonius advises no filter at all). Init sets volume 8 with low-pass (
$18). - The library: about ninety samples on the disk, named after their origins — "sanxionsnare", "sanxionbase", "sanxionchord 1–3", "kraftsnare", "kraftbase", "thank you robb", "roadrunner" — plus toms, hi-hats, crashes, guitars, bass guitars, barks and vocal grunts.
dustbin's rule of thumb for the same era: the SID "has just 3 channels (+1, when available)" (source: s-sidin07-dustbin-interview).
Four sample channels by timer polling (Polly Tracker, 2005)#
aleksi-eeben's Polly Tracker, released in July 2005, mixes four sample channels on a stock C64 without interrupts: the four CIA timers each set one channel's pitch, the code polls them in a busy loop ("hence the name Polly"), and whenever at least one channel pointer has advanced all four channels are mixed and written to the volume register $D418 as a 4-bit DAC. Two details make it work: a guard against the CIA timer-B bug (the interrupt flag is lost if $DC0D is read on the cycle timer B reaches zero — check $DC06 first and spend one extra cycle on a clash), and a muted SID voice 3 as the tempo clock, the sequencer stepping whenever $D41B changes. Eeben's argument against a fixed mixing rate: fractional pointers are "cumbersome with 8-bit processor", four channels would cap at "around 6-7 kHz" on 1 MHz, and resampling skips samples with "quite nasty artifacts"; polling reaches "9 kHz sample rate on all four channels" with samples "never skipped", only "very slightly delayed" — "you cannot bribe the timers, so the frequency output remains stable". Mixing samples with live SID voices would need interrupt-driven samples and, he suggested, two mixing modes (source: s-sidin08-eeben-interview). Compare the 1987–88 methods above: Galway's real-time volume wiggling, Hülsbeck's NMI streaming, Digitronix's two 4-bit channels.
Sample tunes are also the hardest case for SID-on-PC hardware: on the catweasel Mk4 the card's hardware command buffer "should give the best result with sample based music as here there are lot of volume settings per second", and Tognon could play RSID sample tunes (Arkanoid) through the card from VICE — though the SID part of Arkanoid sounded "quite different" on his faulty card (source: s-sidin09-catweasel-6581).
A 4-bit drum kit in 512 bytes (Tiny Sid 2, 2006)#
Leif Bloomquist's Mini Digi Drum — "a sampled based tune!" — is the smallest digi player in the wiki: two 255-byte 4-bit samples (kick, hi-hat) packed two per byte (high nibble kick, low nibble hi-hat, unpacked at start into two pages) take half of the 512-byte budget; each hit is one track byte — bit 7 instrument, bits 6–4 duration, bits 3–0 the delay-loop count between writes of a sample byte to $D418 — so the playback speed is the instrument: the same kick reads as "bump", "da", "bip" or "bup" at speeds 12, 12 (short), 1 and 5, the hi-hat as "pshhh" or "tsk" at 15 and 4. Before playing, all three voices get sustain $FF and control $49 (pulse + test bit + gate), the "digibooster" that gives the volume-register DC step something to modulate; the screen is blanked to keep the timing loop steady, and note lengths are counted on the jiffy clock (source: s-sidin10-tiny-sid-2-part-1; tiny-sid-compo).
Matt Gray's 4-bit sample voice (Serpent Demo, from the code)#
The other 1980s digi routine the wiki can read in full: Tognon's reverse-engineering of matt-gray's Serpent Demo player — the driller-era matt-gray-player with a fourth track (source: s-sidin15-serpent-demo-player).
- Data: 4-bit samples, two per byte, high nibble first; seven samples in 4 KB at
$1000–$1FFF, each described by a start page, an end page and a second start page (BANKHI0,BANKEND,BANKHI1) (source: s-sidin15-serpent-demo-player). - Playback: CIA 2 Timer A raises an NMI; the handler writes one nibble to
$D418per interrupt and advances a self-modified pointer — Hülsbeck's NMI-streaming method rather than Galway's real-time synthesis. The timer's low byte is the pitch: a pattern byteNNgoes straight into$DD04(high byte 1), so$0Aplays faster and higher than$40(source: s-sidin15-serpent-demo-player). - Sequencing: the sample track is a fourth pattern channel with three commands —
NNspeed,$FD vvlength in tempo ticks,$FA bibank + sample — sharing the pattern table with the SID voices;T29writes a drum pitch sweep as the byte run$01,$02 … $40(source: s-sidin15-serpent-demo-player). - Level: the nibble replaces the whole volume register while the music sits at
$09($0Eat init), which is what Gray hears in 2015: "my first attempt at using samples and unfortunately the levels on the drums are too loud … 4 bit sampling using just 16 values so real low level, but it sounded not bad" (sources: s-sidin15-matt-gray-interview, s-sidin15-serpent-demo-player).
Where to get chip sounds without the chip#
little-scale recorded a dozen sound chips onto disk between 2008 and 2012 and released them without restriction — "recorded from hardware using custom designed interfaces", with the sounds generated by him rather than lifted from games, dry and before the console's own output filter, normalised and trimmed but not compressed or EQ'd. The coverage is systematic rather than curated: 1344 Atari 2600 TIA samples (3 envelopes × 14 waveform types × 32 pitches), 945 from the Sega Master System's SN76489, 245 from a YM2413, 316 POKEY noises, 72 covering the YM2612's eight algorithms, 112 basic sid 8580 waveforms and all 59 SP0256-AL2 allophones. The 2008–09 packs went out CC BY-NC; by 2010 he had relicensed everything as "copyright-free and license-free" (source: s-little-scale-chip-sample-packs).
Two consequences for a tracker musician: a pack that covers every waveform against every pitch is a multisample instrument waiting to be mapped, not a folder of one-shots; and recording dry, with the filtering left to software, is the reason those recordings still take EQ well.
For lsdj specifically, the 22 stock kits exist as plain WAVs — AA-EL ACIEED ANIMLZ CR-78 CR8000 DMX DR-55 DR-110 DRUMUL EL-KK2 GHETTO KK3-TH KR-55 LINNDR RHYACE TOM TR-606 TR-707 TR-727 TR-808 TR-909 TT-ZZ — extracted in 2014, alongside a deliberately louder TR808L rebuild. That is the starting point for the "the stock kits are too quiet" problem: rebuild from the originals with gain, rather than re-record (source: s-little-scale-lsdj-kit-releases; the complaint is on s-chipmusic-lsdj-kit-threads).
And a note on what survives the crush: little-scale's Debussy kits are piano chords at 8-bit / 11.468 kHz, and his verdict was that they "actually sound[] much better than I had anticipated" — acoustic material is not automatically a bad fit for the kit channel (source: s-little-scale-lsdj-kit-releases).
Straight out of a ROM#
The other way to get a chip's own samples is to read them out of the software that shipped them. little-scale's method works on "many different types of ROMs" and needs nothing but Audacity (source: s-little-scale-rom-sample-extraction):
File > Import > Raw Dataand point it at the ROM.- Answer the dialog. His starting point for a Game Boy Advance ROM: signed 8-bit PCM, no endianness, mono, offset 0, 100 %, 12000 Hz.
- The whole ROM arrives as one long track — and the sample data is found by eye: PCM audio "looks significantly different to the rest of it … more like actual audio waveforms than a square data waveform", where code and graphics render as a solid block.
- Preview, and re-import with different settings if it sounds wrong.
His worked example is the 100 pre-packaged samples of Pocket Music (Game Boy, 2002), pulled out of the ROM and converted to WAV. Note what this is and is not: it is sample-ripping from someone else's software, with the usual copyright question attached, unlike the packs above, which he generated himself.
Tips & pitfalls#
- Credit the composer whose samples you rip, keep the author's name with the sample, and never take a whole set from one song — the scene's etiquette is on sample-ripping (s-tw003-beginning-the-tracking-experience, s-tw077-general-tracking-tips; source: s-tw024-sample-ripping-debate).
- The "realism" camp (sampled synths, multi-megabyte modules) is a legitimate opposite choice, not a better one (source: s-tw076-realism-in-mods); the whole 1996 argument, with its sample-rate facts, is on realism-in-tracked-music (source: s-tw070-realism-debate).
- Why chip: clef (1996) — "you don't have to worry so much about samples", the files are small, and "I like optimizing stuff like code, and the same with chip tunes" (source: s-tw055-interview-clef). The sample-tracker cousin of the constraint is perisoft's fixed three-sample palette — a sine lead, a filter synth and one more lead — from which he wrote ten songs in two weeks (source: s-tw011-interview-perisoft; see instrument-design).
- FT2 chiptunes bound for an Amiga compo machine: sixth-octave notes exported to
.MODbecameB-5on the Amiga and cost a friend of zalt's a last place — check the note range (source: s-tw040-interview-zalt; see mod-format). - Compo sample packs: the 20-minute-chip-compo distributed a weekly pack of short chip samples, deliberately detuned "to avoid ready made patterns"; compo #2's pack was IFF 8SVX, which ST3 and FT2 could not load — check formats before a compo. Calvin's idea of "spreading the samples as a mod" (a module as a sample container) is credited in #33 (source: s-tw032-20-minute-chip-compo; see compos).
Arkanoid's "samples", from the code#
Tognon's reverse-engineering of Arkanoid (SIDin #4, in the realdmx collection) shows what Galway's 1987 sampled drums were: no PCM data at all. Six routines step a 4-bit accumulator by a constant ($98, $65, $DD, $0E, $01) and write its low nibble to the master volume register $D418, busy-waiting between writes for the number of iterations in a 6-entry delay table read from the end ($20,$10,$08,$04,$02,$01 — each stage twice as slow, a falling drum). A step of +8 makes a square, +5 / −3 scramble all sixteen levels (noise-like), +1 a rising saw. The synthesis runs in the foreground while the music IRQ (about 52 Hz for those two tunes) schedules it from a sample-pattern language of its own; after each hit the volume is restored (lda #$0F ; ora TEMP ; sta $D418) with the filter-mode nibble kept in a variable. This is Galway's "wiggling the volume register" and Newman's "series of farts and burps", in about 470 bytes of code and 78 bytes of tables — the cheapest 4-bit percussion the SID ever had (source: s-realdmx-galway-arkanoid-player; see galway-player).
Tognon's own description of the same routines (SIDin #4, 2003) adds the ripper's view: a PSample call's timbre "is governed by two parameters: a repeat value and a table of delays" — PSample1 repeats each of six delays $0C times, stepping the volume by 1 and wrapping "from low level when the max level is reached"; the sta $D418 is stored with a masked operand ($9418, $DD18) and unmasked by adding $40 to $94 only while a drum plays; the sample stream's opcodes are real 6510 opcodes and the routines sit in "very sparse memory area" — "maybe some suspicious of a way to hidden the sample generation". The consequence for listeners: PSID's extended-register sample emulation "try to emulated this kind of sound generation", so arkanoid "will play so different into a sidplayer (with extended sid register) instead of the real machine (or today RSID rip)" — play it as an RSID or on hardware (sid-format; source: s-sidin04-galway-arkanoid).
Related#
sample-ripping · multisampling · chiptune · instrument-design · sample-offset · scream-tracker-3 · protracker · sample-ripping · recording-samples · reverb-and-compression · 20-minute-chip-compo · lsdj · lsdj-wave-cruncher · lsdpatch · liblsdj · wavetable-programming · sid · furnace · levels-and-headroom
Sources#
s-tw077-chip-off-the-block · s-tw037-death-of-the-chiptune-debate · s-tw081-it-tip-of-the-week · s-tw077-general-tracking-tips · s-tw059-tracking-hints · s-tw074-motherboard-sampling · s-tw076-realism-in-mods · s-ft2-manual · s-openmpt-manual-samples · s-openmpt-manual-compatible-playback · s-protracker-23d-help · s-st3-manual · s-tw086-wrecking-samples-with-impulse-tracker · s-it-hints · s-it-manual · s-tw087-music-theory-a-modern-approach · s-tw024-sample-ripping-debate · s-tw070-realism-debate · s-tw032-20-minute-chip-compo · s-037-lab · s-tw003-beginning-the-tracking-experience · s-tw075-it-percussion-tips · s-intense-tech-05-wave-cruncher-instrument-library · s-intense-tech-08-dotcnts-wave-cruncher · s-intense-tech-20-lsdpatch · s-intense-tech-21-whats-new-in-lsdj-92 · s-furnace-c64-docs · s-commodore-64-eu-sid-chip · s-chipmusic-sid-music-hints-n-tips · s-tw055-interview-clef · s-tw011-interview-perisoft · s-tw040-interview-zalt · s-vgmpf-chris-huelsbeck · s-vgmpf-soundmonitor-tfmx · s-emuwiki-huelsbeck-interview · s-vgmpf-maniacs-of-noise · s-recollection-brief-history-of-sid · s-sidid-player-list · s-soundmonitor-lineage-wikis · s-realdmx-galway-arkanoid-player · s-sidin04-galway-arkanoid · s-sidin06-digiorganizer · s-sidin07-dustbin-interview · s-sidin08-eeben-interview · s-sidin09-catweasel-6581 · s-sidin10-tiny-sid-2-part-1 · s-sidin15-serpent-demo-player · s-sidin15-matt-gray-interview · s-64er-rainbow-arts-feature · s-imr-huelsbeck-interview · s-c-lehti-maniacs-of-noise · s-little-scale-chip-sample-packs · s-little-scale-lsdj-kit-releases · s-sidmusic-yannes-interview · s-sidmusic-galway-interviews · s-remix64-galway-interview · s-sidmusic-hubbard-interviews · s-sidmusic-jeroen-tel-interviews · s-little-scale-lsdj-kits · s-chipmusic-lsdj-kit-threads · s-little-scale-rom-sample-extraction · s-schism-tracker-wiki · s-lsdj-and-you-collapse-of-the-waveform · s-chordian-my-computer-chronicles