I have now essentially finished my primary synthesiser I wanted to build with JUCE. It is working wonderfully, and it has been well worth the effort. However, there is a small error I’m not sure what the cause of. It is becoming debilitating so I must find a way to fix it. I’m not sure what the best way to go about this as I am still relatively new to C++/JUCE.
I will try to describe the issue as best as I can.
- Synthesiser works perfectly in Standalone mode. No problems.
- However, in DAW (Cubase Elements), issue arises periodically where the synthesiser stops taking new MIDI inputs. Ie. It will render the existing notes until they naturally die out (so will continue to make audio) but will not take new notes or process the note off data for those existing notes.
- Full processing can be restored by “powering off and on” again the synth instance in the synth rack or in rare cases when that doesn’t work, resetting the parameter tree within the synth to defaults.
- Problem is typically provoked during active playback when doing some action in the DAW that interrupts continuous audio running. eg. Opening/bypassing another VST effect, switching which channel is highlighted for auditioning.
- If I always stop the playback before opening any VSTs, changing VST bypasses, or switching auditioned tracks, this problem seems to be avoided.
So what I can conclude if I’m interpreting correctly is that when there is a slight disruption to the DAW where the processing might “pause” or hang momentarily from an action during playback, the synth is getting messed up in some way. Turning on/off the synth and/or resetting the parameter tree (which re-initializes everything also) seems to correct this.
When this happens, it will continue rendering audio for existing notes - it just won’t take new MIDI data thereafter until reset, which makes me wonder if it’s specifically the MIDI data/buffer that’s getting messed up.
This happens in both the Synthesiser class and MPE Synthesiser class, so if there’s a problem in the design it’s bigger than just that.
This is not my actual synthesiser design but is a basic framework of the structure I’ve been experimenting and learning with, and it has the same rendering structure as my actual synthesiser if it’s any help:
Is there any obvious reason I might be experiencing this type of problem? How would you suggest testing to figure it out?
Thanks for any ideas or suggestion.