class HeadMusic::RhythmicUnit
A rhythmic unit is a rudiment of duration consisting of doublings and divisions of a whole note.
Constants
- BRITISH_DIVISION_NAMES
- BRITISH_MULTIPLE_NAMES
- FRACTIONS
- MULTIPLES
Attributes
denominator[R]
numerator[R]
Public Class Methods
for_denominator_value(denominator)
click to toggle source
# File lib/head_music/rhythmic_unit.rb, line 19 def self.for_denominator_value(denominator) get(FRACTIONS[Math.log2(denominator).to_i]) end
get(name)
click to toggle source
# File lib/head_music/rhythmic_unit.rb, line 25 def self.get(name) get_by_name(name) end
Private Class Methods
new(canonical_name)
click to toggle source
# File lib/head_music/rhythmic_unit.rb, line 29 def initialize(canonical_name) self.name = canonical_name @numerator = 2**numerator_exponent @denominator = 2**denominator_exponent end
Public Instance Methods
british_name()
click to toggle source
# File lib/head_music/rhythmic_unit.rb, line 60 def british_name if multiple? BRITISH_MULTIPLE_NAMES[MULTIPLES.index(name)] elsif fraction? BRITISH_DIVISION_NAMES[FRACTIONS.index(name)] elsif BRITISH_MULTIPLE_NAMES.include?(name) || BRITISH_DIVISION_NAMES.include?(name) name end end
flags()
click to toggle source
# File lib/head_music/rhythmic_unit.rb, line 52 def flags FRACTIONS.include?(name) ? [FRACTIONS.index(name) - 2, 0].max : 0 end
notehead()
click to toggle source
# File lib/head_music/rhythmic_unit.rb, line 43 def notehead return :maxima if relative_value == 8 return :longa if relative_value == 4 return :breve if relative_value == 2 return :open if [0.5, 1].include? relative_value :closed end
relative_value()
click to toggle source
# File lib/head_music/rhythmic_unit.rb, line 35 def relative_value @numerator.to_f / @denominator end
stemmed?()
click to toggle source
# File lib/head_music/rhythmic_unit.rb, line 56 def stemmed? relative_value < 1 end
ticks()
click to toggle source
# File lib/head_music/rhythmic_unit.rb, line 39 def ticks HeadMusic::Rhythm::PPQN * 4 * relative_value end
Private Instance Methods
british_fractions_keys()
click to toggle source
# File lib/head_music/rhythmic_unit.rb, line 102 def british_fractions_keys BRITISH_DIVISION_NAMES.map { |fraction| fraction.gsub(/\W+/, '_') } end
british_multiples_keys()
click to toggle source
# File lib/head_music/rhythmic_unit.rb, line 90 def british_multiples_keys BRITISH_MULTIPLE_NAMES.map { |multiple| multiple.gsub(/\W+/, '_') } end
denominator_exponent()
click to toggle source
# File lib/head_music/rhythmic_unit.rb, line 94 def denominator_exponent fractions_keys.index(name.gsub(/\W+/, '_')) || british_fractions_keys.index(name.gsub(/\W+/, '_')) || 0 end
fraction?()
click to toggle source
# File lib/head_music/rhythmic_unit.rb, line 78 def fraction? FRACTIONS.include?(name) end
fractions_keys()
click to toggle source
# File lib/head_music/rhythmic_unit.rb, line 98 def fractions_keys FRACTIONS.map { |fraction| fraction.gsub(/\W+/, '_') } end
multiple?()
click to toggle source
# File lib/head_music/rhythmic_unit.rb, line 74 def multiple? MULTIPLES.include?(name) end
multiples_keys()
click to toggle source
# File lib/head_music/rhythmic_unit.rb, line 86 def multiples_keys MULTIPLES.map { |multiple| multiple.gsub(/\W+/, '_') } end
numerator_exponent()
click to toggle source
# File lib/head_music/rhythmic_unit.rb, line 82 def numerator_exponent multiples_keys.index(name.gsub(/\W+/, '_')) || british_multiples_keys.index(name.gsub(/\W+/, '_')) || 0 end