Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/b0ney/xmodits-py
xmodits python library
https://github.com/b0ney/xmodits-py
fasttracker2 impulsetracker protracker python-library rust screamtracker xmodits
Last synced: 10 days ago
JSON representation
xmodits python library
- Host: GitHub
- URL: https://github.com/b0ney/xmodits-py
- Owner: B0ney
- License: other
- Created: 2022-12-21T14:01:07.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2024-02-05T11:57:26.000Z (9 months ago)
- Last Synced: 2024-04-14T06:51:24.115Z (7 months ago)
- Topics: fasttracker2, impulsetracker, protracker, python-library, rust, screamtracker, xmodits
- Language: Rust
- Homepage: https://pypi.org/project/xmodits-py/
- Size: 80.1 KB
- Stars: 3
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# 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
```python
import xmoditsfile = "~/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
```python
import xmoditstracker = "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:```python
import xmoditstracker = "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 arbitrary index. If you prefer to use this index, include the parameter:
```python
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:
```Python
with_folder=True
```## development:
https://docs.python.org/3/library/venv.htmlCreate a python virtual environment in this directory:
```python -m venv dev```
activate virtual environment:
```source ./dev/bin/activate```
install [maturin (crates.io)](https://crates.io/crates/maturin) or from [pypi](https://pypi.org/project/maturin/)
run test library:
```maturin develop```
# License
The xmodits python library is licensed under the LGPLv3