4 : m_numVoices(numVoices), m_numInputChannels(inputChannels), m_numOutputChannels(outputChannels)
10 auto& graph = *
m_graphs.add(
new AudioProcessorGraph());
14 m_audioInputNodes.add(graph.addNode(std::make_unique<IOProcessor>(IOProcessor::audioInputNode)));
15 m_audioOutputNodes.add(graph.addNode(std::make_unique<IOProcessor>(IOProcessor::audioOutputNode)));
16 m_midiInputNodes.add(graph.addNode(std::make_unique<IOProcessor>(IOProcessor::midiInputNode)));
17 m_midiOutputNodes.add(graph.addNode(std::make_unique<IOProcessor>(IOProcessor::midiOutputNode)));
20 graph.prepareToPlay(44100.0, 1024);
26 auto kwidget = kwidgetToAdd.release();
27 auto node =
m_graphs[0]->addNode(kwidget->createVoice());
30 jassert(node !=
nullptr);
32 auto id = node->nodeID;
34 node =
m_graphs[i]->addNode(kwidget->createVoice(),
id);
77 auto connections =
m_graphs[0]->getConnections();
79 for (
auto& c : connections)
81 g->removeConnection(c);
86 std::vector<Kwidget*> currentKwidgets;
89 currentKwidgets.push_back(kwidget);
91 for (
auto& kwidget : currentKwidgets)
104 g.prepareToPlay(sampleRate, samplesPerBlock);
114 if (!k->isAChildKwidget())
116 k->noteOn(voiceIdx, midiNote, velocity);
127 if (!k->isAChildKwidget())
129 k->noteOff(voiceIdx, velocity);
141 k->noteCleared(voiceIdx);
151 if (!k->isAChildKwidget())
153 if (k->isActive(voiceIdx))
168 m_graphs[voiceIdx]->processBlock(buffer, m);
173 auto connections =
m_graphs[0]->getConnections();
175 for (
auto& c : connections)
177 auto src =
m_graphs[0]->getNodeForId(c.source.nodeID)->getProcessor();
178 auto dest =
m_graphs[0]->getNodeForId(c.destination.nodeID)->getProcessor();
182 srcID = kp->getKwidgetID();
186 destID = kp->getKwidgetID();
188 DBG(
"Connection\nChannel: " << c.source.channelIndex <<
"\nSource: " << srcID
189 <<
"\nDest: " << destID +
"\n");
203 if (g->isAnInputTo(*g->getNodeForId(dest), *g->getNodeForId(src)))
221 for (
int channel = 0; channel < numConnections; channel++)
222 if (g->addConnection({{src, channel}, {dest, channel + baseChannel}}) ==
false)
226 void KwidgetProcessorGraph::addMultipleConnectionsToOutputNode(
NodeID src,
int baseChannel,
int numConnections)
228 jassert(baseChannel <= m_numOutputChannels - numConnections);
230 for (
int graphIndex = 0; graphIndex < m_graphs.size(); graphIndex++)
232 auto g = m_graphs[graphIndex];
233 auto outputNodeID = m_audioOutputNodes[graphIndex]->nodeID;
234 for (
int channel = 0; channel < numConnections; channel++)
236 if (g->addConnection({{src, channel}, {outputNodeID, channel + baseChannel}}) ==
false)
246 for (
auto g : m_graphs)
247 for (
int i = 0; i < m_numOutputChannels; i++)
248 g->removeConnection({{src, i}, {dest, i}});
Definition AirAbsorptionFilter.cpp:2