jturcotte/chiptrack

A programmable cross-platform sequencer for the Game Boy Advance sound chip

Rust

188

437 commits

updated Feb 9, 2026

See the code

README

Chiptrack

A programmable cross-platform sequencer for the Game Boy Advance sound chip.

image

Try the Web Player

Install

See the latest release page

Features

  • Instruments are programmable

    Each song carries a little WebAssembly program that converts sequenced notes to Game Boy Advance sound commands.
    This gives almost complete control over the sound chip to each song.

  • Songs can be distributed and played from GitHub gists

  • Basic MIDI support in the desktop version

  • Runs natively on the Game Boy Advance

    image

    It can also be run on the 3DS through open_agb_firm

  • Master Sync Mode to send clock signals to a Pocket Operator or Volca

    On the GBA the output volume is too low and it won't trigger unless amplified.

    On the 3DS this can be worked around with open_agb_firm by setting audioOut=2 and volume=36 to override the physical volume slider.

Key / Button Mapping

FunctionDesktopGame Boy Advance
Move cursor||||||
Switch panel (Patterns, Steps, Instruments)Shift + (|)(L|R) + (|)
Select previous/next song patternB + (/)B + (/)
Select previous/next pattern non-empty instrumentsZ + (/)B + (/)
Cycle the selected pattern/note/param valueX + (|)A + (|)
CopyXA
CutZ + XB + A
Paste (on empty slot)XA
Play songEnterStart
Play patternCtrl + EnterSelect + Start
Reset sound channelsEscSelect
SaveCtrl + SN/A
Export song to GBA save fileCtrl + GN/A
Toggle recording mode.N/A
Black notesW|E|T|YUN/A
White notesA|S|D|F|G|H|J|KN/A
Erase step (or hold during playback)BackspaceN/A

Song Patterns Panel

FunctionDesktopGame Boy Advance
Cycle patternX + (|)A + (|)
Duplicate patternShift + (Z, X)(L|R) + (B, A)
CopyXA
Cut (only on the last non-empty slot )Z + XB + A
Paste (only on the placeholder slot)XA
Insert an empty pattern instead of pastingX, XA, A

Pattern Steps Panel

FunctionDesktopGame Boy Advance
Cycle note/paramX + (|)A + (|)
Cycle note/param (large amount)X + (|)A + (|)
Enter selection modeShift + Z(L|R) + B
Select all rows (in selection)Shift + Z(L|R) + B
Copy (in selection)ZB
Cut (in or not in selection)Z + XB + A
Cancel selectionShiftL|R
Paste selection clipboardShift + X(L|R) + A
Paste edit clipboard (on empty slot)XA

Notes:

  • B + A means that B must be held first*
  • The selection clipboard is set when copy/cutting in selection mode
  • The edit clipboard is set after a note/param cycle (also if unchanged)
  • Cutting when not in selection mode sets both the selection and edit clipboards

Based on the awesome work of

License

The source code is available under the terms of the MIT license (See LICENSE-MIT for details).

However, because of the use of GPL dependencies, Chiptrack compiled binaries are licensed under the terms of the GPLv3 (See LICENSE-GPL).

chiptune
gameboy
gba
music
rust
sequencer
slint
tracker-music
webassembly

Contributors

jturcotte

433 commits

ogoffart

4 commits

jturcotte/chiptrack

A programmable cross-platform sequencer for the Game Boy Advance sound chip

Rust

188

437 commits

updated Feb 9, 2026

See the code

README

Chiptrack

A programmable cross-platform sequencer for the Game Boy Advance sound chip.

image

Try the Web Player

Install

See the latest release page

Features

  • Instruments are programmable

    Each song carries a little WebAssembly program that converts sequenced notes to Game Boy Advance sound commands.
    This gives almost complete control over the sound chip to each song.

  • Songs can be distributed and played from GitHub gists

  • Basic MIDI support in the desktop version

  • Runs natively on the Game Boy Advance

    image

    It can also be run on the 3DS through open_agb_firm

  • Master Sync Mode to send clock signals to a Pocket Operator or Volca

    On the GBA the output volume is too low and it won't trigger unless amplified.

    On the 3DS this can be worked around with open_agb_firm by setting audioOut=2 and volume=36 to override the physical volume slider.

Key / Button Mapping

FunctionDesktopGame Boy Advance
Move cursor||||||
Switch panel (Patterns, Steps, Instruments)Shift + (|)(L|R) + (|)
Select previous/next song patternB + (/)B + (/)
Select previous/next pattern non-empty instrumentsZ + (/)B + (/)
Cycle the selected pattern/note/param valueX + (|)A + (|)
CopyXA
CutZ + XB + A
Paste (on empty slot)XA
Play songEnterStart
Play patternCtrl + EnterSelect + Start
Reset sound channelsEscSelect
SaveCtrl + SN/A
Export song to GBA save fileCtrl + GN/A
Toggle recording mode.N/A
Black notesW|E|T|YUN/A
White notesA|S|D|F|G|H|J|KN/A
Erase step (or hold during playback)BackspaceN/A

Song Patterns Panel

FunctionDesktopGame Boy Advance
Cycle patternX + (|)A + (|)
Duplicate patternShift + (Z, X)(L|R) + (B, A)
CopyXA
Cut (only on the last non-empty slot )Z + XB + A
Paste (only on the placeholder slot)XA
Insert an empty pattern instead of pastingX, XA, A

Pattern Steps Panel

FunctionDesktopGame Boy Advance
Cycle note/paramX + (|)A + (|)
Cycle note/param (large amount)X + (|)A + (|)
Enter selection modeShift + Z(L|R) + B
Select all rows (in selection)Shift + Z(L|R) + B
Copy (in selection)ZB
Cut (in or not in selection)Z + XB + A
Cancel selectionShiftL|R
Paste selection clipboardShift + X(L|R) + A
Paste edit clipboard (on empty slot)XA

Notes:

  • B + A means that B must be held first*
  • The selection clipboard is set when copy/cutting in selection mode
  • The edit clipboard is set after a note/param cycle (also if unchanged)
  • Cutting when not in selection mode sets both the selection and edit clipboards

Based on the awesome work of

License

The source code is available under the terms of the MIT license (See LICENSE-MIT for details).

However, because of the use of GPL dependencies, Chiptrack compiled binaries are licensed under the terms of the GPLv3 (See LICENSE-GPL).

chiptune
gameboy
gba
music
rust
sequencer
slint
tracker-music
webassembly

Contributors

jturcotte

433 commits

ogoffart

4 commits

Languages

Rust

53.7%

WebAssembly

20.4%

Slint

13.7%

Zig

11.4%