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(any(
70    feature = "import",
71    feature = "import_amiga",
72    feature = "import_it",
73    feature = "import_s3m",
74    feature = "import_sid",
75    feature = "import_xm",
76))]
77/// Import historical files.
78/// Do not use it directly: see Module load* fn impl
79pub mod import;
80
81#[cfg(test)]
82mod tests {
83    #[test]
84    fn it_works() {
85        assert_eq!(42, 42);
86    }
87}