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