#audio #bindings #cross-platform #music #xm

sys exmod

Bindings to libxm, a small XM player library

14 releases

Uses new Rust 2021

0.3.2 Dec 3, 2021
0.3.1 Nov 15, 2021
0.2.1 Oct 27, 2021
0.1.10 Oct 12, 2021

#53 in Multimedia

WTFPL license


C 1.5K SLoC // 0.1% comments Rust 362 SLoC

This crate provides a both safe & unsafe wrappers around the libxm library.


Building libxm is handled by the crate but requires GCC. In theory, building is possible with other build tools, but this hasn't been tested and therefore successfull building isn't guaranteed.


Just add this crate to your dependencies (in the Cargo.toml file):

exmod = "0.3"

And start working with it...


See examples folder in repository.


Bindings to libxm, a small XM player library.

Start from [Context] struct documentation.

Feature flags:

  • defensive: enables defensively checking the XM for errors/inconsistencies.
  • linear_interpolation: enables linear interpolation (slightly increase CPU usage).
  • ramping: enables ramping (smooth volume/panning transitions, slightly increase CPU usage).
  • strings: enables module, instruments and sample names storing in context.

No runtime deps