Old 01-06-2022, 01:02 PM   #41
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,185
Default

Quote:
Originally Posted by brk303 View Post
Regarding the BPM sync, I wrote a small script that stores BPM in Slider1 and when BPM changes it sends MIDI message with BPM as parameter.
That part works, MIDI message is sent for every project BPM change.

Then the problem is how to transform it to say ReaComp release param correctly.

ReaComp release is defined with range of 0 to 5000, so 100% = 5000ms, so I need a way to convert from BPM to Reaper Release value.
Transformation (EEL) sounds like it could help, but not quite sure how to use it.

And, btw, thanks for your help.
In the control transformation formula, 0% is 0.0 and 100% is 1.0. Both input (x) and output (y) is interpreted as a number between 0.0 and 1.0. You already learned how your output (ReaComp release) looks in terms of percentages. Now you need to learn how your input looks in terms of percentages (which BPM corresponds to which percentage). This depends how exactly you encoded the BPM as a MIDI message.
helgoboss is online now   Reply With Quote
Old 03-03-2022, 07:08 PM   #42
strat1376
Human being with feelings
 
Join Date: Mar 2013
Posts: 19
Default Loss of GUI in realearn.

not sure where to post this but i will try it here. After updating reaper to the latest version 6.49 OSX , the UI on realearn has been blacked out. I cant find a setting in realearn and am wondering if this is a reaper bug? any help is appreciated. I can see the menus but none of the settings I have made. I also updated to the latest realearn version
strat1376 is offline   Reply With Quote
Old 03-04-2022, 04:32 AM   #43
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,185
Default

Quote:
Originally Posted by strat1376 View Post
not sure where to post this but i will try it here. After updating reaper to the latest version 6.49 OSX , the UI on realearn has been blacked out. I cant find a setting in realearn and am wondering if this is a reaper bug? any help is appreciated. I can see the menus but none of the settings I have made. I also updated to the latest realearn version
This issue has been popping up recently for some Linux and macOS users. It's on the list. Will investigate it in a week or so. For now the workaround is to go back to the older REAPER version.
helgoboss is online now   Reply With Quote
Old 03-05-2022, 05:52 AM   #44
Pink Wool
Human being with feelings
 
Pink Wool's Avatar
 
Join Date: Apr 2020
Posts: 1,501
Default

Just wondering if you ever do Realearn 3, you could perhaps have it be somewhat similar to what Cubase 11 has, in terms of ease of use etc.?

Pink Wool is offline   Reply With Quote
Old 03-05-2022, 06:31 AM   #45
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,185
Default

Quote:
Originally Posted by Pink Wool View Post
Just wondering if you ever do Realearn 3, you could perhaps have it be somewhat similar to what Cubase 11 has, in terms of ease of use etc.?

ReaLearn itself will probably always target technical users. Its primary goal is versatility, not user friendliness. But Playtime 2 App will go into this direction. I also like user friendliness, it's just difficult to combine user friendliness and ultimate versatility
helgoboss is online now   Reply With Quote
Old 03-05-2022, 11:59 AM   #46
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,690
Default

Quote:
Originally Posted by helgoboss View Post
ReaLearn itself will probably always target technical users. Its primary goal is versatility, not user friendliness. But Playtime 2 App will go into this direction. I also like user friendliness, it's just difficult to combine user friendliness and ultimate versatility
That is a very welcome decision !
-Michael
mschnell is online now   Reply With Quote
Old 03-05-2022, 12:10 PM   #47
Pink Wool
Human being with feelings
 
Pink Wool's Avatar
 
Join Date: Apr 2020
Posts: 1,501
Default

Quote:
Originally Posted by helgoboss View Post
ReaLearn itself will probably always target technical users. Its primary goal is versatility, not user friendliness. But Playtime 2 App will go into this direction. I also like user friendliness, it's just difficult to combine user friendliness and ultimate versatility
Sounds awesome! And I can only imagine the technical difficulties and the amount of work you face with either of your "babies"!
Pink Wool is offline   Reply With Quote
Old 03-06-2022, 08:22 AM   #48
Rockum
Human being with feelings
 
Join Date: Apr 2009
Location: Nashville
Posts: 178
Default

Fabulous plugin...

After setting up my system I felt like there were a couple of additions that would have made it easier. You gave us an "Add One" and "Learn Many" function, would it be hard to add an "Add Source Series" function for adding sequential sources? So if your controller had a series of faders on CC 7 on incremental MIDI channels or a series of incremental CC#s on the same MIDI channel, the user would be able to learn the first and last and have the function fill in the ones between? You could then edit or learn targets after they were added.

Also a spreadsheet type view (with limited or no editing or perhaps just copy and paste) might be nice for getting an overview of user entries and moving them from set to set.

Just a couple of thoughts. Either way thank you so much for this gem.

Last edited by Rockum; 03-06-2022 at 08:55 AM.
Rockum is offline   Reply With Quote
Old 03-06-2022, 09:43 AM   #49
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,185
Default

Quote:
Originally Posted by Rockum View Post
Fabulous plugin...

After setting up my system I felt like there were a couple of additions that would have made it easier. You gave us an "Add One" and "Learn Many" function, would it be hard to add an "Add Source Series" function for adding sequential sources? So if your controller had a series of faders on CC 7 on incremental MIDI channels or a series of incremental CC#s on the same MIDI channel, the user would be able to learn the first and last and have the function fill in the ones between? You could then edit or learn targets after they were added.

Also a spreadsheet type view (with limited or no editing or perhaps just copy and paste) might be nice for getting an overview of user entries and moving them from set to set.

Just a couple of thoughts. Either way thank you so much for this gem.
You can use "Learn many" in the controller compartment (which is for building controller presets), this already works pretty much exactly like here in the Cubase video (learning a bunch of sources without mapping targets).
helgoboss is online now   Reply With Quote
Old 03-10-2022, 07:17 PM   #50
Rockum
Human being with feelings
 
Join Date: Apr 2009
Location: Nashville
Posts: 178
Default

Thanks. One quick question... CPU wise is there much advantage to placing a large number of controls in a single instance of ReaLearn over using multiple instances with only a few each?
Rockum is offline   Reply With Quote
Old 03-10-2022, 10:49 PM   #51
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,185
Default

Quote:
Originally Posted by Rockum View Post
Thanks. One quick question... CPU wise is there much advantage to placing a large number of controls in a single instance of ReaLearn over using multiple instances with only a few each?
No, adding more instances is totally okay, it was built for that. RAM wise there's some difference but also not much (at least with the latest pre-release).
helgoboss is online now   Reply With Quote
Old 08-14-2022, 04:53 PM   #52
Cody Braden
Human being with feelings
 
Join Date: Dec 2021
Posts: 25
Default

I have some nice mappings to control ReaEQ with my midi controller using realearn (thank you). I have it set to work on any given selected track, but if I'm trying using the midi controller to manipulate a ReaEQ instance that is in an fx chain for a media item on the selected track it will not work. I'd prefer to set it up to control any ReaEQ I have open, regardless of what tracks are selected or if it's in a media item effect chain, or the track effect chain. I've gone through your youtube tutorials and the manual but can't figure this out, must be missing something obvious here.

It seemed like I could use the * wildcard so it'd work on any track, and just check the box that says "fx must have focus", but I might have to put a common character in all my track names for that to work, and still wouldn't work in the media item fx chain. . .

Last edited by Cody Braden; 08-14-2022 at 05:01 PM.
Cody Braden is offline   Reply With Quote
Old 08-15-2022, 12:39 AM   #53
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,185
Default

Quote:
Originally Posted by Cody Braden View Post
I have some nice mappings to control ReaEQ with my midi controller using realearn (thank you). I have it set to work on any given selected track, but if I'm trying using the midi controller to manipulate a ReaEQ instance that is in an fx chain for a media item on the selected track it will not work. I'd prefer to set it up to control any ReaEQ I have open, regardless of what tracks are selected or if it's in a media item effect chain, or the track effect chain. I've gone through your youtube tutorials and the manual but can't figure this out, must be missing something obvious here.

It seemed like I could use the * wildcard so it'd work on any track, and just check the box that says "fx must have focus", but I might have to put a common character in all my track names for that to work, and still wouldn't work in the media item fx chain. . .
ReaLearn can work on the currently focused FX (see the auto-load tutorial in the user guide for that). However, it doesn't work on take FX so far. There's a feature request already.
helgoboss is online now   Reply With Quote
Old 08-17-2022, 09:36 AM   #54
Cody Braden
Human being with feelings
 
Join Date: Dec 2021
Posts: 25
Default

Quote:
Originally Posted by helgoboss View Post
ReaLearn can work on the currently focused FX (see the auto-load tutorial in the user guide for that). However, it doesn't work on take FX so far. There's a feature request already.
Thank you, looking forward to the update! sending donation now
Cody Braden is offline   Reply With Quote
Old 11-03-2022, 10:20 AM   #55
Fox Robinson
Human being with feelings
 
Join Date: Dec 2014
Posts: 9
Default How do I load a Main preset?

I have Betov5 for TouchOSC which comes with a preset for Realearn. However, there is no file browser in the 'Main Preset' section for me to load. So how do I load it?
Fox Robinson is offline   Reply With Quote
Old 11-03-2022, 05:56 PM   #56
Jkeeton72
Human being with feelings
 
Join Date: Aug 2018
Posts: 9
Default Realearn Companion

Hey guys totally new to this. I have set up a partial Companion controller and nothing is reflecting from my plugins that are mapped in Realearn. Not sure what's going on. Mapped plugin is autoload focused and I can control parameters fine. But nothing reflected on companion. Does it have to be a finished controller with every button etc mapped? I would Love to get this to work. Thanks
Jkeeton72 is offline   Reply With Quote
Old 11-04-2022, 08:36 AM   #57
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,185
Default

Quote:
Originally Posted by Fox Robinson View Post
I have Betov5 for TouchOSC which comes with a preset for Realearn. However, there is no file browser in the 'Main Preset' section for me to load. So how do I load it?
ReaLearn only has a button "Import from clipboard". So you need to copy the content of that preset file to the clipboard and then press "Import from clipboard".

Quote:
Originally Posted by Jkeeton72 View Post
Hey guys totally new to this. I have set up a partial Companion controller and nothing is reflecting from my plugins that are mapped in Realearn. Not sure what's going on. Mapped plugin is autoload focused and I can control parameters fine. But nothing reflected on companion. Does it have to be a finished controller with every button etc mapped? I would Love to get this to work. Thanks
Some troubleshooting tips:

- You need to use the controller compartment. Each mapping in the controller compartment represents a knob/fader/button on your controller. Each one of them will be shown in the palette of the projection view (press the pencil button in the projection view top right to see the palette). You can drag them onto the canvas.

- Now you probably want to see what each of the knob/fader/button is assigned to. For this, you need to follow the clean and correct ReaLearn path: Assign the controller mapping to a virtual target (usually done automatically when creating the controller mapping, but you can of course change the virtual target ID later). Then simply create/learn main mappings in the main compartment! Make sure their sources are virtual and correspond to the virtual targets of the controller mappings => ReaLearn does that by default when learning sources in the main compartment. That's it. Sounds more complicated than it is.
helgoboss is online now   Reply With Quote
Old 11-04-2022, 09:55 AM   #58
Fox Robinson
Human being with feelings
 
Join Date: Dec 2014
Posts: 9
Default

Quote:
Originally Posted by helgoboss View Post
ReaLearn only has a button "Import from clipboard". So you need to copy the content of that preset file to the clipboard and then press "Import from clipboard".
Brilliant, thank you that works.
Fox Robinson is offline   Reply With Quote
Old 11-04-2022, 06:03 PM   #59
Jkeeton72
Human being with feelings
 
Join Date: Aug 2018
Posts: 9
Default

Quote:
Originally Posted by helgoboss View Post
ReaLearn only has a button "Import from clipboard". So you need to copy the content of that preset file to the clipboard and then press "Import from clipboard".





Some troubleshooting tips:

- You need to use the controller compartment. Each mapping in the controller compartment represents a knob/fader/button on your controller. Each one of them will be shown in the palette of the projection view (press the pencil button in the projection view top right to see the palette). You can drag them onto the canvas.

- Now you probably want to see what each of the knob/fader/button is assigned to. For this, you need to follow the clean and correct ReaLearn path: Assign the controller mapping to a virtual target (usually done automatically when creating the controller mapping, but you can of course change the virtual target ID later). Then simply create/learn main mappings in the main compartment! Make sure their sources are virtual and correspond to the virtual targets of the controller mappings => ReaLearn does that by default when learning sources in the main compartment. That's it. Sounds more complicated than it is.

I loaded the provided X touch compact controller preset. Then I went through my main and Link them all. I noticed I lost all feedback for my button and encoder lights now. I'm not sure what happened. I tried the feedback settings also in different combinations and I still have no feedback for my lights. Luckily I saved what I had set up before. I guess I can live without the companion app and go back to the way I had it without a controller preset. Everything seemed to be working without a controller preset. Lights feedback Etc. Thanks for your help
Jkeeton72 is offline   Reply With Quote
Old 11-05-2022, 01:35 AM   #60
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,185
Default

Quote:
Originally Posted by Jkeeton72 View Post
I loaded the provided X touch compact controller preset. Then I went through my main and Link them all. I noticed I lost all feedback for my button and encoder lights now. I'm not sure what happened. I tried the feedback settings also in different combinations and I still have no feedback for my lights. Luckily I saved what I had set up before. I guess I can live without the companion app and go back to the way I had it without a controller preset. Everything seemed to be working without a controller preset. Lights feedback Etc. Thanks for your help
I don't think I ever published an official X-Touch Compact preset, so not sure what that is exactly. I can only speak for the "Mackie Control" preset, in which feedback for encoder and button LEDs should work simply by learning the source. And LCD feedback as described in the "Controllers" document. Did you have a look at that? Right mouse click in header panel, Help, Controllers.
helgoboss is online now   Reply With Quote
Old 01-03-2023, 11:38 AM   #61
Fergler
Human being with feelings
 
Fergler's Avatar
 
Join Date: Jan 2014
Posts: 5,207
Default

Hey Helgoboss, trying to communicate with my X32 and I've had some success using Advanced settings:

---
on_activate:
send_midi_feedback:
- raw: F0 00 20 32 32 2F 63 68 2F 30 34 2F 63 6F 6E 66 69 67 2F 63 6F 6C 6F 72 20 4F 46 46 F7


for e.g. which is turning channel 4's LCD black

but I can't seem to send these messages any other way. For e.g. I'd like to send osc using OSC Target but I can't make sense of the available options. Where do I enter the value? (in my case, OFF, after /ch/01/config/color address)

I also tried sending it directly as a MIDI sysex message with MIDI: Send message target but that has no effect

Lastly, if I send this:

Code:
---
on_activate:
  send_midi_feedback:
    - raw: F0 00 20 32 32 2F 63 68 2F 30 31 2F 63 6F 6E 66 69 67 2F 63 6F 6C 6F 72 20 4F 46 46 F7
    - raw: F0 00 20 32 32 2F 63 68 2F 30 32 2F 63 6F 6E 66 69 67 2F 63 6F 6C 6F 72 20 4F 46 46 F7
    - raw: F0 00 20 32 32 2F 63 68 2F 30 33 2F 63 6F 6E 66 69 67 2F 63 6F 6C 6F 72 20 4F 46 46 F7
    - raw: F0 00 20 32 32 2F 63 68 2F 30 34 2F 63 6F 6E 66 69 67 2F 63 6F 6C 6F 72 20 4F 46 46 F7
    - raw: F0 00 20 32 32 2F 63 68 2F 30 35 2F 63 6F 6E 66 69 67 2F 63 6F 6C 6F 72 20 4F 46 46 F7
    - raw: F0 00 20 32 32 2F 63 68 2F 30 36 2F 63 6F 6E 66 69 67 2F 63 6F 6C 6F 72 20 4F 46 46 F7
    - raw: F0 00 20 32 32 2F 63 68 2F 30 37 2F 63 6F 6E 66 69 67 2F 63 6F 6C 6F 72 20 4F 46 46 F7
    - raw: F0 00 20 32 32 2F 63 68 2F 30 38 2F 63 6F 6E 66 69 67 2F 63 6F 6C 6F 72 20 4F 46 46 F7
    - raw: F0 00 20 32 32 2F 63 68 2F 30 39 2F 63 6F 6E 66 69 67 2F 63 6F 6C 6F 72 20 4F 46 46 F7
    - raw: F0 00 20 32 32 2F 63 68 2F 31 30 2F 63 6F 6E 66 69 67 2F 63 6F 6C 6F 72 20 4F 46 46 F7
    - raw: F0 00 20 32 32 2F 63 68 2F 31 31 2F 63 6F 6E 66 69 67 2F 63 6F 6C 6F 72 20 4F 46 46 F7
    - raw: F0 00 20 32 32 2F 63 68 2F 31 32 2F 63 6F 6E 66 69 67 2F 63 6F 6C 6F 72 20 4F 46 46 F7
    - raw: F0 00 20 32 32 2F 63 68 2F 31 33 2F 63 6F 6E 66 69 67 2F 63 6F 6C 6F 72 20 4F 46 46 F7
    - raw: F0 00 20 32 32 2F 63 68 2F 31 34 2F 63 6F 6E 66 69 67 2F 63 6F 6C 6F 72 20 4F 46 46 F7
    - raw: F0 00 20 32 32 2F 63 68 2F 31 35 2F 63 6F 6E 66 69 67 2F 63 6F 6C 6F 72 20 4F 46 46 F7
    - raw: F0 00 20 32 32 2F 63 68 2F 31 36 2F 63 6F 6E 66 69 67 2F 63 6F 6C 6F 72 20 4F 46 46 F7
    - raw: F0 00 20 32 32 2F 63 68 2F 31 37 2F 63 6F 6E 66 69 67 2F 63 6F 6C 6F 72 20 4F 46 46 F7
    - raw: F0 00 20 32 32 2F 63 68 2F 31 38 2F 63 6F 6E 66 69 67 2F 63 6F 6C 6F 72 20 4F 46 46 F7
    - raw: F0 00 20 32 32 2F 63 68 2F 31 39 2F 63 6F 6E 66 69 67 2F 63 6F 6C 6F 72 20 4F 46 46 F7
    - raw: F0 00 20 32 32 2F 63 68 2F 32 30 2F 63 6F 6E 66 69 67 2F 63 6F 6C 6F 72 20 4F 46 46 F7
    - raw: F0 00 20 32 32 2F 63 68 2F 32 31 2F 63 6F 6E 66 69 67 2F 63 6F 6C 6F 72 20 4F 46 46 F7
    - raw: F0 00 20 32 32 2F 63 68 2F 32 32 2F 63 6F 6E 66 69 67 2F 63 6F 6C 6F 72 20 4F 46 46 F7
    - raw: F0 00 20 32 32 2F 63 68 2F 32 33 2F 63 6F 6E 66 69 67 2F 63 6F 6C 6F 72 20 4F 46 46 F7
    - raw: F0 00 20 32 32 2F 63 68 2F 32 34 2F 63 6F 6E 66 69 67 2F 63 6F 6C 6F 72 20 4F 46 46 F7
    - raw: F0 00 20 32 32 2F 63 68 2F 32 35 2F 63 6F 6E 66 69 67 2F 63 6F 6C 6F 72 20 4F 46 46 F7
    - raw: F0 00 20 32 32 2F 63 68 2F 32 36 2F 63 6F 6E 66 69 67 2F 63 6F 6C 6F 72 20 4F 46 46 F7
    - raw: F0 00 20 32 32 2F 63 68 2F 32 37 2F 63 6F 6E 66 69 67 2F 63 6F 6C 6F 72 20 4F 46 46 F7
    - raw: F0 00 20 32 32 2F 63 68 2F 32 38 2F 63 6F 6E 66 69 67 2F 63 6F 6C 6F 72 20 4F 46 46 F7
    - raw: F0 00 20 32 32 2F 63 68 2F 32 39 2F 63 6F 6E 66 69 67 2F 63 6F 6C 6F 72 20 4F 46 46 F7
    - raw: F0 00 20 32 32 2F 63 68 2F 32 31 2F 63 6F 6E 66 69 67 2F 63 6F 6C 6F 72 20 4F 46 46 F7
    - raw: F0 00 20 32 32 2F 63 68 2F 32 32 2F 63 6F 6E 66 69 67 2F 63 6F 6C 6F 72 20 4F 46 46 F7
    - raw: F0 00 20 32 32 2F 63 68 2F 32 33 2F 63 6F 6E 66 69 67 2F 63 6F 6C 6F 72 20 4F 46 46 F7
I get only the first 5 having any effect, this may be a bug or is there an issue with sending so much osc at once?

Last edited by Fergler; 01-03-2023 at 12:14 PM.
Fergler is offline   Reply With Quote
Old 01-04-2023, 02:10 PM   #62
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,185
Default

@Fergler I don't think I built a limitation of how many (separate) sys-ex messages you can send on mapping activation. So I assume it's just too much at once for your device. But I'm not entirely sure, maybe there's some OS limit or so, you could check yourself with a MIDI logger, e.g. MIDIOX.

But chances are that on_activate and on_deactivate is not what you want. Do you want to send feedback messages in response to some events that occur in REAPER? Then you should use source "Raw MIDI" or "MIDI script". Or in case of OSC, the OSC source. Then a REAPER event (the target) would trigger a MIDI/OSC message to be sent to the source. That's called feedback direction in ReaLearn.
helgoboss is online now   Reply With Quote
Old 01-04-2023, 02:13 PM   #63
Fergler
Human being with feelings
 
Fergler's Avatar
 
Join Date: Jan 2014
Posts: 5,207
Default

I'm trying to blacken all channels on Behringer X32 then colour and name only some channels, when the ReaLearn mapping is chosen, reflecting the current FX that is open and the sliders/knobs I've chosen to map in ReaLearn to some console faders.
Then when it loses focus, reblacken all the channels

So far all those features work but I am getting misbehaviour from the X32 in response. It's not just that only 5 OSC messages are received, it is also sometimes not receiving one of them (and always that one.. curiously..).

I'm sure multiple incoming messages are not a problem because of videos like this haha:

https://www.youtube.com/watch?v=ODJc2xbhxbE
Fergler is offline   Reply With Quote
Old 01-04-2023, 02:19 PM   #64
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,185
Default

Quote:
Originally Posted by Fergler View Post
I'm trying to blacken all channels on Behringer X32 then colour and name only some channels, when the ReaLearn mapping is chosen, reflecting the current FX that is open and the sliders/knobs I've chosen to map in ReaLearn to some console faders.
Then when it loses focus, reblacken all the channels

So far all those features work but I am getting misbehaviour from the X32 in response. It's not just that only 5 OSC messages are received, it is also sometimes not receiving one of them (and always that one.. curiously..).

I'm sure multiple incoming messages are not a problem because of videos like this haha:

https://www.youtube.com/watch?v=ODJc2xbhxbE
Do you send the regular subscription message (every 10 secs or so)? I remember this was necessary with the x32.
helgoboss is online now   Reply With Quote
Old 01-04-2023, 04:24 PM   #65
Fergler
Human being with feelings
 
Fergler's Avatar
 
Join Date: Jan 2014
Posts: 5,207
Default

Quote:
Originally Posted by helgoboss View Post
Do you send the regular subscription message (every 10 secs or so)? I remember this was necessary with the x32.
I came across that here:
https://github.com/helgoboss/realearn/issues/518

but concluded that this was for the other direction, getting OSC from the X32. I did try it, but I'm not sure if I tried it within Advanced settings

I can't get any OSC successfully over to the X32 using Timer source to OSC: Send or MIDI: Send targets

Last edited by Fergler; 01-04-2023 at 04:45 PM.
Fergler is offline   Reply With Quote
Old 01-04-2023, 05:15 PM   #66
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,185
Default

Does this help? https://forum.cockos.com/showpost.ph...postcount=2653

Unfortunately, I can't test this myself.
helgoboss is online now   Reply With Quote
Old 01-06-2023, 01:14 PM   #67
Fergler
Human being with feelings
 
Fergler's Avatar
 
Join Date: Jan 2014
Posts: 5,207
Default

I will try with an OSC connection over ethernet as suggested in that post, but so far I've been doing this over the USB interface connection.

edit: so using a genuine OSC connection via Ethernet, I can send single OSC messages, but am unable to send either more than one at once (without one mapping per) and cannot send strings (no where to enter string value). Am I missing something obvious?



This makes the name on the x32 = 100.000

Last edited by Fergler; 01-06-2023 at 03:23 PM.
Fergler is offline   Reply With Quote
Old 01-06-2023, 05:51 PM   #68
Fergler
Human being with feelings
 
Fergler's Avatar
 
Join Date: Jan 2014
Posts: 5,207
Default

Found a workable solution, and actually it's much easier to set up!

Turns out you can blast program changes at an X32 and channel 1 corresponds to scenes, 2 to snippets.

So no OSC needed, I just have the usual learned parameters and then I've gone through with X32 Edit and created snippets that blank out the board except for the channels I want to represent my parameters. Sending midi program change on mapping activation for the corresponding snippet, then sending the deactivation that blanks the board when the FX is closed. It's really quite beautiful to behold after I was just about to lose hope

https://drive.google.com/file/d/1IFI...usp=share_link
Fergler is offline   Reply With Quote
Old 01-07-2023, 06:50 PM   #69
BITT
Human being with feelings
 
Join Date: Oct 2017
Posts: 4
Default Controlling hardware

Hi Benjamin, and thanks for your great work! I have been using the older version of realearn with midifighter twister and roland a-500 for some years, but only for controlling plugins and functions inside Reaper..totally stable and flawless operation!! Great!!
I may definitely have missed something , but studying all I can find, I cannot retrieve any form of description anywhere on how to control a hardware synth from Realearns mappings..or anything outside Reaper receiving CC´s / NRPN´s from/via Realearn...

Could you spare a couple of minutes and tell me if this is possible, and in that case point me in a direction to how?


thanks again
and best regards
Audun Kleive
Norway
BITT is offline   Reply With Quote
Old 01-08-2023, 09:53 AM   #70
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,185
Default

Quote:
Originally Posted by Fergler View Post
Found a workable solution, and actually it's much easier to set up!

Turns out you can blast program changes at an X32 and channel 1 corresponds to scenes, 2 to snippets.

So no OSC needed, I just have the usual learned parameters and then I've gone through with X32 Edit and created snippets that blank out the board except for the channels I want to represent my parameters. Sending midi program change on mapping activation for the corresponding snippet, then sending the deactivation that blanks the board when the FX is closed. It's really quite beautiful to behold after I was just about to lose hope

https://drive.google.com/file/d/1IFI...usp=share_link
Cool. I wish I had this beast at home to try this myself. One day

Quote:
Originally Posted by BITT View Post
Hi Benjamin, and thanks for your great work! I have been using the older version of realearn with midifighter twister and roland a-500 for some years, but only for controlling plugins and functions inside Reaper..totally stable and flawless operation!! Great!!
I may definitely have missed something , but studying all I can find, I cannot retrieve any form of description anywhere on how to control a hardware synth from Realearns mappings..or anything outside Reaper receiving CC´s / NRPN´s from/via Realearn...

Could you spare a couple of minutes and tell me if this is possible, and in that case point me in a direction to how?


thanks again
and best regards
Audun Kleive
Norway
Hi! What exactly do you want to control? And how?

If you want to control your external synth in response to events in REAPER (e.g. track armed), then ReaLearn's feedback direction is your friend, which means that the signal flows from the target to the source. You would then use MIDI sources "MIDI CC" for example, or "Raw MIDI" and "MIDI script" if you need to send sys-ex.

If you want to control your external synth in response to button presses / fader moves (or whatever) on your controller, then target "MIDI: Send message" is your best bet. However, then you could just as well use a custom-built REAPER JS FX, that would be more powerful.
helgoboss is online now   Reply With Quote
Old 01-19-2023, 08:24 AM   #71
luiza177
Human being with feelings
 
Join Date: Mar 2020
Posts: 195
Default

Hi Benjamin, thank you so much for creating ReaLearn, I can't begin to tell you how impressive its power is!

I only just recently began messing around with all the possibilities it provides. Particularly, I recently found out Softube Console 1 has a MIDI mode and have been trying to figure out a way to use ReaLearn to enable it to control 3rd party/custom channel strips.
That said, it seems that in MIDI mode it has an unfortunate limitation, it functions in absolute mode and the encoders, despite being endless, operate in increments of 3 (or 1 if the shift/fine adjust button is held down). While I'm able to get the feedback to work so that parameter jumps are avoided, I really don't like how coarse the adjustments are. Or that in some mappings, for example Pro-Q3, I can't get a band's gain to be 0.0dB.
Would something like the Control Transformation option be able to modify and help with that?

Alternatively, Console 1's native mode uses SysEx to control its plug-in. If I learn that as a source, it seems I can only grab the value of one direction of the encoders, is there maybe a way to insert a "wildcard" of sorts into the pattern? I had a look in the user guide, but to be honest, it went way over my head.
luiza177 is offline   Reply With Quote
Old 01-19-2023, 09:33 AM   #72
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,185
Default

Quote:
Originally Posted by luiza177 View Post
Hi Benjamin, thank you so much for creating ReaLearn, I can't begin to tell you how impressive its power is!

I only just recently began messing around with all the possibilities it provides. Particularly, I recently found out Softube Console 1 has a MIDI mode and have been trying to figure out a way to use ReaLearn to enable it to control 3rd party/custom channel strips.
That said, it seems that in MIDI mode it has an unfortunate limitation, it functions in absolute mode and the encoders, despite being endless, operate in increments of 3 (or 1 if the shift/fine adjust button is held down). While I'm able to get the feedback to work so that parameter jumps are avoided, I really don't like how coarse the adjustments are. Or that in some mappings, for example Pro-Q3, I can't get a band's gain to be 0.0dB.
Would something like the Control Transformation option be able to modify and help with that?
Funny you mention that, I investigated exactly this issue with another Softube Console 1 user only recently. It's a weird way to implement MIDI mode on their side but we can fix it.

The official Softube way (how they intended it) is to press the "Fine Adjust" button while you move the knob. That doesn't give you relative mode but at least increments of 1, not 3. Still, it's not in the spirit of ReaLearn to depend on such hardware-specific features, plus, maybe holding the "Fine Adjust" button all the time can get quite annoying.

So I came up with this control transformation:

Code:
// Parameters

step = 0.001;

// Code

x > prev_x || x == 1 ? (
   y += step;
) : x < prev_x || x == 0 ? (
   y -= step;
);
prev_x = x;
This turns it into relative control. It relies on the fact that Console 1 - fortunately - keeps sending messages even when 0 or 127 is reached. You can't use the step/speed sliders to influence the step size, you need to adjust it in the formula. I should add the possibility to let control transformation formulas output increments (https://github.com/helgoboss/realearn/issues/800). Then it would also be possible to put that "make-relative" logic into the "Controller" compartment, which would make much sense. Then you could use it in the main compartment just like any other (natively relative) encoder.

Quote:
Originally Posted by luiza177 View Post
Alternatively, Console 1's native mode uses SysEx to control its plug-in. If I learn that as a source, it seems I can only grab the value of one direction of the encoders, is there maybe a way to insert a "wildcard" of sorts into the pattern? I had a look in the user guide, but to be honest, it went way over my head.
Cool that it also sends sys-ex. You might get some use from that by using the "Raw MIDI" source. You can insert a wildcard. I doubt that it would be of much help, it depends on what it sends as variable bytes? Let me know which messages it sends when moving the encoder.
helgoboss is online now   Reply With Quote
Old 01-19-2023, 12:22 PM   #73
luiza177
Human being with feelings
 
Join Date: Mar 2020
Posts: 195
Default

Quote:
Originally Posted by helgoboss View Post
Funny you mention that, I investigated exactly this issue with another Softube Console 1 user only recently. It's a weird way to implement MIDI mode on their side but we can fix it.

The official Softube way (how they intended it) is to press the "Fine Adjust" button while you move the knob. That doesn't give you relative mode but at least increments of 1, not 3. Still, it's not in the spirit of ReaLearn to depend on such hardware-specific features, plus, maybe holding the "Fine Adjust" button all the time can get quite annoying.

So I came up with this control transformation:

Code:
// Parameters

step = 0.001;

// Code

x > prev_x || x == 1 ? (
   y += step;
) : x < prev_x || x == 0 ? (
   y -= step;
);
prev_x = x;
This turns it into relative control. It relies on the fact that Console 1 - fortunately - keeps sending messages even when 0 or 127 is reached. You can't use the step/speed sliders to influence the step size, you need to adjust it in the formula. I should add the possibility to let control transformation formulas output increments (https://github.com/helgoboss/realearn/issues/800). Then it would also be possible to put that "make-relative" logic into the "Controller" compartment, which would make much sense. Then you could use it in the main compartment just like any other (natively relative) encoder.
Took some fiddling, but leaving the controller side in 'Normal' feedback mode (I originally had it in 'Send feedback after control' mode), putting the code in the main compartment mapping and setting that feedback mode to 'Prevent echo' did the trick! Thanks for that

Otherwise, yes, being able to set this in the Controller compartment to reuse this default behavior would be amazing.


Quote:
Originally Posted by helgoboss View Post
Cool that it also sends sys-ex. You might get some use from that by using the "Raw MIDI" source. You can insert a wildcard. I doubt that it would be of much help, it depends on what it sends as variable bytes? Let me know which messages it sends when moving the encoder.
So, as examples, the Low Gain knob sends
Code:
//increment
F0 7D 00 00 00 00 02 00 2A 7F 77 72 28 63 0E F7
//decrement
F0 7D 00 00 00 00 02 00 2A 00 37 48 44 4E 03 F7
The Phase Inv. button sends
Code:
//press
F0 7D 00 00 00 00 02 00 1F 7F 55 43 6A 55 05 F7
//release
F0 7D 00 00 00 00 02 00 1F 00 15 79 06 78 08 F7
luiza177 is offline   Reply With Quote
Old 01-20-2023, 09:06 AM   #74
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,185
Default

Quote:
Originally Posted by luiza177 View Post
Took some fiddling, but leaving the controller side in 'Normal' feedback mode (I originally had it in 'Send feedback after control' mode), putting the code in the main compartment mapping and setting that feedback mode to 'Prevent echo' did the trick! Thanks for that

Otherwise, yes, being able to set this in the Controller compartment to reuse this default behavior would be amazing.




So, as examples, the Low Gain knob sends
Code:
//increment
F0 7D 00 00 00 00 02 00 2A 7F 77 72 28 63 0E F7
//decrement
F0 7D 00 00 00 00 02 00 2A 00 37 48 44 4E 03 F7
The Phase Inv. button sends
Code:
//press
F0 7D 00 00 00 00 02 00 1F 7F 55 43 6A 55 05 F7
//release
F0 7D 00 00 00 00 02 00 1F 00 15 79 06 78 08 F7
Oh right, "Prevent echo". Forgot about that. Without that, Console1 gets confused.

About those sys-ex messages. Are they always the same? If yes, they could be turned into relative messages in the controller compartment and be used just like a real encoder in the main compartment, without any FR and without any wildcards.

Import this from clipboard:

Code:
{
    kind = "ControllerCompartment",
    version = "2.14.3",
    value = {
        mappings = {
            {
                id = "A1_VF-Qq4Zzzsxidgxtru",
                name = "Decrement",
                source = {
                    kind = "MidiRaw",
                    pattern = "F0 7D 00 00 00 00 02 00 2A 7F 77 72 28 63 0E F7",
                    character = "Button",
                },
                glue = {
                    absolute_mode = "IncrementalButton",
                    reverse = true,
                    step_size_interval = {0.01, 0.05},
                },
                target = {
                    kind = "Virtual",
                    id = 0,
                },
            },
            {
                id = "JpqnQOcr7_YkoGEJDlDZ9",
                name = "Increment",
                source = {
                    kind = "MidiRaw",
                    pattern = "F0 7D 00 00 00 00 02 00 2A 00 37 48 44 4E 03 F7 ",
                    character = "Button",
                },
                glue = {
                    absolute_mode = "IncrementalButton",
                    step_size_interval = {0.01, 0.05},
                },
                target = {
                    kind = "Virtual",
                    id = 0,
                },
            },
        },
    },
}
This exposes the "fixed" encoder as virtual control element "Multi 1", so you can now go and use it just like a normal encoder in the main compartment. E.g. by using "Learn source".

I'm not sure though how feedback works in Console1 native mode. Can't try it because I don't have this thing.
helgoboss is online now   Reply With Quote
Old 01-20-2023, 05:31 PM   #75
Tycho
Human being with feelings
 
Tycho's Avatar
 
Join Date: Jan 2011
Location: San Francisco
Posts: 461
Default

awesome info here, thanks. a side note on the "fine adjust" button, I use a little piece of metal and a magnet to hold it down when I want:
https://youtube.com/shorts/OWYUVapRxv0
Tycho is offline   Reply With Quote
Old 01-21-2023, 02:30 AM   #76
luiza177
Human being with feelings
 
Join Date: Mar 2020
Posts: 195
Default

Quote:
Originally Posted by helgoboss View Post
Oh right, "Prevent echo". Forgot about that. Without that, Console1 gets confused.

About those sys-ex messages. Are they always the same? If yes, they could be turned into relative messages in the controller compartment and be used just like a real encoder in the main compartment, without any FR and without any wildcards.

Import this from clipboard:

Code:
{
    kind = "ControllerCompartment",
    version = "2.14.3",
    value = {
        mappings = {
            {
                id = "A1_VF-Qq4Zzzsxidgxtru",
                name = "Decrement",
                source = {
                    kind = "MidiRaw",
                    pattern = "F0 7D 00 00 00 00 02 00 2A 7F 77 72 28 63 0E F7",
                    character = "Button",
                },
                glue = {
                    absolute_mode = "IncrementalButton",
                    reverse = true,
                    step_size_interval = {0.01, 0.05},
                },
                target = {
                    kind = "Virtual",
                    id = 0,
                },
            },
            {
                id = "JpqnQOcr7_YkoGEJDlDZ9",
                name = "Increment",
                source = {
                    kind = "MidiRaw",
                    pattern = "F0 7D 00 00 00 00 02 00 2A 00 37 48 44 4E 03 F7 ",
                    character = "Button",
                },
                glue = {
                    absolute_mode = "IncrementalButton",
                    step_size_interval = {0.01, 0.05},
                },
                target = {
                    kind = "Virtual",
                    id = 0,
                },
            },
        },
    },
}
This exposes the "fixed" encoder as virtual control element "Multi 1", so you can now go and use it just like a normal encoder in the main compartment. E.g. by using "Learn source".

I'm not sure though how feedback works in Console1 native mode. Can't try it because I don't have this thing.
Aaah very interesting, so from the looks of it (I haven't gotten a chance to try it out yet) basically we have 2 mappings with the same ID, which counts as one,right? Will definitely mess around with this and see what I can do. If I can get the feedback to work it'd be the best of both worlds! Thanks!

@Tycho, very ingenious solution! Having had a quick glimpse of your C1 labels, I'd be curious to see how you set it up
luiza177 is offline   Reply With Quote
Old 01-21-2023, 11:15 PM   #77
Tycho
Human being with feelings
 
Tycho's Avatar
 
Join Date: Jan 2011
Location: San Francisco
Posts: 461
Default

when in sysex mode the encoders are sending two different values, one for clockwise and the other counterclockwise. for example, this is the "input gain" knob:

CW_: F0 7D 00 00 00 00 02 00 1B 7F 31 2F 2F 51 07 F7
CCW: F0 7D 00 00 00 00 02 00 1B 00 71 15 43 7C 0A F7

is there a way to make this work without the FR? I was able to import the code from clipboard into the controller compartment and it showed up as increment / decrement but I was unable to get it to function properly. when I try to learn source in main compartment both directions show as "decrement". I have imported this code:

{
kind = "ControllerCompartment",
version = "2.14.3",
value = {
mappings = {
{
id = "A1_VF-Qq4Zzzsxidgxtru",
name = "Decrement",
source = {
kind = "MidiRaw",
pattern = "F0 7D 00 00 00 00 02 00 1B 00 71 15 43 7C 0A F7",
character = "Button",
},
glue = {
absolute_mode = "IncrementalButton",
reverse = true,
step_size_interval = {0.01, 0.05},
},
target = {
kind = "Virtual",
id = 0,
},
},
{
id = "JpqnQOcr7_YkoGEJDlDZ9",
name = "Increment",
source = {
kind = "MidiRaw",
pattern = "F0 7D 00 00 00 00 02 00 1B 7F 31 2F 2F 51 07 F7",
character = "Button",
},
glue = {
absolute_mode = "IncrementalButton",
step_size_interval = {0.01, 0.05},
},
target = {
kind = "Virtual",
id = 0,
},
},
},
},
}



@luiza: will send a full image of mappings with explanation tomorrow. will upload the realearn profile once I finish it, but still have some refinements to go.

Last edited by Tycho; 01-21-2023 at 11:34 PM.
Tycho is offline   Reply With Quote
Old 01-22-2023, 01:04 PM   #78
Tycho
Human being with feelings
 
Tycho's Avatar
 
Join Date: Jan 2011
Location: San Francisco
Posts: 461
Default

Overview of my workflow / mappings. Made it broad so it might be useful to people who haven't used ReaLearn yet.
https://www.youtube.com/watch?v=5ZWepRBTZCY
Tycho is offline   Reply With Quote
Old 01-23-2023, 09:16 AM   #79
luiza177
Human being with feelings
 
Join Date: Mar 2020
Posts: 195
Default

I was able to get the code helgoboss sent in his previous post working for native mode. In the Main compartment it shows the source "Decrement + 1", I mapped it a channel's volume fader to test and it moved the fader nicely. However, as expected there was no feedback. I tried messing around with different settings and mappings, but I wasn't able to get it to work. Unfortunately, there's also no documentation around for C1's native mode SysEx messages.

Back in MIDI mode though, C1's buttons behave like toggle buttons, it seems. I'm able to get them to fire an action on press with either selecting the "toggle button" Character, or using this the Control Transformation:

Code:
x ==0 ? (y = 1) : ( y = 1)
However, the LEDs will still light up as if representing a physical toggle button. I tried simply forcing the LED to stay off (since the action didn't have a toggle state anyway), by going simply `x = 0` in feedback transformation, both in the Main and in the controller side, but that didn't seem to work. I also tried `y = 0` just in case, but no dice. Am I missing something?



@Tycho Really cool setup, thanks for sharing! Definitely love the editing mode.
luiza177 is offline   Reply With Quote
Old 01-23-2023, 01:33 PM   #80
Tycho
Human being with feelings
 
Tycho's Avatar
 
Join Date: Jan 2011
Location: San Francisco
Posts: 461
Default

yeah that was my experience with it too. for now everything is working fine with a couple tweaks so I think I'm going to move forward with my current config and finalize a couple things. will post everything when I'm done
Tycho 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:32 AM.


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