Skip to content

B0ney/xmodits

Repository files navigation

XMODITS Logo

XMODITS

A tool to bulk extract samples from various tracker modules with ease.

GitHub all releases GitHub GitHub release (with filter) Repo size "Release RSS Feed"

Download

You can download builds for xmodits here.

If you wish to build from source, go to building.

If you prefer to use a minimal version of this tool, a command line version of xmodits can be found here. Additionally, the command line version has more supported architectures.

Supported Tracker Formats

Extension Format
.it Impulse Tracker
.xm Extended Module
.s3m Scream Tracker 3
.mod Amiga Pro Tracker
.mptm ModPlug Tracker module
.umx Unreal Music Package (Containing above)

Supported Exports

Extension Format
.wav Microsoft Wave
.aiff Audio Interchange File Format
.its Impulse Tracker 2 sample
.s3i Scream Tracker 3 Instrument
.8svx 8-Bit Sampled Voice
.raw Headerless pcm

Features

  • A robust naming system for extracted samples (see Sample Naming).
  • Can export samples to less common audio formats used by music trackers: .its, .s3i & .8svx
  • Can show information about a module.
  • A sample previewer.
  • Multithreaded ripping* for better efficiency.
  • Cute animated fox to make ripping less tedious.

* xmodits will only use threads if it is ripping from a directory.

Screenshots

XMODITS initial screen

Click to show more

Selecting tracker modules Ripping samples from 33 tracker modules XMODITS has finished ripping with no error. Yay!

Click here for different themes

How to Use

  1. Open application
  2. Drag and drop a module, and or a folder full of modules.
  3. (Optional) Press "Open" to set the destination folder. Your downloads folder is the default.
  4. Press "Start"
  5. Press "Show Folder" to see the results.

(Windows Only) If you just want to simply extract samples, you can also drag and drop a module(s) onto the binary. XMODITS will (by default) place the samples in a self contained folder in your ~/Downloads folder.

Sample Naming

Configure how ripped samples are named.

Parameter Description
Index Only Samples will only be named with an index.
Preserve Index Sample index will match how it is represented internally.
Prefix Samples Samples will be prefixed with the tracker's filename.
Upper Case Samples will be named in upper case.
Lower Case Samples will be named in lower case.
Prefer Filename Some samples have an additional filename. If present, xmodits will name samples with that.
Index Padding Set the minimum amount of digits an index must have. Indexes will be padded with zeros to match the minimum amount of digits*. Set to 1 to disable padding.

* xmodits may override this value to ensure that samples are named consistently (unless it is set to 1).

Ripping Configuration

Parameter Description
Self Contained XMODITS will put samples in a self contained folder.
Export Format Samples can be saved to the following formats: [ wav, aiff, 8svx, its, s3i, raw ]
Folder Scan Depth Limit how far a folder can be traversed.
Worker Threads Set how many threads can be used to rip samples in parallel.

Saving Configuration

Any changes made to the configuration must be saved manually.
The configuration file can be located at:

OS Path
Windows %appdata%\xmodits\config.toml
Linux ~/.config/xmodits/config.toml
MacOs ~/Library/Application Support/xmodits/config.toml

Keyboard Shortcuts

Shortcut Action
delete Clears the selected entries
shift + delete Clears the entries
ctrl/ + S Save Configuration

Command Line Arguments

short long Description
-h --help Prints help information
-V --version prints app version
-i --info Prints build information
-m --manual Prints manual

Building

Requirements:

(Linux) Dependencies:

  • fontconfig
  • libasound2-dev (If building with audio feature)

Clone the source code (latest):

git clone https://github.com/B0ney/xmodits

Alternatively, you can download different versions from: https://github.com/B0ney/xmodits/tags

Compile:

cd xmodits

cargo build --release

NOTE: Older versions will have slightly different build instructions. Additionally, versions below v0.9.8 are CLI only.

Build Flags

Feature Description Enabled by Default?
audio Add audio playback, used to preview samples. yes
built Includes metadata about the binary and the environment it was compiled in. Useful for bug reporting. yes
jemalloc (*nix only) Use the jemalloc memory allocator. Used to mitigate memory fragmentation which can improve memory footprint. no
wgpu Enables hardware acceleration (DX12/Vulkan/Metal). no
iced_gif Include animated GIF YES
manual Bundle a simplified readme in the application yes

For example, to compile XMODITS with jemalloc and wgpu:

cargo build --release --features="jemalloc","wgpu"

Compile XMODITS with default features disabled:

cargo build --release --no-default-features

Build flags used in official releases:

Target Features
Windows audio, built, iced_gif,manual
MacOS audio, built, iced_gif,manual, wgpu
Linux audio, built, iced_gif,manual, jemalloc

License

XMODITS is licensed under the GPLv3, see license for more detail.

Other xmodits projects

Program License Description
XMODITS-CLI LGPLv3 xmodits cli app
XMODITS-PY LGPLv3 xmodits Python library. PyPi link
(Mainly used for DawVert)
XMODITS-LIB MPLv2 xmodits core library

Special Thanks