rstmt_core/note/
impl_aspn.rs1use super::Aspn;
7use crate::octave::Octave;
8use rstmt_traits::PitchMod;
9
10impl Aspn {
11 pub fn new(class: usize, Octave(octave): Octave) -> Self {
12 Self {
13 class,
14 octave: Octave(octave),
15 }
16 }
17 pub fn from_pitch(pitch: usize) -> Self {
19 Self::new(pitch.pmod(), Octave(4))
20 }
21 pub const fn class(&self) -> usize {
23 self.class
24 }
25 pub fn class_mut(&mut self) -> &mut usize {
27 &mut self.class
28 }
29 pub const fn octave(&self) -> Octave {
31 self.octave
32 }
33 pub const fn octave_mut(&mut self) -> &mut Octave {
35 &mut self.octave
36 }
37 pub fn set_class(&mut self, class: usize) -> &mut Self {
39 self.class = class.pmod();
40 self
41 }
42 pub fn set_octave(&mut self, octave: Octave) -> &mut Self {
44 self.octave = octave;
45 self
46 }
47 pub fn with_class(self, class: usize) -> Self {
49 Self { class, ..self }
50 }
51 pub fn with_octave(self, octave: Octave) -> Self {
53 Self { octave, ..self }
54 }
55}