OSC: Changed gainVCA to gainfader as VCA is already used.
[ardour.git] / gtk2_ardour / timecode_tester.cc
1 /*
2     Copyright (C) 2012 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
20 void
21 AudioClock::timecode_tester ()
22 {
23 #if 0
24 #define Timecode_SAMPLE_TEST_1
25 #define Timecode_SAMPLE_TEST_2
26 #define Timecode_SAMPLE_TEST_3
27 #define Timecode_SAMPLE_TEST_4
28 #define Timecode_SAMPLE_TEST_5
29 #define Timecode_SAMPLE_TEST_6
30 #define Timecode_SAMPLE_TEST_7
31
32         // Testcode for timecode<->sample conversions (P.S.)
33         Timecode::Time timecode1;
34         framepos_t sample1;
35         framepos_t oldsample = 0;
36         Timecode::Time timecode2;
37         framecnt_t sample_increment;
38
39         sample_increment = (framecnt_t)rint(_session->frame_rate() / _session->timecode_frames_per_second);
40
41 #ifdef Timecode_SAMPLE_TEST_1
42         // Test 1: use_offset = false, use_subframes = false
43         cout << "use_offset = false, use_subframes = false" << endl;
44         for (int i = 0; i < 108003; i++) {
45                 _session->timecode_to_sample( timecode1, sample1, false /* use_offset */, false /* use_subframes */ );
46                 _session->sample_to_timecode( sample1, timecode2, false /* use_offset */, false /* use_subframes */ );
47
48                 if ((i > 0) && ( ((sample1 - oldsample) != sample_increment) && ((sample1 - oldsample) != (sample_increment + 1)) && ((sample1 - oldsample) != (sample_increment - 1)))) {
49                         cout << "ERROR: sample increment not right: " << (sample1 - oldsample) << " != " << sample_increment << endl;
50                         cout << "timecode1: " << timecode1.hours << ":" << timecode1.minutes << ":" << timecode1.seconds << ":" << timecode1.frames << "::" << timecode1.subframes << " -> ";
51                         cout << "sample: " << sample1 << endl;
52                         cout << "sample: " << sample1 << " -> ";
53                         cout << "timecode2: " << timecode2.hours << ":" << timecode2.minutes << ":" << timecode2.seconds << ":" << timecode2.frames << "::" << timecode2.subframes << endl;
54                         break;
55                 }
56
57                 if (timecode2.hours != timecode1.hours || timecode2.minutes != timecode1.minutes || timecode2.seconds != timecode2.seconds || timecode2.frames != timecode1.frames) {
58                         cout << "ERROR: timecode2 not equal timecode1" << endl;
59                         cout << "timecode1: " << timecode1.hours << ":" << timecode1.minutes << ":" << timecode1.seconds << ":" << timecode1.frames << "::" << timecode1.subframes << " -> ";
60                         cout << "sample: " << sample1 << endl;
61                         cout << "sample: " << sample1 << " -> ";
62                         cout << "timecode2: " << timecode2.hours << ":" << timecode2.minutes << ":" << timecode2.seconds << ":" << timecode2.frames << "::" << timecode2.subframes << endl;
63                         break;
64                 }
65                 oldsample = sample1;
66                 _session->timecode_increment( timecode1 );
67         }
68
69         cout << "sample_increment: " << sample_increment << endl;
70         cout << "sample: " << sample1 << " -> ";
71         cout << "timecode: " << timecode2.hours << ":" << timecode2.minutes << ":" << timecode2.seconds << ":" << timecode2.frames << "::" << timecode2.subframes << endl;
72 #endif
73
74 #ifdef Timecode_SAMPLE_TEST_2
75         // Test 2: use_offset = true, use_subframes = false
76         cout << "use_offset = true, use_subframes = false" << endl;
77
78         timecode1.hours = 0;
79         timecode1.minutes = 0;
80         timecode1.seconds = 0;
81         timecode1.frames = 0;
82         timecode1.subframes = 0;
83         sample1 = oldsample = 0;
84
85         _session->sample_to_timecode( sample1, timecode1, true /* use_offset */, false /* use_subframes */ );
86         cout << "Starting at sample: " << sample1 << " -> ";
87         cout << "timecode: " << (timecode1.negative ? "-" : "") << timecode1.hours << ":" << timecode1.minutes << ":" << timecode1.seconds << ":" << timecode1.frames << "::" << timecode1.subframes << endl;
88
89         for (int i = 0; i < 108003; i++) {
90                 _session->timecode_to_sample( timecode1, sample1, true /* use_offset */, false /* use_subframes */ );
91                 _session->sample_to_timecode( sample1, timecode2, true /* use_offset */, false /* use_subframes */ );
92
93 //     cout << "timecode: " << (timecode1.negative ? "-" : "") << timecode1.hours << ":" << timecode1.minutes << ":" << timecode1.seconds << ":" << timecode1.frames << "::" << timecode1.subframes << " -> ";
94 //     cout << "sample: " << sample1 << endl;
95 //     cout << "sample: " << sample1 << " -> ";
96 //     cout << "timecode: " << (timecode2.negative ? "-" : "") << timecode2.hours << ":" << timecode2.minutes << ":" << timecode2.seconds << ":" << timecode2.frames << "::" << timecode2.subframes << endl;
97
98                 if ((i > 0) && ( ((sample1 - oldsample) != sample_increment) && ((sample1 - oldsample) != (sample_increment + 1)) && ((sample1 - oldsample) != (sample_increment - 1)))) {
99                         cout << "ERROR: sample increment not right: " << (sample1 - oldsample) << " != " << sample_increment << endl;
100                         cout << "timecode1: " << (timecode1.negative ? "-" : "") << timecode1.hours << ":" << timecode1.minutes << ":" << timecode1.seconds << ":" << timecode1.frames << "::" << timecode1.subframes << " -> ";
101                         cout << "sample: " << sample1 << endl;
102                         cout << "sample: " << sample1 << " -> ";
103                         cout << "timecode2: " << (timecode2.negative ? "-" : "") << timecode2.hours << ":" << timecode2.minutes << ":" << timecode2.seconds << ":" << timecode2.frames << "::" << timecode2.subframes << endl;
104                         break;
105                 }
106
107                 if (timecode2.hours != timecode1.hours || timecode2.minutes != timecode1.minutes || timecode2.seconds != timecode2.seconds || timecode2.frames != timecode1.frames) {
108                         cout << "ERROR: timecode2 not equal timecode1" << endl;
109                         cout << "timecode1: " << (timecode1.negative ? "-" : "") << timecode1.hours << ":" << timecode1.minutes << ":" << timecode1.seconds << ":" << timecode1.frames << "::" << timecode1.subframes << " -> ";
110                         cout << "sample: " << sample1 << endl;
111                         cout << "sample: " << sample1 << " -> ";
112                         cout << "timecode2: " << (timecode2.negative ? "-" : "") << timecode2.hours << ":" << timecode2.minutes << ":" << timecode2.seconds << ":" << timecode2.frames << "::" << timecode2.subframes << endl;
113                         break;
114                 }
115                 oldsample = sample1;
116                 _session->timecode_increment( timecode1 );
117         }
118
119         cout << "sample_increment: " << sample_increment << endl;
120         cout << "sample: " << sample1 << " -> ";
121         cout << "timecode: " << (timecode2.negative ? "-" : "") << timecode2.hours << ":" << timecode2.minutes << ":" << timecode2.seconds << ":" << timecode2.frames << "::" << timecode2.subframes << endl;
122 #endif
123
124 #ifdef Timecode_SAMPLE_TEST_3
125         // Test 3: use_offset = true, use_subframes = false, decrement
126         cout << "use_offset = true, use_subframes = false, decrement" << endl;
127
128         _session->sample_to_timecode( sample1, timecode1, true /* use_offset */, false /* use_subframes */ );
129         cout << "Starting at sample: " << sample1 << " -> ";
130         cout << "timecode: " << (timecode1.negative ? "-" : "") << timecode1.hours << ":" << timecode1.minutes << ":" << timecode1.seconds << ":" << timecode1.frames << "::" << timecode1.subframes << endl;
131
132         for (int i = 0; i < 108003; i++) {
133                 _session->timecode_to_sample( timecode1, sample1, true /* use_offset */, false /* use_subframes */ );
134                 _session->sample_to_timecode( sample1, timecode2, true /* use_offset */, false /* use_subframes */ );
135
136 //     cout << "timecode: " << (timecode1.negative ? "-" : "") << timecode1.hours << ":" << timecode1.minutes << ":" << timecode1.seconds << ":" << timecode1.frames << "::" << timecode1.subframes << " -> ";
137 //     cout << "sample: " << sample1 << endl;
138 //     cout << "sample: " << sample1 << " -> ";
139 //     cout << "timecode: " << (timecode2.negative ? "-" : "") << timecode2.hours << ":" << timecode2.minutes << ":" << timecode2.seconds << ":" << timecode2.frames << "::" << timecode2.subframes << endl;
140
141                 if ((i > 0) && ( ((oldsample - sample1) != sample_increment) && ((oldsample - sample1) != (sample_increment + 1)) && ((oldsample - sample1) != (sample_increment - 1)))) {
142                         cout << "ERROR: sample increment not right: " << (oldsample - sample1) << " != " << sample_increment << endl;
143                         cout << "timecode1: " << (timecode1.negative ? "-" : "") << timecode1.hours << ":" << timecode1.minutes << ":" << timecode1.seconds << ":" << timecode1.frames << "::" << timecode1.subframes << " -> ";
144                         cout << "sample: " << sample1 << endl;
145                         cout << "sample: " << sample1 << " -> ";
146                         cout << "timecode2: " << (timecode2.negative ? "-" : "") << timecode2.hours << ":" << timecode2.minutes << ":" << timecode2.seconds << ":" << timecode2.frames << "::" << timecode2.subframes << endl;
147                         break;
148                 }
149
150                 if (timecode2.hours != timecode1.hours || timecode2.minutes != timecode1.minutes || timecode2.seconds != timecode2.seconds || timecode2.frames != timecode1.frames) {
151                         cout << "ERROR: timecode2 not equal timecode1" << endl;
152                         cout << "timecode1: " << (timecode1.negative ? "-" : "") << timecode1.hours << ":" << timecode1.minutes << ":" << timecode1.seconds << ":" << timecode1.frames << "::" << timecode1.subframes << " -> ";
153                         cout << "sample: " << sample1 << endl;
154                         cout << "sample: " << sample1 << " -> ";
155                         cout << "timecode2: " << (timecode2.negative ? "-" : "") << timecode2.hours << ":" << timecode2.minutes << ":" << timecode2.seconds << ":" << timecode2.frames << "::" << timecode2.subframes << endl;
156                         break;
157                 }
158                 oldsample = sample1;
159                 _session->timecode_decrement( timecode1 );
160         }
161
162         cout << "sample_decrement: " << sample_increment << endl;
163         cout << "sample: " << sample1 << " -> ";
164         cout << "timecode: " << (timecode2.negative ? "-" : "") << timecode2.hours << ":" << timecode2.minutes << ":" << timecode2.seconds << ":" << timecode2.frames << "::" << timecode2.subframes << endl;
165 #endif
166
167
168 #ifdef Timecode_SAMPLE_TEST_4
169         // Test 4: use_offset = true, use_subframes = true
170         cout << "use_offset = true, use_subframes = true" << endl;
171
172         for (long sub = 5; sub < 80; sub += 5) {
173                 timecode1.hours = 0;
174                 timecode1.minutes = 0;
175                 timecode1.seconds = 0;
176                 timecode1.frames = 0;
177                 timecode1.subframes = 0;
178                 sample1 = oldsample = (sample_increment * sub) / 80;
179
180                 _session->sample_to_timecode( sample1, timecode1, true /* use_offset */, true /* use_subframes */ );
181
182                 cout << "starting at sample: " << sample1 << " -> ";
183                 cout << "timecode: " << (timecode1.negative ? "-" : "") << timecode1.hours << ":" << timecode1.minutes << ":" << timecode1.seconds << ":" << timecode1.frames << "::" << timecode1.subframes << endl;
184
185                 for (int i = 0; i < 108003; i++) {
186                         _session->timecode_to_sample( timecode1, sample1, true /* use_offset */, true /* use_subframes */ );
187                         _session->sample_to_timecode( sample1, timecode2, true /* use_offset */, true /* use_subframes */ );
188
189                         if ((i > 0) && ( ((sample1 - oldsample) != sample_increment) && ((sample1 - oldsample) != (sample_increment + 1)) && ((sample1 - oldsample) != (sample_increment - 1)))) {
190                                 cout << "ERROR: sample increment not right: " << (sample1 - oldsample) << " != " << sample_increment << endl;
191                                 cout << "timecode1: " << (timecode1.negative ? "-" : "") << timecode1.hours << ":" << timecode1.minutes << ":" << timecode1.seconds << ":" << timecode1.frames << "::" << timecode1.subframes << " -> ";
192                                 cout << "sample: " << sample1 << endl;
193                                 cout << "sample: " << sample1 << " -> ";
194                                 cout << "timecode2: " << (timecode2.negative ? "-" : "") << timecode2.hours << ":" << timecode2.minutes << ":" << timecode2.seconds << ":" << timecode2.frames << "::" << timecode2.subframes << endl;
195                                 //break;
196                         }
197
198                         if (timecode2.hours != timecode1.hours || timecode2.minutes != timecode1.minutes || timecode2.seconds != timecode2.seconds || timecode2.frames != timecode1.frames || timecode2.subframes != timecode1.subframes) {
199                                 cout << "ERROR: timecode2 not equal timecode1" << endl;
200                                 cout << "timecode1: " << (timecode1.negative ? "-" : "") << timecode1.hours << ":" << timecode1.minutes << ":" << timecode1.seconds << ":" << timecode1.frames << "::" << timecode1.subframes << " -> ";
201                                 cout << "sample: " << sample1 << endl;
202                                 cout << "sample: " << sample1 << " -> ";
203                                 cout << "timecode2: " << (timecode2.negative ? "-" : "") << timecode2.hours << ":" << timecode2.minutes << ":" << timecode2.seconds << ":" << timecode2.frames << "::" << timecode2.subframes << endl;
204                                 break;
205                         }
206                         oldsample = sample1;
207                         _session->timecode_increment( timecode1 );
208                 }
209
210                 cout << "sample_increment: " << sample_increment << endl;
211                 cout << "sample: " << sample1 << " -> ";
212                 cout << "timecode: " << (timecode2.negative ? "-" : "") << timecode2.hours << ":" << timecode2.minutes << ":" << timecode2.seconds << ":" << timecode2.frames << "::" << timecode2.subframes << endl;
213
214                 for (int i = 0; i < 108003; i++) {
215                         _session->timecode_to_sample( timecode1, sample1, true /* use_offset */, true /* use_subframes */ );
216                         _session->sample_to_timecode( sample1, timecode2, true /* use_offset */, true /* use_subframes */ );
217
218                         if ((i > 0) && ( ((oldsample - sample1) != sample_increment) && ((oldsample - sample1) != (sample_increment + 1)) && ((oldsample - sample1) != (sample_increment - 1)))) {
219                                 cout << "ERROR: sample increment not right: " << (oldsample - sample1) << " != " << sample_increment << endl;
220                                 cout << "timecode1: " << (timecode1.negative ? "-" : "") << timecode1.hours << ":" << timecode1.minutes << ":" << timecode1.seconds << ":" << timecode1.frames << "::" << timecode1.subframes << " -> ";
221                                 cout << "sample: " << sample1 << endl;
222                                 cout << "sample: " << sample1 << " -> ";
223                                 cout << "timecode2: " << (timecode2.negative ? "-" : "") << timecode2.hours << ":" << timecode2.minutes << ":" << timecode2.seconds << ":" << timecode2.frames << "::" << timecode2.subframes << endl;
224                                 //break;
225                         }
226
227                         if (timecode2.hours != timecode1.hours || timecode2.minutes != timecode1.minutes || timecode2.seconds != timecode2.seconds || timecode2.frames != timecode1.frames || timecode2.subframes != timecode1.subframes) {
228                                 cout << "ERROR: timecode2 not equal timecode1" << endl;
229                                 cout << "timecode1: " << (timecode1.negative ? "-" : "") << timecode1.hours << ":" << timecode1.minutes << ":" << timecode1.seconds << ":" << timecode1.frames << "::" << timecode1.subframes << " -> ";
230                                 cout << "sample: " << sample1 << endl;
231                                 cout << "sample: " << sample1 << " -> ";
232                                 cout << "timecode2: " << (timecode2.negative ? "-" : "") << timecode2.hours << ":" << timecode2.minutes << ":" << timecode2.seconds << ":" << timecode2.frames << "::" << timecode2.subframes << endl;
233                                 break;
234                         }
235                         oldsample = sample1;
236                         _session->timecode_decrement( timecode1 );
237                 }
238
239                 cout << "sample_decrement: " << sample_increment << endl;
240                 cout << "sample: " << sample1 << " -> ";
241                 cout << "timecode: " << (timecode2.negative ? "-" : "") << timecode2.hours << ":" << timecode2.minutes << ":" << timecode2.seconds << ":" << timecode2.frames << "::" << timecode2.subframes << endl;
242         }
243 #endif
244
245
246 #ifdef Timecode_SAMPLE_TEST_5
247         // Test 5: use_offset = true, use_subframes = false, increment seconds
248         cout << "use_offset = true, use_subframes = false, increment seconds" << endl;
249
250         timecode1.hours = 0;
251         timecode1.minutes = 0;
252         timecode1.seconds = 0;
253         timecode1.frames = 0;
254         timecode1.subframes = 0;
255         sample1 = oldsample = 0;
256         sample_increment = _session->frame_rate();
257
258         _session->sample_to_timecode( sample1, timecode1, true /* use_offset */, false /* use_subframes */ );
259         cout << "Starting at sample: " << sample1 << " -> ";
260         cout << "timecode: " << (timecode1.negative ? "-" : "") << timecode1.hours << ":" << timecode1.minutes << ":" << timecode1.seconds << ":" << timecode1.frames << "::" << timecode1.subframes << endl;
261
262         for (int i = 0; i < 3600; i++) {
263                 _session->timecode_to_sample( timecode1, sample1, true /* use_offset */, false /* use_subframes */ );
264                 _session->sample_to_timecode( sample1, timecode2, true /* use_offset */, false /* use_subframes */ );
265
266 //     cout << "timecode: " << (timecode1.negative ? "-" : "") << timecode1.hours << ":" << timecode1.minutes << ":" << timecode1.seconds << ":" << timecode1.frames << "::" << timecode1.subframes << " -> ";
267 //     cout << "sample: " << sample1 << endl;
268 //     cout << "sample: " << sample1 << " -> ";
269 //     cout << "timecode: " << (timecode2.negative ? "-" : "") << timecode2.hours << ":" << timecode2.minutes << ":" << timecode2.seconds << ":" << timecode2.frames << "::" << timecode2.subframes << endl;
270
271 //     if ((i > 0) && ( ((sample1 - oldsample) != sample_increment) && ((sample1 - oldsample) != (sample_increment + 1)) && ((sample1 - oldsample) != (sample_increment - 1))))
272 //     {
273 //       cout << "ERROR: sample increment not right: " << (sample1 - oldsample) << " != " << sample_increment << endl;
274 //       break;
275 //     }
276
277                 if (timecode2.hours != timecode1.hours || timecode2.minutes != timecode1.minutes || timecode2.seconds != timecode2.seconds || timecode2.frames != timecode1.frames) {
278                         cout << "ERROR: timecode2 not equal timecode1" << endl;
279                         cout << "timecode: " << (timecode1.negative ? "-" : "") << timecode1.hours << ":" << timecode1.minutes << ":" << timecode1.seconds << ":" << timecode1.frames << "::" << timecode1.subframes << " -> ";
280                         cout << "sample: " << sample1 << endl;
281                         cout << "sample: " << sample1 << " -> ";
282                         cout << "timecode: " << (timecode2.negative ? "-" : "") << timecode2.hours << ":" << timecode2.minutes << ":" << timecode2.seconds << ":" << timecode2.frames << "::" << timecode2.subframes << endl;
283                         break;
284                 }
285                 oldsample = sample1;
286                 _session->timecode_increment_seconds( timecode1 );
287         }
288
289         cout << "sample_increment: " << sample_increment << endl;
290         cout << "sample: " << sample1 << " -> ";
291         cout << "timecode: " << (timecode2.negative ? "-" : "") << timecode2.hours << ":" << timecode2.minutes << ":" << timecode2.seconds << ":" << timecode2.frames << "::" << timecode2.subframes << endl;
292 #endif
293
294
295 #ifdef Timecode_SAMPLE_TEST_6
296         // Test 6: use_offset = true, use_subframes = false, increment minutes
297         cout << "use_offset = true, use_subframes = false, increment minutes" << endl;
298
299         timecode1.hours = 0;
300         timecode1.minutes = 0;
301         timecode1.seconds = 0;
302         timecode1.frames = 0;
303         timecode1.subframes = 0;
304         sample1 = oldsample = 0;
305         sample_increment = _session->frame_rate() * 60;
306
307         _session->sample_to_timecode( sample1, timecode1, true /* use_offset */, false /* use_subframes */ );
308         cout << "Starting at sample: " << sample1 << " -> ";
309         cout << "timecode: " << (timecode1.negative ? "-" : "") << timecode1.hours << ":" << timecode1.minutes << ":" << timecode1.seconds << ":" << timecode1.frames << "::" << timecode1.subframes << endl;
310
311         for (int i = 0; i < 60; i++) {
312                 _session->timecode_to_sample( timecode1, sample1, true /* use_offset */, false /* use_subframes */ );
313                 _session->sample_to_timecode( sample1, timecode2, true /* use_offset */, false /* use_subframes */ );
314
315 //     cout << "timecode: " << (timecode1.negative ? "-" : "") << timecode1.hours << ":" << timecode1.minutes << ":" << timecode1.seconds << ":" << timecode1.frames << "::" << timecode1.subframes << " -> ";
316 //     cout << "sample: " << sample1 << endl;
317 //     cout << "sample: " << sample1 << " -> ";
318 //     cout << "timecode: " << (timecode2.negative ? "-" : "") << timecode2.hours << ":" << timecode2.minutes << ":" << timecode2.seconds << ":" << timecode2.frames << "::" << timecode2.subframes << endl;
319
320 //     if ((i > 0) && ( ((sample1 - oldsample) != sample_increment) && ((sample1 - oldsample) != (sample_increment + 1)) && ((sample1 - oldsample) != (sample_increment - 1))))
321 //     {
322 //       cout << "ERROR: sample increment not right: " << (sample1 - oldsample) << " != " << sample_increment << endl;
323 //       break;
324 //     }
325
326                 if (timecode2.hours != timecode1.hours || timecode2.minutes != timecode1.minutes || timecode2.seconds != timecode2.seconds || timecode2.frames != timecode1.frames) {
327                         cout << "ERROR: timecode2 not equal timecode1" << endl;
328                         cout << "timecode: " << (timecode1.negative ? "-" : "") << timecode1.hours << ":" << timecode1.minutes << ":" << timecode1.seconds << ":" << timecode1.frames << "::" << timecode1.subframes << " -> ";
329                         cout << "sample: " << sample1 << endl;
330                         cout << "sample: " << sample1 << " -> ";
331                         cout << "timecode: " << (timecode2.negative ? "-" : "") << timecode2.hours << ":" << timecode2.minutes << ":" << timecode2.seconds << ":" << timecode2.frames << "::" << timecode2.subframes << endl;
332                         break;
333                 }
334                 oldsample = sample1;
335                 _session->timecode_increment_minutes( timecode1 );
336         }
337
338         cout << "sample_increment: " << sample_increment << endl;
339         cout << "sample: " << sample1 << " -> ";
340         cout << "timecode: " << (timecode2.negative ? "-" : "") << timecode2.hours << ":" << timecode2.minutes << ":" << timecode2.seconds << ":" << timecode2.frames << "::" << timecode2.subframes << endl;
341 #endif
342
343 #ifdef Timecode_SAMPLE_TEST_7
344         // Test 7: use_offset = true, use_subframes = false, increment hours
345         cout << "use_offset = true, use_subframes = false, increment hours" << endl;
346
347         timecode1.hours = 0;
348         timecode1.minutes = 0;
349         timecode1.seconds = 0;
350         timecode1.frames = 0;
351         timecode1.subframes = 0;
352         sample1 = oldsample = 0;
353         sample_increment = _session->frame_rate() * 60 * 60;
354
355         _session->sample_to_timecode( sample1, timecode1, true /* use_offset */, false /* use_subframes */ );
356         cout << "Starting at sample: " << sample1 << " -> ";
357         cout << "timecode: " << (timecode1.negative ? "-" : "") << timecode1.hours << ":" << timecode1.minutes << ":" << timecode1.seconds << ":" << timecode1.frames << "::" << timecode1.subframes << endl;
358
359         for (int i = 0; i < 10; i++) {
360                 _session->timecode_to_sample( timecode1, sample1, true /* use_offset */, false /* use_subframes */ );
361                 _session->sample_to_timecode( sample1, timecode2, true /* use_offset */, false /* use_subframes */ );
362
363 //     cout << "timecode: " << (timecode1.negative ? "-" : "") << timecode1.hours << ":" << timecode1.minutes << ":" << timecode1.seconds << ":" << timecode1.frames << "::" << timecode1.subframes << " -> ";
364 //     cout << "sample: " << sample1 << endl;
365 //     cout << "sample: " << sample1 << " -> ";
366 //     cout << "timecode: " << (timecode2.negative ? "-" : "") << timecode2.hours << ":" << timecode2.minutes << ":" << timecode2.seconds << ":" << timecode2.frames << "::" << timecode2.subframes << endl;
367
368 //     if ((i > 0) && ( ((sample1 - oldsample) != sample_increment) && ((sample1 - oldsample) != (sample_increment + 1)) && ((sample1 - oldsample) != (sample_increment - 1))))
369 //     {
370 //       cout << "ERROR: sample increment not right: " << (sample1 - oldsample) << " != " << sample_increment << endl;
371 //       break;
372 //     }
373
374                 if (timecode2.hours != timecode1.hours || timecode2.minutes != timecode1.minutes || timecode2.seconds != timecode2.seconds || timecode2.frames != timecode1.frames) {
375                         cout << "ERROR: timecode2 not equal timecode1" << endl;
376                         cout << "timecode: " << (timecode1.negative ? "-" : "") << timecode1.hours << ":" << timecode1.minutes << ":" << timecode1.seconds << ":" << timecode1.frames << "::" << timecode1.subframes << " -> ";
377                         cout << "sample: " << sample1 << endl;
378                         cout << "sample: " << sample1 << " -> ";
379                         cout << "timecode: " << (timecode2.negative ? "-" : "") << timecode2.hours << ":" << timecode2.minutes << ":" << timecode2.seconds << ":" << timecode2.frames << "::" << timecode2.subframes << endl;
380                         break;
381                 }
382                 oldsample = sample1;
383                 _session->timecode_increment_hours( timecode1 );
384         }
385
386         cout << "sample_increment: " << sample_increment << endl;
387         cout << "sample: " << sample1 << " -> ";
388         cout << "timecode: " << (timecode2.negative ? "-" : "") << timecode2.hours << ":" << timecode2.minutes << ":" << timecode2.seconds << ":" << timecode2.frames << "::" << timecode2.subframes << endl;
389 #endif
390
391 #endif
392 }