Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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
- Host: GitHub
- URL: https://github.com/jturcotte/chiptrack
- Owner: jturcotte
- License: gpl-3.0
- Created: 2021-12-12T13:52:57.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2024-10-29T19:39:34.000Z (3 months ago)
- Last Synced: 2024-10-29T20:34:06.067Z (3 months ago)
- Topics: chiptune, gameboy, gba, music, rust, sequencer, slint, tracker-music, webassembly
- Language: Rust
- Homepage: https://jturcotte.github.io/chiptrack/
- Size: 13 MB
- Stars: 134
- Watchers: 5
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE-GPL
Awesome Lists containing this project
- awesome-rust-list - jturcotte/chiptrack - platform sequencer and synthesizer based on the emulation of the Game Boy sound chip. [jturcotte.github.io/chiptrack/](https://jturcotte.github.io/chiptrack/) (GUI)
- awesome-rust-list - jturcotte/chiptrack - platform sequencer and synthesizer based on the emulation of the Game Boy sound chip. [jturcotte.github.io/chiptrack/](https://jturcotte.github.io/chiptrack/) (GUI)
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 | ANotes:
- 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)).