1#![allow(
11    clippy::module_inception,
12    clippy::needless_doctest_main,
13    clippy::should_implement_trait
14)]
15#![cfg_attr(not(feature = "std"), no_std)]
16#![cfg_attr(feature = "nightly", feature(allocator_api))]
17#![crate_type = "lib"]
18
19#[cfg(feature = "alloc")]
20extern crate alloc;
21
22#[doc(inline)]
23pub use self::{
24    consts::*,
25    error::*,
26    freq::{Frequency, RawFrequency},
27    notes::{AsAspn, Aspn, IntoAspn, NoteBase},
28    octave::{AsOctave, IntoOctave, Octave},
29    pitch::{AsPitch, IntoPitch, Pitch, PitchClass, RawPitch},
30    traits::prelude::*,
31    types::prelude::*,
32};
33
34#[macro_use]
35pub(crate) mod macros {
36    #[macro_use]
37    pub mod seal;
38}
39
40pub mod error;
41pub mod freq;
42pub mod intervals;
43pub mod notes;
44pub mod octave;
45pub mod pitch;
46
47pub mod consts {
48    pub const C_MAJOR_SCALE: [usize; 7] = [0, 2, 4, 5, 7, 9, 11];
53}
54
55pub mod traits {
56    #[doc(inline)]
58    pub use self::prelude::*;
59
60    mod chroma;
61    mod num;
62
63    pub(crate) mod prelude {
64        #[doc(inline)]
65        pub use super::chroma::*;
66        #[doc(inline)]
67        pub use super::num::*;
68    }
69}
70
71pub mod types {
72    #[doc(inline)]
74    pub use self::prelude::*;
75
76    mod harmonic_funcs;
77
78    pub(crate) mod prelude {
79        #[doc(inline)]
80        pub use super::harmonic_funcs::*;
81    }
82}
83
84#[doc(hidden)]
85pub mod prelude {
86    pub use crate::consts::*;
87    pub use crate::traits::*;
88    pub use crate::types::*;
89
90    pub use crate::freq::prelude::*;
91    pub use crate::intervals::prelude::*;
92    pub use crate::notes::prelude::*;
93    pub use crate::octave::prelude::*;
94    pub use crate::pitch::prelude::*;
95}