2 #include <ossia/dataflow/graph_node.hpp>
3 #include <ossia/dataflow/port.hpp>
7 class merger final :
public ossia::graph_node
15 for(
int i = 0; i < count; i++)
17 auto inl =
new ossia::audio_inlet;
18 inl->target<ossia::audio_port>()->set_channels(2);
19 for(
auto& channel : *inl->target<ossia::audio_port>())
23 m_inlets.push_back(std::move(inl));
26 m_outlets.push_back(
new ossia::audio_outlet);
27 m_outlets.back()->target<ossia::audio_port>()->set_channels(2 * count);
28 for(
auto& channel : *m_outlets.back()->target<ossia::audio_port>())
34 ~merger()
override =
default;
36 void run(
const ossia::token_request& t, ossia::exec_state_facade e) noexcept
override
38 auto& op = *m_outlets.back()->target<ossia::audio_port>();
39 op.set_channels(2 * this->m_count);
42 for(
int i = 0; i < m_count; i++)
44 auto& in = m_inlets[i]->target<ossia::audio_port>()->get();
57 out[cur++].resize(e.bufferSize());
58 out[cur++].resize(e.bufferSize());
65 if(c.size() < e.bufferSize())
67 c.resize(e.bufferSize());
72 [[nodiscard]] std::string label() const noexcept
override {
return "Stereo Merger"; }