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