An LSDJ-style music tracker for Nintendo DS that creates and edits .mas files for the maxmod sound system.
Requires devkitPro with devkitARM, libnds, libfat, and libfilesystem.
make emulator # .nds with NitroFS (for emulators)
make native # .nds without embedded data (for flashcarts)Emulator (no$gba): load release/maxtracker.nds
directly. Song data is embedded via NitroFS.
Flashcart : copy maxtracker.nds to the SD
card. Create a data/ folder next to it for song storage.
Developer guides live in doc/:
- DEVELOPING.md -- build, run, test, where to start
- architecture.md -- code structure and IPC contract
- hardware_quirks.md -- NDS-specific rules
- conventions.md -- coding conventions
| Library | Purpose |
|---|---|
| devkitARM + libnds | ARM cross-compiler and DS hardware abstraction |
| libfat | FAT filesystem on SD card |
| libfilesystem | NitroFS support for emulator builds |
| maxmod | Audio playback (patched fork in lib/maxmod/) |
| LFE | Offline sample synthesis and effects (lib/lfe/ submodule) |
- Johan Kotlinski for LSDJ as inspiration.
- Trash80 for the M8 tracker as inspiration.
- Mdashdotdashn and djdiskmachine for LGPT as inspiration.
- Maxmod for the audio engine.
- devKitPro for libnds and the other development tools.
- blocksDS for maintaining maxmod.
- roseumteam for "roseumteam" font.
- int10h.org for the Atari Portfolio font.
Maxtracker uses a waveform editor called LFE (Lightweight Fixedpoint Engine). LFE uses algorithms and ideas from:
- Mutable Instruments Braids by Emilie Gillet (GPLv3) for Braids macro oscillator shapes
- Calvario by Hydrangea Systems for Calvario XOR cross-modulation in the synth generator
- OTT by Steve Duda / Xfer Records for the legendary OTT multiband compressor effect
- Audio EQ Cookbook by Robert Bristow-Johnson for biquad filter coefficient formulas
maxtracker is GPL-3.0-or-later. See LICENSE for the full text. Bundled libraries retain their own licenses: maxmod is ISC, LFE is GPL-3.0-or-later.