Module: Fretboards::Pitch
- Defined in:
- lib/fretboards/pitch.rb
Constant Summary collapse
- TABLE =
{ "c" => 0, "cis" => 1, "des" => 1, "d" => 2, "dis" => 3, "ees" => 3, "e" => 4, "f" => 5, "fis" => 6, "ges" => 6, "g" => 7, "gis" => 8, "aes" => 8, "a" => 9, "beses" => 9, "ais" => 10, "bes" => 10, "b" => 11 }
Class Method Summary collapse
Class Method Details
.from_diff(diff) ⇒ Object
40 41 42 43 44 45 46 47 48 49 |
# File 'lib/fretboards/pitch.rb', line 40 def self.from_diff(diff) diff += 12 octave_direction = diff > 0 ? 1 : -1 abs_diff = diff.abs octave_shift = diff / 12 shift = diff % 12 s_pitch = TABLE.find { |k, v| v == shift }.first suffix = (octave_direction > 0 ? "'" : ',') * octave_shift s_pitch + suffix end |
.to_diff(name) ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/fretboards/pitch.rb', line 25 def self.to_diff(name) pitch, alt, octave = name.scan(/([a-g](es|is){0,2})([',]*)/)[0] base = TABLE[pitch] octave_shift = if octave.nil? -12 elsif octave.start_with?(",") -12 * (octave.length + 1) else 12 * (octave.length - 1) end # pp octave_shift diff = base + octave_shift diff end |