pub enum Key {
Major(u32),
Minor(u32),
}Expand description
Musical key
Variants§
Implementations§
Source§impl Key
impl Key
Sourcepub fn name(&self) -> String
pub fn name(&self) -> String
Get key name in musical notation (e.g., “C”, “Am”, “F#”, “D#m”)
Returns standard musical notation:
- Major keys: note name only (e.g., “C”, “C#”, “D”, “F#”)
- Minor keys: note name + “m” (e.g., “Am”, “C#m”, “Dm”, “F#m”)
§Example
use stratum_dsp::analysis::result::Key;
assert_eq!(Key::Major(0).name(), "C");
assert_eq!(Key::Major(6).name(), "F#");
assert_eq!(Key::Minor(9).name(), "Am");
assert_eq!(Key::Minor(1).name(), "C#m");Sourcepub fn numerical(&self) -> String
pub fn numerical(&self) -> String
Get key in DJ standard numerical notation (e.g., “1A”, “2B”, “12A”)
Uses the circle of fifths mapping popularized in DJ software:
- Major keys: 1A-12A (1A = C, 2A = G, 3A = D, …, 12A = F)
- Minor keys: 1B-12B (1B = Am, 2B = Em, 3B = Bm, …, 12B = Dm)
The numbering follows the circle of fifths (up a fifth each step). Keys are displayed in standard musical notation by default (e.g., “C”, “Am”, “F#”).
§Example
use stratum_dsp::analysis::result::Key;
assert_eq!(Key::Major(0).numerical(), "1A"); // C
assert_eq!(Key::Major(7).numerical(), "2A"); // G
assert_eq!(Key::Minor(9).numerical(), "1B"); // Am
assert_eq!(Key::Minor(4).numerical(), "2B"); // EmSourcepub fn from_numerical(notation: &str) -> Option<Self>
pub fn from_numerical(notation: &str) -> Option<Self>
Get key from DJ standard numerical notation
Converts numerical notation (e.g., “1A”, “2B”, “12A”) back to a Key.
§Arguments
notation- Numerical key notation (e.g., “1A”, “2B”, “12A”)
§Returns
Some(Key) if valid, None if invalid format
§Example
use stratum_dsp::analysis::result::Key;
assert_eq!(Key::from_numerical("1A"), Some(Key::Major(0))); // C
assert_eq!(Key::from_numerical("2A"), Some(Key::Major(7))); // G
assert_eq!(Key::from_numerical("1B"), Some(Key::Minor(9))); // Am
assert_eq!(Key::from_numerical("2B"), Some(Key::Minor(4))); // Em
assert_eq!(Key::from_numerical("0A"), None); // Invalid
assert_eq!(Key::from_numerical("13A"), None); // InvalidTrait Implementations§
Source§impl<'de> Deserialize<'de> for Key
impl<'de> Deserialize<'de> for Key
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
impl Copy for Key
impl Eq for Key
impl StructuralPartialEq for Key
Auto Trait Implementations§
impl Freeze for Key
impl RefUnwindSafe for Key
impl Send for Key
impl Sync for Key
impl Unpin for Key
impl UnwindSafe for Key
Blanket Implementations§
§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§unsafe fn clone_to_uninit(&self, dest: *mut u8)
unsafe fn clone_to_uninit(&self, dest: *mut u8)
🔬This is a nightly-only experimental API. (
clone_to_uninit)