module Music module Transcription class Tempo attr_reader :value def initialize value raise NonPositiveError, "Given tempo value #{value} is not positive" if value <= 0 @value = value end def ==(other) self.class == other.class && self.value == other.value end def clone self.class.new(@value) end class QNPM < Tempo; def to_s; "#{@value}qnpm" end; end class NPM < Tempo; def to_s; "#{@value}npm" end; end class BPM < Tempo; def to_s; "#{@value}bpm" end; end class NPS < Tempo; def to_s; "#{@value}nps" end; end end end end