Skip to main content

eryon_nrt/
lib.rs

1/*
2    Appellation: eryon-nrt <library>
3    Contrib: @FL03
4*/
5//! This crate works to implemet various primitives and utilities supporting the musical
6//! aspects of the project.
7//!
8//! Outside of fundamental objects, the primary focus of the crate remains to be the
9//! Neo-Riemannian Theory (NRT).
10//!
11#![cfg_attr(not(feature = "std"), no_std)]
12#![crate_name = "eryon_nrt"]
13#![crate_type = "lib"]
14
15#[cfg(feature = "alloc")]
16extern crate alloc;
17
18#[doc(inline)]
19pub use self::{
20    error::*, traits::prelude::*, transform::prelude::*, triad::*, types::prelude::*,
21    utils::prelude::*,
22};
23
24#[macro_use]
25pub(crate) mod macros;
26#[allow(unused)]
27#[doc(hidden)]
28#[macro_use]
29pub(crate) mod seal;
30
31pub mod error;
32pub mod tonnetz;
33pub mod transform;
34pub mod triad;
35
36pub mod traits {
37    #[doc(inline)]
38    pub use self::prelude::*;
39
40    pub mod convert;
41    pub mod num;
42
43    pub(crate) mod prelude {
44        pub use super::convert::*;
45        pub use super::num::*;
46    }
47}
48
49pub mod types {
50    #[doc(inline)]
51    pub use self::prelude::*;
52
53    pub mod harmonic_funcs;
54    pub mod note;
55    pub mod octave;
56    pub mod pitch;
57
58    pub(crate) mod prelude {
59        pub use super::harmonic_funcs::*;
60        pub use super::note::*;
61        pub use super::octave::*;
62        pub use super::pitch::*;
63    }
64}
65
66pub mod utils {
67    #[doc(inline)]
68    pub use self::prelude::*;
69
70    pub mod paths;
71    pub mod pymod;
72
73    pub(crate) mod prelude {
74        pub use super::paths::*;
75        pub(crate) use super::pymod::*;
76    }
77}
78
79pub mod prelude {
80    pub use crate::error::MusicError;
81    pub use crate::tonnetz::Tonnetz;
82    pub use crate::traits::prelude::*;
83    pub use crate::transform::prelude::*;
84    pub use crate::triad::*;
85    pub use crate::types::prelude::*;
86    pub use crate::utils::prelude::*;
87}