Convert FastTracker 2 XM and Amiga ProTracker MOD files to Ableton Live projects
Project description
XM2Live
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.
Features
- 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
Installation
pip install xm2live
Or install from source:
git clone https://github.com/samkieffer/xm2live.git
cd xm2live
pip install -e .
Quick Start
Single File Conversion
# 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
Batch Conversion
# Convert all files in a directory (recursive)
xm2live-batch /path/to/modules
# Non-recursive (current directory only)
xm2live-batch /path/to/modules --no-recursive
Output
Converted projects are created in:
[source directory]/xm2live_converted_tracks/[name]_Ableton_Project/
├── [name].als # Ableton Live project
└── Samples/ # Extracted WAV samples (16-bit)
Command Line Options
xm2live
| 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 |
xm2live-batch
| 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 |
Technical Details
BPM Calculation
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
MOD Pitch Mapping
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)
Sample Offset (Effect 9xx)
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)
Known Limitations
- 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)
Requirements
- Python 3.8+
- Ableton Live 10+ (to open converted projects)
License
MIT License - See LICENSE for details.
Contributing
Contributions are welcome! Please feel free to submit issues and pull requests.
Acknowledgments
This project was created to preserve and rework tracker music from the 1990s demoscene era. Special thanks to the FastTracker 2 and ProTracker communities.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file xm2live-3.0.0.tar.gz.
File metadata
- Download URL: xm2live-3.0.0.tar.gz
- Upload date:
- Size: 61.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
05fe696e0807f43b78cfdc494d98987513317f46510482eae943d6c79054c187
|
|
| MD5 |
e094dd5d2abfc3569b0adbf26b93bb19
|
|
| BLAKE2b-256 |
c5a8f923282acd5818310a23dd6e0b6342fe578cbaa7a24cd851bef2b8467f56
|
File details
Details for the file xm2live-3.0.0-py3-none-any.whl.
File metadata
- Download URL: xm2live-3.0.0-py3-none-any.whl
- Upload date:
- Size: 59.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a330c67c791fc6bfecc6f458c3ab538919a1bd6a2768451a64209b41f8f0f926
|
|
| MD5 |
27f5d77b8860ade18380f296b1993a6b
|
|
| BLAKE2b-256 |
525d7b3e4ecc1f5c50717efbae8d784ea04835f4bfdfbdd572721603ffa0b662
|