Dear csound/cabbage gurus/Rory,
I’m cycling back on an old question/frustration.
I created my preset system allowing me to save and load presets with buttons, which can be MIDI mapped in a DAW (see snapshot). The idea is to on the fly save/load presets in different slots and the entire bank of presets can then be saved/loaded to/from a single file.
I’m using arrays for this and it works fine, but the problem is that when presets change the host DAW doesn’t get informed and doesn’t send MIDI feedback to a mapped MIDI controller. This is related to my previous questions (Plugin feedback DAW automation, MIDI feedback from plugin to MIDI controller - Can plugin inform a mapped MIDI controller about the state of variables when they change internally without using a mouse? ).
Looking at other posts, e.g. Solution for user-made presets?, Combobox snaps selection from csound, ToneZ - Free EDM synthesizer, Easier way to share presets, I think my preset system uses a similar basic principle as in the ToneZ’s synth or in presetmanager2_midi.zip from Combobox snaps selection from csound, i.e. custom triggering and changing parameters from the preset info. I see that those solutions suffer from the same issue as my solution. They don’t inform the host about the parameter changes upon preset changes, which can be triggered either via a MIDI mapped button or via MIDI program change messages.
To resolve this, you (Rory) “modified things so that changes made to a channel within Csound (using chnset) are broadcast to the host”. Unfortunately, this interrupts automation. Trying to resolve this, “the last attempt used an AUTOMATION channel to disable/enable the plugin from broadcasting changes to the host”. This was not a stable solution, so I believe you reverted back to not using the AUTOMATION channel, right? In version 2.5.16 it doesn’t seem to function anymore.
I’ve seen plugin examples (not open source though) which can change presets with MIDI program change messages, send parameter change feedback to DAW and not interrupt automation. I still hope this (or something similar) is possible in csound/cabbage? But if not due to some reason, I’d like to know, just so I can plan my plugin designs around it.
The preset system in Examples/Miscellaneous/PresetsNamed.csd seems great and it does send feedback to DAW. So there must be some fundamental difference in how it sets the parameters, not using
chnset? Could this system be reworked to allow custom triggers invoked by e.g. MIDI program change messages or buttons change?