#xm #it #mod-xm #mod-it #s3m

no-std xmrs

A library to edit SoundTracker data with pleasure

58 releases

0.9.9 May 1, 2025
0.9.6 Dec 22, 2024
0.8.5 Oct 20, 2024
0.6.2 Jul 20, 2024
0.2.3 Mar 26, 2023

#218 in Embedded development

Download history 27/week @ 2025-09-11 55/week @ 2025-09-18 42/week @ 2025-09-25 26/week @ 2025-10-02 17/week @ 2025-10-09 33/week @ 2025-10-16 87/week @ 2025-10-23 44/week @ 2025-10-30 61/week @ 2025-11-06 30/week @ 2025-11-13 36/week @ 2025-11-20 11/week @ 2025-11-27 32/week @ 2025-12-04 24/week @ 2025-12-11 24/week @ 2025-12-18 19/week @ 2025-12-25

103 downloads per month
Used in 5 crates (4 directly)

MIT license

390KB
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 or bincode2 (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.

If you want to use import, add --features=import.

If you want to optimize for memory or space in the embedded context, don't use the import feature, but prefer to prepare a serialized version with bincode with alloc feature and possibly flate2-rs.

About std

If you want to use std feature use cargo build --no-default-features --features=std --release

If you'd like to post-process in another language (but why use another language when you're lucky enough to have rust!?) don't forget that, after loading, you can serialize in json with serde.

Dependencies

~0.8–2MB
~44K SLoC