Sha256: b37705737fd9cd0b7093f6ce506c720cb81d2ce0aeb8f6aa3da6d428335a033f
Contents?: true
Size: 737 Bytes
Versions: 3
Compression:
Stored size: 737 Bytes
Contents
module Coltrane # It describes a pitch, like E4 or Bb5. It's like a note, but it has an octave class Pitch attr_reader :number def initialize(pitch) case pitch when String then @number = number_from_name(pitch) when Numeric then @number = pitch when Pitch then @number = pitch.number end end def number_from_name(pitch_string) _, note, octaves = pitch_string.match(/(.*)(\d)/).to_a Note[note].number + 12 * octaves.to_i end def name "#{note.name}#{octave}" end def octave number / 12 end def note Note[number] end def +(arg) n = arg.is_a?(Pitch) ? arg.number : arg Pitch.new(number + n) end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
coltrane-1.0.11 | lib/coltrane/pitch.rb |
coltrane-1.0.1 | lib/coltrane/pitch.rb |
coltrane-1.0.0 | lib/coltrane/pitch.rb |