jtackaberry / reaticulate

An articulation management system for REAPER
Other
101 stars 46 forks source link

Off-Value for Toggle Type #104

Closed DoubleGrit closed 2 years ago

DoubleGrit commented 4 years ago

Hi jtackaberry,

Currently I see the "f=toggle" articulation type works similar to a "momentary footswitch", i.e. every time the switch is pressed, the same message is sent. The plugin then interprets this as a "flip the state" command.

However some instruments/plugins use more of a "latching footswitch" behaviour: they expect to receive a demand to "go to" a specific state, e.g. a "turn on" or a "turn off" command. My particular situation is a switch listening on a CC, that will turn on if the CC is >=64, and off if it's <64.

Currently I have a workaround: I've made a pair of buttons in an independent group, neither of which is a toggle, one is "on" and one is "off". This slightly defeats the purpose of a toggle switch, however.

While this seems a simple feature in concept I imagine it's hampered in practice by the same reasons as #55 ("when chasing, how would reaticulate know what the current state is supposed to be if it doesn't have the full history?"), but would be interested to hear your thoughts.

Thanks Jack

jtackaberry commented 4 years ago

Hi @DoubleGrit

f=toggle was meant to model articulations in patches that legitimately did behave as a toggle given the same keyswitch event. And it's a bit brittle if you consider what happens when the articulation is chased during playback: each time it's chased, it will toggle.

If you have separate events for on and off behavior, representing these as separate programs is preferred. This way you can be explicit about what mode you want to be set, and this is chased properly.

Though if you have any ideas about how this should behave, I'd be interested.

P.S. Sorry about the delay!

DoubleGrit commented 4 years ago

No worries @jtackaberry

In the end I just went back to CC-lanes for this functionality. As you've mentioned, "on" and "off" buttons work well enough in reaticulate, except of course they don't chase properly if another articulation has been activated more recently (which is a Reaper behaviour, not a reaticulate behaviour)

I'm trying to think of a way that would allow "true" chasing between different reaticulate groups, e.g. by using different MIDI channels... but everything becomes quite inefficient/cumbersome especially with regard to MIDI track/channel footprint, sadly.

jtackaberry commented 2 years ago

Just doing a bit of housekeeping. Since this feature idea is a bit problematic for the reasons mentioned, I'm going to close. If you have any further ideas please follow up and we can explore them.