Skip to main content

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

xm2live-3.0.0.tar.gz (61.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

xm2live-3.0.0-py3-none-any.whl (59.2 kB view details)

Uploaded Python 3

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

Hashes for xm2live-3.0.0.tar.gz
Algorithm Hash digest
SHA256 05fe696e0807f43b78cfdc494d98987513317f46510482eae943d6c79054c187
MD5 e094dd5d2abfc3569b0adbf26b93bb19
BLAKE2b-256 c5a8f923282acd5818310a23dd6e0b6342fe578cbaa7a24cd851bef2b8467f56

See more details on using hashes here.

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

Hashes for xm2live-3.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a330c67c791fc6bfecc6f458c3ab538919a1bd6a2768451a64209b41f8f0f926
MD5 27f5d77b8860ade18380f296b1993a6b
BLAKE2b-256 525d7b3e4ecc1f5c50717efbae8d784ea04835f4bfdfbdd572721603ffa0b662

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page