helgoboss / helgobox

Helgobox: ReaLearn & Playtime
https://www.helgoboss.org/projects/helgobox
GNU General Public License v3.0
205 stars 20 forks source link

Add Automation Parameters to Realearn #11

Closed jackmau closed 4 years ago

jackmau commented 4 years ago

Hi @helgoboss, thank you for your amazing products! I am a huge fun of both Realearn and and an avid playtime user. I am really glad you have restarted working on realearn, it is an amazing product. I have a lot of request which would make my setup much simpler to use and less reliable on a series of work-arounds I've built in a long JSFX I use in conjuction with realearn.

The first request is about finer way to control realearn from another realearn instance, without having to create a zillion of instances and/ or arm/select tracks. I am thinking to a parameter list similar to the one currently in playtime. Ideally what I would need to access are:

I don't mind having actions instead of automation parameters if they are handier to implement.

Accessing internal mapping parameters would be interesting, but probably not worth the effort, I'd rather duplicate mappings if I am able to programmatically active/deactive them.

This would allow me, for example, to have a single button toggle between two relative states (hitting a realearn session that activates/deactivates a mapping in another realearn session). It would also handy to manage feedback in situation you have multiple mappings for the same controller.

helgoboss commented 4 years ago

I'm planning to add a similar feature which should cover all your use cases, if I understood correctly. I call it "Conditional activation". The idea is roughly as follows:

Additionally, I think about making the generic parameters available in EEL transformation formulas. That allows one to parameterize a mapping.

I also thought about adding one VST parameter for each mapping: "Enable/disable mapping 1", "Enable/disable mapping2", etc. But I think the above mentioned feature is more powerful as it allows you to quickly enable/disable complete groups of mappings. And it doesn't have the problem that everything breaks apart as soon you move/remove/insert a mapping.

Feedback about this idea appreciated.

jackmau commented 4 years ago

wow, that's much more than I was expecting, thanks @helgoboss! This sounds much more exciting than what I was thinking of! I love the idea of Conditional Activation. I think Generic parameters could solve a lot of potential use cases in transformation formulas. This would allow, for example to use a single non-momentary non-toggle button/note to control 2 different parameters (effectively a second-press functionality, which, correct me if I am wrong, is not available in realearn currently).

If I can add a little suggestion, I'd like Control and Feedback activation to be separate. In my setup I have a 2-level control, where the first level are all buttons, which determine which plugin the second layer (knobs, exp pedals and leap motion) controls. Originally I had a separate realearn for each plugin (plus the master one for buttons), which is an overkill in my opinion, now I settled having just one, and wrote a custom EEL script to filter the feedback just to the selected plugin. I think having Generic parameters with a Custom EEL for Feedback Activation would allow me to bypass my EEL script.

I am interested to understand a bit better how, from a UI/UX perspective, in your framework, you link Generic Parameters and the dropdown menu you are describing. Are you gonna have a dropdown menu like the ones you would have for midi input? So that for each mapping you can decide exactly the Generic Parameter it is linked to?

Sounds really promising though.

I wish I was a better programmer and could provide more hands-on help.

helgoboss commented 4 years ago

I think Generic parameters could solve a lot of potential use cases in transformation formulas. This would allow, for example to use a single non-momentary non-toggle button/note to control 2 different parameters (effectively a second-press functionality, which, correct me if I am wrong, is not available in realearn currently).

I'm not sure what exactly you mean by "non-momentary non-toggle" but it sounds like conditional activation could solve that issue - without needing an EEL formula.

I am interested to understand a bit better how, from a UI/UX perspective, in your framework, you link Generic Parameters and the dropdown menu you are describing. Are you gonna have a dropdown menu like the ones you would have for midi input? So that for each mapping you can decide exactly the Generic Parameter it is linked to?

Yes. The "modifier" activation type looks like this (allows up to 2 modifiers - analogously to e.g. Ctrl+Shift on a computer keyboard): image

The "program" activation type (allowing for switching between different groups of mapping as if those groups would be presets): image

And the "EEL" activation type (the most flexible type, e.g. you can easily simulate the other types by writing a formula): image

For now I don't separate between control and feedback because that would complicate things.

helgoboss commented 4 years ago

@jackmau You can try the feature in https://github.com/helgoboss/realearn/releases/tag/v1.11.0-pre1. It implements everything mentioned above with the exception of using parameter values in control or feedback transformation formulas. I will probably implement that, too. But it's a feature on its own an deserves a separate ticket.