MAXMXDS (MAXmod MiX software for DS) is a DJ-style tracker module player for Nintendo DS homebrew. It is built on the ashes of XMXDS as an improved version.
It plays .mas files (converted from XM/MOD/IT/S3M via mmutil) with real-time performance controls, 32-channel software mixing, and demoscene visualizers.
Inspired by PT-1210 for Amiga. Uses blocksds's fork of MaxMod as sound engine (Mode-C software mixer on ARM7).
Works with both real hardware (flashcarts) and emulators. File navigation on hardware requires FAT filesystem access. Alternatively, emulator builds can embed songs at compile time (NitroFS).
Distributed under MIT license.
- 32-channel software mixing with per-channel mute/solo
- BPM control with lock, nudge, and tap tempo
- 8 cue points (touch) + 1 hot cue (buttons) with jump and set
- Rolling loop with quantized divisions (4/8/16/32/64/128 rows)
- Beat-synced stutter (rhythmic volume gate)
- Semitone transpose (+-12)
- Pattern loop mode
- Per-channel oscilloscope waveforms
- Audio-reactive visualizers
| Input | Action |
|---|---|
| A | Play / Stop |
| UP / DOWN | BPM +1 / -1 |
| LEFT / RIGHT | Nudge tempo (+-4% while held) |
| START | Toggle BPM lock |
| X | Toggle pattern loop |
| Input | Action |
|---|---|
| B | Set hot cue to current position |
| B + LEFT/RIGHT | Move hot cue -1 / +1 |
| Y (release) | Jump to hot cue (at pattern end) |
| L / R | Transpose down / up (semitone) |
| Input | Action |
|---|---|
| SELECT + UP | Toggle rolling loop |
| SELECT + LEFT/RIGHT | Halve / double loop division |
| SELECT + DOWN | Toggle beat stutter |
| Input | Action |
|---|---|
| SELECT + START | Open file browser |
Touch the tab strip to switch between three modes:
- CH — 8x4 channel oscilloscope grid. Touch top half of a cell to mute, bottom half to solo.
- CUE — 8 cue point buttons (top=jump, bottom=set) and a tap tempo zone.
- VFX — Visualizer effect selector (8 effects) with SIZE and GAP sliders.
MAXMXDS plays .mas files. Convert with mmutil:
mmutil -d -y -m mysong.xm -omysong.mas
Batch convert:
python scripts/mas.py -i /path/to/songs -o data
Requires devkitPro (devkitARM + libnds).
Also requires mmutil to be available in your environment variables.
Create a songs folder at the same level as the Makefile. Inside it, organize your MOD / XM / IT / S3M files in any folder structure you like (e.g. by playlist, genre, etc.):
songs/
├── techno/
│ ├── track1.xm
│ └── track2.mod
├── jungle/
│ └── amen_break.it
└── chill.s3m
All files found recursively will be converted to .mas format during the build.
make native # for real hardware (flashcart + DS)
make emulator # for emulator (No$GBA)
Output: release/MAXMXDS.nds
