How to Pass keyBoardState object From PluginEditor to PluginProcessor?

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

2 Likes