class Musicality::Rhythm
A rhythm based on an array of durations. @note Rests are represented by negative durations.
Attributes
durations[R]
durations_sum[R]
Public Class Methods
new(durations)
click to toggle source
# File lib/musicality/composition/model/rhythm.rb, line 8 def initialize durations if durations.find {|x| x.zero? } raise ArgumentError, "rhythm contains duration(s) that are zero" end @durations = durations.clone.freeze @durations_sum = @durations.inject(0) {|sum,x| sum + x.abs} end
Public Instance Methods
to_notes(pitch)
click to toggle source
# File lib/musicality/composition/model/rhythm.rb, line 16 def to_notes pitch @durations.map do |dur| if dur.negative? Note.new(-dur) else Note.new(dur, pitch) end end end