Module: Musa::Neumalang::Neumalang::Parser::DurationCalculation

Included in:
AbsDurationAttribute, DeltaDurationAttribute
Defined in:
lib/musa-dsl/neumalang/neumalang.rb

Instance Method Summary collapse

Instance Method Details

#durationObject



225
226
227
228
229
230
231
232
233
234
235
236
237
# File 'lib/musa-dsl/neumalang/neumalang.rb', line 225

def duration
  base = capture(:number)&.value

  slashes = capture(:slashes)&.value || 0
  base ||= Rational(1, 2**slashes.to_r)

  dots_extension = 0
  capture(:mid_dots)&.value&.times do |i|
    dots_extension += Rational(base, 2**(i+1))
  end

  base + dots_extension
end