Adding a midi device to an AudioProcessorGraph

Hi Erik,

I haven’t the time this week to read your code properly… but a quick glance makes me question if your objects’ lifetime scope is good… You appear to be passing around a lot of pointers – while I’d suggest using class members

For instance in a Standalone app I have which uses an AudioProcessorGraph I have some private members:

ScopedPointer<AudioProcessorGraph>              m_pMainGraph;

AudioProcessorGraph::AudioGraphIOProcessor*     m_ioProcOut;
AudioProcessorGraph::AudioGraphIOProcessor*     m_ioProcMidiIn;
AudioProcessorGraph::AudioGraphIOProcessor*     m_ioProcMidiOut;

AudioProcessorGraph::Node::Ptr                  m_ioProcOutNode;
AudioProcessorGraph::Node::Ptr                  m_ioProcMidiInNode;
AudioProcessorGraph::Node::Ptr                  m_ioProcMidiOutNode;

and in the MainComponent’s ctor in the init list I have:

m_pMainGraph                 (new AudioProcessorGraph()),

then in the ctor body (reduced to minimum for example):

m_pMainGraph->setPlayConfigDetails (2, 2, m_dSampleRate, m_iBufferSize);

m_ioProcOut         = new AudioProcessorGraph::AudioGraphIOProcessor (AudioProcessorGraph::AudioGraphIOProcessor::audioOutputNode);
m_ioProcMidiIn      = new AudioProcessorGraph::AudioGraphIOProcessor (AudioProcessorGraph::AudioGraphIOProcessor::midiInputNode);
m_ioProcMidiOut     = new AudioProcessorGraph::AudioGraphIOProcessor (AudioProcessorGraph::AudioGraphIOProcessor::midiOutputNode);

m_ioProcOutNode     = m_pMainGraph->addNode (m_ioProcOut);
m_ioProcMidiInNode  = m_pMainGraph->addNode (m_ioProcMidiIn);
m_ioProcMidiOutNode = m_pMainGraph->addNode (m_ioProcMidiOut);

m_pSynthProc = new CSynthProcessor();  

m_pSynthProcNode = m_pMainGraph->addNode (m_pSynthProc);

jassert (m_pSynthProcNode != nullptr);

m_pMainGraph->addConnection (m_ioProcMidiInNode->nodeId, AudioProcessorGraph::midiChannelIndex, m_pSynthProcNode->nodeId, AudioProcessorGraph::midiChannelIndex);

You also appear to be using raw pointers instead of ReferenceCountedObjectPtr (for the Nodes).

Cheers,

Rail

2 Likes