Process audio networks for a specific channel.
Processes all audio-sink networks registered to the specified channel and returns their combined output data.
155{
157 return {};
158 }
159
160 std::vector<std::vector<double>> all_network_outputs;
161
164 for (
auto&
network : audio_it->second) {
166 continue;
167 }
168
169 if (!
network->is_registered_on_channel(channel)) {
170 continue;
171 }
172
173 if (!
network->is_processed_this_cycle()) {
174 network->mark_processing(
true);
175 network->process_batch(num_samples);
176 network->mark_processing(
false);
178 }
179
180 const auto& net_buffer =
network->get_audio_buffer();
182 if (
network->needs_channel_routing()) {
183 double scale =
network->get_routing_state().amount[channel];
184 if (scale == 0.0)
185 continue;
186
187 if (scale == 1.0) {
188 all_network_outputs.push_back(*net_buffer);
189 } else {
190 std::vector<double> scaled_buffer = *net_buffer;
191 for (auto& sample : scaled_buffer)
193
194 all_network_outputs.push_back(std::move(scaled_buffer));
195 }
196 } else {
197 all_network_outputs.push_back(*net_buffer);
198 }
199 }
200 }
201 }
202
204 return all_network_outputs;
205}
Core::GlobalNetworkConfig network
bool preprocess_networks(ProcessingToken token)
Preprocess networks for a specific token.
void postprocess_networks(ProcessingToken token, std::optional< uint32_t > channel)
Postprocess networks for a specific token and channel.
std::unordered_map< ProcessingToken, std::vector< std::shared_ptr< Network::NodeNetwork > > > m_audio_networks
Audio-sink networks Only populated for networks with OutputMode::AUDIO_SINK.
Tendency< D, float > scale(const Tendency< D, float > &t, float factor)
Uniform scaling of a scalar-output tendency.
@ AUDIO_SINK
Aggregated audio samples sent to output.