@@ -64,6 +64,8 @@ TIME1::TIME1(const InstanceInfo& info)
64
64
inited = true ;
65
65
layoutControls (g);
66
66
};
67
+
68
+ onSyncChange (); // FIX - attempt to force set syncQN on Bitwig
67
69
}
68
70
69
71
void TIME1::makeControls (IGraphics* g)
@@ -231,27 +233,7 @@ void TIME1::OnParamChange(int paramIdx)
231
233
pattern = patterns[(int )GetParam (kPattern )->Value () - 1 ];
232
234
}
233
235
else if (paramIdx == kSync ) {
234
- dirtyControls = true ;
235
- auto sync = GetParam (kSync )->Value ();
236
- if (sync == 0 ) syncQN = 1 ./4 .; // 1/16
237
- if (sync == 1 ) syncQN = 1 ./2 .; // 1/8
238
- if (sync == 2 ) syncQN = 1 /1 ; // 1/4
239
- if (sync == 3 ) syncQN = 1 *2 ; // 1/2
240
- if (sync == 4 ) syncQN = 1 *4 ; // 1bar
241
- if (sync == 5 ) syncQN = 1 *8 ; // 2bar
242
- if (sync == 6 ) syncQN = 1 *16 ; // 4bar
243
- if (sync == 7 ) syncQN = 1 ./6 .; // 1/16t
244
- if (sync == 8 ) syncQN = 1 ./3 .; // 1/8t
245
- if (sync == 9 ) syncQN = 2 ./3 .; // 1/4t
246
- if (sync == 10 ) syncQN = 4 ./3 .; // 1/2t
247
- if (sync == 11 ) syncQN = 8 ./3 .; // 1/1t
248
- if (sync == 12 ) syncQN = 1 ./4 .*1.5 ; // 1/16.
249
- if (sync == 13 ) syncQN = 1 ./2 .*1.5 ; // 1/8.
250
- if (sync == 14 ) syncQN = 1 ./1 .*1.5 ; // 1/4.
251
- if (sync == 15 ) syncQN = 2 ./1 .*1.5 ; // 1/2.
252
- if (sync == 16 ) syncQN = 4 ./1 .*1.5 ; // 1/1.
253
-
254
- resizeDelays ();
236
+ onSyncChange ();
255
237
}
256
238
else if (paramIdx == kGrid ) {
257
239
gridSegs = (int )GetParam (kGrid )->Value ();
@@ -264,6 +246,31 @@ void TIME1::OnParamChange(int paramIdx)
264
246
}
265
247
}
266
248
249
+ void TIME1::onSyncChange ()
250
+ {
251
+ dirtyControls = true ;
252
+ auto sync = GetParam (kSync )->Value ();
253
+ if (sync == 0 ) syncQN = 1 ./4 .; // 1/16
254
+ if (sync == 1 ) syncQN = 1 ./2 .; // 1/8
255
+ if (sync == 2 ) syncQN = 1 /1 ; // 1/4
256
+ if (sync == 3 ) syncQN = 1 *2 ; // 1/2
257
+ if (sync == 4 ) syncQN = 1 *4 ; // 1bar
258
+ if (sync == 5 ) syncQN = 1 *8 ; // 2bar
259
+ if (sync == 6 ) syncQN = 1 *16 ; // 4bar
260
+ if (sync == 7 ) syncQN = 1 ./6 .; // 1/16t
261
+ if (sync == 8 ) syncQN = 1 ./3 .; // 1/8t
262
+ if (sync == 9 ) syncQN = 2 ./3 .; // 1/4t
263
+ if (sync == 10 ) syncQN = 4 ./3 .; // 1/2t
264
+ if (sync == 11 ) syncQN = 8 ./3 .; // 1/1t
265
+ if (sync == 12 ) syncQN = 1 ./4 .*1.5 ; // 1/16.
266
+ if (sync == 13 ) syncQN = 1 ./2 .*1.5 ; // 1/8.
267
+ if (sync == 14 ) syncQN = 1 ./1 .*1.5 ; // 1/4.
268
+ if (sync == 15 ) syncQN = 2 ./1 .*1.5 ; // 1/2.
269
+ if (sync == 16 ) syncQN = 4 ./1 .*1.5 ; // 1/1.
270
+
271
+ resizeDelays ();
272
+ }
273
+
267
274
void TIME1::resizeDelays ()
268
275
{
269
276
const int size = syncQN * GetSampleRate () * 60 / GetTempo ();
@@ -408,6 +415,13 @@ void TIME1::ProcessBlock(sample** inputs, sample** outputs, int nFrames)
408
415
outputs[1 ][s] = inputs[1 ][s];
409
416
}
410
417
}
418
+
419
+ else { // FIX FL studio glitches on stop play
420
+ for (int s = 0 ; s < nFrames; ++s) {
421
+ outputs[0 ][s] = inputs[0 ][s];
422
+ outputs[1 ][s] = inputs[1 ][s];
423
+ }
424
+ }
411
425
}
412
426
413
427
void TIME1::ProcessMidiMsg (const IMidiMsg& msg)
0 commit comments