Revert VST3 kMono arrangement experiment #9418

Apparently kMono is not a flag and implies connection of the first port

This reverts commit 8aebfc45dc.
and  2698b23f82.
This commit is contained in:
Robin Gareus 2023-07-21 00:38:29 +02:00
parent dfc52fd5fb
commit 86d818e4b9
Signed by: rgareus
GPG Key ID: A090BCE02CF57F04
2 changed files with 18 additions and 4 deletions

View File

@ -332,6 +332,9 @@ private:
int _n_midi_inputs;
int _n_midi_outputs;
int _n_factory_presets;
/* work around UADx plugin crash */
bool _no_kMono;
};
} // namespace Steinberg

View File

@ -1161,6 +1161,7 @@ VST3PI::VST3PI (std::shared_ptr<ARDOUR::VST3PluginModule> m, std::string unique_
, _owner (0)
, _add_to_selection (false)
, _n_factory_presets (0)
, _no_kMono (false)
{
using namespace std;
IPluginFactory* factory = m->factory ();
@ -1173,6 +1174,16 @@ VST3PI::VST3PI (std::shared_ptr<ARDOUR::VST3PluginModule> m, std::string unique_
throw failed_constructor ();
}
PFactoryInfo fi;
if (factory->getFactoryInfo (&fi) == kResultTrue) {
/* work around issue with UADx VST3s not recognizing
* Vst::SpeakerArr::kMono. (see commit message for details)
*/
if (0 == strcmp (fi.vendor, "Universal Audio (UADx)")) {
_no_kMono = true;
}
}
#ifndef NDEBUG
if (DEBUG_ENABLED (DEBUG::VST3Config)) {
char fuid[33];
@ -2210,8 +2221,8 @@ VST3PI::enable_io (std::vector<bool> const& ins, std::vector<bool> const& outs)
}
cnt += n_chn;
/* special case for Left only == Mono */
if (sa == 1 /*Vst::SpeakerArr::kSpeakerL */) {
sa |= Vst::SpeakerArr::kMono; /* 1 << 19 */
if (sa == 1 /*Vst::SpeakerArr::kSpeakerL */ && !_no_kMono) {
sa = Vst::SpeakerArr::kMono; /* 1 << 19 */
}
DEBUG_TRACE (DEBUG::VST3Config, string_compose ("VST3PI::enable_io: activateBus (kAudio, kInput, %1, %2) used-chn: %3 spk-arr: %4\n", sa_in.size (), enable, _bus_info_in[sa_in.size ()].n_used_chn, std::hex, sa));
@ -2234,8 +2245,8 @@ VST3PI::enable_io (std::vector<bool> const& ins, std::vector<bool> const& outs)
}
cnt += n_chn;
/* special case for Left only == Mono */
if (sa == 1 /*Vst::SpeakerArr::kSpeakerL */) {
sa |= Vst::SpeakerArr::kMono; /* 1 << 19 */
if (sa == 1 /*Vst::SpeakerArr::kSpeakerL */ && !_no_kMono) {
sa = Vst::SpeakerArr::kMono; /* 1 << 19 */
}
DEBUG_TRACE (DEBUG::VST3Config, string_compose ("VST3PI::enable_io: activateBus (kAudio, kOutput, %1, %2) used-chn: %3 spk-arr: %4\n", sa_out.size (), enable, _bus_info_out[sa_out.size ()].n_used_chn, std::hex, sa));
_component->activateBus (Vst::kAudio, Vst::kOutput, sa_out.size (), enable);