Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/jturcotte/chiptrack

A programmable cross-platform sequencer for the Game Boy Advance sound chip
https://github.com/jturcotte/chiptrack

chiptune gameboy gba music rust sequencer slint tracker-music webassembly

Last synced: 18 days ago
JSON representation

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

Awesome Lists containing this project

README

        

# Chiptrack

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

[![image](https://github.com/user-attachments/assets/8e013648-85b0-49f7-ac09-5da0bf96855f)](https://jturcotte.github.io/chiptrack)

[Try the Web Player](https://jturcotte.github.io/chiptrack)

### Install

[See the latest release page](https://github.com/jturcotte/chiptrack/releases/latest)

## Features

- [Instruments are programmable](instruments/default-instruments.zig)

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](https://gist.github.com/search?l=WebAssembly&q=%23chiptrack)
- Basic MIDI support in the desktop version
- Runs natively on the Game Boy Advance

![image](https://github.com/jturcotte/chiptrack/assets/839935/e358fc48-d26b-46e2-9d37-58d40fa94877)

It can also be run on the 3DS through [open_agb_firm](https://github.com/profi200/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`](https://github.com/profi200/open_agb_firm/blob/master/README.md#audio) to override the physical volume slider.

## Key / Button Mapping

Function | Desktop | Game Boy Advance
---------|---------|-----------------
Move cursor | \|\|\| | \|\|\|
Switch panel (Patterns, Steps, Instruments) | Shift + (\|) | (L\|R) + (\|)
Select previous/next song pattern | B + (/) | B + (/)
Select previous/next pattern non-empty instruments | Z + (\/) | B + (/)
Cycle the selected pattern/note/param value | X + (\|) | A + (\|)
Copy | X | A
Cut | Z + X | B + A
Paste (on empty slot) | X | A
Play song | Enter | Start
Play pattern | Ctrl + Enter | Select + Start
Reset sound channels | Esc | Select
Save | Ctrl + S | N/A
Export song to GBA save file | Ctrl + G | N/A
Toggle recording mode | . | N/A
Black notes | W\|E\|T\|YU | N/A
White notes | A\|S\|D\|F\|G\|H\|J\|K | N/A
Erase step (or hold during playback) | Backspace | N/A

### Song Patterns Panel

Function | Desktop | Game Boy Advance
---------|---------|-----------------
Cycle pattern | X + (\|) | A + (\|)
Duplicate pattern | Shift + (Z, X) | (L\|R) + (B, A)
Copy | X | A
Cut (only on the last non-empty slot ) | Z + X | B + A
Paste (only on the placeholder slot) | X | A
Insert an empty pattern instead of pasting | X, X | A, A

### Pattern Steps Panel

Function | Desktop | Game Boy Advance
---------|---------|-----------------
Cycle note/param | X + (\|) | A + (\|)
Cycle note/param (large amount) | X + (\|) | A + (\|)
Enter selection mode | Shift + Z | (L\|R) + B
Select all rows (in selection) | Shift + Z | (L\|R) + B
Copy (in selection) | Z | B
Cut (in or not in selection) | Z + X | B + A
Cancel selection | Shift | L\|R
Paste selection clipboard | Shift + X | (L\|R) + A
Paste edit clipboard (on empty slot) | X | A

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

- [Slint - A Rust UI toolkit](https://github.com/slint-ui/slint)
- [RBoy - A Gameboy Color Emulator](https://github.com/mvdnes/rboy)
- [gba - A crate for GBA development](https://github.com/rust-console/gba)

## License

The source code is available under the terms of the MIT license
(See [LICENSE-MIT](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](LICENSE-GPL)).