|
|
@@ -60,6 +60,9 @@ public: |
|
|
|
: fPortControls(nullptr), |
|
|
|
fLastControlValues(nullptr), |
|
|
|
#if DISTRHO_LV2_USE_EVENTS_IN || DISTRHO_LV2_USE_EVENTS_OUT |
|
|
|
# if DISTRHO_PLUGIN_WANT_TIMEPOS |
|
|
|
fLastTimeSpeed(0.0f), |
|
|
|
# endif |
|
|
|
fURIDs(uridMap), |
|
|
|
#endif |
|
|
|
fUridMap(uridMap), |
|
|
@@ -228,6 +231,9 @@ public: |
|
|
|
#if DISTRHO_LV2_USE_EVENTS_IN |
|
|
|
# if DISTRHO_PLUGIN_IS_SYNTH |
|
|
|
uint32_t midiEventCount = 0; |
|
|
|
# endif |
|
|
|
# if DISTRHO_PLUGIN_WANT_TIMEPOS |
|
|
|
bool needsFrameIncrement = true; |
|
|
|
# endif |
|
|
|
LV2_ATOM_SEQUENCE_FOREACH(fPortEventsIn, event) |
|
|
|
{ |
|
|
@@ -355,13 +361,21 @@ public: |
|
|
|
} |
|
|
|
|
|
|
|
if (frame != nullptr && frame->type == fURIDs.atomLong) |
|
|
|
{ |
|
|
|
fTimePos.frame = ((LV2_Atom_Long*)frame)->body; |
|
|
|
needsFrameIncrement = false; |
|
|
|
} |
|
|
|
|
|
|
|
if (speed != nullptr && speed->type == fURIDs.atomFloat) |
|
|
|
fTimePos.playing = ((LV2_Atom_Float*)speed)->body == 1.0f; |
|
|
|
{ |
|
|
|
fLastTimeSpeed = ((LV2_Atom_Float*)speed)->body; |
|
|
|
fTimePos.playing = (fLastTimeSpeed == 1.0f); |
|
|
|
} |
|
|
|
|
|
|
|
if ((! fTimePos.bbt.valid) && beatsPerMinute != nullptr && beatsPerBar != nullptr && beatUnit != nullptr) |
|
|
|
fTimePos.bbt.valid = true; |
|
|
|
|
|
|
|
continue; |
|
|
|
} |
|
|
|
# endif |
|
|
|
# if (DISTRHO_PLUGIN_WANT_STATE && DISTRHO_PLUGIN_HAS_UI) |
|
|
@@ -369,12 +383,16 @@ public: |
|
|
|
{ |
|
|
|
const void* const data((const void*)(event + 1)); |
|
|
|
fWorker->schedule_work(fWorker->handle, event->body.size, data); |
|
|
|
|
|
|
|
continue; |
|
|
|
} |
|
|
|
# endif |
|
|
|
} |
|
|
|
#endif |
|
|
|
|
|
|
|
# if DISTRHO_PLUGIN_WANT_TIMEPOS |
|
|
|
if (needsFrameIncrement && fLastTimeSpeed != 0.0f) |
|
|
|
fTimePos.frame += fLastTimeSpeed*sampleCount; |
|
|
|
fPlugin.setTimePos(fTimePos); |
|
|
|
# endif |
|
|
|
|
|
|
@@ -570,6 +588,7 @@ private: |
|
|
|
#endif |
|
|
|
#if DISTRHO_PLUGIN_WANT_TIMEPOS |
|
|
|
TimePos fTimePos; |
|
|
|
float fLastTimeSpeed; |
|
|
|
#endif |
|
|
|
|
|
|
|
// LV2 URIDs |
|
|
|