Yeah, sorry. That’s not how it works.
Here’s the relevant part in AudioProcessor:
class CustomAudioProcessor : public juce::AudioProcessor
{
public:
CustomAudioProcessor();
juce::MidiKeyboardState& getKeyboardState()
{
return keyboardState;
}
void processBlock (juce::AudioBuffer<float>& buffer, juce::MidiBuffer& midiMessages)
{
keyboardState.processNextMidiBuffer (midiMessages,
0, buffer.getNumSamples(),
true);
// ...
}
private:
juce::MidiKeyboardState keyboardState;
};
And connect to the state in the editor:
CustomAudioProcessorEditor::CustomAudioProcessorEditor (CustomnAudioProcessor& p)
: AudioProcessorEditor (&p), audioProcessor (p),
keyboardComponent (audioProcessor.getKeyboardState(),
juce::MidiKeyboardComponent::horizontalKeyboard)
{
// ...
}
No need for additional pointers and stuff. In your code you were using keyboardState in your editor uninitialised.
Hope that helps
