|
|
@@ -111,11 +111,9 @@ public: |
|
|
|
} |
|
|
|
|
|
|
|
if (m_activeBefore) |
|
|
|
{ |
|
|
|
effect->dispatcher(effect, effStopProcess, 0, 0, nullptr, 0.0f); |
|
|
|
effect->dispatcher(effect, effMainsChanged, 0, 0, nullptr, 0.0f); |
|
|
|
} |
|
|
|
|
|
|
|
effect->dispatcher(effect, effMainsChanged, 0, 0, nullptr, 0.0f); |
|
|
|
effect->dispatcher(effect, effClose, 0, 0, nullptr, 0.0f); |
|
|
|
} |
|
|
|
} |
|
|
@@ -1016,9 +1014,6 @@ public: |
|
|
|
sendMidiAllNotesOff(); |
|
|
|
|
|
|
|
effect->dispatcher(effect, effStopProcess, 0, 0, nullptr, 0.0f); |
|
|
|
effect->dispatcher(effect, effMainsChanged, 0, 0, nullptr, 0.0f); |
|
|
|
|
|
|
|
effect->dispatcher(effect, effMainsChanged, 0, 1, nullptr, 0.0f); |
|
|
|
effect->dispatcher(effect, effStartProcess, 0, 0, nullptr, 0.0f); |
|
|
|
|
|
|
|
postponeEvent(PluginPostEventParameterChange, PARAMETER_ACTIVE, 0, 0.0); |
|
|
@@ -1194,7 +1189,6 @@ public: |
|
|
|
midiEventCount = MAX_MIDI_CHANNELS*2; |
|
|
|
} |
|
|
|
|
|
|
|
effect->dispatcher(effect, effMainsChanged, 0, 1, nullptr, 0.0f); |
|
|
|
effect->dispatcher(effect, effStartProcess, 0, 0, nullptr, 0.0f); |
|
|
|
} |
|
|
|
|
|
|
@@ -1231,10 +1225,7 @@ public: |
|
|
|
else |
|
|
|
{ |
|
|
|
if (m_activeBefore) |
|
|
|
{ |
|
|
|
effect->dispatcher(effect, effStopProcess, 0, 0, nullptr, 0.0f); |
|
|
|
effect->dispatcher(effect, effMainsChanged, 0, 0, nullptr, 0.0f); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
CARLA_PROCESS_CONTINUE_CHECK; |
|
|
@@ -1356,10 +1347,7 @@ public: |
|
|
|
void bufferSizeChanged(uint32_t newBufferSize) |
|
|
|
{ |
|
|
|
if (m_active) |
|
|
|
{ |
|
|
|
effect->dispatcher(effect, effStopProcess, 0, 0, nullptr, 0.0f); |
|
|
|
effect->dispatcher(effect, effMainsChanged, 0, 0, nullptr, 0.0f); |
|
|
|
} |
|
|
|
|
|
|
|
#if ! VST_FORCE_DEPRECATED |
|
|
|
effect->dispatcher(effect, effSetBlockSizeAndSampleRate, 0, newBufferSize, nullptr, x_engine->getSampleRate()); |
|
|
@@ -1367,10 +1355,7 @@ public: |
|
|
|
effect->dispatcher(effect, effSetBlockSize, 0, newBufferSize, nullptr, 0.0f); |
|
|
|
|
|
|
|
if (m_active) |
|
|
|
{ |
|
|
|
effect->dispatcher(effect, effMainsChanged, 0, 1, nullptr, 0.0f); |
|
|
|
effect->dispatcher(effect, effStartProcess, 0, 0, nullptr, 0.0f); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// ------------------------------------------------------------------- |
|
|
@@ -1468,9 +1453,8 @@ public: |
|
|
|
return x_engine->getSampleRate(); |
|
|
|
} |
|
|
|
|
|
|
|
const VstTimeInfo_R* handleAudioMasterGetTime() |
|
|
|
intptr_t handleAudioMasterGetTime() |
|
|
|
{ |
|
|
|
static VstTimeInfo_R vstTimeInfo; |
|
|
|
memset(&vstTimeInfo, 0, sizeof(VstTimeInfo_R)); |
|
|
|
|
|
|
|
const CarlaTimeInfo* const timeInfo = x_engine->getTimeInfo(); |
|
|
@@ -1521,7 +1505,7 @@ public: |
|
|
|
vstTimeInfo.flags |= kVstTimeSigValid; |
|
|
|
} |
|
|
|
|
|
|
|
return &vstTimeInfo; |
|
|
|
return (intptr_t)&vstTimeInfo; |
|
|
|
} |
|
|
|
|
|
|
|
intptr_t handleAudioMasterTempoAt() |
|
|
@@ -1557,18 +1541,12 @@ public: |
|
|
|
engineProcessUnlock(); |
|
|
|
|
|
|
|
if (m_active) |
|
|
|
{ |
|
|
|
effect->dispatcher(effect, effStopProcess, 0, 0, nullptr, 0.0f); |
|
|
|
effect->dispatcher(effect, effMainsChanged, 0, 0, nullptr, 0.0f); |
|
|
|
} |
|
|
|
|
|
|
|
reload(); |
|
|
|
|
|
|
|
if (m_active) |
|
|
|
{ |
|
|
|
effect->dispatcher(effect, effMainsChanged, 0, 1, nullptr, 0.0f); |
|
|
|
effect->dispatcher(effect, effStartProcess, 0, 0, nullptr, 0.0f); |
|
|
|
} |
|
|
|
|
|
|
|
x_engine->callback(CALLBACK_RELOAD_ALL, m_id, 0, 0, 0.0); |
|
|
|
|
|
|
@@ -1577,6 +1555,7 @@ public: |
|
|
|
|
|
|
|
void handleAudioMasterNeedIdle() |
|
|
|
{ |
|
|
|
qDebug("VstPlugin::handleAudioMasterNeedIdle()"); |
|
|
|
needIdle = true; |
|
|
|
} |
|
|
|
|
|
|
@@ -1594,7 +1573,7 @@ public: |
|
|
|
|
|
|
|
if (! isProcessing) |
|
|
|
{ |
|
|
|
qCritical("VstPlugin:handleAudioMasterProcessEvents(%p) - received MIDI out events outside audio thread, ignoring", vstEvents); |
|
|
|
qCritical("VstPlugin::handleAudioMasterProcessEvents(%p) - received MIDI out events outside audio thread, ignoring", vstEvents); |
|
|
|
return 0; |
|
|
|
} |
|
|
|
|
|
|
@@ -1841,26 +1820,24 @@ public: |
|
|
|
CARLA_ASSERT(self); |
|
|
|
if (self) |
|
|
|
{ |
|
|
|
ret = (intptr_t)self->handleAudioMasterGetTime(); |
|
|
|
ret = self->handleAudioMasterGetTime(); |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
qWarning("VstPlugin::hostCallback::audioMasterGetTime called without valid object"); |
|
|
|
|
|
|
|
static VstTimeInfo_R timeInfo; |
|
|
|
memset(&timeInfo, 0, sizeof(VstTimeInfo_R)); |
|
|
|
timeInfo.sampleRate = 44100.0; |
|
|
|
static VstTimeInfo_R vstTimeInfo; |
|
|
|
memset(&vstTimeInfo, 0, sizeof(VstTimeInfo_R)); |
|
|
|
vstTimeInfo.sampleRate = 44100.0; |
|
|
|
|
|
|
|
// Tempo |
|
|
|
timeInfo.tempo = 120.0; |
|
|
|
timeInfo.flags |= kVstTempoValid; |
|
|
|
vstTimeInfo.tempo = 120.0; |
|
|
|
vstTimeInfo.flags |= kVstTempoValid; |
|
|
|
|
|
|
|
// Time Signature |
|
|
|
timeInfo.timeSigNumerator = 4; |
|
|
|
timeInfo.timeSigDenominator = 4; |
|
|
|
timeInfo.flags |= kVstTimeSigValid; |
|
|
|
vstTimeInfo.timeSigNumerator = 4; |
|
|
|
vstTimeInfo.timeSigDenominator = 4; |
|
|
|
vstTimeInfo.flags |= kVstTimeSigValid; |
|
|
|
|
|
|
|
ret = (intptr_t)&timeInfo; |
|
|
|
ret = (intptr_t)&vstTimeInfo; |
|
|
|
} |
|
|
|
break; |
|
|
|
|
|
|
@@ -2206,6 +2183,8 @@ public: |
|
|
|
#endif |
|
|
|
|
|
|
|
effect->dispatcher(effect, effOpen, 0, 0, nullptr, 0.0f); |
|
|
|
effect->dispatcher(effect, effMainsChanged, 0, 1, nullptr, 0.0f); |
|
|
|
|
|
|
|
#if ! VST_FORCE_DEPRECATED |
|
|
|
effect->dispatcher(effect, effSetBlockSizeAndSampleRate, 0, x_engine->getBufferSize(), nullptr, x_engine->getSampleRate()); |
|
|
|
#endif |
|
|
@@ -2286,7 +2265,8 @@ private: |
|
|
|
intptr_t reserved; |
|
|
|
VstEvent* data[MAX_MIDI_EVENTS*2]; |
|
|
|
} events; |
|
|
|
VstMidiEvent midiEvents[MAX_MIDI_EVENTS*2]; |
|
|
|
VstMidiEvent midiEvents[MAX_MIDI_EVENTS*2]; |
|
|
|
VstTimeInfo_R vstTimeInfo; |
|
|
|
|
|
|
|
struct { |
|
|
|
GuiType type; |
|
|
|