Krotos Modules 3
Loading...
Searching...
No Matches
KwidgetProcessorGraph.h
Go to the documentation of this file.
1namespace krotos
2{
3 //==============================================================================
18 {
19 public:
20 using Node = AudioProcessorGraph::Node;
21 using NodeID = AudioProcessorGraph::NodeID;
22 using IOProcessor = AudioProcessorGraph::AudioGraphIOProcessor;
23 using Connection = AudioProcessorGraph::Connection;
24
26 KwidgetProcessorGraph(int numVoices, int inputChannels, int outputChannels);
27
30
32 void prepareToPlay(double sampleRate, int samplesPerBlock);
33
35 int getNumVoices() const { return m_numVoices; }
36
38 void noteOn(int voiceIdx, int midiNote, float velocity);
39
41 void noteOff(int voiceIdx, float velocity);
42
44 void noteCleared(int voiceIdx);
45
46 bool isActive(int voiceIdx);
47
49 void processVoice(int voiceIdx, AudioBuffer<float>& buffer);
50
56 void addKwidget(std::unique_ptr<Kwidget> kwidgetToAdd);
57
62 void removeKwidget(Kwidget* kwidget);
63
65 const OwnedArray<Kwidget>& getKwidgets() const { return m_kwidgets; }
66
68 bool canConnect(Kwidget* src, Kwidget* dest);
69
77 void addConnection(Kwidget* src, Kwidget* dest, int baseChannel, int numConnections);
78
84 void removeConnection(Kwidget* src, Kwidget* dest);
85
90 void connectToInputNode(Kwidget* dest, int baseChannel, int numConnections);
91
93 void connectToOutputNode(Kwidget* src, int baseChannel, int numChannels);
94
96 void clearKwidgets();
97
99 void clearConnections();
100
105 void debugConnections() const;
106
107 private:
109 bool canConnect(NodeID src, NodeID dest);
110 void addMultipleConnections(NodeID src, NodeID dest, int baseChannel, int numConnections);
111 void addMultipleConnectionsToOutputNode(NodeID src, int baseChannel, int numConnections);
112 void removeConnection(NodeID src, NodeID dest);
113
114 const int m_numVoices;
115
116 OwnedArray<Kwidget> m_kwidgets;
117 std::map<Kwidget*, NodeID> m_nodeIDs;
118
119 OwnedArray<AudioProcessorGraph> m_graphs;
120
121 double m_sampleRate{0.0};
125
126 Array<Node::Ptr> m_audioInputNodes;
127 Array<Node::Ptr> m_audioOutputNodes;
128 Array<Node::Ptr> m_midiInputNodes;
129 Array<Node::Ptr> m_midiOutputNodes;
130
131 JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(KwidgetProcessorGraph)
132 };
133} // namespace krotos
Definition Kwidget.h:8
Uses juce::AudioProcessorGraph to store Kwidgets and their audio connections, and process audio throu...
Definition KwidgetProcessorGraph.h:18
double m_sampleRate
Definition KwidgetProcessorGraph.h:121
void clearConnections()
Definition KwidgetProcessorGraph.cpp:75
void addKwidget(std::unique_ptr< Kwidget > kwidgetToAdd)
Definition KwidgetProcessorGraph.cpp:24
Array< Node::Ptr > m_midiInputNodes
Definition KwidgetProcessorGraph.h:128
int m_blockSize
Definition KwidgetProcessorGraph.h:122
Array< Node::Ptr > m_audioInputNodes
Definition KwidgetProcessorGraph.h:126
void addMultipleConnections(NodeID src, NodeID dest, int baseChannel, int numConnections)
Definition KwidgetProcessorGraph.cpp:217
int m_numOutputChannels
Definition KwidgetProcessorGraph.h:124
OwnedArray< Kwidget > m_kwidgets
Definition KwidgetProcessorGraph.h:116
void connectToInputNode(Kwidget *dest, int baseChannel, int numConnections)
Definition KwidgetProcessorGraph.cpp:65
AudioProcessorGraph::NodeID NodeID
Definition KwidgetProcessorGraph.h:21
void addMultipleConnectionsToOutputNode(NodeID src, int baseChannel, int numConnections)
Definition KwidgetProcessorGraph.cpp:226
std::map< Kwidget *, NodeID > m_nodeIDs
Definition KwidgetProcessorGraph.h:117
void prepareToPlay(double sampleRate, int samplesPerBlock)
Definition KwidgetProcessorGraph.cpp:95
void addConnection(Kwidget *src, Kwidget *dest, int baseChannel, int numConnections)
Definition KwidgetProcessorGraph.cpp:55
void removeKwidget(Kwidget *kwidget)
Definition KwidgetProcessorGraph.cpp:40
void removeConnection(Kwidget *src, Kwidget *dest)
Definition KwidgetProcessorGraph.cpp:60
void clearKwidgets()
Definition KwidgetProcessorGraph.cpp:84
AudioProcessorGraph::AudioGraphIOProcessor IOProcessor
Definition KwidgetProcessorGraph.h:22
void noteOn(int voiceIdx, int midiNote, float velocity)
Definition KwidgetProcessorGraph.cpp:108
bool isActive(int voiceIdx)
Definition KwidgetProcessorGraph.cpp:145
NodeID getNodeID(Kwidget *k)
Definition KwidgetProcessorGraph.cpp:193
KwidgetProcessorGraph(int numVoices, int inputChannels, int outputChannels)
Definition KwidgetProcessorGraph.cpp:3
void noteCleared(int voiceIdx)
Definition KwidgetProcessorGraph.cpp:134
int m_numInputChannels
Definition KwidgetProcessorGraph.h:123
void debugConnections() const
Definition KwidgetProcessorGraph.cpp:171
void processVoice(int voiceIdx, AudioBuffer< float > &buffer)
Definition KwidgetProcessorGraph.cpp:163
Array< Node::Ptr > m_audioOutputNodes
Definition KwidgetProcessorGraph.h:127
OwnedArray< AudioProcessorGraph > m_graphs
Definition KwidgetProcessorGraph.h:119
void noteOff(int voiceIdx, float velocity)
Definition KwidgetProcessorGraph.cpp:121
AudioProcessorGraph::Connection Connection
Definition KwidgetProcessorGraph.h:23
int getNumVoices() const
Definition KwidgetProcessorGraph.h:35
AudioProcessorGraph::Node Node
Definition KwidgetProcessorGraph.h:20
const int m_numVoices
Definition KwidgetProcessorGraph.h:114
const OwnedArray< Kwidget > & getKwidgets() const
Definition KwidgetProcessorGraph.h:65
bool canConnect(Kwidget *src, Kwidget *dest)
Definition KwidgetProcessorGraph.cpp:50
void connectToOutputNode(Kwidget *src, int baseChannel, int numChannels)
Definition KwidgetProcessorGraph.cpp:70
Array< Node::Ptr > m_midiOutputNodes
Definition KwidgetProcessorGraph.h:129
Definition AirAbsorptionFilter.cpp:2