I have a simple synth plugin that seems to work as expected when playing its built-in keyboard (a MidiKeyboardComponent), however it ignores MIDI from the host (e.g. DAW piano roll).
As mentioned in the title, I am working with FAUST and JUCE (I got interested in this after looking at @ncthom’s open source fx plugin Temper).
Basically, my editor inherits from MidiInputCallback and MidiKeyboardStateListener:
class SawtoothSynthAudioProcessorEditor :
public AudioProcessorEditor,
private MidiInputCallback,
private MidiKeyboardStateListener
{
and then I implement the required methods:
void handleNoteOn (MidiKeyboardState*, int midiChannel, int midiNoteNumber, float velocity) override;
void handleNoteOff (MidiKeyboardState*, int midiChannel, int midiNoteNumber, float /*velocity*/) override;
void handleIncomingMidiMessage (MidiInput* source, const MidiMessage& message) override;
The method’s implementation is quite simple - they just call the FAUST-generated code:
void SawtoothSynthAudioProcessor::keyOn(int pitch, int velocity)
{
dspFaust.keyOn(pitch,velocity);
}
(for those of you who are interested, I’ve been following this FAUST guide)
Now, there was a big smile on my face when I saw that this was working, however I can only play on the onscreen keyboard as it seems MIDI from the host is ignored.
I did a JUCE-only version before starting to look into FAUST, and that was working properly. However, it used all of the Synthesiser/SynthesiserVoice/ SynthesiserSound infrastructure, that I am not using anymore here (as I suppose all of that job is now done by the code exported by FAUST).
Thanks for reading and if anybody has any advice related to the issue above it would be very much appreciated!

Glad to see that project is still helpful!
)
, but instead look at the
. I’m a bit lost here, do you have any thoughts? (for the records, here is the Faust definition I’m playing with: