{"id":16085102,"url":"https://github.com/B0ney/xmodits","last_synced_at":"2025-10-23T01:31:31.510Z","repository":{"id":45752452,"uuid":"505396389","full_name":"B0ney/xmodits","owner":"B0ney","description":"A tool to rip samples from tracker modules. Supports IT, XM, S3M, MOD, UMX and MPTM formats.","archived":false,"fork":false,"pushed_at":"2024-08-26T20:04:02.000Z","size":16940,"stargazers_count":117,"open_issues_count":5,"forks_count":6,"subscribers_count":6,"default_branch":"ver-0.12.1","last_synced_at":"2025-04-01T14:14:35.092Z","etag":null,"topics":["audio","fasttracker2","gui","iced","iced-rs","impulsetracker","protracker","ripper","rust","screamtracker","tracker-music","xmodits"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/B0ney.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-06-20T10:34:29.000Z","updated_at":"2025-03-19T16:11:54.000Z","dependencies_parsed_at":"2023-02-09T19:31:03.422Z","dependency_job_id":"54118472-7472-4bd5-b7c1-fcd3e4b6f864","html_url":"https://github.com/B0ney/xmodits","commit_stats":{"total_commits":827,"total_committers":2,"mean_commits":413.5,"dds":"0.0012091898428052694","last_synced_commit":"830f4392a13d5b6588ce86c11c003e4df3843c96"},"previous_names":[],"tags_count":24,"template":false,"template_full_name":null,"purl":"pkg:github/B0ney/xmodits","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/B0ney%2Fxmodits","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/B0ney%2Fxmodits/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/B0ney%2Fxmodits/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/B0ney%2Fxmodits/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/B0ney","download_url":"https://codeload.github.com/B0ney/xmodits/tar.gz/refs/heads/ver-0.12.1","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/B0ney%2Fxmodits/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":280546390,"owners_count":26348719,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-22T02:00:06.515Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["audio","fasttracker2","gui","iced","iced-rs","impulsetracker","protracker","ripper","rust","screamtracker","tracker-music","xmodits"],"created_at":"2024-10-09T13:01:50.673Z","updated_at":"2025-10-23T01:31:30.931Z","avatar_url":"https://github.com/B0ney.png","language":"Rust","funding_links":[],"categories":["Projects Using iced"],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\u003cimg alt=\"XMODITS Logo\" src=\"icon.png\"\u003e     \n\n# XMODITS\n\n# A tool to bulk extract samples from various tracker modules with ease.\n\u003c/div\u003e\n\u003cdiv align=\"center\"\u003e\n\n![GitHub all releases](https://img.shields.io/github/downloads/B0ney/xmodits/total)\n![GitHub](https://img.shields.io/github/license/B0ney/xmodits)\n[![GitHub release (with filter)](https://img.shields.io/github/v/release/B0ney/xmodits)](https://github.com/B0ney/xmodits/releases)\n![Repo size](https://img.shields.io/github/repo-size/B0ney/xmodits)\n[![\"Release RSS Feed\"](https://img.shields.io/badge/rss-releases-ffa500?logo=rss)](https://github.com/B0ney/xmodits/releases.atom)\n\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\u003ca href=\"https://github.com/iced-rs/iced\"\u003e\n  \u003cimg src=\"https://gist.githubusercontent.com/hecrj/ad7ecd38f6e47ff3688a38c79fd108f0/raw/74384875ecbad02ae2a926425e9bcafd0695bade/color.svg\" width=\"130px\"\u003e\n\u003c/a\u003e\n\u003c/div\u003e\n\n## Download\nYou can download builds for xmodits [here](https://github.com/B0ney/xmodits/releases/latest).\n\nIf you wish to build from source, go to [building](#building).\n\nIf you prefer to use a minimal version of this tool, a command line version of xmodits can be found [here](https://github.com/B0ney/xmodits-cli). Additionally, the command line version has more supported architectures. \n\n## Supported Tracker Module Formats\n| Extension | Format | \n| - | - |\n| ``.it`` | Impulse Tracker |\n| ``.xm`` | Extended Module | \n| ``.s3m`` | Scream Tracker 3 |\n| ``.mod`` | Amiga Protracker |\n| ``.mptm`` | ModPlug Tracker module |\n\n## Supported Containers\n| Extension | Description |\n| --- | --- |\n| ``.umx`` | Unreal Music Package|\n| N/A | Protracker 3.6 project file |\n\n# Supported Exports\n| Extension | Format |\n|-|-|\n|``.wav``| Microsoft Wave|\n|``.aiff``| Audio Interchange File Format |\n|``.its``| Impulse Tracker 2 sample |\n|``.s3i``| Scream Tracker 3 Instrument |\n|``.8svx``| 8-Bit Sampled Voice |\n|``.raw``| Headerless pcm |\n\n## Features\n* A robust naming system for extracted samples (see [Sample Naming](#sample-naming)).\n* Can export samples to less common audio formats used by music trackers: ``.its``, ``.s3i`` \u0026 ``.8svx``\n* Can show information about a module.\n* A sample previewer.\n* Multithreaded ripping* for better efficiency.\n* Cute animated fox to make ripping less tedious.\n\u003c!-- * Resuming --\u003e\n\u003c!-- * History --\u003e\n\n\\* xmodits will only use threads if it is ripping from a directory.\n\n## Screenshots\n![XMODITS initial screen](./assets/screenshots/home.png)\n\u003cdetails\u003e\n\u003csummary\u003eClick to show more\u003c/summary\u003e\n\n![Selecting tracker modules](./assets/screenshots/selection.png)\n![Ripping samples from 33 tracker modules](./assets/screenshots/ripping.png)\n![XMODITS has finished ripping with no error. Yay! ](./assets/screenshots/ripping_done.png)\n\n\nClick [here](./assets/screenshots/README.md) for different themes\n\n\u003c/details\u003e\n\n## How to Use\n1) Open application\n2) Drag and drop a module, and or a folder full of modules.\n3) (Optional) Press \"Open\" to set the destination folder. Your downloads folder is the default.\n5) Press \"Start\"\n6) Press \"Show Folder\" to see the results.\n\n(**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.\n\n### Sample Naming\nConfigure how ripped samples are named.\n\n|Parameter| Description|\n|--|--|\n| ``Index Only`` | Samples will only be named with an index. |\n| ``Preserve Index`` | Sample index will match how it is represented internally. |\n| ``Prefix Samples`` | Samples will be prefixed with the tracker's filename. |\n| ``Upper Case`` | Samples will be named in upper case.|\n| ``Lower Case`` | Samples will be named in lower case.|\n| ``Prefer Filename`` | Some samples have an additional filename. If present, xmodits will name samples with that. |\n| ``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.|\n\n\\* xmodits may override this value to ensure that samples are named consistently (unless it is set to 1).\n\n### Ripping Configuration\n\n|Parameter| Description|\n|--|--|\n| ``Self Contained`` | XMODITS will put samples in a self contained folder.|\n| ``Export Format`` | Samples can be saved to the following formats: [ ``wav``, ``aiff``, ``8svx``, ``its``, ``s3i``, ``raw`` ]|\n| ``Folder Scan Depth`` | Limit how far a folder can be traversed. |\n| ``Worker Threads`` | Set how many threads can be used to rip samples in parallel.|\n\n\u003c!-- ### Filters\nOnly rip from files/folders if they satisfy a set of defined conditions.\n\n|Attribute| description |\n|-|-|\n|size||\n|contains||\n|starts with||\n|ends with||\n|regex||\n|extension| | --\u003e\n\n\u003c!-- ### Previewing Samples\n![Previewing samples from \"UNATCO_Music.umx\"](./assets/screenshots/sample_preview.png) --\u003e\n\n### Saving Configuration\nAny changes made to the configuration **must be saved manually**.\u003cbr\u003eThe configuration file can be located at:\n\n|OS|Path|\n|-|-|\n|Windows|``%appdata%\\xmodits\\config.toml``|\n|Linux|``~/.config/xmodits/config.toml``|\n|MacOs|``~/Library/Application Support/xmodits/config.toml``|\n\n### Keyboard Shortcuts\n|Shortcut| Action|\n|-|-|\n|\u003ckbd\u003edelete\u003c/kbd\u003e| Clears the selected entries|\n|\u003ckbd\u003eshift\u003c/kbd\u003e + \u003ckbd\u003edelete\u003c/kbd\u003e| Clears the entries|\n|\u003ckbd\u003ectrl\u003c/kbd\u003e/\u003ckbd\u003e⌘\u003c/kbd\u003e + \u003ckbd\u003eS\u003c/kbd\u003e| Save Configuration|\n\n### Command Line Arguments\n|short|long|Description|\n|-|-|-|\n|`-h`| `--help` | Prints help information |\n|`-V`| `--version` | prints app version |\n|`-i`| `--info` | Prints build information |\n|`-m`| `--manual`| Prints manual |\n\n## Building\nRequirements:\n* Rust compiler: https://www.rust-lang.org/tools/install\n* Minimum rust version: `1.75`\n* A decent computer if you don't want to wait a while:\n  * *At least* 4 cores, \n  * *At least* 8GB of RAM\n\n(Linux) Dependencies:\n* `fontconfig`\n* `libasound2-dev` (If building with `audio` feature)\n\nClone the source code (latest):\n```shell\ngit clone https://github.com/B0ney/xmodits\n```\n\nAlternatively, you can download different versions from: https://github.com/B0ney/xmodits/tags\n\n\nCompile:\n```shell\ncd xmodits\n\ncargo build --release\n```\n\n**NOTE**: Older versions will have slightly different build instructions.\nAdditionally, versions below [v0.9.8](https://github.com/B0ney/xmodits/releases/tag/0.9.8) are CLI only.\n\n### Build Flags\n\n|Feature | Description | Enabled by Default? |\n|-|-|-|\n|``audio``|Add audio playback, used to preview samples.|**yes**|\n|``built``|Includes metadata about the binary and the environment it was compiled in. Useful for bug reporting.|**yes**|\n|``jemalloc``| (*nix only) Use the [jemalloc](https://jemalloc.net/) memory allocator. Used to mitigate memory fragmentation which can improve memory footprint.  |no|\n|``wgpu``| Enables hardware acceleration (`DX12`/`Vulkan`/`Metal`). |no|\n|``iced_gif``| Include animated GIF | **YES**|\n|``manual``| Bundle a simplified readme in the application | **yes**|\n\n\nFor example, to compile XMODITS with ``jemalloc`` and ``wgpu``:\n```shell\ncargo build --release --features=\"jemalloc\",\"wgpu\"\n```\n\nCompile XMODITS with default features disabled:\n```shell\ncargo build --release --no-default-features\n```\n\n### Build flags used in official releases:\n|Target|Features|\n|-|-|\n|Windows|`audio`, `built`, `iced_gif`,`manual`|\n|MacOS|`audio`, `built`, `iced_gif`,`manual`, `wgpu`|\n|Linux|`audio`, `built`, `iced_gif`,`manual`, `jemalloc`|\n\n\n## License\nXMODITS is licensed under the GPLv3, see [license](LICENSE) for more detail.\n\n## Other xmodits projects\n\n|Program| License|Description|\n|--|--|--|\n|[XMODITS-CLI](https://github.com/B0ney/xmodits-cli) | LGPLv3 | xmodits cli app|\n|[XMODITS-PY](https://github.com/B0ney/xmodits-py) | LGPLv3 | xmodits Python library. [PyPi link](pypi.org/project/xmodits-py/) \u003cbr\u003e (Mainly used for [DawVert](https://github.com/SatyrDiamond/DawVert))\u003cbr\u003e |\n|[XMODITS-LIB](https://github.com/B0ney/xmodits-lib) | MPLv2 | xmodits core library|\n\n## Special Thanks\n- The GUI was made with [Iced](https://github.com/iced-rs/iced)\n- [0x192](https://github.com/0x192) (and contributors) for their [Universal Android Debloat tool](https://github.com/0x192/universal-android-debloater/). I've learned a lot of gui stuff from that project.\n- [SatyrDiamond](https://github.com/SatyrDiamond)'s [DawVert](https://github.com/SatyrDiamond/DawVert), A program to convert different daw project files to other formats. \n- The animated fox gif was obtained from: https://github.com/tonybaloney/vscode-pets\n- [Halloy](https://github.com/squidowl/halloy)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FB0ney%2Fxmodits","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FB0ney%2Fxmodits","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FB0ney%2Fxmodits/lists"}