Skip to main content

Extract samples from tracker modules. Supports IT, XM, S3M, MOD, UMX, MPTM

Project description

XMODITS python library

Supported formats:

  • Impulse Tracker .IT
  • Extended Module .XM
  • Scream Tracker .S3M
  • Amiga Pro Tracker .MOD
  • Open ModPlug Tracker .MPTM (Identical to Impulse Tracker sample-wise)
  • Unreal Music Container .UMX (Containing the above formats)

How to use

import xmodits

file = "~/Downloads/music.xm"
folder = "~/Music/samples/"

# Rip samples to folder
xmodits.dump(file, folder)

Required Arguments

Argument Meaning
Path Path to a tracker module
Destination Destination folder for ripped samples

Additional Arguments

Argument Definition
with_folder Create a new folder for ripped samples.
e.g. When set to True, "drums.it" will create "drums_it" in the destination folder and place those samples there.
index_padding Set padding.
e.g. "01 - kick.wav" --> "1 - kick.wav"
index_only Only name samples with a number.
e.g. "09 - HiHat.wav" --> "09.wav"
index_raw Preserves the internal sample indexing
upper Name samples in upper case
lower Name samples in lower case
strict Enabled by default.
Will reject files that don't match the following file extensions:
[it, xm, s3m, mod, umx, mptm]

Exceptions

They are pretty much self explanitory.

Exception Meaning
SampleExtraction A sample could not be extracted
PartialExtraction Not all of the samples could be extracted
TotalExtraction None of the samples could be extracted
UnsupportedFormat A module format was recognized, but its type is not supported
InvalidModule The file is not a valid tracker module
EmptyModule The tracker module is valid but it has no samples
UnrecognizedFileExtension The file extension was not recognized
NoFormatFound Could not determine a valid format

Additional Examples

Dump samples without names

import xmodits

tracker = "mods/music.xm"
folder  = "samples/"

xmodits.dump(
    tracker,
    folder,

    index_only=True 
)

This produces the following output in folder "samples":

01.wav
02.wav
03.wav
04.wav
...
15 - vocal.wav

Dump samples without padding the index:

import xmodits

tracker = "mods/music.xm"
folder  = "samples/"

xmodits.dump(
    tracker,
    folder,
    index_padding=0 # or 1, both have the same effect
)

Output:

1 - hihat.wav
2 - kick.wav
3 - snare.wav
4 - toms.wav
...
15 - vocal.wav

Samples stored in tracker modules can have an arbitary index. If you prefer to use this index, include the parameter:

index_raw=True

If you're dumping from multiple modules to the same folder, you're guaranteed to have collisions.

You should include the parameter:

with_folder=True

development:

https://docs.python.org/3/library/venv.html

Create a python virtual environment in this directory:

python -m venv dev

activate virtual environment:

source ./dev/bin/activate

install maturin (crates.io) or from pipi

run test library:

maturin develop

License

The xmodits python library is licensed under the LGPLv3

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

xmodits_py-0.3.1.tar.gz (25.9 kB view hashes)

Uploaded Source

Built Distributions

xmodits_py-0.3.1-cp37-abi3-win_amd64.whl (196.4 kB view hashes)

Uploaded CPython 3.7+ Windows x86-64

xmodits_py-0.3.1-cp37-abi3-win32.whl (188.5 kB view hashes)

Uploaded CPython 3.7+ Windows x86

xmodits_py-0.3.1-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (272.1 kB view hashes)

Uploaded CPython 3.7+ manylinux: glibc 2.17+ x86-64

xmodits_py-0.3.1-cp37-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (267.5 kB view hashes)

Uploaded CPython 3.7+ manylinux: glibc 2.17+ ARMv7l

xmodits_py-0.3.1-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (260.2 kB view hashes)

Uploaded CPython 3.7+ manylinux: glibc 2.17+ ARM64

xmodits_py-0.3.1-cp37-abi3-manylinux_2_5_i686.manylinux1_i686.whl (285.1 kB view hashes)

Uploaded CPython 3.7+ manylinux: glibc 2.5+ i686

xmodits_py-0.3.1-cp37-abi3-macosx_11_0_arm64.whl (240.0 kB view hashes)

Uploaded CPython 3.7+ macOS 11.0+ ARM64

xmodits_py-0.3.1-cp37-abi3-macosx_10_12_x86_64.whl (251.1 kB view hashes)

Uploaded CPython 3.7+ macOS 10.12+ x86-64

Supported by

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