#[doc(inline)]
pub use self::{kinds::*, pitch::Pitch};
pub(crate) mod kinds;
pub(crate) mod pitch;
#[doc(hidden)]
pub mod signs;
mod impls {
mod pitch_ops;
}
pub(crate) mod prelude {
pub use super::kinds::{Flat, Natural, Pitches, Sharp};
pub use super::pitch::Pitch;
pub use super::{IntoPitch, PitchClass, PitchTy};
}
lazy_static::lazy_static! {
static ref FLAT_SYMBOLS: [char; 3] = ['♭', 'f', 'F'];
static ref SHARP_SYMBOLS: [char; 3] = ['#', 's', 'S'];
}
pub type PitchTy = i8;
pub trait IntoPitch {
fn into_pitch(self) -> Pitch;
}
pub trait PitchClass {
private!();
fn pitch(&self) -> PitchTy;
}
impl<S> IntoPitch for S
where
S: Into<Pitch>,
{
fn into_pitch(self) -> Pitch {
self.into()
}
}