MSVC won't compile 'const float _demolition[]' because it uses 'divide by zero' while...
[ardour.git] / libs / backends / dummy / dummy_midi_seq.h
1 /*
2  * Copyright (C) 2014 Robin Gareus <robin@gareus.org>
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 __libbackend_dummy_midi_seq_h__
20 #define __libbackend_dummy_midi_seq_h__
21
22 #include "dummy_audiobackend.h"
23
24 namespace ARDOUR { namespace DummyMidiData {
25
26 static const MIDISequence s0[] = { // some arbitrary short sequence
27         { 0.00, 3, {0x90,  64, 0x7f} },
28         { 0.50, 3, {0x80,  64, 0x00} },
29         { 1.00, 3, {0x90,  66, 0x7f} },
30         { 1.50, 3, {0x80,  66, 0x00} },
31         { 2.00, 3, {0x90,  68, 0x7f} },
32         { 3.50, 3, {0x80,  68, 0x00} },
33         { 3.75, 3, {0x90,  71, 0x7f} },
34         { 4.00, 3, {0x80,  71, 0x00} },
35         { 4.00, 3, {0xff, 255, 0xff} }, // sentinel
36 };
37
38 static const MIDISequence s1[] = {  // Cmaj7 - iterate all channels
39         { 0.00, 3, {0x90,  60, 0x7f} },
40         { 0.25, 3, {0x90,  64, 0x7f} },
41         { 0.50, 3, {0x90,  67, 0x7f} },
42         { 0.75, 3, {0x90,  71, 0x7f} },
43         { 1.00, 3, {0x90,  72, 0x7f} },
44         { 1.00, 3, {0x80,  60, 0x00} },
45         { 1.25, 3, {0x80,  64, 0x00} },
46         { 1.50, 3, {0x80,  67, 0x00} },
47         { 1.75, 3, {0x80,  71, 0x00} },
48         { 2.00, 3, {0x80,  72, 0x00} },
49         { 2.00, 3, {0x91,  60, 0x7f} },
50         { 2.25, 3, {0x91,  64, 0x7f} },
51         { 2.50, 3, {0x91,  67, 0x7f} },
52         { 2.75, 3, {0x91,  71, 0x7f} },
53         { 3.00, 3, {0x91,  72, 0x7f} },
54         { 3.00, 3, {0x81,  60, 0x00} },
55         { 3.25, 3, {0x81,  64, 0x00} },
56         { 3.50, 3, {0x81,  67, 0x00} },
57         { 3.75, 3, {0x81,  71, 0x00} },
58         { 4.00, 3, {0x81,  72, 0x00} },
59         { 4.00, 3, {0x92,  60, 0x7f} },
60         { 4.25, 3, {0x92,  64, 0x7f} },
61         { 4.50, 3, {0x92,  67, 0x7f} },
62         { 4.75, 3, {0x92,  71, 0x7f} },
63         { 5.00, 3, {0x92,  72, 0x7f} },
64         { 5.00, 3, {0x82,  60, 0x00} },
65         { 5.25, 3, {0x82,  64, 0x00} },
66         { 5.50, 3, {0x82,  67, 0x00} },
67         { 5.75, 3, {0x82,  71, 0x00} },
68         { 6.00, 3, {0x82,  72, 0x00} },
69         { 6.00, 3, {0x93,  60, 0x7f} },
70         { 6.25, 3, {0x93,  64, 0x7f} },
71         { 6.50, 3, {0x93,  67, 0x7f} },
72         { 6.75, 3, {0x93,  71, 0x7f} },
73         { 7.00, 3, {0x93,  72, 0x7f} },
74         { 7.00, 3, {0x83,  60, 0x00} },
75         { 7.25, 3, {0x83,  64, 0x00} },
76         { 7.50, 3, {0x83,  67, 0x00} },
77         { 7.75, 3, {0x83,  71, 0x00} },
78         { 8.00, 3, {0x83,  72, 0x00} },
79         { 8.00, 3, {0x94,  60, 0x7f} },
80         { 8.25, 3, {0x94,  64, 0x7f} },
81         { 8.50, 3, {0x94,  67, 0x7f} },
82         { 8.75, 3, {0x94,  71, 0x7f} },
83         { 9.00, 3, {0x94,  72, 0x7f} },
84         { 9.00, 3, {0x84,  60, 0x00} },
85         { 9.25, 3, {0x84,  64, 0x00} },
86         { 9.50, 3, {0x84,  67, 0x00} },
87         { 9.75, 3, {0x84,  71, 0x00} },
88         {10.00, 3, {0x84,  72, 0x00} },
89         {10.00, 3, {0x95,  60, 0x7f} },
90         {10.25, 3, {0x95,  64, 0x7f} },
91         {10.50, 3, {0x95,  67, 0x7f} },
92         {10.75, 3, {0x95,  71, 0x7f} },
93         {11.00, 3, {0x95,  72, 0x7f} },
94         {11.00, 3, {0x85,  60, 0x00} },
95         {11.25, 3, {0x85,  64, 0x00} },
96         {11.50, 3, {0x85,  67, 0x00} },
97         {11.75, 3, {0x85,  71, 0x00} },
98         {12.00, 3, {0x85,  72, 0x00} },
99         {12.00, 3, {0x96,  60, 0x7f} },
100         {12.25, 3, {0x96,  64, 0x7f} },
101         {12.50, 3, {0x96,  67, 0x7f} },
102         {12.75, 3, {0x96,  71, 0x7f} },
103         {13.00, 3, {0x96,  72, 0x7f} },
104         {13.00, 3, {0x86,  60, 0x00} },
105         {13.25, 3, {0x86,  64, 0x00} },
106         {13.50, 3, {0x86,  67, 0x00} },
107         {13.75, 3, {0x86,  71, 0x00} },
108         {14.00, 3, {0x86,  72, 0x00} },
109         {14.00, 3, {0x97,  60, 0x7f} },
110         {14.25, 3, {0x97,  64, 0x7f} },
111         {14.50, 3, {0x97,  67, 0x7f} },
112         {14.75, 3, {0x97,  71, 0x7f} },
113         {15.00, 3, {0x97,  72, 0x7f} },
114         {15.00, 3, {0x87,  60, 0x00} },
115         {15.25, 3, {0x87,  64, 0x00} },
116         {15.50, 3, {0x87,  67, 0x00} },
117         {15.75, 3, {0x87,  71, 0x00} },
118         {16.00, 3, {0x87,  72, 0x00} },
119         {16.00, 3, {0x98,  60, 0x7f} },
120         {16.25, 3, {0x98,  64, 0x7f} },
121         {16.50, 3, {0x98,  67, 0x7f} },
122         {16.75, 3, {0x98,  71, 0x7f} },
123         {17.00, 3, {0x98,  72, 0x7f} },
124         {17.00, 3, {0x88,  60, 0x00} },
125         {17.25, 3, {0x88,  64, 0x00} },
126         {17.50, 3, {0x88,  67, 0x00} },
127         {17.75, 3, {0x88,  71, 0x00} },
128         {18.00, 3, {0x88,  72, 0x00} },
129         {18.00, 3, {0x99,  60, 0x7f} },
130         {18.25, 3, {0x99,  64, 0x7f} },
131         {18.50, 3, {0x99,  67, 0x7f} },
132         {18.75, 3, {0x99,  71, 0x7f} },
133         {19.00, 3, {0x99,  72, 0x7f} },
134         {19.00, 3, {0x89,  60, 0x00} },
135         {19.25, 3, {0x89,  64, 0x00} },
136         {19.50, 3, {0x89,  67, 0x00} },
137         {19.75, 3, {0x89,  71, 0x00} },
138         {20.00, 3, {0x89,  72, 0x00} },
139         {20.00, 3, {0x9a,  60, 0x7f} },
140         {20.25, 3, {0x9a,  64, 0x7f} },
141         {20.50, 3, {0x9a,  67, 0x7f} },
142         {20.75, 3, {0x9a,  71, 0x7f} },
143         {21.00, 3, {0x9a,  72, 0x7f} },
144         {21.00, 3, {0x8a,  60, 0x00} },
145         {21.25, 3, {0x8a,  64, 0x00} },
146         {21.50, 3, {0x8a,  67, 0x00} },
147         {21.75, 3, {0x8a,  71, 0x00} },
148         {22.00, 3, {0x8a,  72, 0x00} },
149         {22.00, 3, {0x9b,  60, 0x7f} },
150         {22.25, 3, {0x9b,  64, 0x7f} },
151         {22.50, 3, {0x9b,  67, 0x7f} },
152         {22.75, 3, {0x9b,  71, 0x7f} },
153         {23.00, 3, {0x9b,  72, 0x7f} },
154         {23.00, 3, {0x8b,  60, 0x00} },
155         {23.25, 3, {0x8b,  64, 0x00} },
156         {23.50, 3, {0x8b,  67, 0x00} },
157         {23.75, 3, {0x8b,  71, 0x00} },
158         {24.00, 3, {0x8b,  72, 0x00} },
159         {24.00, 3, {0x9c,  60, 0x7f} },
160         {24.25, 3, {0x9c,  64, 0x7f} },
161         {24.50, 3, {0x9c,  67, 0x7f} },
162         {24.75, 3, {0x9c,  71, 0x7f} },
163         {25.00, 3, {0x9c,  72, 0x7f} },
164         {25.00, 3, {0x8c,  60, 0x00} },
165         {25.25, 3, {0x8c,  64, 0x00} },
166         {25.50, 3, {0x8c,  67, 0x00} },
167         {25.75, 3, {0x8c,  71, 0x00} },
168         {26.00, 3, {0x8c,  72, 0x00} },
169         {26.00, 3, {0x9d,  60, 0x7f} },
170         {26.25, 3, {0x9d,  64, 0x7f} },
171         {26.50, 3, {0x9d,  67, 0x7f} },
172         {26.75, 3, {0x9d,  71, 0x7f} },
173         {27.00, 3, {0x9d,  72, 0x7f} },
174         {27.00, 3, {0x8d,  60, 0x00} },
175         {27.25, 3, {0x8d,  64, 0x00} },
176         {27.50, 3, {0x8d,  67, 0x00} },
177         {27.75, 3, {0x8d,  71, 0x00} },
178         {28.00, 3, {0x8d,  72, 0x00} },
179         {28.00, 3, {0x9e,  60, 0x7f} },
180         {28.25, 3, {0x9e,  64, 0x7f} },
181         {28.50, 3, {0x9e,  67, 0x7f} },
182         {28.75, 3, {0x9e,  71, 0x7f} },
183         {29.00, 3, {0x9e,  72, 0x7f} },
184         {29.00, 3, {0x8e,  60, 0x00} },
185         {29.25, 3, {0x8e,  64, 0x00} },
186         {29.50, 3, {0x8e,  67, 0x00} },
187         {29.75, 3, {0x8e,  71, 0x00} },
188         {30.00, 3, {0x8e,  72, 0x00} },
189         {30.00, 3, {0x9f,  60, 0x7f} },
190         {30.25, 3, {0x9f,  64, 0x7f} },
191         {30.50, 3, {0x9f,  67, 0x7f} },
192         {30.75, 3, {0x9f,  71, 0x7f} },
193         {31.00, 3, {0x9f,  72, 0x7f} },
194         {31.00, 3, {0x8f,  60, 0x00} },
195         {31.25, 3, {0x8f,  64, 0x00} },
196         {31.50, 3, {0x8f,  67, 0x00} },
197         {31.75, 3, {0x8f,  71, 0x00} },
198         {32.00, 3, {0x8f,  72, 0x00} },
199         {32.00, 3, {0xff, 255, 0xff} }, // sentinel
200 };
201
202 static const MIDISequence s2[] = { // channel 1, sweep all notes
203         { 0.00, 3, {0x90,   0, 0x7f} },
204         { 0.25, 3, {0x80,   0, 0x00} },
205         { 0.25, 3, {0x90,   1, 0x7f} },
206         { 0.50, 3, {0x80,   1, 0x00} },
207         { 0.50, 3, {0x90,   2, 0x7f} },
208         { 0.75, 3, {0x80,   2, 0x00} },
209         { 0.75, 3, {0x90,   3, 0x7f} },
210         { 1.00, 3, {0x80,   3, 0x00} },
211         { 1.00, 3, {0x90,   4, 0x7f} },
212         { 1.25, 3, {0x80,   4, 0x00} },
213         { 1.25, 3, {0x90,   5, 0x7f} },
214         { 1.50, 3, {0x80,   5, 0x00} },
215         { 1.50, 3, {0x90,   6, 0x7f} },
216         { 1.75, 3, {0x80,   6, 0x00} },
217         { 1.75, 3, {0x90,   7, 0x7f} },
218         { 2.00, 3, {0x80,   7, 0x00} },
219         { 2.00, 3, {0x90,   8, 0x7f} },
220         { 2.25, 3, {0x80,   8, 0x00} },
221         { 2.25, 3, {0x90,   9, 0x7f} },
222         { 2.50, 3, {0x80,   9, 0x00} },
223         { 2.50, 3, {0x90,  10, 0x7f} },
224         { 2.75, 3, {0x80,  10, 0x00} },
225         { 2.75, 3, {0x90,  11, 0x7f} },
226         { 3.00, 3, {0x80,  11, 0x00} },
227         { 3.00, 3, {0x90,  12, 0x7f} },
228         { 3.25, 3, {0x80,  12, 0x00} },
229         { 3.25, 3, {0x90,  13, 0x7f} },
230         { 3.50, 3, {0x80,  13, 0x00} },
231         { 3.50, 3, {0x90,  14, 0x7f} },
232         { 3.75, 3, {0x80,  14, 0x00} },
233         { 3.75, 3, {0x90,  15, 0x7f} },
234         { 4.00, 3, {0x80,  15, 0x00} },
235         { 4.00, 3, {0x90,  16, 0x7f} },
236         { 4.25, 3, {0x80,  16, 0x00} },
237         { 4.25, 3, {0x90,  17, 0x7f} },
238         { 4.50, 3, {0x80,  17, 0x00} },
239         { 4.50, 3, {0x90,  18, 0x7f} },
240         { 4.75, 3, {0x80,  18, 0x00} },
241         { 4.75, 3, {0x90,  19, 0x7f} },
242         { 5.00, 3, {0x80,  19, 0x00} },
243         { 5.00, 3, {0x90,  20, 0x7f} },
244         { 5.25, 3, {0x80,  20, 0x00} },
245         { 5.25, 3, {0x90,  21, 0x7f} },
246         { 5.50, 3, {0x80,  21, 0x00} },
247         { 5.50, 3, {0x90,  22, 0x7f} },
248         { 5.75, 3, {0x80,  22, 0x00} },
249         { 5.75, 3, {0x90,  23, 0x7f} },
250         { 6.00, 3, {0x80,  23, 0x00} },
251         { 6.00, 3, {0x90,  24, 0x7f} },
252         { 6.25, 3, {0x80,  24, 0x00} },
253         { 6.25, 3, {0x90,  25, 0x7f} },
254         { 6.50, 3, {0x80,  25, 0x00} },
255         { 6.50, 3, {0x90,  26, 0x7f} },
256         { 6.75, 3, {0x80,  26, 0x00} },
257         { 6.75, 3, {0x90,  27, 0x7f} },
258         { 7.00, 3, {0x80,  27, 0x00} },
259         { 7.00, 3, {0x90,  28, 0x7f} },
260         { 7.25, 3, {0x80,  28, 0x00} },
261         { 7.25, 3, {0x90,  29, 0x7f} },
262         { 7.50, 3, {0x80,  29, 0x00} },
263         { 7.50, 3, {0x90,  30, 0x7f} },
264         { 7.75, 3, {0x80,  30, 0x00} },
265         { 7.75, 3, {0x90,  31, 0x7f} },
266         { 8.00, 3, {0x80,  31, 0x00} },
267         { 8.00, 3, {0x90,  32, 0x7f} },
268         { 8.25, 3, {0x80,  32, 0x00} },
269         { 8.25, 3, {0x90,  33, 0x7f} },
270         { 8.50, 3, {0x80,  33, 0x00} },
271         { 8.50, 3, {0x90,  34, 0x7f} },
272         { 8.75, 3, {0x80,  34, 0x00} },
273         { 8.75, 3, {0x90,  35, 0x7f} },
274         { 9.00, 3, {0x80,  35, 0x00} },
275         { 9.00, 3, {0x90,  36, 0x7f} },
276         { 9.25, 3, {0x80,  36, 0x00} },
277         { 9.25, 3, {0x90,  37, 0x7f} },
278         { 9.50, 3, {0x80,  37, 0x00} },
279         { 9.50, 3, {0x90,  38, 0x7f} },
280         { 9.75, 3, {0x80,  38, 0x00} },
281         { 9.75, 3, {0x90,  39, 0x7f} },
282         {10.00, 3, {0x80,  39, 0x00} },
283         {10.00, 3, {0x90,  40, 0x7f} },
284         {10.25, 3, {0x80,  40, 0x00} },
285         {10.25, 3, {0x90,  41, 0x7f} },
286         {10.50, 3, {0x80,  41, 0x00} },
287         {10.50, 3, {0x90,  42, 0x7f} },
288         {10.75, 3, {0x80,  42, 0x00} },
289         {10.75, 3, {0x90,  43, 0x7f} },
290         {11.00, 3, {0x80,  43, 0x00} },
291         {11.00, 3, {0x90,  44, 0x7f} },
292         {11.25, 3, {0x80,  44, 0x00} },
293         {11.25, 3, {0x90,  45, 0x7f} },
294         {11.50, 3, {0x80,  45, 0x00} },
295         {11.50, 3, {0x90,  46, 0x7f} },
296         {11.75, 3, {0x80,  46, 0x00} },
297         {11.75, 3, {0x90,  47, 0x7f} },
298         {12.00, 3, {0x80,  47, 0x00} },
299         {12.00, 3, {0x90,  48, 0x7f} },
300         {12.25, 3, {0x80,  48, 0x00} },
301         {12.25, 3, {0x90,  49, 0x7f} },
302         {12.50, 3, {0x80,  49, 0x00} },
303         {12.50, 3, {0x90,  50, 0x7f} },
304         {12.75, 3, {0x80,  50, 0x00} },
305         {12.75, 3, {0x90,  51, 0x7f} },
306         {13.00, 3, {0x80,  51, 0x00} },
307         {13.00, 3, {0x90,  52, 0x7f} },
308         {13.25, 3, {0x80,  52, 0x00} },
309         {13.25, 3, {0x90,  53, 0x7f} },
310         {13.50, 3, {0x80,  53, 0x00} },
311         {13.50, 3, {0x90,  54, 0x7f} },
312         {13.75, 3, {0x80,  54, 0x00} },
313         {13.75, 3, {0x90,  55, 0x7f} },
314         {14.00, 3, {0x80,  55, 0x00} },
315         {14.00, 3, {0x90,  56, 0x7f} },
316         {14.25, 3, {0x80,  56, 0x00} },
317         {14.25, 3, {0x90,  57, 0x7f} },
318         {14.50, 3, {0x80,  57, 0x00} },
319         {14.50, 3, {0x90,  58, 0x7f} },
320         {14.75, 3, {0x80,  58, 0x00} },
321         {14.75, 3, {0x90,  59, 0x7f} },
322         {15.00, 3, {0x80,  59, 0x00} },
323         {15.00, 3, {0x90,  60, 0x7f} },
324         {15.25, 3, {0x80,  60, 0x00} },
325         {15.25, 3, {0x90,  61, 0x7f} },
326         {15.50, 3, {0x80,  61, 0x00} },
327         {15.50, 3, {0x90,  62, 0x7f} },
328         {15.75, 3, {0x80,  62, 0x00} },
329         {15.75, 3, {0x90,  63, 0x7f} },
330         {16.00, 3, {0x80,  63, 0x00} },
331         {16.00, 3, {0x90,  64, 0x7f} },
332         {16.25, 3, {0x80,  64, 0x00} },
333         {16.25, 3, {0x90,  65, 0x7f} },
334         {16.50, 3, {0x80,  65, 0x00} },
335         {16.50, 3, {0x90,  66, 0x7f} },
336         {16.75, 3, {0x80,  66, 0x00} },
337         {16.75, 3, {0x90,  67, 0x7f} },
338         {17.00, 3, {0x80,  67, 0x00} },
339         {17.00, 3, {0x90,  68, 0x7f} },
340         {17.25, 3, {0x80,  68, 0x00} },
341         {17.25, 3, {0x90,  69, 0x7f} },
342         {17.50, 3, {0x80,  69, 0x00} },
343         {17.50, 3, {0x90,  70, 0x7f} },
344         {17.75, 3, {0x80,  70, 0x00} },
345         {17.75, 3, {0x90,  71, 0x7f} },
346         {18.00, 3, {0x80,  71, 0x00} },
347         {18.00, 3, {0x90,  72, 0x7f} },
348         {18.25, 3, {0x80,  72, 0x00} },
349         {18.25, 3, {0x90,  73, 0x7f} },
350         {18.50, 3, {0x80,  73, 0x00} },
351         {18.50, 3, {0x90,  74, 0x7f} },
352         {18.75, 3, {0x80,  74, 0x00} },
353         {18.75, 3, {0x90,  75, 0x7f} },
354         {19.00, 3, {0x80,  75, 0x00} },
355         {19.00, 3, {0x90,  76, 0x7f} },
356         {19.25, 3, {0x80,  76, 0x00} },
357         {19.25, 3, {0x90,  77, 0x7f} },
358         {19.50, 3, {0x80,  77, 0x00} },
359         {19.50, 3, {0x90,  78, 0x7f} },
360         {19.75, 3, {0x80,  78, 0x00} },
361         {19.75, 3, {0x90,  79, 0x7f} },
362         {20.00, 3, {0x80,  79, 0x00} },
363         {20.00, 3, {0x90,  80, 0x7f} },
364         {20.25, 3, {0x80,  80, 0x00} },
365         {20.25, 3, {0x90,  81, 0x7f} },
366         {20.50, 3, {0x80,  81, 0x00} },
367         {20.50, 3, {0x90,  82, 0x7f} },
368         {20.75, 3, {0x80,  82, 0x00} },
369         {20.75, 3, {0x90,  83, 0x7f} },
370         {21.00, 3, {0x80,  83, 0x00} },
371         {21.00, 3, {0x90,  84, 0x7f} },
372         {21.25, 3, {0x80,  84, 0x00} },
373         {21.25, 3, {0x90,  85, 0x7f} },
374         {21.50, 3, {0x80,  85, 0x00} },
375         {21.50, 3, {0x90,  86, 0x7f} },
376         {21.75, 3, {0x80,  86, 0x00} },
377         {21.75, 3, {0x90,  87, 0x7f} },
378         {22.00, 3, {0x80,  87, 0x00} },
379         {22.00, 3, {0x90,  88, 0x7f} },
380         {22.25, 3, {0x80,  88, 0x00} },
381         {22.25, 3, {0x90,  89, 0x7f} },
382         {22.50, 3, {0x80,  89, 0x00} },
383         {22.50, 3, {0x90,  90, 0x7f} },
384         {22.75, 3, {0x80,  90, 0x00} },
385         {22.75, 3, {0x90,  91, 0x7f} },
386         {23.00, 3, {0x80,  91, 0x00} },
387         {23.00, 3, {0x90,  92, 0x7f} },
388         {23.25, 3, {0x80,  92, 0x00} },
389         {23.25, 3, {0x90,  93, 0x7f} },
390         {23.50, 3, {0x80,  93, 0x00} },
391         {23.50, 3, {0x90,  94, 0x7f} },
392         {23.75, 3, {0x80,  94, 0x00} },
393         {23.75, 3, {0x90,  95, 0x7f} },
394         {24.00, 3, {0x80,  95, 0x00} },
395         {24.00, 3, {0x90,  96, 0x7f} },
396         {24.25, 3, {0x80,  96, 0x00} },
397         {24.25, 3, {0x90,  97, 0x7f} },
398         {24.50, 3, {0x80,  97, 0x00} },
399         {24.50, 3, {0x90,  98, 0x7f} },
400         {24.75, 3, {0x80,  98, 0x00} },
401         {24.75, 3, {0x90,  99, 0x7f} },
402         {25.00, 3, {0x80,  99, 0x00} },
403         {25.00, 3, {0x90, 100, 0x7f} },
404         {25.25, 3, {0x80, 100, 0x00} },
405         {25.25, 3, {0x90, 101, 0x7f} },
406         {25.50, 3, {0x80, 101, 0x00} },
407         {25.50, 3, {0x90, 102, 0x7f} },
408         {25.75, 3, {0x80, 102, 0x00} },
409         {25.75, 3, {0x90, 103, 0x7f} },
410         {26.00, 3, {0x80, 103, 0x00} },
411         {26.00, 3, {0x90, 104, 0x7f} },
412         {26.25, 3, {0x80, 104, 0x00} },
413         {26.25, 3, {0x90, 105, 0x7f} },
414         {26.50, 3, {0x80, 105, 0x00} },
415         {26.50, 3, {0x90, 106, 0x7f} },
416         {26.75, 3, {0x80, 106, 0x00} },
417         {26.75, 3, {0x90, 107, 0x7f} },
418         {27.00, 3, {0x80, 107, 0x00} },
419         {27.00, 3, {0x90, 108, 0x7f} },
420         {27.25, 3, {0x80, 108, 0x00} },
421         {27.25, 3, {0x90, 109, 0x7f} },
422         {27.50, 3, {0x80, 109, 0x00} },
423         {27.50, 3, {0x90, 110, 0x7f} },
424         {27.75, 3, {0x80, 110, 0x00} },
425         {27.75, 3, {0x90, 111, 0x7f} },
426         {28.00, 3, {0x80, 111, 0x00} },
427         {28.00, 3, {0x90, 112, 0x7f} },
428         {28.25, 3, {0x80, 112, 0x00} },
429         {28.25, 3, {0x90, 113, 0x7f} },
430         {28.50, 3, {0x80, 113, 0x00} },
431         {28.50, 3, {0x90, 114, 0x7f} },
432         {28.75, 3, {0x80, 114, 0x00} },
433         {28.75, 3, {0x90, 115, 0x7f} },
434         {29.00, 3, {0x80, 115, 0x00} },
435         {29.00, 3, {0x90, 116, 0x7f} },
436         {29.25, 3, {0x80, 116, 0x00} },
437         {29.25, 3, {0x90, 117, 0x7f} },
438         {29.50, 3, {0x80, 117, 0x00} },
439         {29.50, 3, {0x90, 118, 0x7f} },
440         {29.75, 3, {0x80, 118, 0x00} },
441         {29.75, 3, {0x90, 119, 0x7f} },
442         {30.00, 3, {0x80, 119, 0x00} },
443         {30.00, 3, {0x90, 120, 0x7f} },
444         {30.25, 3, {0x80, 120, 0x00} },
445         {30.25, 3, {0x90, 121, 0x7f} },
446         {30.50, 3, {0x80, 121, 0x00} },
447         {30.50, 3, {0x90, 122, 0x7f} },
448         {30.75, 3, {0x80, 122, 0x00} },
449         {30.75, 3, {0x90, 123, 0x7f} },
450         {31.00, 3, {0x80, 123, 0x00} },
451         {31.00, 3, {0x90, 124, 0x7f} },
452         {31.25, 3, {0x80, 124, 0x00} },
453         {31.25, 3, {0x90, 125, 0x7f} },
454         {31.50, 3, {0x80, 125, 0x00} },
455         {31.50, 3, {0x90, 126, 0x7f} },
456         {31.75, 3, {0x80, 126, 0x00} },
457         {31.75, 3, {0x90, 127, 0x7f} },
458         {32.00, 3, {0x80, 127, 0x00} },
459         {32.00, 3, {0xff, 255, 0xff} }, // sentinel
460 };
461
462 static const MIDISequence s3[] = { // velocity sweep
463         { 0.000, 3, {0x90, 60, 0x00} },
464         { 0.125, 3, {0x80, 60, 0x00} },
465         { 0.125, 3, {0x90, 61, 0x01} },
466         { 0.250, 3, {0x80, 61, 0x00} },
467         { 0.250, 3, {0x90, 60, 0x02} },
468         { 0.375, 3, {0x80, 60, 0x00} },
469         { 0.375, 3, {0x90, 61, 0x03} },
470         { 0.500, 3, {0x80, 61, 0x00} },
471         { 0.500, 3, {0x90, 60, 0x04} },
472         { 0.625, 3, {0x80, 60, 0x00} },
473         { 0.625, 3, {0x90, 61, 0x05} },
474         { 0.750, 3, {0x80, 61, 0x00} },
475         { 0.750, 3, {0x90, 60, 0x06} },
476         { 0.875, 3, {0x80, 60, 0x00} },
477         { 0.875, 3, {0x90, 61, 0x07} },
478         { 1.000, 3, {0x80, 61, 0x00} },
479         { 1.000, 3, {0x90, 60, 0x08} },
480         { 1.125, 3, {0x80, 60, 0x00} },
481         { 1.125, 3, {0x90, 61, 0x09} },
482         { 1.250, 3, {0x80, 61, 0x00} },
483         { 1.250, 3, {0x90, 60, 0x0a} },
484         { 1.375, 3, {0x80, 60, 0x00} },
485         { 1.375, 3, {0x90, 61, 0x0b} },
486         { 1.500, 3, {0x80, 61, 0x00} },
487         { 1.500, 3, {0x90, 60, 0x0c} },
488         { 1.625, 3, {0x80, 60, 0x00} },
489         { 1.625, 3, {0x90, 61, 0x0d} },
490         { 1.750, 3, {0x80, 61, 0x00} },
491         { 1.750, 3, {0x90, 60, 0x0e} },
492         { 1.875, 3, {0x80, 60, 0x00} },
493         { 1.875, 3, {0x90, 61, 0x0f} },
494         { 2.000, 3, {0x80, 61, 0x00} },
495         { 2.000, 3, {0x90, 60, 0x10} },
496         { 2.125, 3, {0x80, 60, 0x00} },
497         { 2.125, 3, {0x90, 61, 0x11} },
498         { 2.250, 3, {0x80, 61, 0x00} },
499         { 2.250, 3, {0x90, 60, 0x12} },
500         { 2.375, 3, {0x80, 60, 0x00} },
501         { 2.375, 3, {0x90, 61, 0x13} },
502         { 2.500, 3, {0x80, 61, 0x00} },
503         { 2.500, 3, {0x90, 60, 0x14} },
504         { 2.625, 3, {0x80, 60, 0x00} },
505         { 2.625, 3, {0x90, 61, 0x15} },
506         { 2.750, 3, {0x80, 61, 0x00} },
507         { 2.750, 3, {0x90, 60, 0x16} },
508         { 2.875, 3, {0x80, 60, 0x00} },
509         { 2.875, 3, {0x90, 61, 0x17} },
510         { 3.000, 3, {0x80, 61, 0x00} },
511         { 3.000, 3, {0x90, 60, 0x18} },
512         { 3.125, 3, {0x80, 60, 0x00} },
513         { 3.125, 3, {0x90, 61, 0x19} },
514         { 3.250, 3, {0x80, 61, 0x00} },
515         { 3.250, 3, {0x90, 60, 0x1a} },
516         { 3.375, 3, {0x80, 60, 0x00} },
517         { 3.375, 3, {0x90, 61, 0x1b} },
518         { 3.500, 3, {0x80, 61, 0x00} },
519         { 3.500, 3, {0x90, 60, 0x1c} },
520         { 3.625, 3, {0x80, 60, 0x00} },
521         { 3.625, 3, {0x90, 61, 0x1d} },
522         { 3.750, 3, {0x80, 61, 0x00} },
523         { 3.750, 3, {0x90, 60, 0x1e} },
524         { 3.875, 3, {0x80, 60, 0x00} },
525         { 3.875, 3, {0x90, 61, 0x1f} },
526         { 4.000, 3, {0x80, 61, 0x00} },
527         { 4.000, 3, {0x90, 60, 0x20} },
528         { 4.125, 3, {0x80, 60, 0x00} },
529         { 4.125, 3, {0x90, 61, 0x21} },
530         { 4.250, 3, {0x80, 61, 0x00} },
531         { 4.250, 3, {0x90, 60, 0x22} },
532         { 4.375, 3, {0x80, 60, 0x00} },
533         { 4.375, 3, {0x90, 61, 0x23} },
534         { 4.500, 3, {0x80, 61, 0x00} },
535         { 4.500, 3, {0x90, 60, 0x24} },
536         { 4.625, 3, {0x80, 60, 0x00} },
537         { 4.625, 3, {0x90, 61, 0x25} },
538         { 4.750, 3, {0x80, 61, 0x00} },
539         { 4.750, 3, {0x90, 60, 0x26} },
540         { 4.875, 3, {0x80, 60, 0x00} },
541         { 4.875, 3, {0x90, 61, 0x27} },
542         { 5.000, 3, {0x80, 61, 0x00} },
543         { 5.000, 3, {0x90, 60, 0x28} },
544         { 5.125, 3, {0x80, 60, 0x00} },
545         { 5.125, 3, {0x90, 61, 0x29} },
546         { 5.250, 3, {0x80, 61, 0x00} },
547         { 5.250, 3, {0x90, 60, 0x2a} },
548         { 5.375, 3, {0x80, 60, 0x00} },
549         { 5.375, 3, {0x90, 61, 0x2b} },
550         { 5.500, 3, {0x80, 61, 0x00} },
551         { 5.500, 3, {0x90, 60, 0x2c} },
552         { 5.625, 3, {0x80, 60, 0x00} },
553         { 5.625, 3, {0x90, 61, 0x2d} },
554         { 5.750, 3, {0x80, 61, 0x00} },
555         { 5.750, 3, {0x90, 60, 0x2e} },
556         { 5.875, 3, {0x80, 60, 0x00} },
557         { 5.875, 3, {0x90, 61, 0x2f} },
558         { 6.000, 3, {0x80, 61, 0x00} },
559         { 6.000, 3, {0x90, 60, 0x30} },
560         { 6.125, 3, {0x80, 60, 0x00} },
561         { 6.125, 3, {0x90, 61, 0x31} },
562         { 6.250, 3, {0x80, 61, 0x00} },
563         { 6.250, 3, {0x90, 60, 0x32} },
564         { 6.375, 3, {0x80, 60, 0x00} },
565         { 6.375, 3, {0x90, 61, 0x33} },
566         { 6.500, 3, {0x80, 61, 0x00} },
567         { 6.500, 3, {0x90, 60, 0x34} },
568         { 6.625, 3, {0x80, 60, 0x00} },
569         { 6.625, 3, {0x90, 61, 0x35} },
570         { 6.750, 3, {0x80, 61, 0x00} },
571         { 6.750, 3, {0x90, 60, 0x36} },
572         { 6.875, 3, {0x80, 60, 0x00} },
573         { 6.875, 3, {0x90, 61, 0x37} },
574         { 7.000, 3, {0x80, 61, 0x00} },
575         { 7.000, 3, {0x90, 60, 0x38} },
576         { 7.125, 3, {0x80, 60, 0x00} },
577         { 7.125, 3, {0x90, 61, 0x39} },
578         { 7.250, 3, {0x80, 61, 0x00} },
579         { 7.250, 3, {0x90, 60, 0x3a} },
580         { 7.375, 3, {0x80, 60, 0x00} },
581         { 7.375, 3, {0x90, 61, 0x3b} },
582         { 7.500, 3, {0x80, 61, 0x00} },
583         { 7.500, 3, {0x90, 60, 0x3c} },
584         { 7.625, 3, {0x80, 60, 0x00} },
585         { 7.625, 3, {0x90, 61, 0x3d} },
586         { 7.750, 3, {0x80, 61, 0x00} },
587         { 7.750, 3, {0x90, 60, 0x3e} },
588         { 7.875, 3, {0x80, 60, 0x00} },
589         { 7.875, 3, {0x90, 61, 0x3f} },
590         { 8.000, 3, {0x80, 61, 0x00} },
591         { 8.000, 3, {0x90, 60, 0x40} },
592         { 8.125, 3, {0x80, 60, 0x00} },
593         { 8.125, 3, {0x90, 61, 0x41} },
594         { 8.250, 3, {0x80, 61, 0x00} },
595         { 8.250, 3, {0x90, 60, 0x42} },
596         { 8.375, 3, {0x80, 60, 0x00} },
597         { 8.375, 3, {0x90, 61, 0x43} },
598         { 8.500, 3, {0x80, 61, 0x00} },
599         { 8.500, 3, {0x90, 60, 0x44} },
600         { 8.625, 3, {0x80, 60, 0x00} },
601         { 8.625, 3, {0x90, 61, 0x45} },
602         { 8.750, 3, {0x80, 61, 0x00} },
603         { 8.750, 3, {0x90, 60, 0x46} },
604         { 8.875, 3, {0x80, 60, 0x00} },
605         { 8.875, 3, {0x90, 61, 0x47} },
606         { 9.000, 3, {0x80, 61, 0x00} },
607         { 9.000, 3, {0x90, 60, 0x48} },
608         { 9.125, 3, {0x80, 60, 0x00} },
609         { 9.125, 3, {0x90, 61, 0x49} },
610         { 9.250, 3, {0x80, 61, 0x00} },
611         { 9.250, 3, {0x90, 60, 0x4a} },
612         { 9.375, 3, {0x80, 60, 0x00} },
613         { 9.375, 3, {0x90, 61, 0x4b} },
614         { 9.500, 3, {0x80, 61, 0x00} },
615         { 9.500, 3, {0x90, 60, 0x4c} },
616         { 9.625, 3, {0x80, 60, 0x00} },
617         { 9.625, 3, {0x90, 61, 0x4d} },
618         { 9.750, 3, {0x80, 61, 0x00} },
619         { 9.750, 3, {0x90, 60, 0x4e} },
620         { 9.875, 3, {0x80, 60, 0x00} },
621         { 9.875, 3, {0x90, 61, 0x4f} },
622         {10.000, 3, {0x80, 61, 0x00} },
623         {10.000, 3, {0x90, 60, 0x50} },
624         {10.125, 3, {0x80, 60, 0x00} },
625         {10.125, 3, {0x90, 61, 0x51} },
626         {10.250, 3, {0x80, 61, 0x00} },
627         {10.250, 3, {0x90, 60, 0x52} },
628         {10.375, 3, {0x80, 60, 0x00} },
629         {10.375, 3, {0x90, 61, 0x53} },
630         {10.500, 3, {0x80, 61, 0x00} },
631         {10.500, 3, {0x90, 60, 0x54} },
632         {10.625, 3, {0x80, 60, 0x00} },
633         {10.625, 3, {0x90, 61, 0x55} },
634         {10.750, 3, {0x80, 61, 0x00} },
635         {10.750, 3, {0x90, 60, 0x56} },
636         {10.875, 3, {0x80, 60, 0x00} },
637         {10.875, 3, {0x90, 61, 0x57} },
638         {11.000, 3, {0x80, 61, 0x00} },
639         {11.000, 3, {0x90, 60, 0x58} },
640         {11.125, 3, {0x80, 60, 0x00} },
641         {11.125, 3, {0x90, 61, 0x59} },
642         {11.250, 3, {0x80, 61, 0x00} },
643         {11.250, 3, {0x90, 60, 0x5a} },
644         {11.375, 3, {0x80, 60, 0x00} },
645         {11.375, 3, {0x90, 61, 0x5b} },
646         {11.500, 3, {0x80, 61, 0x00} },
647         {11.500, 3, {0x90, 60, 0x5c} },
648         {11.625, 3, {0x80, 60, 0x00} },
649         {11.625, 3, {0x90, 61, 0x5d} },
650         {11.750, 3, {0x80, 61, 0x00} },
651         {11.750, 3, {0x90, 60, 0x5e} },
652         {11.875, 3, {0x80, 60, 0x00} },
653         {11.875, 3, {0x90, 61, 0x5f} },
654         {12.000, 3, {0x80, 61, 0x00} },
655         {12.000, 3, {0x90, 60, 0x60} },
656         {12.125, 3, {0x80, 60, 0x00} },
657         {12.125, 3, {0x90, 61, 0x61} },
658         {12.250, 3, {0x80, 61, 0x00} },
659         {12.250, 3, {0x90, 60, 0x62} },
660         {12.375, 3, {0x80, 60, 0x00} },
661         {12.375, 3, {0x90, 61, 0x63} },
662         {12.500, 3, {0x80, 61, 0x00} },
663         {12.500, 3, {0x90, 60, 0x64} },
664         {12.625, 3, {0x80, 60, 0x00} },
665         {12.625, 3, {0x90, 61, 0x65} },
666         {12.750, 3, {0x80, 61, 0x00} },
667         {12.750, 3, {0x90, 60, 0x66} },
668         {12.875, 3, {0x80, 60, 0x00} },
669         {12.875, 3, {0x90, 61, 0x67} },
670         {13.000, 3, {0x80, 61, 0x00} },
671         {13.000, 3, {0x90, 60, 0x68} },
672         {13.125, 3, {0x80, 60, 0x00} },
673         {13.125, 3, {0x90, 61, 0x69} },
674         {13.250, 3, {0x80, 61, 0x00} },
675         {13.250, 3, {0x90, 60, 0x6a} },
676         {13.375, 3, {0x80, 60, 0x00} },
677         {13.375, 3, {0x90, 61, 0x6b} },
678         {13.500, 3, {0x80, 61, 0x00} },
679         {13.500, 3, {0x90, 60, 0x6c} },
680         {13.625, 3, {0x80, 60, 0x00} },
681         {13.625, 3, {0x90, 61, 0x6d} },
682         {13.750, 3, {0x80, 61, 0x00} },
683         {13.750, 3, {0x90, 60, 0x6e} },
684         {13.875, 3, {0x80, 60, 0x00} },
685         {13.875, 3, {0x90, 61, 0x6f} },
686         {14.000, 3, {0x80, 61, 0x00} },
687         {14.000, 3, {0x90, 60, 0x70} },
688         {14.125, 3, {0x80, 60, 0x00} },
689         {14.125, 3, {0x90, 61, 0x71} },
690         {14.250, 3, {0x80, 61, 0x00} },
691         {14.250, 3, {0x90, 60, 0x72} },
692         {14.375, 3, {0x80, 60, 0x00} },
693         {14.375, 3, {0x90, 61, 0x73} },
694         {14.500, 3, {0x80, 61, 0x00} },
695         {14.500, 3, {0x90, 60, 0x74} },
696         {14.625, 3, {0x80, 60, 0x00} },
697         {14.625, 3, {0x90, 61, 0x75} },
698         {14.750, 3, {0x80, 61, 0x00} },
699         {14.750, 3, {0x90, 60, 0x76} },
700         {14.875, 3, {0x80, 60, 0x00} },
701         {14.875, 3, {0x90, 61, 0x77} },
702         {15.000, 3, {0x80, 61, 0x00} },
703         {15.000, 3, {0x90, 60, 0x78} },
704         {15.125, 3, {0x80, 60, 0x00} },
705         {15.125, 3, {0x90, 61, 0x79} },
706         {15.250, 3, {0x80, 61, 0x00} },
707         {15.250, 3, {0x90, 60, 0x7a} },
708         {15.375, 3, {0x80, 60, 0x00} },
709         {15.375, 3, {0x90, 61, 0x7b} },
710         {15.500, 3, {0x80, 61, 0x00} },
711         {15.500, 3, {0x90, 60, 0x7c} },
712         {15.625, 3, {0x80, 60, 0x00} },
713         {15.625, 3, {0x90, 61, 0x7d} },
714         {15.750, 3, {0x80, 61, 0x00} },
715         {15.750, 3, {0x90, 60, 0x7e} },
716         {15.875, 3, {0x80, 60, 0x00} },
717         {15.875, 3, {0x90, 61, 0x7f} },
718         {16.000, 3, {0x80, 61, 0x00} },
719         {16.000, 3, {0xff, 255, 0xff} }, // sentinel
720 };
721
722 static const MIDISequence s4[] = { // channel1, sustain pedal test
723         { 0.00, 3, {0x90,   64, 0x7f} },
724         { 0.50, 3, {0x80,   64, 0x00} },
725         { 1.00, 3, {0xB0, 0x40, 0x7f} }, // CC64, Sustain on
726         { 1.25, 3, {0x90,   64, 0x7f} },
727         { 1.75, 3, {0x80,   64, 0x00} },
728         { 2.25, 3, {0x90,   66, 0x7f} },
729         { 3.00, 3, {0xB0, 0x40, 0x00} }, // CC64, Sustain off
730         { 3.25, 3, {0x80,   66, 0x00} },
731         { 3.25, 3, {0x90,   64, 0x7f} },
732         { 3.75, 3, {0x80,   64, 0x00} },
733         { 4.00, 3, {0xff,  255, 0xff} }, // sentinel
734 };
735
736 static const MIDISequence s5[] = { // channel1, CCs only
737         { 0.00, 3, {0xB0, 0x01, 0x00} },
738         { 0.25, 3, {0xB0, 0x01, 0x10} },
739         { 0.50, 3, {0xB0, 0x01, 0x40} },
740         { 0.75, 3, {0xB0, 0x01, 0x7f} },
741         { 1.00, 3, {0xB0, 0x01, 0x60} },
742         { 1.25, 3, {0xB0, 0x01, 0x55} },
743         { 1.50, 3, {0xB0, 0x01, 0x20} },
744         { 1.75, 3, {0xB0, 0x01, 0x1f} },
745         { 2.00, 3, {0xB0, 0x01, 0x1e} },
746         { 2.25, 3, {0xB0, 0x01, 0x1d} },
747         { 2.50, 3, {0xB0, 0x01, 0x1c} },
748         { 2.75, 3, {0xB0, 0x01, 0x1b} },
749         { 3.50, 3, {0xB0, 0x01, 0x00} },
750         { 4.00, 3, {0xB0, 0x01, 0x00} },
751         { 4.25, 3, {0xB0, 0x01, 0x7f} },
752         { 4.50, 3, {0xB0, 0x01, 0x40} },
753         { 4.75, 3, {0xB0, 0x01, 0x40} },
754         { 5.00, 3, {0xff,  255, 0xff} }, // sentinel
755 };
756
757 static const MIDISequence s6[] = { // channel1, nonsense
758         { 0.00, 3, {0x90,   64, 0x7f} }, // note-on
759         { 0.50, 3, {0x90,   64, 0x7f} }, // duplicate note-on
760         { 1.00, 3, {0x80,   64, 0x00} }, // note-off
761         { 1.50, 3, {0x80,   64, 0x00} }, // dup note-off
762         { 2.00, 3, {0x80,   64, 0x00} }, // 3rd note-off
763         { 3.00, 3, {0x90,   66, 0x7f} },
764         { 3.50, 3, {0x90,   66, 0x00} }, // note-on velocity zero
765         { 3.75, 3, {0x80,   66, 0x00} }, // note-off
766         { 4.00, 3, {0xff,  255, 0xff} }, // sentinel
767 };
768
769 static const MIDISequence *sequences[] = {
770         s0, s1, s2, s3, s4, s5, s6
771 };
772
773 static const char *sequence_names[] = {
774         "Short Sequence",
775         "Cmaj7, all channels",
776         "Note Sweep, chan 1",
777         "Velocity Sweep, chan 1",
778         "Sustain Pedal Test",
779         "CCs only",
780         "Nonsense, Dups"
781 };
782
783 }} // namespace
784
785 #define NUM_MIDI_EVENT_GENERATORS (sizeof (ARDOUR::DummyMidiData::sequences) / sizeof(ARDOUR::DummyMidiData::MIDISequence*))
786
787 #endif