DPF

DISTRHO Plugin Framework
Log | Files | Refs | Submodules | README | LICENSE

commit 3b225c6bc6db02026f7b4c6b98c32d16a6c7edd0
parent 6fb740038a0c07e9ac7c10555307904317dfe99b
Author: falkTX <falktx@gmail.com>
Date:   Wed, 29 Jan 2014 20:47:51 +0000

Fix M_PI; Implement basic VST timePos support

Diffstat:
Mdistrho/DistrhoPlugin.hpp | 6++++++
Mdistrho/src/DistrhoPluginVST.cpp | 23+++++++++++++++++------
2 files changed, 23 insertions(+), 6 deletions(-)

diff --git a/distrho/DistrhoPlugin.hpp b/distrho/DistrhoPlugin.hpp @@ -19,6 +19,12 @@ #include "DistrhoUtils.hpp" +#include <cmath> + +#ifndef M_PI +# define M_PI 3.14159265358979323846 +#endif + START_NAMESPACE_DISTRHO // ----------------------------------------------------------------------- diff --git a/distrho/src/DistrhoPluginVST.cpp b/distrho/src/DistrhoPluginVST.cpp @@ -60,7 +60,7 @@ struct ERect { # warning VST State still TODO (working but needs final testing) #endif #if DISTRHO_PLUGIN_WANT_TIMEPOS -# warning VST TimePos still TODO +# warning VST TimePos still TODO (only basic BBT working) #endif typedef std::map<d_string,d_string> StringMap; @@ -670,13 +670,24 @@ public: void vst_processReplacing(float** const inputs, float** const outputs, const int32_t sampleFrames) { #if DISTRHO_PLUGIN_WANT_TIMEPOS - if (const VstTimeInfo* const timeInfo = (const VstTimeInfo*)fEffect->dispatcher(fEffect, audioMasterGetTime, 0, kVstTempoValid, nullptr, 0.0f)) + static const int kWantedVstTimeFlags(kVstTransportPlaying|kVstTempoValid|kVstTimeSigValid); + + if (const VstTimeInfo* const vstTimeInfo = (const VstTimeInfo*)fEffect->dispatcher(fEffect, audioMasterGetTime, 0, kWantedVstTimeFlags, nullptr, 0.0f)) { - fTimePos.playing = (timeInfo->flags & kVstTransportPlaying); - fTimePos.frame = timeInfo->samplePos; + fTimePos.playing = (vstTimeInfo->flags & kVstTransportPlaying); + fTimePos.frame = vstTimeInfo->samplePos; - // TODO: BBT - // timeInfo->tempo etc + if (vstTimeInfo->flags & kVstTempoValid) + { + fTimePos.bbt.valid = true; + fTimePos.bbt.beatsPerMinute = vstTimeInfo->tempo; + } + if (vstTimeInfo->flags & kVstTimeSigValid) + { + fTimePos.bbt.valid = true; + fTimePos.bbt.beatsPerBar = vstTimeInfo->timeSigNumerator; + fTimePos.bbt.beatType = vstTimeInfo->timeSigDenominator; + } fPlugin.setTimePos(fTimePos); }