@@ -193,6 +193,8 @@ void Song::savePos()
193
193
194
194
void Song::processNextBuffer ()
195
195
{
196
+ m_vstSyncController.setPlaybackJumped ( false );
197
+
196
198
// if not playing, nothing to do
197
199
if ( m_playing == false )
198
200
{
@@ -262,10 +264,21 @@ void Song::processNextBuffer()
262
264
( tl->loopBegin ().getTicks () * 60 * 1000 / 48 ) / getTempo ();
263
265
m_playPos[m_playMode].setTicks (
264
266
tl->loopBegin ().getTicks () );
267
+
268
+ m_vstSyncController.setAbsolutePosition (
269
+ tl->loopBegin ().getTicks () );
270
+ m_vstSyncController.setPlaybackJumped ( true );
271
+
265
272
emit updateSampleTracks ();
266
273
}
267
274
}
268
275
276
+ if ( m_playPos[m_playMode].jumped () )
277
+ {
278
+ m_vstSyncController.setPlaybackJumped ( true );
279
+ m_playPos[m_playMode].setJumped ( false );
280
+ }
281
+
269
282
f_cnt_t framesPlayed = 0 ;
270
283
const float framesPerTick = Engine::framesPerTick ();
271
284
@@ -320,6 +333,7 @@ void Song::processNextBuffer()
320
333
( ticks * 60 * 1000 / 48 ) / getTempo ();
321
334
322
335
m_vstSyncController.setAbsolutePosition ( ticks );
336
+ m_vstSyncController.setPlaybackJumped ( true );
323
337
}
324
338
}
325
339
m_playPos[m_playMode].setTicks ( ticks );
@@ -334,11 +348,14 @@ void Song::processNextBuffer()
334
348
// beginning of the range
335
349
if ( m_playPos[m_playMode] >= tl->loopEnd () )
336
350
{
337
- m_playPos[m_playMode].setTicks ( tl->loopBegin ().getTicks () );
351
+ ticks = tl->loopBegin ().getTicks ();
352
+ m_playPos[m_playMode].setTicks ( ticks );
338
353
339
354
m_elapsedMilliSeconds =
340
- ( ( tl->loopBegin ().getTicks () ) * 60 * 1000 / 48 ) /
341
- getTempo ();
355
+ ( ticks * 60 * 1000 / 48 ) / getTempo ();
356
+
357
+ m_vstSyncController.setAbsolutePosition ( ticks );
358
+ m_vstSyncController.setPlaybackJumped ( true );
342
359
}
343
360
else if ( m_playPos[m_playMode] == tl->loopEnd () - 1 )
344
361
{
@@ -609,6 +626,7 @@ void Song::setPlayPos( tick_t ticks, PlayModes playMode )
609
626
getTempo () );
610
627
m_playPos[playMode].setTicks ( ticks );
611
628
m_playPos[playMode].setCurrentFrame ( 0 .0f );
629
+ m_playPos[playMode].setJumped ( true );
612
630
613
631
// send a signal if playposition changes during playback
614
632
if ( isPlaying () )
0 commit comments