drobilla / ingen

A realtime modular synthesizer and/or effects processor
GNU Affero General Public License v3.0
30 stars 7 forks source link

Feature request: Allow MIDI binding enable / disable of module #31

Open loki42 opened 2 years ago

loki42 commented 2 years ago

It would be handy to be able to MIDI bind enabling and disabling a module to a MIDI CC. This would allow you to turn on and off effects / synths etc during a performance from a controller.

drobilla commented 2 years ago

Agreed, but we probably need a better bypass mechanism to make that suitable for performance (no clicks, no graph recompilation, etc) before binding it would be particularly useful. Doing that really properly means plugins need to implement bypass, but as a fallback Ingen could implement a dumb one which won't be able to preserve levels but at least be mostly good enough for most cases.

loki42 commented 2 years ago

I currently let people assign bypass to a foot switch and I just send a enable true / false and that works pretty well. It's not perfect but it's pretty widely used on stage at the moment. The main complaint people have is either not being able to bind it or plugins that take mono in with stereo out not passing unaffected signal in stereo on bypass. I can live without that unless there's a good mechanism in lv2 for checking if you're bypassed.

On Sat, 10 Sep 2022, 12:00 am David Robillard, @.***> wrote:

Agreed, but we probably need a better bypass mechanism to make that suitable for performance (no clicks, no graph recompilation, etc) before binding it would be particularly useful. Doing that really properly means plugins need to implement bypass, but as a fallback Ingen could implement a dumb one which won't be able to preserve levels but at least be mostly good enough for most cases.

— Reply to this email directly, view it on GitHub https://github.com/drobilla/ingen/issues/31#issuecomment-1242013025, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAISQBC4CCVQRSJIQMFW4LLV5M7I3ANCNFSM6AAAAAAQIQHEWU . You are receiving this because you authored the thread.Message ID: @.***>

drobilla commented 2 years ago

Interesting, I'd have expected it to be more janky.

Binding seems a bit tricky/odd since there's no control for that... I'll have a think about it.

(Thankfully I am finally almost at the end of this tedious LV2-and-friends maintenance phase so should hopefully be able to more actively start working on Ingen soon...)

loki42 commented 1 year ago

I might look into adding this soon as it's a pretty requested feature from my users.

drobilla commented 1 year ago

Wondering about how to best do the interface for this. Enable works, but as you say, it's a bit odd and hard to bind because it's not a control like everything else. There's also the question of plugins that actually do support bypass and have a control for it, which should be used if possible.

Maybe this is a case where Ingen should "fake" a control that's not actually on the plugin? There's current nothing like that, but it seems better to present a coherent model to the user rather than to directly expose the plugin in the most raw way possible...

Very tangentially related thing: message-based control, which also breaks the mould of "ingen just exposes the ports of the plugin directly".

loki42 commented 1 year ago

Fake controls does actually sound like the most elegant solution, then they'll just appear in the interface like normal and can be midi bound or controlled any way real controls are. Very few plugins seem to expose a proper bypass control.

On Sun, 24 Sept 2023, 12:19 am David Robillard, @.***> wrote:

Wondering about how to best do the interface for this. Enable works, but as you say, it's a bit odd and hard to bind because it's not a control like everything else. There's also the question of plugins that actually do support bypass and have a control for it, which should be used if possible.

Maybe this is a case where Ingen should "fake" a control that's not actually on the plugin? There's current nothing like that, but it seems better to present a coherent model to the user rather than to directly expose the plugin in the most raw way possible...

Very tangentially related thing: message-based control, which also breaks the mould of "ingen just exposes the ports of the plugin directly".

— Reply to this email directly, view it on GitHub https://github.com/drobilla/ingen/issues/31#issuecomment-1732328717, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAISQBFDGK3Q22KNPKW6DNDX33VVRANCNFSM6AAAAAAQIQHEWU . You are receiving this because you authored the thread.Message ID: @.***>

drobilla commented 1 year ago

Yeah, I'm not sure how common those controls are, although some things definitely use them. It should certainly work gracefully for ones that do, though, since bypass done by the host is always going to have potential audible issues (clicks or slowness or wild level changes or...)