diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2016-09-28 10:47:10 -0500 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2016-09-28 10:47:17 -0500 |
commit | b6e62c66545d84101e3f82d065862f75509f2d1e (patch) | |
tree | 062c8c4496895bf1e6ffe38546c6768a73d0ed00 /libs/ardour/mode.cc | |
parent | b9332f5fe2874901159583453eb963eea85b7b72 (diff) |
move mode/scale/key definitions out of push2 code and into libardour; Aeolian is the same as Minor
Diffstat (limited to 'libs/ardour/mode.cc')
-rw-r--r-- | libs/ardour/mode.cc | 337 |
1 files changed, 337 insertions, 0 deletions
diff --git a/libs/ardour/mode.cc b/libs/ardour/mode.cc new file mode 100644 index 0000000000..e3c37df78c --- /dev/null +++ b/libs/ardour/mode.cc @@ -0,0 +1,337 @@ +/* + Copyright (C) 1999-2016 Paul Davis + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + +#include "ardour/mode.h" + +MusicalMode::MusicalMode (MusicalMode::Type t) +{ + fill (*this, t); +} + +MusicalMode::~MusicalMode() +{ +} + +void +MusicalMode::fill (MusicalMode& m, MusicalMode::Type t) +{ + m.steps.clear (); + + /* scales/modes as distances from root, expressed + in fractional whole tones. + */ + + switch (t) { + case Dorian: + m.steps.push_back (1.0); + m.steps.push_back (1.5); + m.steps.push_back (2.0); + m.steps.push_back (3.0); + m.steps.push_back (4.0); + m.steps.push_back (4.5); + m.steps.push_back (5.5); + break; + case IonianMajor: + m.steps.push_back (1.0); + m.steps.push_back (2.0); + m.steps.push_back (2.5); + m.steps.push_back (3.5); + m.steps.push_back (4.5); + m.steps.push_back (5.5); + break; + case AeolianMinor: + m.steps.push_back (1.0); + m.steps.push_back (1.5); + m.steps.push_back (2.5); + m.steps.push_back (3.5); + m.steps.push_back (4.0); + m.steps.push_back (5.0); + break; + case HarmonicMinor: + m.steps.push_back (1.0); + m.steps.push_back (1.5); + m.steps.push_back (2.5); + m.steps.push_back (3.5); + m.steps.push_back (5.0); + m.steps.push_back (5.5); + break; + case BluesScale: + m.steps.push_back (1.0); + m.steps.push_back (1.5); + m.steps.push_back (2.5); + m.steps.push_back (3); + m.steps.push_back (3.5); + m.steps.push_back (4.5); + m.steps.push_back (5.0); + m.steps.push_back (5.5); + break; + case MelodicMinorAscending: + m.steps.push_back (1.0); + m.steps.push_back (1.5); + m.steps.push_back (2.5); + m.steps.push_back (3.5); + m.steps.push_back (4.5); + m.steps.push_back (5.5); + break; + case MelodicMinorDescending: + m.steps.push_back (1.0); + m.steps.push_back (2.0); + m.steps.push_back (2.5); + m.steps.push_back (3.5); + m.steps.push_back (4.5); + m.steps.push_back (5.0); + break; + case Phrygian: + m.steps.push_back (0.5); + m.steps.push_back (1.5); + m.steps.push_back (2.5); + m.steps.push_back (3.5); + m.steps.push_back (4.0); + m.steps.push_back (5.0); + break; + case Lydian: + m.steps.push_back (1.0); + m.steps.push_back (2.0); + m.steps.push_back (3.0); + m.steps.push_back (3.5); + m.steps.push_back (4.5); + m.steps.push_back (5.5); + break; + case Mixolydian: + m.steps.push_back (1.0); + m.steps.push_back (2.0); + m.steps.push_back (2.5); + m.steps.push_back (3.5); + m.steps.push_back (4.5); + m.steps.push_back (5.0); + break; + case Locrian: + m.steps.push_back (0.5); + m.steps.push_back (1.5); + m.steps.push_back (2.0); + m.steps.push_back (3.0); + m.steps.push_back (4.0); + m.steps.push_back (5.0); + break; + case PentatonicMajor: + m.steps.push_back (1.0); + m.steps.push_back (2.0); + m.steps.push_back (2.5); + m.steps.push_back (3.5); + break; + case PentatonicMinor: + m.steps.push_back (1.5); + m.steps.push_back (2.5); + m.steps.push_back (3.5); + m.steps.push_back (5.0); + break; + case Chromatic: + m.steps.push_back (0.5); + m.steps.push_back (1.0); + m.steps.push_back (1.5); + m.steps.push_back (2.0); + m.steps.push_back (2.5); + m.steps.push_back (3.0); + m.steps.push_back (3.5); + m.steps.push_back (4.0); + m.steps.push_back (4.5); + m.steps.push_back (5.0); + m.steps.push_back (5.5); + break; + case NeapolitanMinor: + m.steps.push_back (0.5); + m.steps.push_back (1.5); + m.steps.push_back (2.5); + m.steps.push_back (2.5); + m.steps.push_back (4.0); + m.steps.push_back (5.5); + break; + case NeapolitanMajor: + m.steps.push_back (0.5); + m.steps.push_back (1.5); + m.steps.push_back (2.5); + m.steps.push_back (3.5); + m.steps.push_back (4.5); + m.steps.push_back (5.5); + break; + case Oriental: + m.steps.push_back (0.5); + m.steps.push_back (2.0); + m.steps.push_back (2.5); + m.steps.push_back (3.0); + m.steps.push_back (4.5); + m.steps.push_back (5.0); + break; + case DoubleHarmonic: + m.steps.push_back (0.5); + m.steps.push_back (2.0); + m.steps.push_back (2.5); + m.steps.push_back (3.5); + m.steps.push_back (4.0); + m.steps.push_back (5.5); + break; + case Enigmatic: + m.steps.push_back (0.5); + m.steps.push_back (2.0); + m.steps.push_back (3.0); + m.steps.push_back (4.0); + m.steps.push_back (5.0); + m.steps.push_back (5.5); + break; + case Hirajoshi: + m.steps.push_back (1.0); + m.steps.push_back (1.5); + m.steps.push_back (3.5); + m.steps.push_back (4.0); + break; + case HungarianMinor: + m.steps.push_back (1.0); + m.steps.push_back (1.5); + m.steps.push_back (3.0); + m.steps.push_back (3.5); + m.steps.push_back (4.0); + m.steps.push_back (5.5); + break; + case HungarianMajor: + m.steps.push_back (1.0); + m.steps.push_back (2.0); + m.steps.push_back (3.0); + m.steps.push_back (3.5); + m.steps.push_back (4.0); + m.steps.push_back (5.0); + break; + case Kumoi: + m.steps.push_back (0.5); + m.steps.push_back (2.5); + m.steps.push_back (3.5); + m.steps.push_back (4.0); + break; + case Iwato: + m.steps.push_back (0.5); + m.steps.push_back (2.5); + m.steps.push_back (3.0); + m.steps.push_back (5.0); + break; + case Hindu: + m.steps.push_back (1.0); + m.steps.push_back (2.0); + m.steps.push_back (2.5); + m.steps.push_back (3.5); + m.steps.push_back (4.0); + m.steps.push_back (5.0); + break; + case Spanish8Tone: + m.steps.push_back (0.5); + m.steps.push_back (1.5); + m.steps.push_back (2.0); + m.steps.push_back (2.5); + m.steps.push_back (3.0); + m.steps.push_back (4.0); + m.steps.push_back (5.0); + break; + case Pelog: + m.steps.push_back (0.5); + m.steps.push_back (1.5); + m.steps.push_back (3.5); + m.steps.push_back (5.0); + break; + case HungarianGypsy: + m.steps.push_back (1.0); + m.steps.push_back (1.5); + m.steps.push_back (3.0); + m.steps.push_back (3.5); + m.steps.push_back (4.0); + m.steps.push_back (5.0); + break; + case Overtone: + m.steps.push_back (1.0); + m.steps.push_back (2.0); + m.steps.push_back (3.0); + m.steps.push_back (3.5); + m.steps.push_back (4.5); + m.steps.push_back (5.0); + break; + case LeadingWholeTone: + m.steps.push_back (1.0); + m.steps.push_back (2.0); + m.steps.push_back (3.0); + m.steps.push_back (4.0); + m.steps.push_back (5.0); + m.steps.push_back (5.5); + break; + case Arabian: + m.steps.push_back (1.0); + m.steps.push_back (2.0); + m.steps.push_back (2.5); + m.steps.push_back (3.0); + m.steps.push_back (4.0); + m.steps.push_back (5.0); + break; + case Balinese: + m.steps.push_back (0.5); + m.steps.push_back (1.5); + m.steps.push_back (3.5); + m.steps.push_back (4.0); + break; + case Gypsy: + m.steps.push_back (0.5); + m.steps.push_back (2.0); + m.steps.push_back (2.5); + m.steps.push_back (3.5); + m.steps.push_back (4.0); + m.steps.push_back (5.5); + break; + case Mohammedan: + m.steps.push_back (1.0); + m.steps.push_back (1.5); + m.steps.push_back (2.5); + m.steps.push_back (3.5); + m.steps.push_back (4.0); + m.steps.push_back (5.5); + break; + case Javanese: + m.steps.push_back (0.5); + m.steps.push_back (1.5); + m.steps.push_back (2.5); + m.steps.push_back (3.5); + m.steps.push_back (4.5); + m.steps.push_back (5.0); + break; + case Persian: + m.steps.push_back (0.5); + m.steps.push_back (2.0); + m.steps.push_back (2.5); + m.steps.push_back (3.0); + m.steps.push_back (4.0); + m.steps.push_back (5.5); + break; + case Algerian: + m.steps.push_back (1.0); + m.steps.push_back (1.5); + m.steps.push_back (3.0); + m.steps.push_back (3.5); + m.steps.push_back (4.0); + m.steps.push_back (5.5); + m.steps.push_back (6.0); + m.steps.push_back (7.0); + m.steps.push_back (7.5); + m.steps.push_back (8.5); + break; + } +} |