2 Copyright (C) 1999-2016 Paul Davis
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
15 along with this program; if not, write to the Free Software
16 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
20 #include "ardour/mode.h"
22 MusicalMode::MusicalMode (MusicalMode::Type t)
27 MusicalMode::~MusicalMode()
32 MusicalMode::fill (MusicalMode& m, MusicalMode::Type t)
36 /* scales/modes as distances from root, expressed
37 in fractional whole tones.
42 m.steps.push_back (1.0);
43 m.steps.push_back (1.5);
44 m.steps.push_back (2.0);
45 m.steps.push_back (3.0);
46 m.steps.push_back (4.0);
47 m.steps.push_back (4.5);
48 m.steps.push_back (5.5);
51 m.steps.push_back (1.0);
52 m.steps.push_back (2.0);
53 m.steps.push_back (2.5);
54 m.steps.push_back (3.5);
55 m.steps.push_back (4.5);
56 m.steps.push_back (5.5);
59 m.steps.push_back (1.0);
60 m.steps.push_back (1.5);
61 m.steps.push_back (2.5);
62 m.steps.push_back (3.5);
63 m.steps.push_back (4.0);
64 m.steps.push_back (5.0);
67 m.steps.push_back (1.0);
68 m.steps.push_back (1.5);
69 m.steps.push_back (2.5);
70 m.steps.push_back (3.5);
71 m.steps.push_back (5.0);
72 m.steps.push_back (5.5);
75 m.steps.push_back (1.0);
76 m.steps.push_back (1.5);
77 m.steps.push_back (2.5);
78 m.steps.push_back (3);
79 m.steps.push_back (3.5);
80 m.steps.push_back (4.5);
81 m.steps.push_back (5.0);
82 m.steps.push_back (5.5);
84 case MelodicMinorAscending:
85 m.steps.push_back (1.0);
86 m.steps.push_back (1.5);
87 m.steps.push_back (2.5);
88 m.steps.push_back (3.5);
89 m.steps.push_back (4.5);
90 m.steps.push_back (5.5);
92 case MelodicMinorDescending:
93 m.steps.push_back (1.0);
94 m.steps.push_back (2.0);
95 m.steps.push_back (2.5);
96 m.steps.push_back (3.5);
97 m.steps.push_back (4.5);
98 m.steps.push_back (5.0);
101 m.steps.push_back (0.5);
102 m.steps.push_back (1.5);
103 m.steps.push_back (2.5);
104 m.steps.push_back (3.5);
105 m.steps.push_back (4.0);
106 m.steps.push_back (5.0);
109 m.steps.push_back (1.0);
110 m.steps.push_back (2.0);
111 m.steps.push_back (3.0);
112 m.steps.push_back (3.5);
113 m.steps.push_back (4.5);
114 m.steps.push_back (5.5);
117 m.steps.push_back (1.0);
118 m.steps.push_back (2.0);
119 m.steps.push_back (2.5);
120 m.steps.push_back (3.5);
121 m.steps.push_back (4.5);
122 m.steps.push_back (5.0);
125 m.steps.push_back (0.5);
126 m.steps.push_back (1.5);
127 m.steps.push_back (2.0);
128 m.steps.push_back (3.0);
129 m.steps.push_back (4.0);
130 m.steps.push_back (5.0);
132 case PentatonicMajor:
133 m.steps.push_back (1.0);
134 m.steps.push_back (2.0);
135 m.steps.push_back (2.5);
136 m.steps.push_back (3.5);
138 case PentatonicMinor:
139 m.steps.push_back (1.5);
140 m.steps.push_back (2.5);
141 m.steps.push_back (3.5);
142 m.steps.push_back (5.0);
145 m.steps.push_back (0.5);
146 m.steps.push_back (1.0);
147 m.steps.push_back (1.5);
148 m.steps.push_back (2.0);
149 m.steps.push_back (2.5);
150 m.steps.push_back (3.0);
151 m.steps.push_back (3.5);
152 m.steps.push_back (4.0);
153 m.steps.push_back (4.5);
154 m.steps.push_back (5.0);
155 m.steps.push_back (5.5);
157 case NeapolitanMinor:
158 m.steps.push_back (0.5);
159 m.steps.push_back (1.5);
160 m.steps.push_back (2.5);
161 m.steps.push_back (2.5);
162 m.steps.push_back (4.0);
163 m.steps.push_back (5.5);
165 case NeapolitanMajor:
166 m.steps.push_back (0.5);
167 m.steps.push_back (1.5);
168 m.steps.push_back (2.5);
169 m.steps.push_back (3.5);
170 m.steps.push_back (4.5);
171 m.steps.push_back (5.5);
174 m.steps.push_back (0.5);
175 m.steps.push_back (2.0);
176 m.steps.push_back (2.5);
177 m.steps.push_back (3.0);
178 m.steps.push_back (4.5);
179 m.steps.push_back (5.0);
182 m.steps.push_back (0.5);
183 m.steps.push_back (2.0);
184 m.steps.push_back (2.5);
185 m.steps.push_back (3.5);
186 m.steps.push_back (4.0);
187 m.steps.push_back (5.5);
190 m.steps.push_back (0.5);
191 m.steps.push_back (2.0);
192 m.steps.push_back (3.0);
193 m.steps.push_back (4.0);
194 m.steps.push_back (5.0);
195 m.steps.push_back (5.5);
198 m.steps.push_back (1.0);
199 m.steps.push_back (1.5);
200 m.steps.push_back (3.5);
201 m.steps.push_back (4.0);
204 m.steps.push_back (1.0);
205 m.steps.push_back (1.5);
206 m.steps.push_back (3.0);
207 m.steps.push_back (3.5);
208 m.steps.push_back (4.0);
209 m.steps.push_back (5.5);
212 m.steps.push_back (1.0);
213 m.steps.push_back (2.0);
214 m.steps.push_back (3.0);
215 m.steps.push_back (3.5);
216 m.steps.push_back (4.0);
217 m.steps.push_back (5.0);
220 m.steps.push_back (0.5);
221 m.steps.push_back (2.5);
222 m.steps.push_back (3.5);
223 m.steps.push_back (4.0);
226 m.steps.push_back (0.5);
227 m.steps.push_back (2.5);
228 m.steps.push_back (3.0);
229 m.steps.push_back (5.0);
232 m.steps.push_back (1.0);
233 m.steps.push_back (2.0);
234 m.steps.push_back (2.5);
235 m.steps.push_back (3.5);
236 m.steps.push_back (4.0);
237 m.steps.push_back (5.0);
240 m.steps.push_back (0.5);
241 m.steps.push_back (1.5);
242 m.steps.push_back (2.0);
243 m.steps.push_back (2.5);
244 m.steps.push_back (3.0);
245 m.steps.push_back (4.0);
246 m.steps.push_back (5.0);
249 m.steps.push_back (0.5);
250 m.steps.push_back (1.5);
251 m.steps.push_back (3.5);
252 m.steps.push_back (5.0);
255 m.steps.push_back (1.0);
256 m.steps.push_back (1.5);
257 m.steps.push_back (3.0);
258 m.steps.push_back (3.5);
259 m.steps.push_back (4.0);
260 m.steps.push_back (5.0);
263 m.steps.push_back (1.0);
264 m.steps.push_back (2.0);
265 m.steps.push_back (3.0);
266 m.steps.push_back (3.5);
267 m.steps.push_back (4.5);
268 m.steps.push_back (5.0);
270 case LeadingWholeTone:
271 m.steps.push_back (1.0);
272 m.steps.push_back (2.0);
273 m.steps.push_back (3.0);
274 m.steps.push_back (4.0);
275 m.steps.push_back (5.0);
276 m.steps.push_back (5.5);
279 m.steps.push_back (1.0);
280 m.steps.push_back (2.0);
281 m.steps.push_back (2.5);
282 m.steps.push_back (3.0);
283 m.steps.push_back (4.0);
284 m.steps.push_back (5.0);
287 m.steps.push_back (0.5);
288 m.steps.push_back (1.5);
289 m.steps.push_back (3.5);
290 m.steps.push_back (4.0);
293 m.steps.push_back (0.5);
294 m.steps.push_back (2.0);
295 m.steps.push_back (2.5);
296 m.steps.push_back (3.5);
297 m.steps.push_back (4.0);
298 m.steps.push_back (5.5);
301 m.steps.push_back (1.0);
302 m.steps.push_back (1.5);
303 m.steps.push_back (2.5);
304 m.steps.push_back (3.5);
305 m.steps.push_back (4.0);
306 m.steps.push_back (5.5);
309 m.steps.push_back (0.5);
310 m.steps.push_back (1.5);
311 m.steps.push_back (2.5);
312 m.steps.push_back (3.5);
313 m.steps.push_back (4.5);
314 m.steps.push_back (5.0);
317 m.steps.push_back (0.5);
318 m.steps.push_back (2.0);
319 m.steps.push_back (2.5);
320 m.steps.push_back (3.0);
321 m.steps.push_back (4.0);
322 m.steps.push_back (5.5);
325 m.steps.push_back (1.0);
326 m.steps.push_back (1.5);
327 m.steps.push_back (3.0);
328 m.steps.push_back (3.5);
329 m.steps.push_back (4.0);
330 m.steps.push_back (5.5);
331 m.steps.push_back (6.0);
332 m.steps.push_back (7.0);
333 m.steps.push_back (7.5);
334 m.steps.push_back (8.5);