xmrs/
lib.rs

1#![forbid(unsafe_code)]
2#![allow(dead_code)]
3
4//!
5//! XMrs is a Safe SoundTracker Library
6//!
7//! ```
8//! Module+--->Instrument+--->InstrDefault+--->Sample (Loop, Sustain Loop)
9//!       |              |                +--->Envelope (Pitch, Volume, Panning)
10//!       |              |                +--->Vibrato
11//!       |              |                +--->InstrMidi
12//!       |              +--->InstrEkn (Euclidian Rythm Instrument)
13//!       |              +--->InstrMidi
14//!       |              +--->InstrOpl (Yamaha OPL)
15//!       |              +--->InstrSid (MOS6581 SID Voices)
16//!       |              +-+->InstrRobSid+--->InstrSid
17//!       +--->Pattern--->Row--->TrackUnit+--->TrackEffect
18//!                                       +--->GlobalEffect
19//! ```
20//!
21//! You can load historical IT, S3M, SID, MOD, XM files using `import` (see `README.md`)
22//!
23//! You can serialize your work using serde
24//!
25
26#![cfg_attr(not(feature = "std"), no_std)]
27
28extern crate alloc;
29
30/// All effects
31pub mod effect;
32/// Envelope with Steroid
33pub mod envelope;
34/// Instrument handling samples
35pub mod instr_default;
36/// Euclidian Rythm Instrument
37pub mod instr_ekn;
38/// Midi Instrument
39pub mod instr_midi;
40/// Yamaha OPL Instrument
41pub mod instr_opl;
42/// Rob Hubbard Instrument
43pub mod instr_robsid;
44/// MOS6581 SID Instrument
45pub mod instr_sid;
46/// Instrument with Steroid
47pub mod instrument;
48/// SoundTracker Module with Steroid
49pub mod module;
50/// Period Helper
51pub mod period_helper;
52pub(crate) mod period_helper_cache;
53/// A typical Note
54pub mod pitch;
55/// Sample with Steroid
56pub mod sample;
57/// A slot
58pub mod track_unit;
59/// Vibrato with Steroid
60pub mod vibrato;
61/// All Waveform type
62pub mod waveform;
63/// A simple way for random values
64pub mod xorshift;
65
66/// The Xmrs Prelude
67pub mod prelude;
68
69#[cfg(feature = "import")]
70/// Import historical files.
71/// Do not use it directly: see Module load* fn impl
72pub mod import;
73
74#[cfg(test)]
75mod tests {
76    #[test]
77    fn it_works() {
78        assert_eq!(42, 42);
79    }
80}