lib/coltrane/theory.rb
# frozen_string_literal: true
module Coltrane
# The main module for working with Music Theory
module Theory
require 'coltrane/theory/errors'
autoload :Frequency, 'coltrane/theory/frequency'
BASE_OCTAVE = 4
BASE_PITCH_INTEGER = 9
def self.tuning=(f)
@base_tuning = Frequency[f].octave(-4)
end
def self.base_tuning
@base_tuning
end
@base_tuning = Frequency[440].octave(-4)
autoload :Pitch, 'coltrane/theory/pitch'
autoload :Voicing, 'coltrane/theory/voicing'
autoload :PitchClass, 'coltrane/theory/pitch_class'
autoload :Note, 'coltrane/theory/note'
autoload :NoteSet, 'coltrane/theory/note_set'
autoload :FrequencyInterval, 'coltrane/theory/frequency_interval'
autoload :IntervalClass, 'coltrane/theory/interval_class'
autoload :Interval, 'coltrane/theory/interval'
autoload :UnorderedIntervalClass, 'coltrane/theory/unordered_interval_class'
autoload :IntervalSequence, 'coltrane/theory/interval_sequence'
autoload :Qualities, 'coltrane/theory/qualities'
autoload :ChordQuality, 'coltrane/theory/chord_quality'
autoload :Chord, 'coltrane/theory/chord'
autoload :ChordSubstitutions, 'coltrane/theory/chord_substitutions'
autoload :RomanChord, 'coltrane/theory/roman_chord'
autoload :ClassicScales, 'coltrane/theory/classic_scales'
autoload :Scale, 'coltrane/theory/scale'
autoload :ScaleSet, 'coltrane/theory/scale_set'
autoload :CircleOfFifths, 'coltrane/theory/circle_of_fifths'
autoload :DiatonicScale, 'coltrane/theory/diatonic_scale'
autoload :GreekMode, 'coltrane/theory/greek_mode'
autoload :Key, 'coltrane/theory/key'
autoload :NotableProgressions, 'coltrane/theory/notable_progressions'
autoload :Changes, 'coltrane/theory/changes'
autoload :Cadence, 'coltrane/theory/cadence'
autoload :ProgressionSet, 'coltrane/theory/progression_set'
autoload :Progression, 'coltrane/theory/progression'
autoload :Mode, 'coltrane/theory/mode'
end
end