Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Automation Parameters to Realearn #11

Closed
jackmau opened this issue Aug 4, 2020 · 4 comments · Fixed by #17
Closed

Add Automation Parameters to Realearn #11

jackmau opened this issue Aug 4, 2020 · 4 comments · Fixed by #17
Assignees
Labels
enhancement New feature or request
Milestone

Comments

@jackmau
Copy link

jackmau commented Aug 4, 2020

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:

  • send feedback now
  • individual assignment enable/disable control
  • individual assignment enable/disable feedback

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
Copy link
Owner

helgoboss commented Aug 9, 2020

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:

  • ReaLearn get's a bunch of generic VST parameters "Generic 1", "Generic 2", etc. which initially don't do anything at all.
  • Every mapping gets a dropdown "Active" which by default is set to "Always".
  • This dropdown provides the following additional options:
    • "When modifiers pressed (AND)": The mapping will become active only if a certain combination of generic parameters is on (> 0).
      • If you then control the generic parameters by buttons on your music keyboard, these buttons essentially work like modifiers (e.g. "Shift+Ctrl") on a computer keyboard to activate/deactivate a mapping - or a group of mappings!
    • "When program selected (XOR)": The mapping will become active only if one of the generic parameters has a certain value.
      • This lets you use a rotary encoder (or knob/fader) to switch between different sets of mappings.
    • "Custom (EEL)": The mapping will become active only if the given EEL formula evaluates to true.
      • The EEL formula has access to the values of all generic parameters.
      • This allows for more unusual mapping activation strategies.

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.

@helgoboss helgoboss added the enhancement New feature or request label Aug 9, 2020
@jackmau
Copy link
Author

jackmau commented Aug 19, 2020

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 helgoboss self-assigned this Aug 22, 2020
helgoboss added a commit that referenced this issue Aug 22, 2020
helgoboss added a commit that referenced this issue Aug 22, 2020
helgoboss added a commit that referenced this issue Aug 22, 2020
helgoboss added a commit that referenced this issue Aug 23, 2020
helgoboss added a commit that referenced this issue Aug 26, 2020
It makes more sense to have this in MainProcessor because this should
contain the majority of processing logic and be able to work on data
structures that are suitable for processing. It became obvious when
realizing that - in order to implement EEL activation conditions -
in the build stage (Session) we need a string but no EEL processor,
in the processing stage (MainProcessor) we need an EEL processor
but no string.
helgoboss added a commit that referenced this issue Aug 26, 2020
helgoboss added a commit that referenced this issue Aug 26, 2020
helgoboss added a commit that referenced this issue Aug 26, 2020
there's always EEL for more advanced scenarios
helgoboss added a commit that referenced this issue Aug 26, 2020
helgoboss added a commit that referenced this issue Aug 27, 2020
@helgoboss
Copy link
Owner

helgoboss commented Aug 27, 2020

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
Copy link
Owner

helgoboss commented Aug 28, 2020

@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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants