# Adding a midi device to an AudioProcessorGraph

**URL:** <https://forum.juce.com/t/adding-a-midi-device-to-an-audioprocessorgraph/20422>\
**Category:** General JUCE discussion\
**Created:** [December 29, 2016, 4:46am UTC](https://forum.juce.com/t/adding-a-midi-device-to-an-audioprocessorgraph/20422 "2016-12-29T04:46:02Z")\
**Posts on this page:** 1\
**Showing post:** 4

<div class="post-metadata">

**Author:** ![railjonrogut](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/railjonrogut/32/505_2.png) [@railjonrogut](https://forum.juce.com/u/railjonrogut)\
**Post date:** [December 30, 2016, 9:37am UTC](https://forum.juce.com/t/adding-a-midi-device-to-an-audioprocessorgraph/20422/4 "2016-12-30T09:37:13Z")

</div>

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

---

_[View the full topic](https://forum.juce.com/t/adding-a-midi-device-to-an-audioprocessorgraph/20422)._
