diff --git a/modules/juce_audio_plugin_client/VST3/juce_VST3_Wrapper.cpp b/modules/juce_audio_plugin_client/VST3/juce_VST3_Wrapper.cpp index fa5a85190f..14b92bc509 100644 --- a/modules/juce_audio_plugin_client/VST3/juce_VST3_Wrapper.cpp +++ b/modules/juce_audio_plugin_client/VST3/juce_VST3_Wrapper.cpp @@ -2596,7 +2596,15 @@ struct JucePluginFactory : public IPluginFactory3 { *obj = nullptr; - FUID sourceFuid = sourceIid; + TUID tuid; + memcpy (tuid, sourceIid, sizeof (TUID)); + + #if VST_VERSION >= 0x030608 + auto sourceFuid = FUID::fromTUID (tuid); + #else + FUID sourceFuid; + sourceFuid = tuid; + #endif if (cid == nullptr || sourceIid == nullptr || ! sourceFuid.isValid()) { diff --git a/modules/juce_audio_processors/format_types/juce_VST3Common.h b/modules/juce_audio_processors/format_types/juce_VST3Common.h index 2b5dbc6a2a..e98fafb373 100644 --- a/modules/juce_audio_processors/format_types/juce_VST3Common.h +++ b/modules/juce_audio_processors/format_types/juce_VST3Common.h @@ -61,6 +61,11 @@ static bool doUIDsMatch (const Steinberg::TUID a, const Steinberg::TUID b) noexc return Steinberg::kResultOk; \ } +//============================================================================== +#if VST_VERSION < 0x030608 + #define kAmbi1stOrderACN kBFormat +#endif + //============================================================================== inline juce::String toString (const Steinberg::char8* string) noexcept { return juce::String (string); } inline juce::String toString (const Steinberg::char16* string) noexcept { return juce::String (juce::CharPointer_UTF16 ((juce::CharPointer_UTF16::CharType*) string)); } @@ -265,7 +270,7 @@ static inline Steinberg::Vst::SpeakerArrangement getVst3SpeakerArrangement (cons else if (channels == AudioChannelSet::create7point0SDDS()) return k70Cine; else if (channels == AudioChannelSet::create7point1()) return k71CineSideFill; else if (channels == AudioChannelSet::create7point1SDDS()) return k71Cine; - else if (channels == AudioChannelSet::ambisonic()) return kBFormat; + else if (channels == AudioChannelSet::ambisonic()) return kAmbi1stOrderACN; else if (channels == AudioChannelSet::quadraphonic()) return k40Music; else if (channels == AudioChannelSet::create7point0point2()) return k71_2 & ~(Steinberg::Vst::kSpeakerLfe); else if (channels == AudioChannelSet::create7point1point2()) return k71_2; @@ -300,7 +305,7 @@ static inline AudioChannelSet getChannelSetForSpeakerArrangement (Steinberg::Vst else if (arr == k70Cine) return AudioChannelSet::create7point0SDDS(); else if (arr == k71CineSideFill) return AudioChannelSet::create7point1(); else if (arr == k71Cine) return AudioChannelSet::create7point1SDDS(); - else if (arr == kBFormat) return AudioChannelSet::ambisonic(); + else if (arr == kAmbi1stOrderACN) return AudioChannelSet::ambisonic(); else if (arr == k40Music) return AudioChannelSet::quadraphonic(); else if (arr == k71_2) return AudioChannelSet::create7point1point2(); else if (arr == (k71_2 & ~(Steinberg::Vst::kSpeakerLfe))) return AudioChannelSet::create7point0point2(); diff --git a/modules/juce_audio_processors/format_types/juce_VST3Headers.h b/modules/juce_audio_processors/format_types/juce_VST3Headers.h index 0b2fb02048..f289851507 100644 --- a/modules/juce_audio_processors/format_types/juce_VST3Headers.h +++ b/modules/juce_audio_processors/format_types/juce_VST3Headers.h @@ -89,13 +89,21 @@ #include #include #else + // needed for VST_VSERION + #include + #include #include #include #include #include #include +#if VST_VERSION >= 0x030608 + #include + #include +#else #include +#endif #include #include #include @@ -122,7 +130,9 @@ namespace Steinberg DEF_CLASS_IID (IPluginBase) DEF_CLASS_IID (IPlugView) DEF_CLASS_IID (IPlugFrame) + #if VST_VERSION < 0x030608 DEF_CLASS_IID (IBStream) + #endif DEF_CLASS_IID (IPluginFactory) DEF_CLASS_IID (IPluginFactory2) DEF_CLASS_IID (IPluginFactory3)