From ac1f1bd3dada5665679f659160b5c9bb22a00296 Mon Sep 17 00:00:00 2001 From: Gabriel Kaszewski Date: Wed, 8 Apr 2026 01:29:20 +0200 Subject: [PATCH] fix(domain): remove dead use_sharps param, handle Cb enharmonic --- crates/domain/src/note.rs | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/crates/domain/src/note.rs b/crates/domain/src/note.rs index 79f0134..93cd244 100644 --- a/crates/domain/src/note.rs +++ b/crates/domain/src/note.rs @@ -14,7 +14,7 @@ impl Note { } } - pub fn from_semitone(s: u8, use_sharps: bool) -> Note { + pub fn from_semitone(s: u8) -> Note { match s % 12 { 0 => Note::C, 1 => Note::CSharpDFlat, 2 => Note::D, 3 => Note::DSharpEFlat, 4 => Note::E, 5 => Note::F, @@ -66,12 +66,11 @@ impl Note { } fn sharp_of(root: Note) -> Note { - Note::from_semitone((root.semitone() + 1) % 12, true) + Note::from_semitone((root.semitone() + 1) % 12) } fn flat_of(root: Note) -> Option { - if root.semitone() == 0 { return None; } // Cb is unusual, skip - Some(Note::from_semitone((root.semitone() + 11) % 12, false)) + Some(Note::from_semitone((root.semitone() + 11) % 12)) } } @@ -81,8 +80,13 @@ mod tests { #[test] fn semitone_roundtrip() { - assert_eq!(Note::from_semitone(Note::A.semitone(), true), Note::A); - assert_eq!(Note::from_semitone(Note::FSharpGFlat.semitone(), true), Note::FSharpGFlat); + assert_eq!(Note::from_semitone(Note::A.semitone()), Note::A); + assert_eq!(Note::from_semitone(Note::FSharpGFlat.semitone()), Note::FSharpGFlat); + } + + #[test] + fn parse_cb_enharmonic() { + assert_eq!(Note::from_str("Cb"), Some(Note::B)); } #[test]