{"id":13862913,"url":"https://github.com/B0ney/xmodits-py","last_synced_at":"2025-07-14T13:32:58.775Z","repository":{"id":145408711,"uuid":"580809048","full_name":"B0ney/xmodits-py","owner":"B0ney","description":"xmodits python library","archived":false,"fork":false,"pushed_at":"2024-02-05T11:57:26.000Z","size":82,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-04-14T06:51:24.115Z","etag":null,"topics":["fasttracker2","impulsetracker","protracker","python-library","rust","screamtracker","xmodits"],"latest_commit_sha":null,"homepage":"https://pypi.org/project/xmodits-py/","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","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}},"created_at":"2022-12-21T14:01:07.000Z","updated_at":"2024-08-11T14:00:36.141Z","dependencies_parsed_at":null,"dependency_job_id":"9e81ee6a-6eea-4865-8c1d-72374bbf4f49","html_url":"https://github.com/B0ney/xmodits-py","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/B0ney%2Fxmodits-py","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/B0ney%2Fxmodits-py/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/B0ney%2Fxmodits-py/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/B0ney%2Fxmodits-py/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/B0ney","download_url":"https://codeload.github.com/B0ney/xmodits-py/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225980898,"owners_count":17554919,"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","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":["fasttracker2","impulsetracker","protracker","python-library","rust","screamtracker","xmodits"],"created_at":"2024-08-05T06:01:55.870Z","updated_at":"2024-11-22T23:30:33.869Z","avatar_url":"https://github.com/B0ney.png","language":"Rust","funding_links":[],"categories":["Rust"],"sub_categories":[],"readme":"# XMODITS python library\n\nSupported formats:\n* Impulse Tracker .IT\n* Extended Module .XM\n* Scream Tracker .S3M\n* Amiga Pro Tracker .MOD\n* Open ModPlug Tracker .MPTM (Identical to Impulse Tracker sample-wise)\n* Unreal Music Container .UMX (Containing the above formats)\n# How to use\n```python\nimport xmodits\n\nfile = \"~/Downloads/music.xm\"\nfolder = \"~/Music/samples/\"\n\n# Rip samples to folder\nxmodits.dump(file, folder)\n\n```\n# Required Arguments\n|Argument| Meaning|\n| --- | --- |\n| ```Path``` | Path to a tracker module |\n| ```Destination``` | Destination folder for ripped samples |\n\n\n# Additional Arguments\n\n|Argument| Definition|\n| --- | --- |\n| ```with_folder``` | Create a new folder for ripped samples.\u003cbr\u003e **e.g.** When set to ```True```, ```\"drums.it\"``` will create ```\"drums_it\"``` in the destination folder and place those samples there. |\n| ```index_padding``` | Set padding.\u003cbr \u003e **e.g.** ```\"01 - kick.wav\"``` --\u003e ```\"1 - kick.wav\"``` |\n| ```index_only``` | Only name samples with a number.\u003cbr\u003e **e.g.** ```\"09 - HiHat.wav\"``` --\u003e ```\"09.wav\"``` |\n| ```index_raw``` | Preserves the internal sample indexing  |\n| ```upper``` | Name samples in upper case |\n| ```lower``` | Name samples in lower case |\n| ```strict``` | **Enabled by default.** \u003cbr\u003eWill reject files that don't match the following file extensions:\u003cbr\u003e[it, xm, s3m, mod, umx, mptm]|\n\n\n# Exceptions\nThey are pretty much self explanitory.\n\n|Exception| Meaning|\n| --- | --- |\n|```SampleExtraction```| A sample could not be extracted |\n|```PartialExtraction```| Not all of the samples could be extracted |\n|```TotalExtraction```| None of the samples could be extracted |\n| ```UnsupportedFormat```  | A module format was recognized, but its type is not supported |\n| ```InvalidModule``` | The file is not a valid tracker module |\n| ```EmptyModule``` | The tracker module is valid but it has no samples |\n| ```UnrecognizedFileExtension``` | The file extension was not recognized |\n| ```NoFormatFound``` | Could not determine a valid format |\n\n# Additional Examples\n\n### Dump samples without names\n\n```python\nimport xmodits\n\ntracker = \"mods/music.xm\"\nfolder  = \"samples/\"\n\nxmodits.dump(\n    tracker,\n    folder,\n\n    index_only=True \n)\n```\nThis produces the following output in folder **\"samples\"**:\n\n```\n01.wav\n02.wav\n03.wav\n04.wav\n...\n15 - vocal.wav\n```\n### Dump samples without padding the index:\n\n```python\nimport xmodits\n\ntracker = \"mods/music.xm\"\nfolder  = \"samples/\"\n\nxmodits.dump(\n    tracker,\n    folder,\n    index_padding=0 # or 1, both have the same effect\n)\n```\n\nOutput:\n```\n1 - hihat.wav\n2 - kick.wav\n3 - snare.wav\n4 - toms.wav\n...\n15 - vocal.wav\n```\n\nSamples stored in tracker modules can have an arbitrary index. If you prefer to use this index, include the parameter:\n\n```python\nindex_raw=True\n```\n\nIf you're dumping from multiple modules to the same folder, you're guaranteed to have collisions. \n\nYou should include the parameter:\n\n```Python\nwith_folder=True\n```\n\n## development:\nhttps://docs.python.org/3/library/venv.html\n\nCreate a python virtual environment in this directory:\n\n```python -m venv dev```\n\nactivate virtual environment:\n\n```source ./dev/bin/activate```\n\ninstall [maturin (crates.io)](https://crates.io/crates/maturin) or from [pypi](https://pypi.org/project/maturin/)\n\nrun test library:\n\n```maturin develop```\n\n# License\nThe xmodits python library is licensed under the LGPLv3\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FB0ney%2Fxmodits-py","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FB0ney%2Fxmodits-py","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FB0ney%2Fxmodits-py/lists"}