brummer10 / guitarix

guitarix virtual versatile amplification for Jack/Linux
254 stars 28 forks source link

[Feature Request] Support a bypass button in Guitarix LV2 Plugins #6

Closed wingedrhino closed 6 months ago

wingedrhino commented 4 years ago

If the Guitarix LV2 plugins were to be switchable on/off in a DAW using generic MIDI learn, they'd need to support a bypass toggle button.

Would it be possible to add a bypass button to the various Gx* plugins?

This should make it possible to control the sound via MIDI foot controllers like the Behringer FCB1010, or even via a regular MIDI controller (still better than mouse clicks).

It'll make it a lot easier to use Guitarix in a live setting. :metal:

x42 commented 4 years ago

see also http://lv2plug.in/ns/lv2core#enabled

Perhaps this can be backported from https://github.com/sadko4u/tamgamp.lv2

brummer10 commented 4 years ago

@x42 All GxPlugins coming along outside guitarix within the GxPlugins.lv2 repository support bypass (LV2:enabled). If I backport a Class from sadko4u, then it will properly be his denormalize protection class, which is outstanding. Beside that, tamgamp.lv2 is developed with the help of the guitarix dkbuilder (and I've helped sadko4u to get it going). Any LV2 plug you develop with this tool comes on default with a ramped bypass switch. So, I know how to do it, and I've enough experience with it to do it well without the need to backport it from somewhere. The same is true for cross-fades, by the way. @wingedrhino The plugins coming within guitarix been mainly older then this LV2 feature. For example, GxAmplifier-X is from 2013, were the lv2:enabled feature is from 2016. The problem is, it's work which needs to be done. Implementing a bypass ramp class is done in less then a hour (and I've done it already several day's ago, here locally), but implement it in all lv2 plugs coming with guitarix take several days of work, and is is nothing I doe to have some fun. So, best will be if you gimme a priority list of plugs were you would see this implemented first, to get it going.

wingedrhino commented 4 years ago

I didn't know about the GxPlugins.lv2 package! Seeing that most of them support bypass, I think I could replace parts of my current tonestack (which use the older plugins) with them. To prioritize, I'd look at effects where no similar pedal exists in GxPlugins.lv2.

I compared the list here to the one here and tried out some pedals from Guitarix-LV2 that weren't in GxPlugins.LV2.

Top of the list would be GxWahwah (the one plugin that DEFINITELY needs a standby mode), GxAmplifier-X itself (since it's already a part of most people's tonestacks), the Tube Tremolo & Tube Vibrato (both these have a very musical quality to them that isn't in similar plugins), TubeScreamer (for obvious reasons), the RangeMaster, and then the GxFuzz.

Also, I think for now it should be okay even if the bypass switch isn't implemented in the custom pedal GUI, but a hidden control available via generic parameters.

If the task is repeatable (i.e, possible to replicate after looking at a commit of yours), I can setup a development environment similar to yours, and then port changes that were done on one plugin onto another plugin. I'm unfamiliar with both DSP programming and C++ (although I'd done some C++ work maybe 10 years ago that I can't recall anymore), but it should be a nice challenge to try and follow along to your changes!

x42 commented 4 years ago

but implement it in all lv2 plugs coming with guitarix take several days of work

I assume there are also subtle differences also depending each plugin. In some cases one or more parameters needs to be internally ramped to zero or unity, in others a cross-fade needs to happen.

If I backport a Class from sadko4u, then it will properly be his denormalize protection class,

good point. There's also https://github.com/sadko4u/lsp-dsp-lib LGPL'ed; not sure if there's something relevant for guitarix in there.

brummer10 commented 4 years ago

Hi So I've pushed the bypass class to the repository now and have implemented the bypass in GxRat and GxAmplifier-X. See the commits above.

@wingedrhino If you in the mod to implement the bypass in some more plugs, (with or without UI implementation), feel free to send us some pull requests. If you have a question about it, just ask.

regards hermann