Convert FastTracker 2 XM and Amiga ProTracker MOD files to Ableton Live projects.
Bring your 1990s tracker music into the modern DAW era while preserving the original compositions.
Try it online - No installation required!
- Supported formats: FastTracker 2 XM (.xm), ProTracker MOD (.mod)
- Accurate conversion:
- Byte-perfect sample extraction (16-bit WAV)
- Correct BPM calculation (
BPM × 6/speed) - Proper MOD pitch mapping (+24 semitones offset)
- Loop support (forward and ping-pong)
- Per-sample volume and panning
- Smart track organization:
- One MIDI track per channel/instrument combination
- Automatic track grouping by instrument
- Color-coded tracks
- Optional effects:
- Panning automation (effect 8xx)
- Sample offset (effect 9xx) via Simpler
- Volume envelope conversion (experimental)
- Merge mode for polyphonic playback
pip install xm2liveOr install from source:
git clone https://github.com/samkieffer/xm2live.git
cd xm2live
pip install -e .# Basic conversion
xm2live mytrack.xm
xm2live oldschool.mod
# With panning automation (effect 8xx)
xm2live mytrack.xm --pan-automation
# With sample offset support (effect 9xx)
xm2live mytrack.xm --sample-offset
# Merge mode (one track per instrument instead of per channel)
xm2live mytrack.xm --merge-tracks# Convert all files in a directory (recursive)
xm2live-batch /path/to/modules
# Non-recursive (current directory only)
xm2live-batch /path/to/modules --no-recursiveConverted projects are created in:
[source directory]/xm2live_converted_tracks/[name]_Ableton_Project/
├── [name].als # Ableton Live project
└── Samples/ # Extracted WAV samples (16-bit)
| Option | Description |
|---|---|
--pan-automation |
Enable panning automations (effect 8xx) |
--sample-offset |
Enable Sample Offset (effect 9xx) via Simpler |
--envelope |
Enable FT2 envelope → ADSR conversion (experimental) |
--merge-tracks |
Create one "All notes" track per instrument |
| Option | Description |
|---|---|
--template PATH |
Use custom Ableton template |
--no-recursive |
Don't search subdirectories |
--pan-automation |
Enable panning automations |
--sample-offset |
Enable Sample Offset via Simpler |
--envelope |
Enable envelope conversion |
FastTracker 2 uses a dual tempo system:
- Speed: Ticks per row (default: 6)
- BPM: Base tempo (calibrated for Speed=6)
Real BPM formula: real_bpm = bpm × (6 / speed)
Example: Speed=3, BPM=125 → Real BPM = 250
ProTracker uses different octave conventions than MIDI. The converter applies a +24 semitone offset:
- C-1 (ProTracker) → C-3 (MIDI note 48)
- C-2 (ProTracker) → C-4 (MIDI note 60)
- C-3 (ProTracker) → C-5 (MIDI note 72)
When enabled with --sample-offset:
- Instruments using effect 9xx are loaded into Simpler (instead of Sampler)
- Sample Start automation is created for each note with 9xx
- Limitation: Ping-pong loops are converted to forward loops (Simpler limitation)
- Effects: Most tracker effects (vibrato, arpeggio, etc.) are not converted
- Volume envelopes: Approximation only (FT2 multi-point → Ableton ADSR)
- Dynamic BPM: Only initial tempo is used
- Formats: Only XM and MOD supported (no S3M, IT)
- Python 3.8+
- Ableton Live 10+ (to open converted projects)
MIT License - See LICENSE for details.
Contributions are welcome! Please feel free to submit issues and pull requests.
This project was created to preserve and rework tracker music from the 1990s demoscene era. Special thanks to the FastTracker 2 and ProTracker communities.