class HeadMusic::Style::Mark
A mark is a fragment of music with an optional fitness score assigned. Marks are collected into annotations which comment on a voice.
Attributes
end_position[R]
fitness[R]
placements[R]
start_position[R]
Public Class Methods
for(placement, fitness: nil)
click to toggle source
# File lib/head_music/style/mark.rb, line 8 def self.for(placement, fitness: nil) new(placement.position, placement.next_position, placements: [placement], fitness: fitness) end
for_all(placements, fitness: nil)
click to toggle source
# File lib/head_music/style/mark.rb, line 12 def self.for_all(placements, fitness: nil) placements = [placements].flatten.compact return [] if placements.empty? start_position = placements.map(&:position).min end_position = placements.map(&:next_position).max new(start_position, end_position, placements: placements, fitness: fitness) end
for_each(placements, fitness: nil)
click to toggle source
# File lib/head_music/style/mark.rb, line 21 def self.for_each(placements, fitness: nil) placements = [placements].flatten placements.map do |placement| new(placement.position, placement.next_position, placements: placement, fitness: fitness) end end
new(start_position, end_position, placements: [], fitness: nil)
click to toggle source
# File lib/head_music/style/mark.rb, line 28 def initialize(start_position, end_position, placements: [], fitness: nil) @start_position = start_position @end_position = end_position @placements = [placements].flatten.compact @fitness = fitness || HeadMusic::PENALTY_FACTOR end
Public Instance Methods
code()
click to toggle source
# File lib/head_music/style/mark.rb, line 35 def code [start_position, end_position].join(' to ') end
to_s()
click to toggle source
# File lib/head_music/style/mark.rb, line 39 def to_s code end