XMrs File format library
A no_std library to edit Sound Tracker data with pleasure.
Because "Representation is the Essence of Programming".
For now MOD Amiga Modules, S3M Scream Tracker III and XM FastTracker II files are supported.
Rob Hubbard C64 SID import is a WIP.
Useful struct parts:
- Module
- Pattern
- Instrument
- InstrDefault for Historical XM Instrument
- InstrEkn for Euclidian Rythm Instrument
- InstrMidi for Midi Instrument
- InstrOpl for Yamaha OPL Instrument
- InstrSid for MOS6581 SID Instrument
- InstrRobSid for historical Rob Hubbard Instrument
To edit data, use Module struct.
You can serialize Module using serde bincode (see std feature).
Load MOD file
Use import_mod feature
- Deserialize
AmigaModulestruct usingAmigaModule::load(&amiga) - Convert to struct
Moduleusing.to_module()
Load S3M file
Use import_s3m feature
- Deserialize
S3mModulestruct usingS3mModule::load(&s3m) - Convert to struct
Moduleusing.to_module()
XM file
Use import_xm feature
Load
- Deserialize
XmModulestruct usingXmModule::load(&XM) - Convert to struct
Moduleusing.to_module()
Save
- Convert
ModuletoXmModule:XmModule::from_module(&module) - Serialize using
XmModulesave()fn
Note: You can only save InstrDefault in XM fileformat.
About no_std
micromath is used by default in no_std. If you prefer libm, use cargo build --no-default-features --features=libm --release.
About std
if you want to use std feature use cargo build --no-default-features --features=std --release
About std demo
if you want to test examples use cargo build --no-default-features --features=std,demo --release