New to JUCE and relatively new to C++ (although I’ve been a C programmer for years). Having a bit of trouble understanding a couple things (and couldn’t find anything relevant with a search).
My biggest questions right now with the HandlingMidiEventsTutorial are:
1) Why are handleIncomingMidiMessage and handleNoteOn/handleNoteOff all handled separately?
It seems to be to handle the HW vs SW MIDI inputs separately, but the HW triggers the On/Off callbacks and there’s special logic to work around this. Also the comment mentions handleIncomingMidiMessage handling both HW and SW keyboard, but behavior doesn’t reflect that. My guess is it’s partially to show two different handlers for these events, but I may be off.
2) How are each of those subscribed to specific events?
I assume it’s deeper in the base classes (MidiInputCallback and MidiKeyboardStateListener, respectively), but does that mean MidiKeyboardStateListener is only meant for SW keyboards? Or was the HW just not subscribed to that callback?
3) Threads for JUCE?
Is there documentation for what classes spawn which threads when? Some of the class API mentions it, but not all (and I see a 8-ish threads generated for this demo). This may just require digging deeper into the base class headers (at least for the GUI stuff I’m mostly ignoring for now).
I had previously attempted to write a lot of this myself from scratch in C, but that was unreasonable. JUCE seems like the perfect fit for projects I want to work on, just need to brush up my C++ a bit more.