MCPcopy Create free account
hub / github.com/audacity/audacity / ActivateMainAudioBuses

Function ActivateMainAudioBuses

libraries/lib-vst3/VST3Wrapper.cpp:126–184  ·  view source on GitHub ↗

Activates main audio input/output buses and disables others (event, audio aux)

Source from the content-addressed store, hash-verified

124
125//Activates main audio input/output buses and disables others (event, audio aux)
126bool ActivateMainAudioBuses(Steinberg::Vst::IComponent& component)
127{
128 using namespace Steinberg;
129
130 constexpr int32 MaxChannelsPerAudioBus = 2;
131
132 std::vector<Vst::SpeakerArrangement> defaultInputSpeakerArrangements;
133 std::vector<Vst::SpeakerArrangement> defaultOutputSpeakerArrangements;
134
135 const auto processor = FUnknownPtr<Vst::IAudioProcessor>(&component);
136
137 for(int i = 0, count = component.getBusCount(Vst::kAudio, Vst::kInput); i < count; ++i)
138 {
139 Vst::BusInfo busInfo {};
140 Vst::SpeakerArrangement arrangement {0ull};
141
142 component.getBusInfo(Vst::kAudio, Vst::kInput, i, busInfo);
143
144 Vst::SpeakerArrangement defaultArragement {};
145 processor->getBusArrangement(Vst::kInput, i, defaultArragement);
146
147 arrangement =
148 busInfo.busType == Vst::kMain
149 ? GetBusArragementForChannels(busInfo.channelCount, defaultArragement)
150 : defaultArragement;
151
152 component.activateBus(Vst::kAudio, Vst::kInput, i, busInfo.busType == Vst::kMain);
153 defaultInputSpeakerArrangements.push_back(arrangement);
154 }
155 for(int i = 0, count = component.getBusCount(Vst::kAudio, Vst::kOutput); i < count; ++i)
156 {
157 Vst::BusInfo busInfo {};
158 Vst::SpeakerArrangement arrangement {0ull};
159
160 component.getBusInfo(Vst::kAudio, Vst::kOutput, i, busInfo);
161
162 Vst::SpeakerArrangement defaultArragement {};
163 processor->getBusArrangement(Vst::kOutput, i, defaultArragement);
164
165 arrangement =
166 busInfo.busType == Vst::kMain
167 ? GetBusArragementForChannels(busInfo.channelCount, defaultArragement)
168 : defaultArragement;
169
170 component.activateBus(Vst::kAudio, Vst::kOutput, i, busInfo.busType == Vst::kMain);
171 defaultOutputSpeakerArrangements.push_back(arrangement);
172 }
173 for(int i = 0, count = component.getBusCount(Vst::kEvent, Vst::kInput); i < count; ++i)
174 component.activateBus(Vst::kEvent, Vst::kInput, i, 0);
175 for(int i = 0, count = component.getBusCount(Vst::kEvent, Vst::kOutput); i < count; ++i)
176 component.activateBus(Vst::kEvent, Vst::kOutput, i, 0);
177
178 auto result = processor->setBusArrangements(
179 defaultInputSpeakerArrangements.empty() ? nullptr : defaultInputSpeakerArrangements.data(), defaultInputSpeakerArrangements.size(),
180 defaultOutputSpeakerArrangements.empty() ? nullptr : defaultOutputSpeakerArrangements.data(), defaultOutputSpeakerArrangements.size()
181 );
182
183 return result == kResultOk;

Callers 1

SetupProcessingFunction · 0.85

Calls 5

push_backMethod · 0.45
emptyMethod · 0.45
dataMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected