#mod #file-format #xm #s3m #soundtracker #it

no-std xmrs

A library to edit SoundTracker data with pleasure

55 releases (8 breaking)

0.9.6 Dec 22, 2024
0.8.5 Oct 20, 2024
0.6.2 Jul 20, 2024
0.4.13 Mar 30, 2024
0.2.3 Mar 26, 2023

#40 in Audio

Download history 424/week @ 2024-09-18 206/week @ 2024-09-25 344/week @ 2024-10-02 265/week @ 2024-10-09 541/week @ 2024-10-16 67/week @ 2024-10-23 27/week @ 2024-10-30 15/week @ 2024-11-06 26/week @ 2024-11-13 28/week @ 2024-11-20 26/week @ 2024-11-27 416/week @ 2024-12-04 347/week @ 2024-12-11 376/week @ 2024-12-18 427/week @ 2024-12-25 60/week @ 2025-01-01

1,263 downloads per month
Used in 5 crates (4 directly)

MIT license

385KB
9K SLoC

XMrs File format library

A no_std library to edit Sound Tracker data with pleasure.

Because "Representation is the Essence of Programming".

Suppported files:

  • IT Impulse Tracker
  • MOD Amiga Modules
  • S3M Scream Tracker III
  • SID Rob Hubbard C64 files (WIP).
  • XM FastTracker II

To edit data, use Module struct.

You can serialize Module using serde (see std feature).

How to load historical tracker files

Test with cargo run --no-default-features --features=demo --example xmrs -- --help, then read 50 lines examples/xmrs example.

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


lib.rs:

XMrs is a Safe SoundTracker Library

Module+--->Instrument+--->InstrDefault+--->Sample (Loop, Sustain Loop)
      |              |                +--->Envelope (Pitch, Volume, Panning)
      |              |                +--->Vibrato
      |              |                +--->InstrMidi
      |              +--->InstrEkn (Euclidian Rythm Instrument)
      |              +--->InstrMidi
      |              +--->InstrOpl (Yamaha OPL)
      |              +--->InstrSid (MOS6581 SID Voices)
      |              +-+->InstrRobSid+--->InstrSid
      +--->Pattern--->Row--->TrackUnit+--->TrackEffect
                                      +--->GlobalEffect

You can load historical IT, S3M, SID, MOD, XM files using import (see README.md)

You can serialize your work using serde

Dependencies

~1–2MB
~44K SLoC