module Music module Transcription module Parsing grammar Tempo include PositiveInteger include PositiveFloat include PositiveRational rule tempo tempo_bpm / tempo_qnpm / tempo_npm / tempo_nps end rule tempo_bpm val:positive_number ("bpm" / "BPM") { def to_tempo Music::Transcription::Tempo::BPM.new(val.to_num) end } end rule tempo_qnpm val:positive_number ("qnpm" / "QNPM") { def to_tempo Music::Transcription::Tempo::QNPM.new(val.to_num) end } end rule tempo_npm val:positive_number ("npm" / "NPM") { def to_tempo Music::Transcription::Tempo::NPM.new(val.to_num) end } end rule tempo_nps val:positive_number ("nps" / "NPS") { def to_tempo Music::Transcription::Tempo::NPS.new(val.to_num) end } end rule positive_number positive_float / positive_rational / positive_integer end end end end end