move mode/scale/key definitions out of push2 code and into libardour; Aeolian is...
[ardour.git] / libs / ardour / ardour / mode.h
1 /*
2     Copyright (C) 1999-2016 Paul Davis
3
4     This program is free software; you can redistribute it and/or modify
5     it under the terms of the GNU General Public License as published by
6     the Free Software Foundation; either version 2 of the License, or
7     (at your option) any later version.
8
9     This program is distributed in the hope that it will be useful,
10     but WITHOUT ANY WARRANTY; without even the implied warranty of
11     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12     GNU General Public License for more details.
13
14     You should have received a copy of the GNU General Public License
15     along with this program; if not, write to the Free Software
16     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
17 */
18
19 #ifndef __ardour_mode_h__
20 #define __ardour_mode_h__
21
22 #include <vector>
23
24 class MusicalMode
25 {
26   public:
27         enum Type {
28                 Dorian,
29                 IonianMajor,
30                 AeolianMinor,
31                 HarmonicMinor,
32                 MelodicMinorAscending,
33                 MelodicMinorDescending,
34                 Phrygian,
35                 Lydian,
36                 Mixolydian,
37                 Locrian,
38                 PentatonicMajor,
39                 PentatonicMinor,
40                 Chromatic,
41                 BluesScale,
42                 NeapolitanMinor,
43                 NeapolitanMajor,
44                 Oriental,
45                 DoubleHarmonic,
46                 Enigmatic,
47                 Hirajoshi,
48                 HungarianMinor,
49                 HungarianMajor,
50                 Kumoi,
51                 Iwato,
52                 Hindu,
53                 Spanish8Tone,
54                 Pelog,
55                 HungarianGypsy,
56                 Overtone,
57                 LeadingWholeTone,
58                 Arabian,
59                 Balinese,
60                 Gypsy,
61                 Mohammedan,
62                 Javanese,
63                 Persian,
64                 Algerian
65         };
66
67         MusicalMode (Type t);
68         ~MusicalMode ();
69
70         std::vector<float> steps;
71
72   private:
73         static void fill (MusicalMode&, Type);
74 };
75
76 #endif /* __ardour_mode_h__ */