Sha256: f521259d4f4e2bf9178fece446652eb1af4814da3593d275ec4e419b9e10548e

Contents?: true

Size: 610 Bytes

Versions: 1

Compression:

Stored size: 610 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.new(note).number + 12 * octaves.to_i
    end

    def name
      "#{note.name}#{number / 12}"
    end

    def note
      Note.new(number)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
coltrane-0.0.2 lib/coltrane/pitch.rb