Go Back   Cockos Incorporated Forums > REAPER Forums > MIDI Hardware, Control Surfaces, and OSC

Reply
 
Thread Tools Display Modes
Old 11-06-2022, 04:04 PM   #2801
binbinhfr
Human being with feelings
 
binbinhfr's Avatar
 
Join Date: Oct 2021
Location: France
Posts: 363
Default

Quote:
Originally Posted by helgoboss View Post
Could you please try to make that work with the usual REAPER action mapping (actions window)? It's actually a thing that isn't ReaLearn-specific. That would save me some effort and time.

If you got your script to work in native REAPER and find that it doesn't work with ReaLearn, then feel free to post back here.
I tested it. It works under classic Reaper mapping.
Code:
----
mode: 0 res: 127 val = 28
----
mode: 0 res: 127 val = 29
----
mode: 0 res: 127 val = 30
----
mode: 0 res: 127 val = 31
----
mode: 0 res: 127 val = 32
----
mode: 0 res: 127 val = 33
----
mode: 0 res: 127 val = 34
mode = absolute, res = 7 bits, values 0 - 127 . In accordance with the specs of the LaunchControl.
__________________
Reaper's lunatic
Reapack repository / GitHub / SoundCloud / Donate

Last edited by binbinhfr; 11-06-2022 at 04:18 PM.
binbinhfr is offline   Reply With Quote
Old 11-06-2022, 05:01 PM   #2802
Puck
Human being with feelings
 
Puck's Avatar
 
Join Date: Feb 2022
Location: Almost Canada
Posts: 505
Default

Quote:
Originally Posted by helgoboss View Post
The "DAW control" preset is written in Lua because it's pretty complex and creating it via clicking in the ReaLearn GUI would be far too tedious. Here's its source: https://github.com/helgoboss/realear...aw-control.lua

You could try to understand the inner workings of this big preset. This is possible ... at the end it all boils down to a bunch of mappings. But it's also not easy, especially if you don't yet understand all the single parts of which it is made.

Another approach would be that you first get 1 and 2 to work isolated, without "DAW control" preset. Then step-by-step cherry-pick whatever you need from the "DAW control" preset and put it into your own. In other words, start with small things, make them work, put the small things together ... and at the end you have something big.

Or you create a feature request and I improve "daw-control.lua" myself to support some configuration flags that make track color support and track visibility support work.

Did you make the basics of the "DAW control" preset work with TouchOSC? So did you design a controller preset with OSC sources and virtual targets with control element IDs that conform to the ones in "DAW control"?
Yes the basics are working. Not everything yet but I understand how it works and what to do. So yes I created my own controller preset (well, I’m in the process of that)

….

I took a look at the LUA. I think maybe I could do this but maybe not . I suppose we’ll see. Maybe a clue or two would be needed lol

Is everything in that lua source available to be edited within Realearn? Or does the script go above and beyond? I see where all the mappings are there obviously but there seems to be some logic in the LUA that I couldn’t find within the Realearn preset clicking around. I don’t have a problem with doing the coding in an editor, I was just curious if that extra logic was visible within realearn.
Puck is offline   Reply With Quote
Old 11-07-2022, 01:19 AM   #2803
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,023
Default

Quote:
Originally Posted by Puck View Post
Yes the basics are working. Not everything yet but I understand how it works and what to do. So yes I created my own controller preset (well, I’m in the process of that)

….

I took a look at the LUA. I think maybe I could do this but maybe not . I suppose we’ll see. Maybe a clue or two would be needed lol

Is everything in that lua source available to be edited within Realearn? Or does the script go above and beyond? I see where all the mappings are there obviously but there seems to be some logic in the LUA that I couldn’t find within the Realearn preset clicking around. I don’t have a problem with doing the coding in an editor, I was just curious if that extra logic was visible within realearn.
Yes, everything in the Lua code is also available via GUI. With one exception (irrelevant here): You can't currently assign labels to specific values of a compartment parameter via GUI.
helgoboss is offline   Reply With Quote
Old 11-07-2022, 02:13 AM   #2804
Puck
Human being with feelings
 
Puck's Avatar
 
Join Date: Feb 2022
Location: Almost Canada
Posts: 505
Default

Quote:
Originally Posted by helgoboss View Post
Yes, everything in the Lua code is also available via GUI. With one exception (irrelevant here): You can't currently assign labels to specific values of a compartment parameter via GUI.
Where is the extra bit of logic at? I’m speaking of the loop at the end that goes through all channels and updates them.

Last edited by Puck; 11-07-2022 at 06:43 AM.
Puck is offline   Reply With Quote
Old 11-07-2022, 10:12 AM   #2805
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,023
Default

Quote:
Originally Posted by Puck View Post
Where is the extra bit of logic at? I’m speaking of the loop at the end that goes through all channels and updates them.
Which extra bit? The Lua code uses some custom logic, yes. But just to generate a list of mappings, which is returned at the end. This resulting list of mappings could also be created via GUI. But it would be tedious
helgoboss is offline   Reply With Quote
Old 11-07-2022, 03:46 PM   #2806
Puck
Human being with feelings
 
Puck's Avatar
 
Join Date: Feb 2022
Location: Almost Canada
Posts: 505
Default

Quote:
Originally Posted by helgoboss View Post
Which extra bit? The Lua code uses some custom logic, yes. But just to generate a list of mappings, which is returned at the end. This resulting list of mappings could also be created via GUI. But it would be tedious
Ah! Ok that's awesome! So you write some lua code and it loops through your code to make the mappings. That's pretty brilliant!

The <Dynamic>(TCP) track selector works great for what I wanted. Funnily enough, I hadn't read that in all my reading today. I had a couple other things I was going to try, but when I got home and clicked through the Realearn GUI I noticed that was there and it works great. I see it just adds a scope line in the lua export so I'll be able to programatically change all those later. Great news!

Edit: I was able to do this successfully! However, TracksVisibleInTcp threw me off a bit. Instinct told me it should have been TracksVisibleInTCP

...........

I do need help with track colors though:

First question: What's the basic way of sending OSC colors? style.color.rrggbb in the feedback arguments? I've been unsuccessful thus far. I did send a "NIL" value once to my layout though

Then once we get that squared away:

In the context of a controller compartment and the daw control preset where you have virtual sources/targets, the virtual source won't have that "feedback arguments" section as that's just for OSC. So how am I supposed to deal with that?

Forgive me if this just sounds like I don't understand. I definitely don't get some of what I'm saying. But I've been reading hard for the past few days when I get the time and I'm coming around.

Last edited by Puck; 11-07-2022 at 08:03 PM.
Puck is offline   Reply With Quote
Old 11-08-2022, 02:45 AM   #2807
Bassman002
Human being with feelings
 
Join Date: Aug 2022
Location: Göppingen, Deutschland
Posts: 304
Default

Quote:
Originally Posted by helgoboss View Post
Man, this is too much for me right now Could you prepare a little test RPP?
HI Sent you an Email!

Thanks
Bassman.
Bassman002 is offline   Reply With Quote
Old 11-08-2022, 03:28 AM   #2808
Cloudswim
Human being with feelings
 
Join Date: May 2017
Posts: 335
Default

Quote:
Originally Posted by helgoboss View Post
There's nothing like a "ReaLearn: Learn target" target at the moment. It's also not possible to control target min/max from outside or modulate it. In most cases, the solution is to prepare all mappings in advance and then switch between them via conditional activation. But in your case this is seemingly not a solution.

In theory, I could add such a functionality, but first I would like to understand your use case better. To be honest, I don't understand it at all at the moment

1. What is a "LFO modulation bridging unit"?

2. I don't understand how and when your device sends messages. So far, it sounds to me as if it sends multiple messages on multiple channels if you move some knob/fader or whatever ... but why on multiple channels and why multiple messages? Can't follow.

3. Why do you turn off all mappings before learning a new target? And then turn them back on again?
Hi thanks for the reply ! :-)

For me the ability to target the "Learn Target" function would probably be more important. The reason for this is the way I use Realearn is that I often have to try out different targets and it would be very convenient to not have to switch to the Realearn UI. This is the simple answer if you want to read more you can see my reply in more detail.

1. What is a "LFO modulation bridging unit"?

As I explained earlier I have an Eurorack hardware unit that allows me to convert Control Voltage to Midi Messages. (Eurorack is the modular synth format that has gotten very popular over the years https://www.modulargrid.net/ )

One could build their own instrument with many many different functions. One of this function is MODULATION acting like a LFO, specifically using CV to control and modulate different synth or fx parameters, but this is all in hardware.

What if one wanted to modulate a VST or DAW controls instead ? the possibility is endless. This is where the VCMC comes into picture. An 8 channel CV / Gate unit that allows one to convert CV and Gate signals into midi messages, such as CC or Note Number , Note on / OFF ,pitch & velocity etc... ( https://www.befaco.org/vcmc-2/ - VCMC is a voltage controlled MIDI controller. A fully editable MIDI controller with eight faders and push buttons. Each of them with a CV or Gate input associated to automate their functioning via external signals or to be configured independently for further control.Each control on VCMC can be edited on its OLED screen and will be output either via DIN-5 or USB as a class compliant MIDI device.)

The beauty of this is with Realearn one can modulate any parameter as they desire, in theory I could even make several mapping groups all assigned to the same 8 inputs with different modulation destinations and send signal events to the VCMC to have it flip through the mapping groups at different time. (this is interesting for me for sound design) And this is why I say Realearn can act as a bridging block from Eurorack to the software world. This is probably nothing new, but still I find there is a lot of room for experimentation. And for this reason I would like to be able to change targets of different modulation parameters via Realearn quickly and conveniently.

2. I don't understand how and when your device sends messages. So far, it sounds to me as if it sends multiple messages on multiple channels if you move some knob/fader or whatever ... but why on multiple channels and why multiple messages? Can't follow.

So if you look at the Front Panel for VCMC Midi Controller, there are 16 different patch inputs. And usually most of them will be occupied by patch cables sending Control Voltage or Gate signals to the VCMC where it then converts to MIDI messages. And because its always receiving continuous CV or gate signals (it wont pause when I want it to) therefore I cant tell Realearn which of these specific inputs I would like to re assign to a new target.

https://youtu.be/V4wnLyafCRw?t=1240 before reading on you could quickly watch this from 20:40, which will probably explain the issue better than I could. It really is just a problem that is inherent to the unit itself where the makers did not anticipate the user to encounter this problem with software, but hopefully could be corrected in the future through a firmware update where one could mute a channel.

For example CV1- Cv8 on VCMC are all receiving control voltages converted to a different MIDI CC number where than it is mapped by Realearn to different parameters on a VST synth. And for any reason I might want to re assign CV1 to a new parameter. The easiest way for me to do this is just to go into the Realearn UI and click on Learn Target for the input in question, correct? BUT, dont forget all other inputs are also still receiving signals and controlling the VST parameter it is assigned to. Because of this, Realearn will just assign the first movement of a parameter on the VST to CV1.

3. Why do you turn off all mappings before learning a new target? And then turn them back on again?

So my workaround for this is to just use the conditional function on Realearn to deactivate the desired mappings momentarily so REALERN will not receive messages from VCMC thus nothing will be moving on the VST. And than go over to the Realearn UI and click on Learn Target to set a new target parameter. After this I will have to turn back on the mappings again. If I was able to do all of this via another instance of Realearn it would make things much easier.

For example on an another instance of Realearn I could use a midi controller to map 8 different buttons to Learn Target for each channel and another button to activate/deactivate Relearn mapped to the VCMC.

I Hope I have explained my issue clearly, and if you had read so far I THANK YOU for being patient ! Making a donation is on my list to do for this week ! :-)

Last edited by Cloudswim; 11-08-2022 at 03:57 AM.
Cloudswim is offline   Reply With Quote
Old 11-08-2022, 07:33 AM   #2809
Michelob
Human being with feelings
 
Michelob's Avatar
 
Join Date: Sep 2010
Location: Mons, Belgium
Posts: 3,053
Default

Hello,

Sorry, newbee question here...

I bought a Platform X+ and installed Realearn, which is fantastic.

Unfortunatly, MIDI feedback doesn't seem to work out of the box.

I checked the manual that specifies Platform M is a tested surface, and that you have to choose Mackie mode (fader 1).

But it's not working.

So... am I missing somthing about configuration ? Or the X wouldn't work where the M would ?

Thanks a lot,

Michel
Michelob is offline   Reply With Quote
Old 11-08-2022, 10:15 AM   #2810
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,023
Default

Quote:
Originally Posted by Puck View Post
Edit: I was able to do this successfully! However, TracksVisibleInTcp threw me off a bit. Instinct told me it should have been TracksVisibleInTCP
Yeah, naming conventions for acronyms vary. I got used to this convention (probably because I mainly code in Rust these days).

Quote:
Originally Posted by Puck View Post
I do need help with track colors though:

First question: What's the basic way of sending OSC colors? style.color.rrggbb in the feedback arguments? I've been unsuccessful thus far. I did send a "NIL" value once to my layout though
The following mapping outputs the color of the ReaLearn track to OSC address "/color" in rrggbb format. Enable real output logging to see which OSC values are sent.

Code:
{
    kind = "Mapping",
    value = {
        id = "APBBXAP5kWNazLEw51gMr",
        name = "1",
        source = {
            kind = "Osc",
            address = "/color",
            argument = {
                index = 0,
                kind = "String",
                value_range = {0, 1},
            },
            feedback_arguments = {
                "style.color.rrggbb",
            },
        },
        glue = {
            step_size_interval = {0.01, 0.05},
            step_factor_interval = {1, 5},
            feedback = {
                kind = "Numeric",
                color = {
                    prop = "target.track.color",
                },
                background_color = {
                    prop = "target.track.color",
                },
            },
        },
        target = {
            kind = "Track",
            action = "DoNothing",
        },
    },
}
Quote:
Originally Posted by Puck View Post
Then once we get that squared away:

In the context of a controller compartment and the daw control preset where you have virtual sources/targets, the virtual source won't have that "feedback arguments" section as that's just for OSC. So how am I supposed to deal with that?

Forgive me if this just sounds like I don't understand. I definitely don't get some of what I'm saying. But I've been reading hard for the past few days when I get the time and I'm coming around.
I think you are doing a great job there getting into the depths of ReaLearn so quickly. I know it's not straightforward at times.

You don't need a "feedback arguments" section when you specify the virtual source (in the main compartment). You just specify the virtual source and leave it to the controller compartment how exactly the color is transmitted to your device. It could be a MIDI device, an OSC device, a text-to-speech-engine, anything really. By using virtual sources, you leave that open. The "feedback arguments" section only makes sense for an OSC source. That's exactly the point of separating between controller and main compartment. We call that "separation of concerns" in programming and I found it's also a useful thing for ReaLearn.

Therefore the solution is to define "feedback arguments" in the corresponding controller compartment mapping.
helgoboss is offline   Reply With Quote
Old 11-08-2022, 10:23 AM   #2811
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,023
Default

Quote:
Originally Posted by Cloudswim View Post
Hi thanks for the reply ! :-)

For me the ability to target the "Learn Target" function would probably be more important. The reason for this is the way I use Realearn is that I often have to try out different targets and it would be very convenient to not have to switch to the Realearn UI. This is the simple answer if you want to read more you can see my reply in more detail.

...

I Hope I have explained my issue clearly, and if you had read so far I THANK YOU for being patient ! Making a donation is on my list to do for this week ! :-)
Ah, so the device sends a continuous stream of MIDI messages, even if the values don't change? Interesting. That means ReaLearn has much to do It shouldn't hurt though because it usually doesn't invoke targets if they already have the desired value.

And you deactivate all mappings because if you wouldn't deactivate them and press "Learn target", learning the target would immediately stop again because the continuous stream of MIDI messages would instantly trigger a target without you touching anything. Is that correct?

Please create a FR here: https://github.com/helgoboss/realearn/issues/new. There we could discuss details, e.g. how to identify the mapping for which you want to learn the target etc.
helgoboss is offline   Reply With Quote
Old 11-08-2022, 10:26 AM   #2812
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,023
Default

Quote:
Originally Posted by Michelob View Post
Hello,

Sorry, newbee question here...

I bought a Platform X+ and installed Realearn, which is fantastic.

Unfortunatly, MIDI feedback doesn't seem to work out of the box.

I checked the manual that specifies Platform M is a tested surface, and that you have to choose Mackie mode (fader 1).

But it's not working.

So... am I missing somthing about configuration ? Or the X wouldn't work where the M would ?

Thanks a lot,

Michel
The X+ is an extension of the M+, it can't be used standalone, right? That means you have the Platform M+. Does the Platform M+ work for you?
helgoboss is offline   Reply With Quote
Old 11-08-2022, 03:35 PM   #2813
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,023
Default

Quote:
Originally Posted by tho View Post
Thank you.
As a work around would the best solution be to use conditional mapping to press a controller button to bring up a mapping that was specific to the VST that I have in focus? In other words do the same thing that auto does but manually. Or is there another way of using conditional mapping to create the auto load effect.
Thanks
Hey tho. Good news. The next pre-release will have https://github.com/helgoboss/realearn/issues/408. So you will be able to auto-load a preset when a particular FX is focused and automatically fall back to the normal mappings once the FX loses focus (previously it always cleared the mappings when unfocused).

This is good news for whoever uses "Make superior" and finds it too complicated because it needs 2 instances or doesn't like the fact that it currently doesn't work with projection.
helgoboss is offline   Reply With Quote
Old 11-08-2022, 04:09 PM   #2814
Michelob
Human being with feelings
 
Michelob's Avatar
 
Join Date: Sep 2010
Location: Mons, Belgium
Posts: 3,053
Default

Quote:
Originally Posted by helgoboss View Post
The X+ is an extension of the M+, it can't be used standalone, right? That means you have the Platform M+. Does the Platform M+ work for you?
Hello,

Thanks for the reply,

No I don't have the M+, but the X+ can be used standalone, even it's not its first use. Well in fact it's supposed to...

Because I tried and I can't get any feedback, even when using it as a Mackie control surface...

So you confirm that with the M, it's as simple as wirtten in the User Manual... I guess that's not a good thing for me (either I got hardware troubleshooting, or pairing won't work out of the box...).

Michel
Michelob is offline   Reply With Quote
Old 11-08-2022, 04:33 PM   #2815
Michelob
Human being with feelings
 
Michelob's Avatar
 
Join Date: Sep 2010
Location: Mons, Belgium
Posts: 3,053
Default

Oh my god, I just had to make a factory reset (turning it off -> on while simultaneously pressing SEL buttons 1-2-3), and now everything works perfectly !

https://support.iconproaudio.com/hc/...our-Platform-M

In fact, yesterday I tried to upgrade the firmware with a wrong Icon software (not totally clear on the website), that of course didn't work, and that I had to interrupt in the middle of the process.

I guess I'm lucky that a simple factory reset gave me back a fully functional device...

So I can now confirm it's working without the Platform M, both as a control surface, and as a MIDI controller with Realearn. Yeehaa !

Just followed your very clear user guide, and now it works, yes, out of the box, simple like that.

Thanks again, I've got some happy mapping night ahead

Michel
Michelob is offline   Reply With Quote
Old 11-08-2022, 04:35 PM   #2816
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,023
Default

Quote:
Originally Posted by Michelob View Post
Hello,

Thanks for the reply,

No I don't have the M+, but the X+ can be used standalone, even it's not its first use. Well in fact it's supposed to...

Because I tried and I can't get any feedback, even when using it as a Mackie control surface...

So you confirm that with the M, it's as simple as wirtten in the User Manual... I guess that's not a good thing for me (either I got hardware troubleshooting, or pairing won't work out of the box...).

Michel
It's best to try with some minimal setup. Fresh ReaLearn instance, one mapping only, simple target, e.g. master track volume.

In that case:

- Does "Learn source" work for you (moving one of the faders)?
- Do you have "Feedback output" set to the correct device?
- Does the fader move if you move "master track volume" in REAPER?
helgoboss is offline   Reply With Quote
Old 11-08-2022, 04:37 PM   #2817
Michelob
Human being with feelings
 
Michelob's Avatar
 
Join Date: Sep 2010
Location: Mons, Belgium
Posts: 3,053
Default

Quote:
Originally Posted by helgoboss View Post
It's best to try with some minimal setup. Fresh ReaLearn instance, one mapping only, simple target, e.g. master track volume.

In that case:

- Does "Learn source" work for you (moving one of the faders)?
- Do you have "Feedback output" set to the correct device?
- Does the fader move if you move "master track volume" in REAPER?
- yes
- yes
- yes

I guess we posted at the same time, did you see my message above ?
Michelob is offline   Reply With Quote
Old 11-08-2022, 04:38 PM   #2818
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,023
Default

Quote:
Originally Posted by Michelob View Post
- yes
- yes
- yes

I guess we posted at the same time, did you see my message above ?
Hah, seems like. Glad it works!
helgoboss is offline   Reply With Quote
Old 11-08-2022, 04:42 PM   #2819
Michelob
Human being with feelings
 
Michelob's Avatar
 
Join Date: Sep 2010
Location: Mons, Belgium
Posts: 3,053
Default

Yes, thanks again, Realearn is fantastic.

Just a look to the Changelog... wow, did you really do this all alone ? Incredible.

Michel
Michelob is offline   Reply With Quote
Old 11-08-2022, 04:45 PM   #2820
binbinhfr
Human being with feelings
 
binbinhfr's Avatar
 
Join Date: Oct 2021
Location: France
Posts: 363
Default

Quote:
Originally Posted by helgoboss View Post
Could you please try to make that work with the usual REAPER action mapping (actions window)? It's actually a thing that isn't ReaLearn-specific. That would save me some effort and time.
If you got your script to work in native REAPER and find that it doesn't work with ReaLearn, then feel free to post back here.
So I tested and it works using usual mapping, so do you have an idea of what could be the problem for ReaLearn to transmit a parameter to a script ?
__________________
Reaper's lunatic
Reapack repository / GitHub / SoundCloud / Donate
binbinhfr is offline   Reply With Quote
Old 11-08-2022, 04:50 PM   #2821
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,023
Default

Quote:
Originally Posted by Michelob View Post
Yes, thanks again, Realearn is fantastic.

Just a look to the Changelog... wow, did you really do this all alone ? Incredible.

Michel
Thanks. Yes. Well, it just evolved with the years.

Quote:
Originally Posted by binbinhfr View Post
So I tested and it works using usual mapping, so do you have an idea of what could be the problem for ReaLearn to transmit a parameter to a script ?
Ah sorry, forgot to answer. I could reproduce this. It seems that get_action_context() doesn't really work if you call the action via REAPER's extension API. That's a pity. I sent a message to Justin if there's a way to make it work. Let's hope.
helgoboss is offline   Reply With Quote
Old 11-08-2022, 05:42 PM   #2822
Cloudswim
Human being with feelings
 
Join Date: May 2017
Posts: 335
Default

Quote:
Originally Posted by helgoboss View Post
Ah, so the device sends a continuous stream of MIDI messages, even if the values don't change? Interesting. That means ReaLearn has much to do It shouldn't hurt though because it usually doesn't invoke targets if they already have the desired value.

And you deactivate all mappings because if you wouldn't deactivate them and press "Learn target", learning the target would immediately stop again because the continuous stream of MIDI messages would instantly trigger a target without you touching anything. Is that correct?

Please create a FR here: https://github.com/helgoboss/realearn/issues/new. There we could discuss details, e.g. how to identify the mapping for which you want to learn the target etc.
Ah, so the device sends a continuous stream of MIDI messages, even if the values don't change? Interesting. That means ReaLearn has much to do It shouldn't hurt though because it usually doesn't invoke targets if they already have the desired value.

It sends continuous streams of MIDI messages yes, but the value of the message is always changing from 0-127.

And you deactivate all mappings because if you wouldn't deactivate them and press "Learn target", learning the target would immediately stop again because the continuous stream of MIDI messages would instantly trigger a target without you touching anything. Is that correct?

Exactly ! :-)


Please create a FR here: https://github.com/helgoboss/realearn/issues/new. There we could discuss details, e.g. how to identify the mapping for which you want to learn the target etc.

Will do thanks!
Cloudswim is offline   Reply With Quote
Old 11-08-2022, 08:31 PM   #2823
Puck
Human being with feelings
 
Puck's Avatar
 
Join Date: Feb 2022
Location: Almost Canada
Posts: 505
Default

Quote:
Originally Posted by helgoboss View Post
Yeah, naming conventions for acronyms vary. I got used to this convention (probably because I mainly code in Rust these days).



The following mapping outputs the color of the ReaLearn track to OSC address "/color" in rrggbb format. Enable real output logging to see which OSC values are sent.

Code:
{
    kind = "Mapping",
    value = {
        id = "APBBXAP5kWNazLEw51gMr",
        name = "1",
        source = {
            kind = "Osc",
            address = "/color",
            argument = {
                index = 0,
                kind = "String",
                value_range = {0, 1},
            },
            feedback_arguments = {
                "style.color.rrggbb",
            },
        },
        glue = {
            step_size_interval = {0.01, 0.05},
            step_factor_interval = {1, 5},
            feedback = {
                kind = "Numeric",
                color = {
                    prop = "target.track.color",
                },
                background_color = {
                    prop = "target.track.color",
                },
            },
        },
        target = {
            kind = "Track",
            action = "DoNothing",
        },
    },
}


I think you are doing a great job there getting into the depths of ReaLearn so quickly. I know it's not straightforward at times.

You don't need a "feedback arguments" section when you specify the virtual source (in the main compartment). You just specify the virtual source and leave it to the controller compartment how exactly the color is transmitted to your device. It could be a MIDI device, an OSC device, a text-to-speech-engine, anything really. By using virtual sources, you leave that open. The "feedback arguments" section only makes sense for an OSC source. That's exactly the point of separating between controller and main compartment. We call that "separation of concerns" in programming and I found it's also a useful thing for ReaLearn.

Therefore the solution is to define "feedback arguments" in the corresponding controller compartment mapping.
Thanks Helgoboss!

I've been lurking for a while I changed my Reaper forum user name from cjewellstudios to Puck. I made that now infamous (read: deleted) video combining Realearn and Smart Knobs on The Reaper Blog's YT channel. Plus I'm studying programming in my free time. I suppose that's why I was able to catch on.

I've managed to get what I've deemed to be the harder parts working! My layout now respects TCP visibility and has track colors.

I'll be fleshing the rest out in the next day or so. Thanks for all your help!
Puck is offline   Reply With Quote
Old 11-09-2022, 04:40 PM   #2824
Puck
Human being with feelings
 
Puck's Avatar
 
Join Date: Feb 2022
Location: Almost Canada
Posts: 505
Default

Messing with Realearn tonight so undoubtedly I'll have some questions.

But first a suggestion:

When entering a bunch of mappings, it would be really nice to have Previous/Next mapping buttons to the right and left of the "OK" on the mapping panel.

Writing LUA is great, but not always ideal. I think these buttons on the bottom would make things quicker.
Puck is offline   Reply With Quote
Old 11-10-2022, 01:42 AM   #2825
daniellumertz
Human being with feelings
 
daniellumertz's Avatar
 
Join Date: Dec 2017
Location: Brazil
Posts: 1,961
Default

I wonder if is possible to use a track volume as source?
daniellumertz is offline   Reply With Quote
Old 11-10-2022, 04:03 AM   #2826
Bassman002
Human being with feelings
 
Join Date: Aug 2022
Location: Göppingen, Deutschland
Posts: 304
Default

Quote:
Originally Posted by helgoboss View Post
Hey tho. Good news. The next pre-release will have https://github.com/helgoboss/realearn/issues/408. So you will be able to auto-load a preset when a particular FX is focused and automatically fall back to the normal mappings once the FX loses focus (previously it always cleared the mappings when unfocused).

This is good news for whoever uses "Make superior" and finds it too complicated because it needs 2 instances or doesn't like the fact that it currently doesn't work with projection.
Great! Now that I know how this "Make Superior" works😒😁😂

Fine, thank you
Bassman.
Bassman002 is offline   Reply With Quote
Old 11-10-2022, 04:31 AM   #2827
Puck
Human being with feelings
 
Puck's Avatar
 
Join Date: Feb 2022
Location: Almost Canada
Posts: 505
Default

In CSI land, one nice thing it can do is output a blank fx zone for a particular fx. Take reacomp for example. You can have CSI spit out a text file with all the possible FXParams.

Can Realearn do this? If not, that’s definitely a feature request. (I know you like to use GitHub officially, I will if it seems like a good idea and can’t already be done)

But it would be great if Realearn created a group for a particular fx and all you had to do was hook up the virtual sources from your controller.

Edit: although I do like the learn many function where you just touch your controller then touch the control on the plugin. Maybe that’s all you need.

While I am speaking about fx; what’s the general workflow? To have one Realearn instance in auto load and then have each plugin be a group?
Puck is offline   Reply With Quote
Old 11-10-2022, 08:23 AM   #2828
MonkeyBars
Human being with feelings
 
MonkeyBars's Avatar
 
Join Date: Feb 2016
Location: Hollyweird
Posts: 2,520
Default

Quote:
Originally Posted by daniellumertz View Post
I wonder if is possible to use a track volume as source?
According to my research no (would love to be wrong about this), so you have to use a control tone and a method to detect its audio volume. I have found that this generally works, though so far getting the curves right sometimes is problematic without advanced knowledge:

Control tone -> ReaControlMIDI with param mod -> ReaLearn

The ReaControlMIDI can kick out MIDI CC of your choice (such as mod or breath which are higher res) with parameter modulation detecting incoming audio volume.
MonkeyBars is offline   Reply With Quote
Old 11-10-2022, 09:59 AM   #2829
Puck
Human being with feelings
 
Puck's Avatar
 
Join Date: Feb 2022
Location: Almost Canada
Posts: 505
Default

Selecting <Dynamic>(TCP) in the mapping panel should also show in Realearn's main page.

As of right now selecting any of the <Dynamic> variants all result in the main page saying "Track <Dynamic>"

Again hesitant on using GitHub. I thought I found a bug last night, opened an issue for it, then realized it was user error on my part and closed it.
Puck is offline   Reply With Quote
Old 11-10-2022, 10:27 AM   #2830
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,023
Default

Quote:
Originally Posted by Puck View Post
Thanks Helgoboss!

I've been lurking for a while I changed my Reaper forum user name from cjewellstudios to Puck. I made that now infamous (read: deleted) video combining Realearn and Smart Knobs on The Reaper Blog's YT channel. Plus I'm studying programming in my free time. I suppose that's why I was able to catch on.

I've managed to get what I've deemed to be the harder parts working! My layout now respects TCP visibility and has track colors.

I'll be fleshing the rest out in the next day or so. Thanks for all your help!
Ah, cjewellstudios, hi Well, that video was good, it was just outdated because of later improvements in ReaLearn. Much luck with your OSC layout, let me know how it goes.

Quote:
Originally Posted by Puck View Post
Messing with Realearn tonight so undoubtedly I'll have some questions.

But first a suggestion:

When entering a bunch of mappings, it would be really nice to have Previous/Next mapping buttons to the right and left of the "OK" on the mapping panel.

Writing LUA is great, but not always ideal. I think these buttons on the bottom would make things quicker.
User "vonglan" already requested this on GitHub: https://github.com/helgoboss/realearn/issues/224 ... you can subscribe and comment on it.

He will be happy that someone else wants this, too. Definitely more motivation for me to implement it. I'll put it on the "next" list, should be relatively easy to do.

Quote:
Originally Posted by daniellumertz View Post
I wonder if is possible to use a track volume as source?
No, currently not without other tools as MonkeyBars describes. But I have a vision to make it possible, in a more generic way: Allowing an arbitrary target to control another target. https://github.com/helgoboss/realear...ent-1229503232. Then you could use the "Track: Peak" target to do exactly what you want.

Quote:
Originally Posted by Bassman002 View Post
Great! Now that I know how this "Make Superior" works������

Fine, thank you
Bassman.
Sorry haha I know I should have implemented that sooner, but at the time this feature request was created, it was not so easy to implement it. In the meantime, my code improved and suddenly it was easy to implement.

Quote:
Originally Posted by Puck View Post
In CSI land, one nice thing it can do is output a blank fx zone for a particular fx. Take reacomp for example. You can have CSI spit out a text file with all the possible FXParams.

Can Realearn do this? If not, that’s definitely a feature request. (I know you like to use GitHub officially, I will if it seems like a good idea and can’t already be done)

But it would be great if Realearn created a group for a particular fx and all you had to do was hook up the virtual sources from your controller.

Edit: although I do like the learn many function where you just touch your controller then touch the control on the plugin. Maybe that’s all you need.

While I am speaking about fx; what’s the general workflow? To have one Realearn instance in auto load and then have each plugin be a group?
I could quite easily add a function to the right-click menu that iterates over all parameters of the last focused plug-in and creates a mapping for each one. Is that what you want? The question is how exactly those mappings should look. Source = None, Glue = Default values, Target = FX (Particular / By ID). Any ideas?

Best practice with FX control is that you set the ReaLearn instance to auto-load, but not put each FX into one group! You should instead have one main preset per FX. As described in the "auto-load" tutorial in the user guide. This is much better than having one FX per group because you clearly separate mappings for different FX and can reuse them in different contexts. Presets are the "unit of reuse" in ReaLearn. And of course, another advantage is that you can still use groups for organizing different parameter mappings of your FX.

Quote:
Originally Posted by MonkeyBars View Post
According to my research no (would love to be wrong about this), so you have to use a control tone and a method to detect its audio volume. I have found that this generally works, though so far getting the curves right sometimes is problematic without advanced knowledge:

Control tone -> ReaControlMIDI with param mod -> ReaLearn

The ReaControlMIDI can kick out MIDI CC of your choice (such as mod or breath which are higher res) with parameter modulation detecting incoming audio volume.
You are correct about this but see above comment.

Quote:
Originally Posted by Puck View Post
Selecting <Dynamic>(TCP) in the mapping panel should also show in Realearn's main page.

As of right now selecting any of the <Dynamic> variants all result in the main page saying "Track <Dynamic>"

Again hesitant on using GitHub. I thought I found a bug last night, opened an issue for it, then realized it was user error on my part and closed it.
Oh yes, that's a pre-release bug. Thanks. Fixing.
helgoboss is offline   Reply With Quote
Old 11-10-2022, 10:45 AM   #2831
EpicSounds
Human being with feelings
 
EpicSounds's Avatar
 
Join Date: Jul 2009
Posts: 7,428
Default

feature request, in case you forgot from the stream yesterday. Help button to make the documentation easier to find from inside the app.
__________________
REAPER Video Tutorials, Tips & Tricks and more at The REAPER Blog
EpicSounds is offline   Reply With Quote
Old 11-10-2022, 10:46 AM   #2832
Puck
Human being with feelings
 
Puck's Avatar
 
Join Date: Feb 2022
Location: Almost Canada
Posts: 505
Default

Quote:
Originally Posted by helgoboss View Post
Ah, cjewellstudios, hi Well, that video was good, it was just outdated because of later improvements in ReaLearn. Much luck with your OSC layout, let me know how it goes.
So far it's going really well. Like most things of this nature, there is a learning curve but there were a lot of things that were just obvious.


Quote:
User "vonglan" already requested this on GitHub: https://github.com/helgoboss/realearn/issues/224 ... you can subscribe and comment on it.

He will be happy that someone else wants this, too. Definitely more motivation for me to implement it. I'll put it on the "next" list, should be relatively easy to do.
Perfect, thanks for the link! I should take the time and go through the open issues.

Quote:
I could quite easily add a function to the right-click menu that iterates over all parameters of the last focused plug-in and creates a mapping for each one. Is that what you want? The question is how exactly those mappings should look. Source = None, Glue = Default values, Target = FX (Particular / By ID). Any ideas?
That's exactly right, yeah. As far as how they should look, maybe I should dig into mapping a chunk of plugins out before I answer that. One word of caution, which you no doubt are aware of, some plugins have parameter counts that are in the 1000's because they leave all of the MIDI channel stuff in there.

Quote:
Best practice with FX control is that you set the ReaLearn instance to auto-load, but not put each FX into one group! You should instead have one main preset per FX. As described in the "auto-load" tutorial in the user guide. This is much better than having one FX per group because you clearly separate mappings for different FX and can reuse them in different contexts. Presets are the "unit of reuse" in ReaLearn. And of course, another advantage is that you can still use groups for organizing different parameter mappings of your FX.
Ah yes, that makes perfect sense! I remember reading that now
Puck is offline   Reply With Quote
Old 11-10-2022, 11:41 AM   #2833
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,023
Default

Quote:
Originally Posted by EpicSounds View Post
feature request, in case you forgot from the stream yesterday. Help button to make the documentation easier to find from inside the app.
Thanks for the reminder. https://github.com/helgoboss/realearn/issues/747

Quote:
Originally Posted by Puck View Post
That's exactly right, yeah. As far as how they should look, maybe I should dig into mapping a chunk of plugins out before I answer that. One word of caution, which you no doubt are aware of, some plugins have parameter counts that are in the 1000's because they leave all of the MIDI channel stuff in there.
ReaLearn has no problem with 1000s of mappings but the user might have. So if you already have any good idea how to deal with such an amount of mappings, let me know.
helgoboss is offline   Reply With Quote
Old 11-10-2022, 04:36 PM   #2834
Puck
Human being with feelings
 
Puck's Avatar
 
Join Date: Feb 2022
Location: Almost Canada
Posts: 505
Default

Quote:
Originally Posted by helgoboss View Post
ReaLearn has no problem with 1000s of mappings but the user might have. So if you already have any good idea how to deal with such an amount of mappings, let me know.
Yeah it's just a pain. A lot of the useless parameters have "MIDI" and a "|" character. So filtering out that would be a start. But that wouldn't cover everything since not everyone who leaves those parameters in there does it the same way. It'd be a clever bit of logic to get right. OTOH, you just let it map the 1000's of parameters, export as LUA and delete.

....

Question 1:

I'm able to get nicely formatted Pan values as a string (i.e. "<C>" "73>") using {{target.pan.mcu}} but I don't see such a target for Stereo Pan Width.

Is it possible to do this with Feedback Tranformation? I've never really worked with EEL. I've read a bit about it but not sure where to start. I've done similar things in LUA within TouchOSC itself though.

Question 2:

Can I fire specific OSC messages upon preset activation? I tested this a bit if you just need a string, you can use Realearn: Dummy Target and type whatever you want in Textual Expression. It fires on preset activation. That's great news. To do anything more specific, say I had a box in tOSC and wanted to send it 6 or so arguments (setting the x,y,width,height,color,background for example) it seems like I would use OSC Send Message for that.

I actually can't get OSC Send Message to work how I want at all. For instance I tried to send a string. Where do I input the string I want to send? All I see is a value section with a Trigger Button and a text box that says "0.0000" with a % next to the box.
Puck is offline   Reply With Quote
Old 11-10-2022, 05:16 PM   #2835
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,023
Default

Quote:
Originally Posted by Puck View Post
Yeah it's just a pain. A lot of the useless parameters have "MIDI" and a "|" character. So filtering out that would be a start. But that wouldn't cover everything since not everyone who leaves those parameters in there does it the same way. It'd be a clever bit of logic to get right. OTOH, you just let it map the 1000's of parameters, export as LUA and delete.

....

Question 1:

I'm able to get nicely formatted Pan values as a string (i.e. "<C>" "73>") using {{target.pan.mcu}} but I don't see such a target for Stereo Pan Width.

Is it possible to do this with Feedback Tranformation? I've never really worked with EEL. I've read a bit about it but not sure where to start. I've done similar things in LUA within TouchOSC itself though.

Question 2:

Can I fire specific OSC messages upon preset activation? I tested this a bit if you just need a string, you can use Realearn: Dummy Target and type whatever you want in Textual Expression. It fires on preset activation. That's great news. To do anything more specific, say I had a box in tOSC and wanted to send it 6 or so arguments (setting the x,y,width,height,color,background for example) it seems like I would use OSC Send Message for that.

I actually can't get OSC Send Message to work how I want at all. For instance I tried to send a string. Where do I input the string I want to send? All I see is a value section with a Trigger Button and a text box that says "0.0000" with a % next to the box.
1. I could quickly add a placeholder for that. GitHub FR please. It's not possible via EEL. But I want to provide a way to build the text in Lua, in future. I think there's no FR yet for that, so feel free to create one, might take a bit longer though.

2. "OSC: Send Message" is just a nice gimmick and only usable for value conversion (e.g. MIDI to OSC). OSC as source is more powerful. I think what you are looking for is a source similar to "MIDI script" or "Raw MIDI", just with OSC instead of MIDI. Or on_activate => send_midi_messages (in advanced settings). This doesn't exist yet for OSC but it's also something I could add rather quickly. If you need that, FR please.
helgoboss is offline   Reply With Quote
Old 11-10-2022, 06:41 PM   #2836
Puck
Human being with feelings
 
Puck's Avatar
 
Join Date: Feb 2022
Location: Almost Canada
Posts: 505
Default

Quote:
Originally Posted by helgoboss View Post
1. I could quickly add a placeholder for that. GitHub FR please. It's not possible via EEL. But I want to provide a way to build the text in Lua, in future. I think there's no FR yet for that, so feel free to create one, might take a bit longer though.

2. "OSC: Send Message" is just a nice gimmick and only usable for value conversion (e.g. MIDI to OSC). OSC as source is more powerful. I think what you are looking for is a source similar to "MIDI script" or "Raw MIDI", just with OSC instead of MIDI. Or on_activate => send_midi_messages (in advanced settings). This doesn't exist yet for OSC but it's also something I could add rather quickly. If you need that, FR please.

1. I added those two!

2. I saw in YAML that there on_activate as you said and yes that would be one way of doing it. What I thought of immediately is having "On Activate" as a source and then using OSC Send Message.
Puck is offline   Reply With Quote
Old 11-11-2022, 07:47 AM   #2837
Michelob
Human being with feelings
 
Michelob's Avatar
 
Join Date: Sep 2010
Location: Mons, Belgium
Posts: 3,053
Default

Hello Benjamin,

As Realearn works perfectly with my Platform X+ (as a standalone), exactly as it was a Platform M+, maybe that surface could be added in the tested gear list ?

Thanks,

Michel
Michelob is offline   Reply With Quote
Old 11-11-2022, 01:44 PM   #2838
daniellumertz
Human being with feelings
 
daniellumertz's Avatar
 
Join Date: Dec 2017
Location: Brazil
Posts: 1,961
Default

Quote:
Originally Posted by MonkeyBars View Post
According to my research no (would love to be wrong about this), so you have to use a control tone and a method to detect its audio volume. I have found that this generally works, though so far getting the curves right sometimes is problematic without advanced knowledge:

Control tone -> ReaControlMIDI with param mod -> ReaLearn

The ReaControlMIDI can kick out MIDI CC of your choice (such as mod or breath which are higher res) with parameter modulation detecting incoming audio volume.
Thanks for the creative work around nice suggestion!! Thanks helgoboss for the answer too hope is all good with you
daniellumertz is offline   Reply With Quote
Old 11-11-2022, 02:22 PM   #2839
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,023
Default

Released ReaLearn 2.14.0-pre.10 (ReaPack installation instructions)

Changes:
- #747 Added menu and help buttons to the header panel
- #224 Added previous/next buttons to the mapping panel (for navigating in the list of mappings that's currently visible in the main panel)
- #685 Added more comfortable editing for OSC feedback arguments and help button
- #729 Added Lua snippet versioning (from now on, all Lua exports from ReaLearn will contain the ReaLearn version number; used for getting version conflict warnings on import and applying migration logic; in your own Lua code, you should make sure it's set from now on ... removing it will make ReaLearn think that it's an old preset and then it might apply some migration logic that you don't want)
- #485 Added new takeover mode "Pickup (tolerant)" (prevents jumps but also makes extra sure the target doesn't get stuck, in addition to below mdmayfield improvements)
- #756 Added new text feedback placeholder "target.width.mcu" to target "Track: Set stereo width" for pretty display of width value
- #485 Improved takeover modes substantially by applying the "mdmayfield improvements": No more backwards jumps! Much less getting-stuck situations! Ability to choose a fixed default for jump max! (Thanks a lot to mdmayfield who made the initial contribution!)
- #485 Improved usability by removing "Jump min/max" settings and introducing an "Off" mode instead (the value for jump max is now an implementation detail; custom min/max values are still supported but only for old presets to ensure backward compatibility; one can use a value sequence as alternative to jump min)
- #408 Improved auto-load mode by automagically falling back to memorized mappings when FX loses focus (users will love this because it's much more intuitive than "Make instance superior", which still has its uses though in more complex scenarios where you want multiple instances)
- #45 Improved selection ganging and grouping support for track targets by lifting the last remaining limitations (e.g. that it was not possible for phase/invert or that sometimes only both are supported at the same time ... needs REAPER 6.69+dev1102)
- #529 Fixed buggy dynamic track expression variables selected_track_tcp_index and selected_track_mcp_index
- #529 Fixed incorrect mapping row labels for new track selectors
- #727 Fixed missing feedback refresh when dealing with multiple instances (e.g. via "Make instance superior")
- #730 Fixed missing automatic feedback for target "FX: Set online/offline"
- #737 Fixed FX enable/disable target learning, it was picking it up as Bypass parameter (pre-release regression)
helgoboss is offline   Reply With Quote
Old 11-11-2022, 04:05 PM   #2840
MonkeyBars
Human being with feelings
 
MonkeyBars's Avatar
 
Join Date: Feb 2016
Location: Hollyweird
Posts: 2,520
Default

Quote:
Originally Posted by helgoboss View Post
Allowing an arbitrary target to control another target. https://github.com/helgoboss/realear...ent-1229503232. Then you could use the "Track: Peak" target to do exactly what you want.
Yes, exactly! Adding some info sources that are currently only targets as additional source options would be excellent.
MonkeyBars is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -7. The time now is 01:11 AM.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2023, vBulletin Solutions Inc.