ssj71 / infamousPlugins

LV2 Audio Plugins for Linux
http://ssj71.github.io/infamousPlugins
GNU General Public License v2.0
88 stars 12 forks source link

Mindi momentary value #46

Closed ericfont closed 3 years ago

ericfont commented 3 years ago
  1. Channel pressure/aftertouch (msgtype 13) now uses the UI's "Value" parameter for value, not the UI's "Note/CC/PG Number" parameter. This makes the behavior consistent with the UI and also consistent with the midi specs https://www.midi.org/specifications-old/item/table-1-summary-of-midi-message which refers to the Channel Pressure message's pressure value as "vvvvvvv". I've renamed DATA1, DATA2, DATA2B in the .c and .h files to NOTECCPG, VALUE, MOMENTARYVALUE so they are consistent with the UI expressed in the .ttl file, and to simplify the code for how Channel Pressure messages will use VALUE.

  2. If AUTOFF is enabled and a note has been sent, a note-off event is sent with VALUE when the momentary button is released.

  3. Updated README with momentary behavior.

  4. Shortened "Note/CC/PG Number" and "1st Msg Repeat Delay Time" in the .ttl to fit within the 16 character limit of ModDuo's GUI.

ericfont commented 3 years ago

I've verified this works on my ModDuo. AUTOFF with note-on message types works such that pressing a footswitch controlling the momentary button results in a note-on message with MOMENTARY value followed by a note off with VALUE approximately 3 milliseconds later. (The mod footswitch does not have the concept of holding down a button, so even if the mod footswitch is held down, the note-off still happens right after the note-on.)

ericfont commented 3 years ago

And with the parameter GUI names shortened to fit within 16 characters, they are now readable in the Mod's GUI:

new-settings

ericfont commented 3 years ago

If anyone wants to try out it, here is the build for ModDuo:

mindi.lv2.tar.gz

ericfont commented 3 years ago

And I'm verifying that I'm able to use this with AUTOFF to use my Mod's footswitch as a control surface for Ardour by setting each footswitch button to a different pitched note, so one controls Ardour's play button, one controls stop, and one controls record!

ericfont commented 3 years ago

hmm...I'm noticing although momentary button behavior is fine on mod footswitch and in Carla, however it isn't nice in jalv. The momentary button remains on when turned on, so it produces a continuous stream of note-on events when pressed. I guess it should only produce one note on on transition. Let me see if I can fix this to work nicely across all those hosts.

ericfont commented 3 years ago

ok, I fixed that issue in my last comment with my force update, so now it works ok in jalv.

ericfont commented 3 years ago

And I've rebuilt with that last force-push for modduo:

mindi.lv2.tar.gz

And I've verified that the behavior on modduo still works.

So it now seems to work on both modduo, jalv, carla. Anything other I should test?

ericfont commented 3 years ago

btw, I am happy to update the gui layout for this. Maybe increase the width of the plugin image and put a "MOMENTARY VALUE" lcd to the right of the existing VALUE lcd, and also put a button labeled "MOMENT" under that, and move the main enable button and the main enable light leftwards and label it "ENABLE", so that button and light doesn't get confused with the momentary one.

ericfont commented 3 years ago

I just got ModDwarf and built this PR for it:

mindi.lv2.tar.gz

I'm noticing a bug if I assign the momentary button to be one of the "Knobs", then pressing the Knob results in the browser UI producing a message along the lines of "bug, not addressable parameter" and then all the ModDwarf's physical controls failing to produce any response. Though I am still able to control the ModDwarf via the browser UI. Upon resetting the ModDwarf, it is functional again. I guess this might be a bug with how the mod treats trigger buttons when assigned to the Knobs.

ssj71 commented 3 years ago

Hey you've done a ton of work and I'm going to just merge this and do a few changes on my own. I'm going to switch the momentary value to be the release value which will I think make more sense for both buttons to send the same message. I'm also going to add a -1 in the range to disable it. If you want to contribute an updated modgui I would love it because I don't like html/css stuff at all and it takes me forever. Again, I really appreciate all your help and effort!

ssj71 commented 3 years ago

On further thought I can't think of a use-case for having it disabled (you'd just use the enable button), and calling it a release value may confuse legacy users doing that so I think I'll just leave everything in the code the way you have it here. Thanks again!