Chris Collins

Tools · retro

SID sound designer

Design Commodore 64 SID sounds — three voices with triangle, saw, pulse and noise (and combinations), real ADSR rates, ring modulation, hard sync, the 6581/8580 filter — play them from the keyboard, and export the $D400–$D418 registers as BASIC POKEs, assembler, or PAL/NTSC note tables.

Added

How to use it

Press Sound on, then play the on-screen piano or your keyboard (A W S E D F T G Y H U J K, Z/X for octave) — it plays the voice chosen under Keyboard plays, opening and closing the gate so you hear the whole envelope. Gate on each voice latches it on.

Each voice has:

  • Waveforms — triangle, sawtooth, pulse and noise. Ticking several combines them the way the chip does (roughly, a bitwise AND, which is why combinations are quieter).

  • Ring — ring-modulates the triangle with the previous voice (voice 3 for voice 1).

  • Sync — restarts the oscillator each time the previous voice’s cycles; with a higher frequency here you get the classic sync lead.

  • Test — holds the oscillator at zero.

  • Pulse width — 12 bits; 2048 is a square wave.

  • Attack, decay, sustain, release — with the datasheet timings. The decay and release use the SID’s piecewise-exponential curve.

The filter is a 12 dB/octave state-variable filter with an 11-bit cutoff, 4-bit resonance, and low-, band- and high-pass outputs that can be mixed (LP + HP = notch). Route any voice through it. 3OFF silences voice 3 when it is not filtered — useful when voice 3 is only a modulator or a random-number source.

The register map updates as you go. Export gives:

  • BASIC POKEs — S=54272 and the values, ready to paste into a C64.

  • Assembler — a register table and a copy loop.

  • Note table — freq_lo/freq_hi tables for C0–B7 at the chosen PAL or NTSC clock.

Formulae

  • Frequency register = f × 16 777 216 ÷ clock; clock is 985 248 Hz (PAL) or 1 022 727 Hz (NTSC). A4 (440 Hz) is $1D45 on PAL.

  • Pulse duty = PW ÷ 40.95 %.

  • Attack 2 ms – 8 s; decay and release three times as long for the same value.

Limits

The sound comes from a small SID model written for this page: oscillators, noise LFSR, sync, ring modulation and the envelope are modelled on the chip’s logic, but the filter and the combined waveforms are approximations, and the 6581’s filter differs from chip to chip. It gets you close; check the result on a real C64 or in VICE/reSID.

Sharing

Share link copies a link that carries the whole patch — three voices (waveform, note, pulse width, ADSR, ring/sync/filter routing), the filter, volume, clock, and chip model — packed in ?s=. Opening it sets up the same sound; press Sound on to hear it.

Runs entirely in your browser; nothing you type leaves this page.