class Coltrane::Theory::GreekMode

Constants

LETTER_SEQUENCE
MODES

Attributes

mode[R]

Public Class Methods

new(mode, tone) click to toggle source
Calls superclass method
# File lib/coltrane/theory/greek_mode.rb, line 18
def initialize(mode, tone)
  super name: mode.capitalize, notes: begin
    @mode = mode.to_s
    @tone = Note[tone]
    base_major_notes
    .rotate(mode_index)
    .zip(letter_sequence)
    .map { |(note, letter)| note.as(letter) }
  end
end

Private Instance Methods

base_major_notes() click to toggle source
# File lib/coltrane/theory/greek_mode.rb, line 39
def base_major_notes
  base_scale    = DiatonicScale.new(Note['C']).notes
  base_interval = base_scale[0] - base_scale[mode_index]
  DiatonicScale.new(Note[tone] - base_interval).notes
end
letter_sequence() click to toggle source
# File lib/coltrane/theory/greek_mode.rb, line 31
def letter_sequence
  LETTER_SEQUENCE.yield_self { |seq| seq.rotate(seq.index(tone.letter))}
end
mode_index() click to toggle source
# File lib/coltrane/theory/greek_mode.rb, line 35
def mode_index
  @mode_index ||= MODES.map(&:downcase).index(mode.to_s)
end