Skip to content

# Chiptune Tracker

A four-voice chip synth with a step grid in front of it: two pulse channels with selectable duty, a triangle, and a noise register. The synth is integer-only, so a song renders the same bytes here, in the test suite and from `chiptune-cli` on your own machine, and the WAV you export is that buffer; what your speakers actually play is resampled by the browser at its own rate and is deliberately not part of the claim.

Nothing here makes a sound until you ask it to. No audio starts before you press Enable audio, the level ramps in gently, and a limiter sits across the output. Headphones can still be loud, so start quiet.

Rendered when the site was built, by the same core the browser runs: the demo song Overworld, written out as the tracker grid that produces it. A browser cannot make a sound without JavaScript, so there is no audio on this page. The music is here as the grid, and `chiptune-cli render song.json --out song.wav` turns that same grid into the same bytes on your own machine.

Song
  Overworld
Summary
  2 patterns · 4 chain slots · 64 rows · 120 BPM · 176256 samples at 22050 Hz · 7.993 s
Pattern chain
  00 00 01 00
Render
  176256 samples at 22050 Hz, 16-bit mono

How to read a cell
Field | Example | What it means
--- | --- | ---
Note | C-4 | The note struck here, from C-0 up to B-7. Three dashes means this cell starts no new note and whatever was playing carries on.
Volume | c | One base-16 digit, 0 to f, so sixteen levels fit in one column. A dot means the cell says nothing about loudness; a 0 is the note off.
Effect | A47 | An arpeggio: the pitch cycles through the note, four semitones above it and seven above it, once per tick, six ticks to a row. Three dots means no effect.
Effect | S+3 | A slide: the pitch bends up three parts in 1024 on every tick, and keeps bending into the rows that follow until a new note lands. S-3 bends down.

    ROW  PULSE 1    PULSE 2    TRIANGLE   NOISE
    00  C-5 c ... C-4 8 A47 C-2 d ... F#2 b ...
    01  --- . ... --- . ... --- . ... --- . ...
    02  E-5 c ... --- . ... G-2 a ... F#4 5 ...
    03  --- . ... --- . ... --- . ... --- . ...
    04  G-5 c ... F-4 8 A47 F-2 d ... F#3 9 ...
    05  --- . ... --- . ... --- . ... --- . ...
    06  E-5 b ... --- . ... C-3 a ... F#4 5 ...
    07  --- . ... --- . ... --- . ... --- . ...
    08  F-5 c ... G-4 8 A47 G-2 d ... F#2 b ...
    09  --- . ... --- . ... --- . ... --- . ...
    10  E-5 b ... --- . ... D-3 a ... F#4 5 ...
    11  --- . ... --- . ... --- . ... --- . ...
    12  C-5 c ... C-4 8 A47 C-2 d ... F#3 9 ...
    13  --- . ... --- . ... --- . ... --- . ...
    14  --- 0 ... --- . ... G-2 a ... F#4 6 ...
    15  --- . ... --- . ... --- . ... --- . ...

    ROW  PULSE 1    PULSE 2    TRIANGLE   NOISE
    00  G-5 c ... G-4 8 A47 C-2 d ... F#2 b ...
    01  --- . ... --- . ... --- . ... --- . ...
    02  F-5 c ... --- . ... G-2 a ... F#4 5 ...
    03  --- . ... --- . ... --- . ... --- . ...
    04  E-5 c ... F-4 8 A37 F-2 d ... F#3 9 ...
    05  --- . ... --- . ... --- . ... --- . ...
    06  D-5 b ... --- . ... C-3 a ... F#4 5 ...
    07  --- . ... --- . ... --- . ... --- . ...
    08  C-5 c ... D-4 8 A37 G-2 d ... F#2 b ...
    09  --- . ... --- . ... --- . ... --- . ...
    10  --- . ... --- . ... D-3 a ... F#4 5 ...
    11  B-4 b ... --- . ... --- . ... --- . ...
    12  C-5 d ... C-4 9 A47 C-2 d ... F#3 9 ...
    13  --- . ... --- . ... --- . ... --- . ...
    14  --- . ... --- . ... G-2 a ... F#4 6 ...
    15  --- 0 ... --- . ... --- . ... --- . ...

About this toy1 command
Use it locally This toy has a native command line twin. Build `chiptune-cli` from the site's source with:

    cargo build --release --bin chiptune-cli

Source and licence terms