Sha256: 473c72351fd36e1cc7c98743fef185b269256e84955c4b97449d3e71b01435d1

Contents?: true

Size: 891 Bytes

Versions: 6

Compression:

Stored size: 891 Bytes

Contents

module Music
module Transcription
module Parsing

grammar Pitch
  include NonnegativeInteger
  rule pitch
    pitch_letter mod:[#b]? octave cents:cent? <PitchNode>
  end
  
  rule octave
    n:nonnegative_integer { def to_i; n.to_i; end }
  end
  
  rule cent
    [+-] n:nonnegative_integer { def to_i; text_value.to_i; end }
  end
  
  rule pitch_letter
    letter_a / letter_b / letter_c / letter_d / letter_e / letter_f / letter_g
  end
  
  rule letter_a
    [Aa] { def to_semitone; 9; end }
  end
  
  rule letter_b
    [Bb] { def to_semitone; 11; end }
  end
  
  rule letter_c
    [Cc] { def to_semitone; 0; end }
  end
  
  rule letter_d
    [Dd] { def to_semitone; 2; end }
  end
  
  rule letter_e
    [Ee] { def to_semitone; 4; end }
  end
  
  rule letter_f
    [Ff] { def to_semitone; 5; end }
  end
  
  rule letter_g
    [Gg] { def to_semitone; 7; end }
  end
end

end
end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
music-transcription-0.21.0 lib/music-transcription/parsing/pitch_parsing.treetop
music-transcription-0.20.0 lib/music-transcription/parsing/pitch_parsing.treetop
music-transcription-0.19.0 lib/music-transcription/parsing/pitch_parsing.treetop
music-transcription-0.17.1 lib/music-transcription/parsing/pitch_parsing.treetop
music-transcription-0.17.0 lib/music-transcription/parsing/pitch_parsing.treetop
music-transcription-0.16.0 lib/music-transcription/parsing/pitch_parsing.treetop