headless-chicken: force setting of region length properties, clean up code.
[ardour.git] / libs / surfaces / push2 / mode.cc
1 #include "mode.h"
2
3 MusicalMode::MusicalMode (MusicalMode::Type t)
4 {
5         fill (*this, t);
6 }
7
8 MusicalMode::~MusicalMode()
9 {
10 }
11
12 void
13 MusicalMode::fill (MusicalMode& m, MusicalMode::Type t)
14 {
15         m.steps.clear ();
16
17         /* scales/modes as distances from root, expressed
18            in fractional whole tones.
19         */
20
21         switch (t) {
22         case Dorian:
23                 m.steps.push_back (1.0);
24                 m.steps.push_back (1.5);
25                 m.steps.push_back (2.0);
26                 m.steps.push_back (3.0);
27                 m.steps.push_back (4.0);
28                 m.steps.push_back (4.5);
29                 m.steps.push_back (5.5);
30                 break;
31         case IonianMajor:
32                 m.steps.push_back (1.0);
33                 m.steps.push_back (2.0);
34                 m.steps.push_back (2.5);
35                 m.steps.push_back (3.5);
36                 m.steps.push_back (4.5);
37                 m.steps.push_back (5.5);
38                 break;
39         case Minor:
40                 m.steps.push_back (1.0);
41                 m.steps.push_back (1.5);
42                 m.steps.push_back (2.5);
43                 m.steps.push_back (3.5);
44                 m.steps.push_back (4.0);
45                 m.steps.push_back (5.0);
46                 break;
47         case HarmonicMinor:
48                 m.steps.push_back (1.0);
49                 m.steps.push_back (1.5);
50                 m.steps.push_back (2.5);
51                 m.steps.push_back (3.5);
52                 m.steps.push_back (5.0);
53                 m.steps.push_back (5.5);
54                 break;
55         case  BluesScale:
56                 m.steps.push_back (1.0);
57                 m.steps.push_back (1.5);
58                 m.steps.push_back (2.5);
59                 m.steps.push_back (3);
60                 m.steps.push_back (3.5);
61                 m.steps.push_back (4.5);
62                 m.steps.push_back (5.0);
63                 m.steps.push_back (5.5);
64                 break;
65         case MelodicMinorAscending:
66                 m.steps.push_back (1.0);
67                 m.steps.push_back (1.5);
68                 m.steps.push_back (2.5);
69                 m.steps.push_back (3.5);
70                 m.steps.push_back (4.5);
71                 m.steps.push_back (5.5);
72                 break;
73         case MelodicMinorDescending:
74                 m.steps.push_back (1.0);
75                 m.steps.push_back (2.0);
76                 m.steps.push_back (2.5);
77                 m.steps.push_back (3.5);
78                 m.steps.push_back (4.5);
79                 m.steps.push_back (5.0);
80                 break;
81         case Phrygian:
82                 m.steps.push_back (0.5);
83                 m.steps.push_back (1.5);
84                 m.steps.push_back (2.5);
85                 m.steps.push_back (3.5);
86                 m.steps.push_back (4.0);
87                 m.steps.push_back (5.0);
88                 break;
89         case Lydian:
90                 m.steps.push_back (1.0);
91                 m.steps.push_back (2.0);
92                 m.steps.push_back (3.0);
93                 m.steps.push_back (3.5);
94                 m.steps.push_back (4.5);
95                 m.steps.push_back (5.5);
96                 break;
97         case Mixolydian:
98                 m.steps.push_back (1.0);
99                 m.steps.push_back (2.0);
100                 m.steps.push_back (2.5);
101                 m.steps.push_back (3.5);
102                 m.steps.push_back (4.5);
103                 m.steps.push_back (5.0);
104                 break;
105         case Aeolian:
106                 m.steps.push_back (1.0);
107                 m.steps.push_back (1.5);
108                 m.steps.push_back (2.5);
109                 m.steps.push_back (3.5);
110                 m.steps.push_back (4.0);
111                 m.steps.push_back (5.0);
112                 break;
113         case Locrian:
114                 m.steps.push_back (0.5);
115                 m.steps.push_back (1.5);
116                 m.steps.push_back (2.0);
117                 m.steps.push_back (3.0);
118                 m.steps.push_back (4.0);
119                 m.steps.push_back (5.0);
120                 break;
121         case PentatonicMajor:
122                 m.steps.push_back (1.0);
123                 m.steps.push_back (2.0);
124                 m.steps.push_back (2.5);
125                 m.steps.push_back (3.5);
126                 break;
127         case PentatonicMinor:
128                 m.steps.push_back (1.5);
129                 m.steps.push_back (2.5);
130                 m.steps.push_back (3.5);
131                 m.steps.push_back (5.0);
132                 break;
133         case  Chromatic:
134                 m.steps.push_back (0.5);
135                 m.steps.push_back (1.0);
136                 m.steps.push_back (1.5);
137                 m.steps.push_back (2.0);
138                 m.steps.push_back (2.5);
139                 m.steps.push_back (3.0);
140                 m.steps.push_back (3.5);
141                 m.steps.push_back (4.0);
142                 m.steps.push_back (4.5);
143                 m.steps.push_back (5.0);
144                 m.steps.push_back (5.5);
145                 break;
146         case  NeapolitanMinor:
147                 m.steps.push_back (0.5);
148                 m.steps.push_back (1.5);
149                 m.steps.push_back (2.5);
150                 m.steps.push_back (2.5);
151                 m.steps.push_back (4.0);
152                 m.steps.push_back (5.5);
153                 break;
154         case  NeapolitanMajor:
155                 m.steps.push_back (0.5);
156                 m.steps.push_back (1.5);
157                 m.steps.push_back (2.5);
158                 m.steps.push_back (3.5);
159                 m.steps.push_back (4.5);
160                 m.steps.push_back (5.5);
161                 break;
162         case  Oriental:
163                 m.steps.push_back (0.5);
164                 m.steps.push_back (2.0);
165                 m.steps.push_back (2.5);
166                 m.steps.push_back (3.0);
167                 m.steps.push_back (4.5);
168                 m.steps.push_back (5.0);
169                 break;
170         case  DoubleHarmonic:
171                 m.steps.push_back (0.5);
172                 m.steps.push_back (2.0);
173                 m.steps.push_back (2.5);
174                 m.steps.push_back (3.5);
175                 m.steps.push_back (4.0);
176                 m.steps.push_back (5.5);
177                 break;
178         case  Enigmatic:
179                 m.steps.push_back (0.5);
180                 m.steps.push_back (2.0);
181                 m.steps.push_back (3.0);
182                 m.steps.push_back (4.0);
183                 m.steps.push_back (5.0);
184                 m.steps.push_back (5.5);
185                 break;
186         case  Hirajoshi:
187                 m.steps.push_back (1.0);
188                 m.steps.push_back (1.5);
189                 m.steps.push_back (3.5);
190                 m.steps.push_back (4.0);
191                 break;
192         case  HungarianMinor:
193                 m.steps.push_back (1.0);
194                 m.steps.push_back (1.5);
195                 m.steps.push_back (3.0);
196                 m.steps.push_back (3.5);
197                 m.steps.push_back (4.0);
198                 m.steps.push_back (5.5);
199                 break;
200         case  HungarianMajor:
201                 m.steps.push_back (1.0);
202                 m.steps.push_back (2.0);
203                 m.steps.push_back (3.0);
204                 m.steps.push_back (3.5);
205                 m.steps.push_back (4.0);
206                 m.steps.push_back (5.0);
207                 break;
208         case  Kumoi:
209                 m.steps.push_back (0.5);
210                 m.steps.push_back (2.5);
211                 m.steps.push_back (3.5);
212                 m.steps.push_back (4.0);
213                 break;
214         case  Iwato:
215                 m.steps.push_back (0.5);
216                 m.steps.push_back (2.5);
217                 m.steps.push_back (3.0);
218                 m.steps.push_back (5.0);
219                 break;
220         case  Hindu:
221                 m.steps.push_back (1.0);
222                 m.steps.push_back (2.0);
223                 m.steps.push_back (2.5);
224                 m.steps.push_back (3.5);
225                 m.steps.push_back (4.0);
226                 m.steps.push_back (5.0);
227                 break;
228         case  Spanish8Tone:
229                 m.steps.push_back (0.5);
230                 m.steps.push_back (1.5);
231                 m.steps.push_back (2.0);
232                 m.steps.push_back (2.5);
233                 m.steps.push_back (3.0);
234                 m.steps.push_back (4.0);
235                 m.steps.push_back (5.0);
236                 break;
237         case  Pelog:
238                 m.steps.push_back (0.5);
239                 m.steps.push_back (1.5);
240                 m.steps.push_back (3.5);
241                 m.steps.push_back (5.0);
242                 break;
243         case  HungarianGypsy:
244                 m.steps.push_back (1.0);
245                 m.steps.push_back (1.5);
246                 m.steps.push_back (3.0);
247                 m.steps.push_back (3.5);
248                 m.steps.push_back (4.0);
249                 m.steps.push_back (5.0);
250                 break;
251         case  Overtone:
252                 m.steps.push_back (1.0);
253                 m.steps.push_back (2.0);
254                 m.steps.push_back (3.0);
255                 m.steps.push_back (3.5);
256                 m.steps.push_back (4.5);
257                 m.steps.push_back (5.0);
258                 break;
259         case  LeadingWholeTone:
260                 m.steps.push_back (1.0);
261                 m.steps.push_back (2.0);
262                 m.steps.push_back (3.0);
263                 m.steps.push_back (4.0);
264                 m.steps.push_back (5.0);
265                 m.steps.push_back (5.5);
266                 break;
267         case  Arabian:
268                 m.steps.push_back (1.0);
269                 m.steps.push_back (2.0);
270                 m.steps.push_back (2.5);
271                 m.steps.push_back (3.0);
272                 m.steps.push_back (4.0);
273                 m.steps.push_back (5.0);
274                 break;
275         case  Balinese:
276                 m.steps.push_back (0.5);
277                 m.steps.push_back (1.5);
278                 m.steps.push_back (3.5);
279                 m.steps.push_back (4.0);
280                 break;
281         case  Gypsy:
282                 m.steps.push_back (0.5);
283                 m.steps.push_back (2.0);
284                 m.steps.push_back (2.5);
285                 m.steps.push_back (3.5);
286                 m.steps.push_back (4.0);
287                 m.steps.push_back (5.5);
288                 break;
289         case  Mohammedan:
290                 m.steps.push_back (1.0);
291                 m.steps.push_back (1.5);
292                 m.steps.push_back (2.5);
293                 m.steps.push_back (3.5);
294                 m.steps.push_back (4.0);
295                 m.steps.push_back (5.5);
296                 break;
297         case  Javanese:
298                 m.steps.push_back (0.5);
299                 m.steps.push_back (1.5);
300                 m.steps.push_back (2.5);
301                 m.steps.push_back (3.5);
302                 m.steps.push_back (4.5);
303                 m.steps.push_back (5.0);
304                 break;
305         case  Persian:
306                 m.steps.push_back (0.5);
307                 m.steps.push_back (2.0);
308                 m.steps.push_back (2.5);
309                 m.steps.push_back (3.0);
310                 m.steps.push_back (4.0);
311                 m.steps.push_back (5.5);
312                 break;
313         case  Algerian:
314                 m.steps.push_back (1.0);
315                 m.steps.push_back (1.5);
316                 m.steps.push_back (3.0);
317                 m.steps.push_back (3.5);
318                 m.steps.push_back (4.0);
319                 m.steps.push_back (5.5);
320                 m.steps.push_back (6.0);
321                 m.steps.push_back (7.0);
322                 m.steps.push_back (7.5);
323                 m.steps.push_back (8.5);
324                 break;
325         }
326 }