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

Reply
 
Thread Tools Display Modes
Old 11-29-2022, 08:05 PM   #3001
-mjk-
Human being with feelings
 
Join Date: Oct 2020
Location: Hsinchu, Taiwan
Posts: 5
Default SysEx Messages For Transport Control

I am trying to remap the FF and RW buttons on my Soundcraft Ghost to "next marker" and "previous marker" actions, but adding a shortcut doesn't work because those SysEx messages are not captured (which is weird because the Stop/Play/Record SysEx messages from those buttons function natively). As-is, the FF and RW buttons move the playhead 3.5 measures, respectively. Can ReaLearn be used to capture those 2 SysEx messages and allow me to use them for transport control shortcuts?
__________________
湖口鄉新竹縣台灣 Hukou Township, Hsinchu County, Taiwan English/中文
SIGMA Male - 18 Year Taiwan Resident
-mjk- is offline   Reply With Quote
Old 11-30-2022, 12:33 AM   #3002
KennyG5000
Human being with feelings
 
Join Date: Nov 2022
Posts: 49
Default

Quote:
Originally Posted by helgoboss View Post
Copy this snippet and then press "Import from clipboard". It will replace the complete main compartment.
Thank you so much for posting this solution to my query, this is exactly what I needed, and is also a great insight into creating OSC feedback messages via Realearn, absolutely fantastic support! More generally, thank you for making such an amazing tool to control Reaper with, I have literally been searching for years (via different DAW solutions for bidirectional OSC control of VSTs and Realearn finally seems like the perfect solution for this, blown away by its capabilities!)
KennyG5000 is offline   Reply With Quote
Old 11-30-2022, 12:51 AM   #3003
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,199
Default

Quote:
Originally Posted by Puck View Post
Thanks for taking a quick look. It's ok that you are busy

So I tried some more debugging. Here's something I found that looks suspicious:

I took out my logic and just set my activation_expression like this: (here's where the multi-line string was)

Code:
local activation_expression = [[{
        kind = "Modifier",
        modifiers = {
            {
                parameter = 0,
                on = false,
            },
        },
    }]]
This is it. You need to remove the brackets. The "activation_condition" must not be provided as a string. It must be a table (just like all other complex objects, e.g. "target". Why would you use a string?
helgoboss is online now   Reply With Quote
Old 11-30-2022, 01:01 AM   #3004
KennyG5000
Human being with feelings
 
Join Date: Nov 2022
Posts: 49
Default

Could I trouble you with another quick question? With the solution you posted to sending the VST name via fx/name, would it be similarly possible to send the name/string for each particular parameter name within an FX for the selected track, possibly by changing the 'Textual Feedback: Test Expression' to something like '{{ fxparam/1/name }}' (for the name of the first FX parameter)? This would be perfect as then I could auto populate the correct parameter names via Realearn on my Open Stage Control Template (and they could be dynamic depending on selected VST!). Apologies for so many questions about this!
KennyG5000 is offline   Reply With Quote
Old 11-30-2022, 04:04 AM   #3005
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
This is it. You need to remove the brackets. The "activation_condition" must not be provided as a string. It must be a table (just like all other complex objects, e.g. "target". Why would you use a string?
I enjoy hours of pain?? ***laughs in sadness***

LOL I'm sure I had my reasons. None of them made any sense at all. Thank you very much for catching that!

One positive note is that my logic worked after fixing that So I'm not completely useless lol.
Puck is offline   Reply With Quote
Old 11-30-2022, 04:22 AM   #3006
Puck
Human being with feelings
 
Puck's Avatar
 
Join Date: Feb 2022
Location: Almost Canada
Posts: 505
Default

Quote:
Originally Posted by KennyG5000 View Post
Could I trouble you with another quick question? With the solution you posted to sending the VST name via fx/name, would it be similarly possible to send the name/string for each particular parameter name within an FX for the selected track, possibly by changing the 'Textual Feedback: Test Expression' to something like '{{ fxparam/1/name }}' (for the name of the first FX parameter)? This would be perfect as then I could auto populate the correct parameter names via Realearn on my Open Stage Control Template (and they could be dynamic depending on selected VST!). Apologies for so many questions about this!
Nice try on the syntax!

There are a bunch of placeholders for textual feedback but they have to be specific to the ones that already exist. Just in case you haven't seen it -

https://www.helgoboss.org/projects/realearn/user-guide

The following snippet should give you the first parameter for the first fx of the selected track to that address you provided. Note the placeholder is {{target.fx_parameter.name}}

Code:
{
    kind = "Mapping",
    version = "2.14.0-pre.10",
    value = {
        id = "eYt6wFumIUMYcF9QZV-yW",
        name = "1",
        control_enabled = false,
        source = {
            kind = "Osc",
            address = "/fxparam/1/name",
            argument = {
                index = 0,
                kind = "String",
                value_range = {0, 1},
            },
        },
        glue = {
            feedback = {
                kind = "Text",
                text_expression = "{{ target.fx_parameter.name }}",
            },
        },
        target = {
            kind = "FxParameterValue",
            parameter = {
                address = "ByIndex",
                fx = {
                    address = "ByIndex",
                    chain = {
                        address = "Track",
                        track = {
                            address = "Selected",
                        },
                    },
                    index = 0,
                },
                index = 0,
            },
            poll_for_feedback = false,
        },
    },
}
If you get a versioning warning, it's just because I'm on the beta version and should work just fine.
Puck is offline   Reply With Quote
Old 11-30-2022, 07:43 AM   #3007
KennyG5000
Human being with feelings
 
Join Date: Nov 2022
Posts: 49
Default

Thanks very much for that snippet Puck, you are a true gent! Working like a charm now, I really need to look more closely at the manual like you suggest, lots to be getting stuck into now, time to start mapping!
KennyG5000 is offline   Reply With Quote
Old 11-30-2022, 09:17 AM   #3008
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,199
Default

Quote:
Originally Posted by KennyG5000 View Post
Thank you so much for posting this solution to my query, this is exactly what I needed, and is also a great insight into creating OSC feedback messages via Realearn, absolutely fantastic support! More generally, thank you for making such an amazing tool to control Reaper with, I have literally been searching for years (via different DAW solutions for bidirectional OSC control of VSTs and Realearn finally seems like the perfect solution for this, blown away by its capabilities!)
Thanks Glad you like it.
helgoboss is online now   Reply With Quote
Old 11-30-2022, 09:43 AM   #3009
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,199
Default

@ALL During the next weeks, I will shift my focus a bit more towards Playtime 2. I know some of you requested new ReaLearn features lately and among those are definitely many that I'd like to add (e.g. Mackie C4 support, FX aliases, ...). In case anyone *really* depends on it and it's very urgent, let me know, maybe I can quickly push it through on the side. In all other cases, please have some patience.
helgoboss is online now   Reply With Quote
Old 11-30-2022, 11:57 AM   #3010
TonE
Human being with feelings
 
Join Date: Feb 2009
Location: Reaper HAS send control via midi !!!
Posts: 4,032
Default

Nothing urges. Those would be only excuses. Who can not make music with current situation, should change hobbies or job.
TonE is offline   Reply With Quote
Old 11-30-2022, 12:59 PM   #3011
Puck
Human being with feelings
 
Puck's Avatar
 
Join Date: Feb 2022
Location: Almost Canada
Posts: 505
Default

Awesome news!

Nothing pressing here. I may have some questions as I’m planning to release this layout publicly very soon. But I can’t wait to see what you do with playtime 2! Good luck!
Puck is offline   Reply With Quote
Old 11-30-2022, 01:38 PM   #3012
TonE
Human being with feelings
 
Join Date: Feb 2009
Location: Reaper HAS send control via midi !!!
Posts: 4,032
Default

Quote:
Originally Posted by helgoboss View Post
Oh, Win32! Has been there for years already, I think? Never testing it though. Wonder if the new control transformation editor works there.
The window opened nicely, all seems to work fine, looks cool. Thanks again for this wonderful Realearn, available in non-Reaper-crashing form for win32, great. Lots of respects for this, my friend.

I need to make a comparison how far Realearn's features can help doing something like what I am trying, CSV export and import of all midi mappings. I know Realearns supports JSON, so a CSV <> JSON conversion would be needed inbetween. Why CSV instead of JSON? Because in Excel users could edit it easily. Also line based data / mapping has the advantage when using grep or so directly from emacs, you get the results you are interested in, fully, so you can edit directly there.

My requirements I thought in the past were something like, just the general idea:
1- I know all my input midi events of my midi hardware (e.g. 5 midi hardware controllers, each 100 controls, making 500 controls, I know for each midi channel, note or cc or pitchbend, their values and so on.) This is my starting point. I know many users do not start here. But I start here.
2- Starting with any RPP, it can be a completely empty RPP, or an RPP from the past with 1000 tracks, 10 fx per track, 100 parameters per fx, it does not matter. I should be able to open any RPP, with zero midi mapping for example.
3- With one click (or CSV lua import script) I want this selected RPP transform into a form which can be controlled by my 5 midi hardware controller combination, as available in step 1.

In short, a transformation of a non-midi-mapped RPP to fully-midi-mapped RPP should be possible. The solution would be using a separate script / program, which contains a list of rules how the transformation should happen, using only:
(a) midi input information from step 1 above.
(b) track names, fx names, parameter names for defining rules for target selection.

Example: if track name is kick, fx name is vol_pan, parameter name is Adjustment, midi map to cc=1 on midi channel 1 (just an example). Plus telling the mapping mode (absolute, relative, toggle). So my control / knob / fader / button which sends that event would take over the control of kick volume.

I know it would be a very simple mapping, not as powerful as what Realearn allows with min..max ranges and so on, but better than nothing, for a first step.

The CSV export script should simply write those information of the RPP, line by line (of all tracks, all fx per track, all parameters per fx).
track name, fx name, parameter name, midi mapping data

My question would be: How far does Realearn support in its current form above workflow goal? What is already possible? What is missing? But might be added in a future update? (Some API missing in Reaper or Realearn feature itself missing or impossible...)

Or is Realearn model not so compatible with above goal, instead I just write completely independent lua scripts? (CSV export, CSV import of all midi mappings in RPP).

What I see as a big difference is I want the transformation to be rule based, all mapping happening at once, on any RPP, not crashing Reaper (in the past at least), if you know already all your input events. So you can define your rules, which can be applied at any time. Thanks for reading so far. Any ideas, improvements, suggestions are welcome.

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

All that work on modifiers and bank activation is sitting there.

I suppose modifiers would still have their place but banking is insanely powerful. Plus with the way I would set it up in excel, you could use banking activation similar to modifiers by just repeating some mappings on different banks. That would just be a few copy/pastes.

You could, of course, also just have some mappings on always active, but with the way I’m envisioning it, just leaving them all on bank activation would allow you to both mimic modifiers or just use them as banks! That way seems much better, especially since you can’t really use banks and modifiers in the same mapping. (Not that I would want that, this is great the way it’s set up!)

Really powerful feature!
Puck is offline   Reply With Quote
Old 12-01-2022, 04:04 PM   #3014
Puck
Human being with feelings
 
Puck's Avatar
 
Join Date: Feb 2022
Location: Almost Canada
Posts: 505
Default

How would one assign a value count to compartment parameters when building mappings with LUA?
Puck is offline   Reply With Quote
Old 12-01-2022, 08:28 PM   #3015
qaciwq
Human being with feelings
 
Join Date: Apr 2022
Posts: 2
Default midi fighter twister question

Hello, I am slowly learning Realearn and came to discovery with Midi Fighter Twister. By default it takes 2 channels to map multi and button. But I tried other pair of channels 3,4 ; 5,6 ... and it works independently. So by that logic its possible to have 64*8 = 512 pair of mappings with just one twister? Am I missing something? Because if not it just blows my mind how cool it is. One controller to rule them all.

Last edited by qaciwq; 12-01-2022 at 08:39 PM.
qaciwq is offline   Reply With Quote
Old 12-02-2022, 10:46 AM   #3016
TonE
Human being with feelings
 
Join Date: Feb 2009
Location: Reaper HAS send control via midi !!!
Posts: 4,032
Default

I like the virtual control concept in Realearn.

From Realearn manual:
"You can make your main mappings independent of the actual controller that you use. This is done using so-called virtual sources and targets." (page 37)

So do we have places of sharing such mapping concepts, using only virtual controllers?

Yesterday or a few days back I had following idea: Each midi controller hardware device should output its mapping in midi form. Either as file, .mid file export. Or streaming out the midi events, as is common with sysex for example. To keep the system very simple it could use following strategy. All controls will be numbered somehow, shared / shown visually on an image, all controls with a number, let us say a hardware midi controller with 100 knobs would number them 1..100. Now the midi output above (as file or stream) should do following, for the midi file case: For each bar the output event of the control will be written. In the midi file bar 25 would mean, I see there the control output of control number 25. And so on. In 100 bars, I would define the complete output events of that midi hardware controller. This would have the advantage, other automating tools could use those. For example Realearn could use it directly. No need to test things longly, explaining stuff, just give this .mid file and you know what that particular hardware is outputting. From there you could design your Realearn for that device. If all midi controller hardware would support such a system, name this feature as follows: "TonE midi hardware controller control description system (c) 2022 Reaper forums".

We need only a list of all possible midi event outputs coming from this device, when its control is used.
TonE is offline   Reply With Quote
Old 12-02-2022, 02:42 PM   #3017
7enz
Human being with feelings
 
Join Date: Sep 2022
Posts: 385
Default

@Helgoboss

i noticed a possible little bug... which i dont believe is a problem within the Transport controls of realearn(although possible) rather its seems that the play button, doesnt act globally.. when other projects are concerned(using realearn transport controls)..
ie.. multiple Projects are sync'd to the play button and activate all at once.

its possible this is a problem that needs correction within Reaper, and that midi tied to the play button doesnt function globally when activated using realearn transport controls Play/stop

To reproduce this:
sync 2 projects and tick the necessary boxes in the 2 projecttabs so they will sync upon play...
then press play in project 1 using realearn transport control play/stop(assigned midi button) and check if both playheads are moving. (project 1 should work)
then press stop...

go to project 2
Press play(assigned midi button).. and see if both projects are playing!!(this is where you should see the issue)
(pressing play from within project 1 everything works.... pressing play within project 2 doesnt start the playhead within project 2 only project1 plays)


Does this also with invoke reaper actions.
if someone could test this.. would be great

Last edited by 7enz; 12-02-2022 at 03:00 PM.
7enz is offline   Reply With Quote
Old 12-02-2022, 07:53 PM   #3018
Puck
Human being with feelings
 
Puck's Avatar
 
Join Date: Feb 2022
Location: Almost Canada
Posts: 505
Default

Quote:
Originally Posted by Puck View Post
How would one assign a value count to compartment parameters when building mappings with LUA?
here's the answer just in case anyone was curious

Code:
parameters = {
            {
                index = 0,
                name = "FXBanks",
                value_count = 5,
            },
        },
I didn't realize (or I forgot?) you could export the whole main compartment. I was able to get the syntax from that.
Puck is offline   Reply With Quote
Old 12-02-2022, 07:59 PM   #3019
Puck
Human being with feelings
 
Puck's Avatar
 
Join Date: Feb 2022
Location: Almost Canada
Posts: 505
Default

Quote:
Originally Posted by qaciwq View Post
Hello, I am slowly learning Realearn and came to discovery with Midi Fighter Twister. By default it takes 2 channels to map multi and button. But I tried other pair of channels 3,4 ; 5,6 ... and it works independently. So by that logic its possible to have 64*8 = 512 pair of mappings with just one twister? Am I missing something? Because if not it just blows my mind how cool it is. One controller to rule them all.
I'm not sure exactly what you mean but it does sound like you have the idea down. The MF Twister is quite the controller. I have 2

I just discovered how banks within Realearn work. Essentially you could take one hardware bank of the midi fighter twister and make seemingly infinite virtual banks. So really you may not even need that much of the MF Twister's total capabilities. Pretty powerful stuff.
Puck is offline   Reply With Quote
Old 12-03-2022, 12:44 AM   #3020
vonglan
Human being with feelings
 
Join Date: Oct 2019
Location: Lübeck, Germany
Posts: 47
Default

Quote:
Originally Posted by helgoboss View Post
@ALL During the next weeks, I will shift my focus a bit more towards Playtime 2. I know some of you requested new ReaLearn features lately and among those are definitely many that I'd like to add (e.g. Mackie C4 support, FX aliases, ...). In case anyone *really* depends on it and it's very urgent, let me know, maybe I can quickly push it through on the side. In all other cases, please have some patience.
Sounds good! Thanks for your work!!!
vonglan is offline   Reply With Quote
Old 12-03-2022, 09:07 AM   #3021
qaciwq
Human being with feelings
 
Join Date: Apr 2022
Posts: 2
Default

Quote:
Originally Posted by Puck View Post
I'm not sure exactly what you mean but it does sound like you have the idea down. The MF Twister is quite the controller. I have 2

I just discovered how banks within Realearn work. Essentially you could take one hardware bank of the midi fighter twister and make seemingly infinite virtual banks. So really you may not even need that much of the MF Twister's total capabilities. Pretty powerful stuff.
In controller comparment I just assigned virtual mappings to ohter midi channels than 0/1 and then referenced them in main compartment E.g.
```
CC number 0; channel 0; id 0 (encoder) (default)
CC number 0; channel 1; id 0 (button); (default)
CC number 0; channel 2; id 1 (encoder)
CC number 0; channel 3; id 1 (button)
CC number 0; channel 5; id 2 (encoder)
CC number 0; channel 5; id 2 (button)
```
and so on till 15 channel and possibly for every CC number until 63 but I didint try that many.
But I am struggling to find a way to move between >6 banks. Now I just have 6 side buttons dedicated for every bank and filtering it with tags functionality. It would be cool to find a system to smoothly change 20 banks for example.

Can u elaborate on infinite virtuam banks? I am interested.

Last edited by qaciwq; 12-03-2022 at 09:13 AM.
qaciwq is offline   Reply With Quote
Old 12-03-2022, 12:09 PM   #3022
Puck
Human being with feelings
 
Puck's Avatar
 
Join Date: Feb 2022
Location: Almost Canada
Posts: 505
Default

Quote:
Originally Posted by qaciwq View Post
In controller comparment I just assigned virtual mappings to ohter midi channels than 0/1 and then referenced them in main compartment E.g.
```
CC number 0; channel 0; id 0 (encoder) (default)
CC number 0; channel 1; id 0 (button); (default)
CC number 0; channel 2; id 1 (encoder)
CC number 0; channel 3; id 1 (button)
CC number 0; channel 5; id 2 (encoder)
CC number 0; channel 5; id 2 (button)
```
and so on till 15 channel and possibly for every CC number until 63 but I didint try that many.
But I am struggling to find a way to move between >6 banks. Now I just have 6 side buttons dedicated for every bank and filtering it with tags functionality. It would be cool to find a system to smoothly change 20 banks for example.

Can u elaborate on infinite virtuam banks? I am interested.

I think I see what you are doing there.

Allow me to try to explain what I mean by infinite virtual banks. I’m just learning Realearn so keep that in mind. However;

So I’m mapping FX currently. Say for example iZotope Ozone that is laid out in pages. That would lend itself to virtual banks.

What I would do is set most of the mappings to be Active “when bank selected”

Then set a Realearn parameter (I call it FX Banks) and I give it a value count of 10.

Then I set up mappings to effect the FXBanks parameter (you could use incremental buttons since you only have a few buttons at your disposal, or, since I’m coming from OSC land I tend to think of that first; maybe you have an extra device you have laying around that you can set up TouchOSC on and you can control the banks that way)

With this setup, when you navigate through the banks, only the mappings that are active on that specific bank will be active.

This whole setup and philosophy might be a better way to go about what you are trying to do. Just map one set of controls in your controller map and do as I laid out here in whatever main compartment preset you are in.
Puck is offline   Reply With Quote
Old 12-03-2022, 02:18 PM   #3023
7enz
Human being with feelings
 
Join Date: Sep 2022
Posts: 385
Default

@puck

understanding the potential of creating a multitude of banks..
is when utilising an incremental button, alongside Tags and the Realearn enable/disable mappings

using just 2 buttons(for cycling) in conjuction with Tags and realearn:enable/disable mappings it does open up a whole lot of bank possibilities... thats been my experience
extremely useful!!

it then becomes a case of making the logic of the mappings fitting the existing established buttons or encoders, so careful thought is needed when planning to map over a existing mapping, especially if you want gated responses as oppose to toggled or triggered ones, as the physical midi-mapping cannot be changed once set in place.

Physically mapping to Gated midi is the best to utilise of course for obvious reasons.. when utilised with hold/doublepress/single press

Last edited by 7enz; 12-03-2022 at 02:25 PM.
7enz is offline   Reply With Quote
Old 12-03-2022, 03:01 PM   #3024
7enz
Human being with feelings
 
Join Date: Sep 2022
Posts: 385
Default

one problem i did encounter with using the Realearn enable/disable mapping..
is when you are dealing with buttons with LED's like i have on my Maschine Jam
having 64 Led's to change suddenly and then quickly changing the mapping again... will lead to either to the midi channels being flooded before the LED's can update
or LEDs being incorrect

this can lead to a freeze-up of the controller and reaper when dealing with plenty of LED updates..
so delaying the "Realearn enable/disable mapping" button-press is the workaround...
not a major problem if you dont have as many LED's changing at once
7enz is offline   Reply With Quote
Old 12-04-2022, 10:26 AM   #3025
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,199
Default

Quote:
Originally Posted by TonE View Post
My question would be: How far does Realearn support in its current form above workflow goal? What is already possible? What is missing? But might be added in a future update? (Some API missing in Reaper or Realearn feature itself missing or impossible...)

Or is Realearn model not so compatible with above goal, instead I just write completely independent lua scripts? (CSV export, CSV import of all midi mappings in RPP).

What I see as a big difference is I want the transformation to be rule based, all mapping happening at once, on any RPP, not crashing Reaper (in the past at least), if you know already all your input events. So you can define your rules, which can be applied at any time. Thanks for reading so far. Any ideas, improvements, suggestions are welcome.
I didn't have the time to think about your desired scenario in depth. But from what I've gathered, I would approach it by writing a ReaScript which generates ReaLearn mappings. ReaScript because it has access to tracks and everything. I mean, you could also parse the RPP file but that would be more effort. Precondition: I need to implement this FR (it's on my top list): https://github.com/helgoboss/realearn/issues/656

Concerning CSV / JSON: I think a generic JSON-to-CSV converter wouldn't make much sense because JSON is hierarchical (more expressive than CSV, so the resulting CSV would look extremely non-intuitive. But chances are you don't want to represent ReaLearn's complex settings in the CSV anyway. You probably want pretty simple and data in the CSV and from that you can generate the JSON ... or Lua code. That's feasible.

Quote:
Originally Posted by Puck View Post
How would one assign a value count to compartment parameters when building mappings with LUA?
I see, you have figured it out already. Whenever you want to know how to express something in Lua, simply build it in the GUI and export the compartment.

Quote:
Originally Posted by qaciwq View Post
Hello, I am slowly learning Realearn and came to discovery with Midi Fighter Twister. By default it takes 2 channels to map multi and button. But I tried other pair of channels 3,4 ; 5,6 ... and it works independently. So by that logic its possible to have 64*8 = 512 pair of mappings with just one twister? Am I missing something? Because if not it just blows my mind how cool it is. One controller to rule them all.
I also really like the MFT, for its build quality and versatility. But I never use its built-in bank/modifier features. They only exist for DAWs that don't come with decent controller integration. Using ReaLearn's bank/modifier features is better:

- Infinitely many banks/modifiers
- Works with any controller in the same way
- Banks can be switched not just from the MFT, but from other controllers as well, or from within REAPER.
- All configuration is done within ReaLearn. The idea is to start the Midi Fighter Utility only once, to do the initial setup ... and then never again.

Quote:
Originally Posted by TonE View Post
I like the virtual control concept in Realearn.

From Realearn manual:
"You can make your main mappings independent of the actual controller that you use. This is done using so-called virtual sources and targets." (page 37)

So do we have places of sharing such mapping concepts, using only virtual controllers?
No central place. Sometimes users send me presets, but I have to admit I'm the bottleneck when it comes to publishing them. That's why I want to work on this: https://github.com/helgoboss/realearn/issues/704

If you want to post something quickly, I think the best bet is to post some Lua code to the web (e.g. as a GitHub Gist) and then link to it here.

Quote:
Originally Posted by 7enz View Post

To reproduce this:
sync 2 projects and tick the necessary boxes in the 2 projecttabs so they will sync upon play...
then press play in project 1 using realearn transport control play/stop(assigned midi button) and check if both playheads are moving. (project 1 should work)
then press stop...

go to project 2
Press play(assigned midi button).. and see if both projects are playing!!(this is where you should see the issue)
(pressing play from within project 1 everything works.... pressing play within project 2 doesnt start the playhead within project 2 only project1 plays)


Does this also with invoke reaper actions.
if someone could test this.. would be great
I can't reproduce this. Please note that ReaLearn might be active even in a background tab! So maybe you have a conflict with one button triggering play/stop multiple times. You can change that using "Menu => Options => Stay active when project in background".

Quote:
Originally Posted by Puck View Post
All that work on modifiers and bank activation is sitting there.

I suppose modifiers would still have their place but banking is insanely powerful. Plus with the way I would set it up in excel, you could use banking activation similar to modifiers by just repeating some mappings on different banks. That would just be a few copy/pastes.

You could, of course, also just have some mappings on always active, but with the way I’m envisioning it, just leaving them all on bank activation would allow you to both mimic modifiers or just use them as banks! That way seems much better, especially since you can’t really use banks and modifiers in the same mapping. (Not that I would want that, this is great the way it’s set up!)

Really powerful feature!
You can use banks and modifiers in the same mapping, by using "When expression met" or "When EEL met". With those you can up with all kinds of combinations. "When modifiers on/off" and "When bank selected" are simply two hard-coded ways to interpret ReaLearn parameters. They exist for convenience but are less flexible than the EEL/expression activation conditions.

Quote:
Originally Posted by 7enz View Post
one problem i did encounter with using the Realearn enable/disable mapping..
is when you are dealing with buttons with LED's like i have on my Maschine Jam
having 64 Led's to change suddenly and then quickly changing the mapping again... will lead to either to the midi channels being flooded before the LED's can update
or LEDs being incorrect

this can lead to a freeze-up of the controller and reaper when dealing with plenty of LED updates..
so delaying the "Realearn enable/disable mapping" button-press is the workaround...
not a major problem if you dont have as many LED's changing at once
You want this:
https://github.com/helgoboss/realearn/issues/533
helgoboss is online now   Reply With Quote
Old 12-04-2022, 12:30 PM   #3026
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





You can use banks and modifiers in the same mapping, by using "When expression met" or "When EEL met". With those you can up with all kinds of combinations. "When modifiers on/off" and "When bank selected" are simply two hard-coded ways to interpret ReaLearn parameters. They exist for convenience but are less flexible than the EEL/expression activation conditions.


Insert mind-blown emoji . Thanks for the explanation! I suppose you can use p1 etc in those formulas referring to Realearn parameters. Awesome!

I’ll have to think on how to easily implement everything but for now just using banks is working out really well as a general starting point. Hope playtime is going well!
Puck is offline   Reply With Quote
Old 12-04-2022, 07:24 PM   #3027
TonE
Human being with feelings
 
Join Date: Feb 2009
Location: Reaper HAS send control via midi !!!
Posts: 4,032
Default

Maybe we can try to sum up what the meaning of a track can be in context of Realearn and clip engine:
- fx holder
- realearn settings holder for a single hardware midi controller with one input midi port and one output midi port (for feedback going to this device)
- midi processing fx holder (imagine a midi converter, e.g. forcing incoming midi notes to a specific scale, defined in real-time by incoming midi notes on a different midi channel for example, not sure if this exists already)
- clip engine holder

So a track can have various different meanings, even all are called "tracks" in Reaper. But their function in the whole process/system can be completely different. Maybe sharing ideas on those...
TonE is offline   Reply With Quote
Old 12-05-2022, 02:13 AM   #3028
revdrmaru
Human being with feelings
 
Join Date: Aug 2014
Posts: 10
Default change default id to name

Hi!
When I select the target, it sets track to 'this' and fx to 'id' by default. Is there a way to have 'id' default to 'name'? I tried setting Act/tag to pin with the instance fx, but it still defaulted to 'id.'

Thanks for all the work you put into this.
revdrmaru is offline   Reply With Quote
Old 12-05-2022, 06:03 AM   #3029
I'm hearing things
Human being with feelings
 
Join Date: Oct 2016
Posts: 6
Default

edit: NVM, I got it. But it's not elegant

solution: Change Value->Target->Max to 50.001%. Now even a 1 Velocity note event will trigger it into non-bypassed territory
Now I just can't figure out a way to change the velocity output to either 127 or 0

Hi, I have a question. I've been searching and googling but I can only find methods for QWERTY keyboards, not midi keyboards

Maybe I'm missing something.

* My midi controller's pads are mapped to midi notes on Channel 10. I would like to use some pads to momentarily toggle fx
* I want to toggle an FX Parameter to ON while Note#052 on Ch. 10 is held down (i.e., during the Note On event)
* On NoteOff I want it to toggle the parameter back to OFF

Thanks fellas

(My goal in this case is to apply a trance gate effect when I hold down the pad)

Amazing plugin by the way, it has saved my ass multiple times

Last edited by I'm hearing things; 12-05-2022 at 01:03 PM.
I'm hearing things is offline   Reply With Quote
Old 12-05-2022, 07:50 AM   #3030
Hartley Mays
Human being with feelings
 
Join Date: Sep 2009
Location: Cincinnati, Ohio
Posts: 307
Default Another Question - Load Snapshot

I'm trying to get the Load Snapshot mapping set up, and can't get the Take! button to do its job. I have the Type: Load Snapshot set up, with Track Named option, At Position 1. The Snapshot line shows <empty> as expected, asnd the Take! button is available but doesn't do anything when clicked. There's a message 'Target Inactive' below the target parameters, but nothing seems to change that, assuming it's indicative of the problem. I've experimented with other settings for Track and Position but none of them change the behavior, and the above settings work fine for other FX mapping actions.

I'm probably missing something obvious, but how do you get the Take! to work?
Hartley Mays is online now   Reply With Quote
Old 12-05-2022, 09:12 AM   #3031
tompad
Human being with feelings
 
Join Date: Jan 2010
Location: Fjugesta, Sweden
Posts: 813
Default X-Touch Universal controller preset?

Hi!

Anyone having the preset for X-Touch Universal controller (for controller compartment)?
I am working with Mackie-Control preset right now but found some buttons not
included (name/value, save etc) and I am not sure what id I shall select for it.


Edit:
Never mind about the id! I just found out that I don't need to name them with number,
I can just name it "save" if I want that id :-)


EDIT AGAIN!:
Never mind about the preset - I made my own! :-)

If anyone want it I attach it here.
There is no guarantee that its done right, but I think I got it right ;-)

Edit again again:
Just realized that I forgot 2 foot-switches and expression pedal....
Sorry, but I guess you could add it yourself rather easy! ;-)
Attached Files
File Type: lua X-Touch Universal controller preset DAW.lua (156.4 KB, 37 views)
__________________
ToDoList Obliques MusicMath Donation Some of mine and my friends music projects on Spotify

Last edited by tompad; 12-06-2022 at 01:38 PM.
tompad is offline   Reply With Quote
Old 12-05-2022, 11:06 AM   #3032
tompad
Human being with feelings
 
Join Date: Jan 2010
Location: Fjugesta, Sweden
Posts: 813
Default Button light up

Is it possible to make a button on X-Touch light up if a
project needs to be saved (is modified). I have a button that
runs a Reaper action (Save project) and that works, but
how can I make button light up when project is modified?
__________________
ToDoList Obliques MusicMath Donation Some of mine and my friends music projects on Spotify
tompad is offline   Reply With Quote
Old 12-06-2022, 12:27 PM   #3033
7enz
Human being with feelings
 
Join Date: Sep 2022
Posts: 385
Default

Quote:
Originally Posted by helgoboss View Post


I can't reproduce this. Please note that ReaLearn might be active even in a background tab! So maybe you have a conflict with one button triggering play/stop multiple times. You can change that using "Menu => Options => Stay active when project in background".

--

You want this:
https://github.com/helgoboss/realearn/issues/533
@helgoboss
yes, ill have a look through my mappings and find the culprit.. thanks for testing.
and yes, a delay option should be helpful to prevent channel flooding
(admittedly, one could spread the use of midi channels to mitigate flooding, but having that option would certainly be helpful in certain mapping situations!)
7enz is offline   Reply With Quote
Old 12-06-2022, 12:56 PM   #3034
tompad
Human being with feelings
 
Join Date: Jan 2010
Location: Fjugesta, Sweden
Posts: 813
Default

Quote:
Originally Posted by tompad View Post
Hi!

Anyone having the preset for X-Touch Universal controller (for controller compartment)?
I am working with Mackie-Control preset right now but found some buttons not
included (name/value, save etc) and I am not sure what id I shall select for it.


Edit:
Never mind about the id! I just found out that I dont need to name them with number,
I can just name it "save" if I want that id :-)
After beginning to get the different buttons in to my control compartment I
discovered it was a bit tedious....so I remembered something about using LUA
in ReaLearn! I exported the compartment and loaded it in my text editor and
thought that it could be much easier to edit/add them there - and yes it is!

But when looking at my earlier buttons id I see that they is not named as I wrote
them before...they look like this: id = "4EbVz3AYtrvDKQq4pR0NM"

Now to my question - do I have to invent the same sort of code for my other
buttons that I add in text editor or can I write as I did in Realearn id= plug-in???
Will ReaLearn convert my text to this strange code?


Edit:
I answer my own question - no I dont think I need to invent the same sort of code,
Realearn takes care of that...or?
__________________
ToDoList Obliques MusicMath Donation Some of mine and my friends music projects on Spotify

Last edited by tompad; 12-06-2022 at 01:40 PM.
tompad is offline   Reply With Quote
Old 12-06-2022, 04:22 PM   #3035
Puck
Human being with feelings
 
Puck's Avatar
 
Join Date: Feb 2022
Location: Almost Canada
Posts: 505
Default

Quote:
Originally Posted by tompad View Post

Now to my question - do I have to invent the same sort of code for my other
buttons that I add in text editor or can I write as I did in Realearn id= plug-in???
Will ReaLearn convert my text to this strange code?


Edit:
I answer my own question - no I dont think I need to invent the same sort of code,
Realearn takes care of that...or?
I don't know the exact logic but yes for the most part Realearn takes care of it. Although I just ran into something that Ben may have missed. More on that later.

For instance, when you export a mapping in lua and then import it back in, it's given a different ID automatically. You can check that by exporting the original and the copied mapping together.

So my guess is that there are some fail-safes.

The problem I ran into just now was; I am just testing my FX configurator so I copied and pasted a bunch of things in my excel sheet. The resulting lua had several mappings with the same exact ID. Realearn let me know that there were duplicate ID's but then just didn't import the lua mappings. I would think that since ID's are just for Realearn's internals, that Realearn would just do as it does when you copy the same mapping back into realearn and just assign them all unique ID's.

In my case, I just appended the index of the loop I built so that every mapping had a unique ID. I ventured into generating a random ID for a minute but my first attempt failed so I just used the index to make all the mapping ID's unique.
Puck is offline   Reply With Quote
Old 12-06-2022, 11:44 PM   #3036
tompad
Human being with feelings
 
Join Date: Jan 2010
Location: Fjugesta, Sweden
Posts: 813
Default

Quote:
Originally Posted by Puck View Post
I don't know the exact logic but yes for the most part Realearn takes care of it. Although I just ran into something that Ben may have missed. More on that later.

For instance, when you export a mapping in lua and then import it back in, it's given a different ID automatically. You can check that by exporting the original and the copied mapping together.

So my guess is that there are some fail-safes.

The problem I ran into just now was; I am just testing my FX configurator so I copied and pasted a bunch of things in my excel sheet. The resulting lua had several mappings with the same exact ID. Realearn let me know that there were duplicate ID's but then just didn't import the lua mappings. I would think that since ID's are just for Realearn's internals, that Realearn would just do as it does when you copy the same mapping back into realearn and just assign them all unique ID's.

In my case, I just appended the index of the loop I built so that every mapping had a unique ID. I ventured into generating a random ID for a minute but my first attempt failed so I just used the index to make all the mapping ID's unique.
Thanks for your answer Puck! Reading it made me curious on some things.

1. What is this FX configurator you are talking about?
2. How do you use the loop in lua-mapping? When I look at my exported
code there is only tables...
3. If its possible to use loops in lua-mapping - how about if-else??
(if button send is pressed assign this to button F1?)
__________________
ToDoList Obliques MusicMath Donation Some of mine and my friends music projects on Spotify
tompad is offline   Reply With Quote
Old 12-07-2022, 03:06 AM   #3037
Puck
Human being with feelings
 
Puck's Avatar
 
Join Date: Feb 2022
Location: Almost Canada
Posts: 505
Default

Quote:
Originally Posted by tompad View Post
Thanks for your answer Puck! Reading it made me curious on some things.

1. What is this FX configurator you are talking about?
2. How do you use the loop in lua-mapping? When I look at my exported
code there is only tables...
3. If its possible to use loops in lua-mapping - how about if-else??
(if button send is pressed assign this to button F1?)
1. It’s an excel spreadsheet I made to automate building Realearn presets for fx. It’s very custom-tailored to my TouchOSC layout which I plan on releasing in the near future.

2. Check out the Daw-Control preset on the Helgoboss GitHub. It’s in the resources folder.

3. Yes you can use conditionals as well as functions, it’s regular LUA. It’s just for map/preset building though. Once the preset is made, the mappings are just a collection of tables. The looping would just help the repetitive mappings. Track Volume 1-8 for example, you could set a loop to cycle 8 times and just the index to append to all the relevant parts of the mappings.
Puck is offline   Reply With Quote
Old 12-09-2022, 09:34 AM   #3038
tohubohu
Human being with feelings
 
Join Date: Sep 2019
Location: france
Posts: 2,317
Default

hello,

with Arturia Minilab mkII
Mac OS 10.15.7
Reaper 6.71
realearn 2.14

Automation Touch

in "touch" mode, I always had this strange behavior. see the gif
the envelope points are sawtooth
could you do something please?
thks

tohubohu is offline   Reply With Quote
Old 12-10-2022, 06:22 AM   #3039
tompad
Human being with feelings
 
Join Date: Jan 2010
Location: Fjugesta, Sweden
Posts: 813
Default

Quote:
Originally Posted by Puck View Post
1. It’s an excel spreadsheet I made to automate building Realearn presets for fx. It’s very custom-tailored to my TouchOSC layout which I plan on releasing in the near future.
Sounds very interesting!

Do you mind sharing how you do that? Do you have a video on how it works?
I find it very interesting to hear how other people work and how they use
their tools.

Quote:

2. Check out the Daw-Control preset on the Helgoboss GitHub. It’s in the resources folder.
Voohoo - a lot of information!


Quote:
3. Yes you can use conditionals as well as functions, it’s regular LUA. It’s just for map/preset building though. Once the preset is made, the mappings are just a collection of tables. The looping would just help the repetitive mappings. Track Volume 1-8 for example, you could set a loop to cycle 8 times and just the index to append to all the relevant parts of the mappings.
What would be really nice is if Benjamin/Helgoboss could in his tutorial-
series go thru different use cases for this. I understand the concept of
loop, if/else etc, but to connect that with the use of Realearn is a bit
hard for me....mostly beacause I'm not a programmer and is getting old :-)
__________________
ToDoList Obliques MusicMath Donation Some of mine and my friends music projects on Spotify
tompad is offline   Reply With Quote
Old 12-10-2022, 07:11 AM   #3040
Puck
Human being with feelings
 
Puck's Avatar
 
Join Date: Feb 2022
Location: Almost Canada
Posts: 505
Default

Quote:
Originally Posted by tompad View Post
Sounds very interesting!

Do you mind sharing how you do that? Do you have a video on how it works?
I find it very interesting to hear how other people work and how they use
their tools.
There will be a video but no, not currently. I’ve been working on this TouchOSC layout for the better part of a year now and will hopefully release it soon along with videos showing how everything works. But basically I used Microsoft VBA to read/parse a text file of fx parameters and populate a drop-down list. The text file actually comes from CSI at the moment. Then, in excel, I constructed a layout of cells that somewhat represents the layout of my FX page. Then you can use the drop-down menus to pair controls with parameters and use fill color in the designated color cells to add color to the control. Once you are done mapping, you hit the macro button at the top to populate LUA tables and pair it all with the LUA code I wrote and copy it for import to Realearn.





Quote:
I understand the concept of
loop, if/else etc, but to connect that with the use of Realearn is a bit
hard for me....mostly beacause I'm not a programmer and is getting old :-)
I empathize with you. I just kept dipping my toes into the programming mindset and it seems very complicated until basically you do something enough times and/or stare at it long enough

I know Ben will cover it in tutorials soon enough, but maybe I’ll touch on it in my series of vids about my layout as well.
Puck 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 09:22 AM.


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