class HeadMusic::Style::Analysis
An analysis of music according to a style guide.
Attributes
guide[R]
voice[R]
Public Class Methods
new(guide, voice)
click to toggle source
# File lib/head_music/style/analysis.rb, line 10 def initialize(guide, voice) @guide = guide @voice = voice end
Public Instance Methods
adherent?()
click to toggle source
# File lib/head_music/style/analysis.rb, line 30 def adherent? fitness == 1 end
annotations()
click to toggle source
# File lib/head_music/style/analysis.rb, line 20 def annotations @annotations ||= @guide.analyze(voice) end
fitness()
click to toggle source
# File lib/head_music/style/analysis.rb, line 24 def fitness return 1.0 if annotations.empty? @fitness ||= fitness_scores.inject(:+).to_f / fitness_scores.length end
messages()
click to toggle source
# File lib/head_music/style/analysis.rb, line 15 def messages annotations.reject(&:adherent?).map(&:message) end
Also aliased as: annotation_messages
Private Instance Methods
fitness_scores()
click to toggle source
# File lib/head_music/style/analysis.rb, line 36 def fitness_scores @fitness_scores ||= annotations.map(&:fitness) end