2 * Copyright (C) 1999-2016 Paul Davis <paul@linuxaudiosystems.com>
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.
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.
14 * You should have received a copy of the GNU General Public License along
15 * with this program; if not, write to the Free Software Foundation, Inc.,
16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19 #include "ardour/mode.h"
21 MusicalMode::MusicalMode (MusicalMode::Type t)
26 MusicalMode::~MusicalMode()
31 MusicalMode::fill (MusicalMode& m, MusicalMode::Type t)
35 /* scales/modes as distances from root, expressed
36 in fractional whole tones.
41 m.steps.push_back (1.0);
42 m.steps.push_back (1.5);
43 m.steps.push_back (2.0);
44 m.steps.push_back (3.0);
45 m.steps.push_back (4.0);
46 m.steps.push_back (4.5);
47 m.steps.push_back (5.5);
50 m.steps.push_back (1.0);
51 m.steps.push_back (2.0);
52 m.steps.push_back (2.5);
53 m.steps.push_back (3.5);
54 m.steps.push_back (4.5);
55 m.steps.push_back (5.5);
58 m.steps.push_back (1.0);
59 m.steps.push_back (1.5);
60 m.steps.push_back (2.5);
61 m.steps.push_back (3.5);
62 m.steps.push_back (4.0);
63 m.steps.push_back (5.0);
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 (5.0);
71 m.steps.push_back (5.5);
74 m.steps.push_back (1.0);
75 m.steps.push_back (1.5);
76 m.steps.push_back (2.5);
77 m.steps.push_back (3);
78 m.steps.push_back (3.5);
79 m.steps.push_back (4.5);
80 m.steps.push_back (5.0);
81 m.steps.push_back (5.5);
83 case MelodicMinorAscending:
84 m.steps.push_back (1.0);
85 m.steps.push_back (1.5);
86 m.steps.push_back (2.5);
87 m.steps.push_back (3.5);
88 m.steps.push_back (4.5);
89 m.steps.push_back (5.5);
91 case MelodicMinorDescending:
92 m.steps.push_back (1.0);
93 m.steps.push_back (2.0);
94 m.steps.push_back (2.5);
95 m.steps.push_back (3.5);
96 m.steps.push_back (4.5);
97 m.steps.push_back (5.0);
100 m.steps.push_back (0.5);
101 m.steps.push_back (1.5);
102 m.steps.push_back (2.5);
103 m.steps.push_back (3.5);
104 m.steps.push_back (4.0);
105 m.steps.push_back (5.0);
108 m.steps.push_back (1.0);
109 m.steps.push_back (2.0);
110 m.steps.push_back (3.0);
111 m.steps.push_back (3.5);
112 m.steps.push_back (4.5);
113 m.steps.push_back (5.5);
116 m.steps.push_back (1.0);
117 m.steps.push_back (2.0);
118 m.steps.push_back (2.5);
119 m.steps.push_back (3.5);
120 m.steps.push_back (4.5);
121 m.steps.push_back (5.0);
124 m.steps.push_back (0.5);
125 m.steps.push_back (1.5);
126 m.steps.push_back (2.0);
127 m.steps.push_back (3.0);
128 m.steps.push_back (4.0);
129 m.steps.push_back (5.0);
131 case PentatonicMajor:
132 m.steps.push_back (1.0);
133 m.steps.push_back (2.0);
134 m.steps.push_back (2.5);
135 m.steps.push_back (3.5);
137 case PentatonicMinor:
138 m.steps.push_back (1.5);
139 m.steps.push_back (2.5);
140 m.steps.push_back (3.5);
141 m.steps.push_back (5.0);
144 m.steps.push_back (0.5);
145 m.steps.push_back (1.0);
146 m.steps.push_back (1.5);
147 m.steps.push_back (2.0);
148 m.steps.push_back (2.5);
149 m.steps.push_back (3.0);
150 m.steps.push_back (3.5);
151 m.steps.push_back (4.0);
152 m.steps.push_back (4.5);
153 m.steps.push_back (5.0);
154 m.steps.push_back (5.5);
156 case NeapolitanMinor:
157 m.steps.push_back (0.5);
158 m.steps.push_back (1.5);
159 m.steps.push_back (2.5);
160 m.steps.push_back (2.5);
161 m.steps.push_back (4.0);
162 m.steps.push_back (5.5);
164 case NeapolitanMajor:
165 m.steps.push_back (0.5);
166 m.steps.push_back (1.5);
167 m.steps.push_back (2.5);
168 m.steps.push_back (3.5);
169 m.steps.push_back (4.5);
170 m.steps.push_back (5.5);
173 m.steps.push_back (0.5);
174 m.steps.push_back (2.0);
175 m.steps.push_back (2.5);
176 m.steps.push_back (3.0);
177 m.steps.push_back (4.5);
178 m.steps.push_back (5.0);
181 m.steps.push_back (0.5);
182 m.steps.push_back (2.0);
183 m.steps.push_back (2.5);
184 m.steps.push_back (3.5);
185 m.steps.push_back (4.0);
186 m.steps.push_back (5.5);
189 m.steps.push_back (0.5);
190 m.steps.push_back (2.0);
191 m.steps.push_back (3.0);
192 m.steps.push_back (4.0);
193 m.steps.push_back (5.0);
194 m.steps.push_back (5.5);
197 m.steps.push_back (1.0);
198 m.steps.push_back (1.5);
199 m.steps.push_back (3.5);
200 m.steps.push_back (4.0);
203 m.steps.push_back (1.0);
204 m.steps.push_back (1.5);
205 m.steps.push_back (3.0);
206 m.steps.push_back (3.5);
207 m.steps.push_back (4.0);
208 m.steps.push_back (5.5);
211 m.steps.push_back (1.0);
212 m.steps.push_back (2.0);
213 m.steps.push_back (3.0);
214 m.steps.push_back (3.5);
215 m.steps.push_back (4.0);
216 m.steps.push_back (5.0);
219 m.steps.push_back (0.5);
220 m.steps.push_back (2.5);
221 m.steps.push_back (3.5);
222 m.steps.push_back (4.0);
225 m.steps.push_back (0.5);
226 m.steps.push_back (2.5);
227 m.steps.push_back (3.0);
228 m.steps.push_back (5.0);
231 m.steps.push_back (1.0);
232 m.steps.push_back (2.0);
233 m.steps.push_back (2.5);
234 m.steps.push_back (3.5);
235 m.steps.push_back (4.0);
236 m.steps.push_back (5.0);
239 m.steps.push_back (0.5);
240 m.steps.push_back (1.5);
241 m.steps.push_back (2.0);
242 m.steps.push_back (2.5);
243 m.steps.push_back (3.0);
244 m.steps.push_back (4.0);
245 m.steps.push_back (5.0);
248 m.steps.push_back (0.5);
249 m.steps.push_back (1.5);
250 m.steps.push_back (3.5);
251 m.steps.push_back (5.0);
254 m.steps.push_back (1.0);
255 m.steps.push_back (1.5);
256 m.steps.push_back (3.0);
257 m.steps.push_back (3.5);
258 m.steps.push_back (4.0);
259 m.steps.push_back (5.0);
262 m.steps.push_back (1.0);
263 m.steps.push_back (2.0);
264 m.steps.push_back (3.0);
265 m.steps.push_back (3.5);
266 m.steps.push_back (4.5);
267 m.steps.push_back (5.0);
269 case LeadingWholeTone:
270 m.steps.push_back (1.0);
271 m.steps.push_back (2.0);
272 m.steps.push_back (3.0);
273 m.steps.push_back (4.0);
274 m.steps.push_back (5.0);
275 m.steps.push_back (5.5);
278 m.steps.push_back (1.0);
279 m.steps.push_back (2.0);
280 m.steps.push_back (2.5);
281 m.steps.push_back (3.0);
282 m.steps.push_back (4.0);
283 m.steps.push_back (5.0);
286 m.steps.push_back (0.5);
287 m.steps.push_back (1.5);
288 m.steps.push_back (3.5);
289 m.steps.push_back (4.0);
292 m.steps.push_back (0.5);
293 m.steps.push_back (2.0);
294 m.steps.push_back (2.5);
295 m.steps.push_back (3.5);
296 m.steps.push_back (4.0);
297 m.steps.push_back (5.5);
300 m.steps.push_back (1.0);
301 m.steps.push_back (1.5);
302 m.steps.push_back (2.5);
303 m.steps.push_back (3.5);
304 m.steps.push_back (4.0);
305 m.steps.push_back (5.5);
308 m.steps.push_back (0.5);
309 m.steps.push_back (1.5);
310 m.steps.push_back (2.5);
311 m.steps.push_back (3.5);
312 m.steps.push_back (4.5);
313 m.steps.push_back (5.0);
316 m.steps.push_back (0.5);
317 m.steps.push_back (2.0);
318 m.steps.push_back (2.5);
319 m.steps.push_back (3.0);
320 m.steps.push_back (4.0);
321 m.steps.push_back (5.5);
324 m.steps.push_back (1.0);
325 m.steps.push_back (1.5);
326 m.steps.push_back (3.0);
327 m.steps.push_back (3.5);
328 m.steps.push_back (4.0);
329 m.steps.push_back (5.5);
330 m.steps.push_back (6.0);
331 m.steps.push_back (7.0);
332 m.steps.push_back (7.5);
333 m.steps.push_back (8.5);