mirror of
https://github.com/juce-framework/JUCE.git
synced 2026-01-10 23:44:24 +00:00
VST3 fixes for multi-channel plugins.
This commit is contained in:
parent
f3cca83dc8
commit
139e192871
2 changed files with 43 additions and 26 deletions
|
|
@ -69,6 +69,13 @@ static Steinberg::Vst::TChar* toString (const juce::String& source) noexcept
|
|||
return reinterpret_cast<Steinberg::Vst::TChar*> (source.toUTF16().getAddress());
|
||||
}
|
||||
|
||||
#if JUCE_WINDOWS
|
||||
static const Steinberg::FIDString defaultVST3WindowType = Steinberg::kPlatformTypeHWND;
|
||||
#else
|
||||
static const Steinberg::FIDString defaultVST3WindowType = Steinberg::kPlatformTypeNSView;
|
||||
#endif
|
||||
|
||||
|
||||
//==============================================================================
|
||||
/** The equivalent numChannels and speaker arrangements should always
|
||||
match between this function and fillWithCorrespondingSpeakerArrangements().
|
||||
|
|
@ -81,23 +88,32 @@ static Steinberg::Vst::SpeakerArrangement getArrangementForNumChannels (int numC
|
|||
{
|
||||
using namespace Steinberg::Vst::SpeakerArr;
|
||||
|
||||
if (numChannels >= 24) return (Steinberg::Vst::SpeakerArrangement) 1929904127; // k222
|
||||
if (numChannels >= 14) return k131;
|
||||
if (numChannels >= 13) return k130;
|
||||
if (numChannels >= 12) return k111;
|
||||
if (numChannels >= 11) return k101;
|
||||
if (numChannels >= 10) return k91;
|
||||
if (numChannels >= 9) return k90;
|
||||
if (numChannels >= 8) return k71CineFullFront;
|
||||
if (numChannels >= 7) return k61Cine;
|
||||
if (numChannels >= 6) return k51;
|
||||
if (numChannels >= 5) return k50;
|
||||
if (numChannels >= 4) return k31Cine;
|
||||
if (numChannels >= 3) return k30Cine;
|
||||
if (numChannels >= 2) return kStereo;
|
||||
if (numChannels >= 1) return kMono;
|
||||
switch (numChannels)
|
||||
{
|
||||
case 0: return kEmpty;
|
||||
case 1: return kMono;
|
||||
case 2: return kStereo;
|
||||
case 3: return k30Cine;
|
||||
case 4: return k31Cine;
|
||||
case 5: return k50;
|
||||
case 6: return k51;
|
||||
case 7: return k61Cine;
|
||||
case 8: return k71CineFullFront;
|
||||
case 9: return k90;
|
||||
case 10: return k91;
|
||||
case 11: return k101;
|
||||
case 12: return k111;
|
||||
case 13: return k130;
|
||||
case 14: return k131;
|
||||
case 24: return (Steinberg::Vst::SpeakerArrangement) 1929904127; // k222
|
||||
default: break;
|
||||
}
|
||||
|
||||
return kEmpty;
|
||||
jassert (numChannels >= 0);
|
||||
|
||||
juce::BigInteger bi;
|
||||
bi.setRange (0, jmin (numChannels, (int) (sizeof (Steinberg::Vst::SpeakerArrangement) * 8)), true);
|
||||
return (Steinberg::Vst::SpeakerArrangement) bi.toInt64();
|
||||
}
|
||||
|
||||
/** The equivalent numChannels and speaker arrangements should always
|
||||
|
|
@ -120,10 +136,16 @@ static void fillWithCorrespondingSpeakerArrangements (Array<Steinberg::Vst::Spea
|
|||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
The order of the arrangement checks must be descending, since most plugins test for
|
||||
the first arrangement to match their number of specified channels.
|
||||
*/
|
||||
// The order of the arrangement checks must be descending, since most plugins test for
|
||||
/// the first arrangement to match their number of specified channels.
|
||||
|
||||
if (numChannels > 24)
|
||||
{
|
||||
juce::BigInteger bi;
|
||||
bi.setRange (0, jmin (numChannels, (int) (sizeof (Steinberg::Vst::SpeakerArrangement) * 8)), true);
|
||||
destination.add ((Steinberg::Vst::SpeakerArrangement) bi.toInt64());
|
||||
}
|
||||
|
||||
if (numChannels >= 24) destination.add ((Steinberg::Vst::SpeakerArrangement) 1929904127); // k222
|
||||
if (numChannels >= 14) destination.add (k131);
|
||||
if (numChannels >= 13) destination.add (k130);
|
||||
|
|
|
|||
|
|
@ -1374,12 +1374,7 @@ private:
|
|||
#endif
|
||||
|
||||
if (pluginHandle != nullptr)
|
||||
warnOnFailure (view->attached (pluginHandle,
|
||||
#if JUCE_WINDOWS
|
||||
kPlatformTypeHWND));
|
||||
#else
|
||||
kPlatformTypeNSView));
|
||||
#endif
|
||||
warnOnFailure (view->attached (pluginHandle, defaultVST3WindowType));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue