class Coltrane::Theory::ScaleSet
Attributes
scales[RW]
searched_notes[RW]
Public Class Methods
new(*scales, searched_notes: nil)
click to toggle source
# File lib/coltrane/theory/scale_set.rb, line 9 def initialize(*scales, searched_notes: nil) @scales = scales.uniq @searched_notes = searched_notes end
Public Instance Methods
full_names()
click to toggle source
# File lib/coltrane/theory/scale_set.rb, line 35 def full_names map(&:full_name) end
names()
click to toggle source
# File lib/coltrane/theory/scale_set.rb, line 31 def names map(&:name) end
results()
click to toggle source
# File lib/coltrane/theory/scale_set.rb, line 20 def results raise 'No searched notes were provided' unless searched_notes @table ||= scales.each_with_object({}) do |scale, the_table| the_table[scale.name] ||= {} the_table[scale.name][scale.tone.pitch_class.name] = ( scale.notes & searched_notes ) end end
strict_scales()
click to toggle source
# File lib/coltrane/theory/scale_set.rb, line 14 def strict_scales @strict_scales ||= scales.select do |scale| (scale.notes & searched_notes).size == searched_notes.size end end