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

sys exmod

Bindings to libxm, a small XM player library

15 releases

0.3.3 Mar 5, 2022
0.3.2 Dec 3, 2021
0.3.1 Nov 15, 2021
0.2.1 Oct 27, 2021
0.1.10 Oct 12, 2021

#224 in Multimedia

44 downloads per month

WTFPL license

85KB
2K SLoC

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

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

Requirements

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.

Usage

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

[dependencies]
exmod = "0.3"

And start working with it...

Examples

See examples folder in repository.


lib.rs:

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

~0–280KB