class Coltrane::Theory::DiatonicScale

Public Class Methods

new(tone, major: true) click to toggle source
Calls superclass method
# File lib/coltrane/theory/diatonic_scale.rb, line 6
def initialize(tone, major: true)
  @major = major
  tone   = Note[tone]
  notes  = CircleOfFifths.new(tone - (major? ? 0 : 9), 7).notes.sort
  super notes: notes.rotate(notes.index(tone))
end

Public Instance Methods

major?() click to toggle source
# File lib/coltrane/theory/diatonic_scale.rb, line 29
def major?
  !!@major
end
minor?() click to toggle source
# File lib/coltrane/theory/diatonic_scale.rb, line 33
def minor?
  !@major
end
name() click to toggle source
# File lib/coltrane/theory/diatonic_scale.rb, line 13
def name
  major? ? 'Major' : 'Natural Minor'
end
relative() click to toggle source
# File lib/coltrane/theory/diatonic_scale.rb, line 25
def relative
  major? ? relative_minor : relative_major
end
relative_major() click to toggle source
# File lib/coltrane/theory/diatonic_scale.rb, line 21
def relative_major
  major? ? self : self.class.new(@tone - 9, major: true)
end
relative_minor() click to toggle source
# File lib/coltrane/theory/diatonic_scale.rb, line 17
def relative_minor
  minor? ? self : self.class.new(@tone + 9, major: false)
end