class HeadMusic::Style::Guidelines::RecoverLargeLeaps
Ok, so a rule might be that after the first leap (after previous steps) one should normally move by step in the opposite direction unless another leap (in either direction) creates a consonant triad.
-
Brian
Constants
- MESSAGE
Public Instance Methods
marks()
click to toggle source
# File lib/head_music/style/guidelines/recover_large_leaps.rb, line 13 def marks melodic_intervals.each_cons(3).map do |intervals| if unrecovered_leap?(intervals[0], intervals[1], intervals[2]) HeadMusic::Style::Mark.for_all(notes_in_intervals(intervals)) end end.compact end
Private Instance Methods
direction_changed?(first_interval, second_interval)
click to toggle source
# File lib/head_music/style/guidelines/recover_large_leaps.rb, line 41 def direction_changed?(first_interval, second_interval) first_interval.ascending? && second_interval.descending? || first_interval.descending? && second_interval.ascending? end
notes_in_intervals(intervals)
click to toggle source
# File lib/head_music/style/guidelines/recover_large_leaps.rb, line 23 def notes_in_intervals(intervals) (intervals[0].notes + intervals[1].notes).uniq end
spelling_consonant_triad?(first_interval, second_interval, third_interval)
click to toggle source
# File lib/head_music/style/guidelines/recover_large_leaps.rb, line 36 def spelling_consonant_triad?(first_interval, second_interval, third_interval) first_interval.spells_consonant_triad_with?(second_interval) || second_interval.spells_consonant_triad_with?(third_interval) end
unrecovered_leap?(first_interval, second_interval, third_interval)
click to toggle source
# File lib/head_music/style/guidelines/recover_large_leaps.rb, line 27 def unrecovered_leap?(first_interval, second_interval, third_interval) first_interval.large_leap? && !spelling_consonant_triad?(first_interval, second_interval, third_interval) && ( !direction_changed?(first_interval, second_interval) || !second_interval.step? ) end