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