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

Reply
 
Thread Tools Display Modes
Old 06-15-2021, 09:39 PM   #1401
Arthur McArthur
Human being with feelings
 
Arthur McArthur's Avatar
 
Join Date: Sep 2016
Location: Toronto
Posts: 749
Default

Hi Helgoboss, is it possible to record MIDI from the relative encoders on my Midi Twister Fighter into a MIDI item as CC? Or is the best approach to write automation?
Arthur McArthur is offline   Reply With Quote
Old 06-16-2021, 04:16 AM   #1402
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,199
Default

Quote:
Originally Posted by flipotto View Post
Hello,

I am wondering if realearn will let me send an osc message to my x32 mixer?
Here is the command I want to send
Code:
/config/routing/routswitch ,t
or
/config/routing/routswitch ,i 0
and 
/config/routing/routswitch ,i 1
I am trying to automate between mixing in the box and mixing on the console. I have a script to toggle the hardware outs on my reaper tracks I just don't have a way to toggle the mode on the mixer.

EDIT -
Look like yes it can, I just need to send OSC message to it.
I will experiment later and report back.
Use the "OSC: Send message" target. It takes an input message (MIDI or OSC), converts it to an OSC message of your choice and sends it to a device of your choice. If you want always the same OSC message - no matter which input value - simply set target min/max to the same value. You can also choose the value type to be used. However, at the moment Float, Double, Bool, Nil and Inf are supported. That's an unnecessary artificial limitation, I'm going to add support for integers and some other types soon.


Quote:
Originally Posted by Mohow View Post
Hello!

I've discovered ReaLearn recently and I absolutely love the potential of this plugin. The APC 40 Mk2 has some hard coded limiting features that really limit its functionality with base reaper midi functions but ReaLearn allows me open this thing up to its full potential!

I'm having an issue with the takeover setting not being soft. With Reaper's default midi controls, the faders do function correctly when "soft takeover" is selected, but I can't seem to get it to work in ReaLearn.

I've read in the manual that all 4 takeover modes are supposed to have a soft takeover by default but all 4 modes are acting in absolute fashion and I cannot figure out how to change it.

Both the faders and the knobs on the controller perform in "absolute" mode and this doesn't work in my work flow!

How do I fix it?

Thanks!
ReaLearn allows (and requires) you to define the maximum jump that you want to allow. By default it's set to 100% - which means "All jumps are okay". The different takeover modes will be effective as soon as you set "Jump Max" to a smaller value (e.g. 1%).

Quote:
Originally Posted by Arthur McArthur View Post
Hi Helgoboss, is it possible to record MIDI from the relative encoders on my Midi Twister Fighter into a MIDI item as CC? Or is the best approach to write automation?
Yes, that's possible. Put ReaLearn on the normal track FX chain (not the input FX chain) and set its control input to <FX input>. Then record MIDI in REAPER as usual.

But keep in mind that this kind of pseudo-automation will be rendered only if you use "Online" rendering in REAPER (see this user guide section).
helgoboss is online now   Reply With Quote
Old 06-16-2021, 04:33 AM   #1403
flipotto
Human being with feelings
 
flipotto's Avatar
 
Join Date: Feb 2007
Location: VA
Posts: 887
Default Program Change Source?

Source question
I am trying to use a midi program change on midi chan 2 pc#00
I need to receive the data val 1 with it.
In the mapping section I only see the channel info, can you add data val 1? Or is there another way for source to be filtered for pc# (data1 value)?

Reason - I'm trying different approaches to the same thing.
I need to change the snippet on the X32 and pc message on chan 2 value 00-99 will let me change the snippet.

Re the osc message above, I tried using Patrick's x32 emulator and it does respond to /config/routing/routswitch ,i [0,1]. I have the pc source created. How do I have the same source midi message toggle the target int arg between 0, 1?
I am looking at the tuning -
I think that is where I could set the same midi source to toggle the target in arg between /config/routing/routswitch ,i 0 and /config/routing/routswitch ,i 1?
flipotto is offline   Reply With Quote
Old 06-16-2021, 09:36 AM   #1404
Mohow
Human being with feelings
 
Join Date: Jun 2021
Posts: 2
Default

Quote:
Originally Posted by helgoboss View Post
ReaLearn allows (and requires) you to define the maximum jump that you want to allow. By default it's set to 100% - which means "All jumps are okay". The different takeover modes will be effective as soon as you set "Jump Max" to a smaller value (e.g. 1%).
If I set the maximum jump value low it introduces a couple new issues:

1. Maximum Jump set to a really low value still does not smoothly takeover, for example: volume of a track is set at -5.0 db. If I set the maximum jump value to -95.96 db (the lowest I can move the slider) and begin to move the fader down, the volume value will jump up from -5.0 db to -3.0 db when it "catches" and then continue moving normally instead of just catching at -5.0 db as intended. This makes granular adjustments difficult to perform.

2. If I move the fader too fast, it will lose "grip" of the volume slider and stop moving which means I have to move the fader slowly if I want to keep adjusting volume. A larger maximum jump value allows me to move faster but also makes issue #1 more pronounced with more extreme jumps in volume value.

Is there anything I can do to solve this?

Last edited by Mohow; 06-16-2021 at 09:44 AM.
Mohow is offline   Reply With Quote
Old 06-16-2021, 10:50 AM   #1405
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,199
Default

Quote:
Originally Posted by Mohow View Post
If I set the maximum jump value low it introduces a couple new issues:

1. Maximum Jump set to a really low value still does not smoothly takeover, for example: volume of a track is set at -5.0 db. If I set the maximum jump value to -95.96 db (the lowest I can move the slider) and begin to move the fader down, the volume value will jump up from -5.0 db to -3.0 db when it "catches" and then continue moving normally instead of just catching at -5.0 db as intended. This makes granular adjustments difficult to perform.

2. If I move the fader too fast, it will lose "grip" of the volume slider and stop moving which means I have to move the fader slowly if I want to keep adjusting volume. A larger maximum jump value allows me to move faster but also makes issue #1 more pronounced with more extreme jumps in volume value.

Is there anything I can do to solve this?
2 is clear to me, but 1 ... I'm shocked. What takeover mode are you using!? Best send me a minimum test RPP, no 3rd party stuff.
helgoboss is online now   Reply With Quote
Old 06-16-2021, 11:29 AM   #1406
migman
Human being with feelings
 
Join Date: May 2015
Posts: 7
Default Receives changing to Sends

Hi Helgoboss,

I am trying to get Realearn to work with my MidiFighter Twister to control the Receive volume (by position) on the selected track. I got it working very nicely but upon quitting Reaper and restarting the mappings have all been changed to "Sends" instead of "Receives" and the positions have been all set to 1.

I have deleted everything and started over and get the same result. Am I doing something incorrectly? Thank you.

Edit: I started a new minimal project to duplicate the issue. Here are the before and after images. After is merely closing the saved project and re-opening.
Attached Images
File Type: jpeg Before.jpeg (54.4 KB, 98 views)
File Type: jpeg After.jpeg (52.0 KB, 108 views)

Last edited by migman; 06-16-2021 at 12:21 PM. Reason: Added
migman is offline   Reply With Quote
Old 06-16-2021, 02:40 PM   #1407
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,199
Default

Quote:
Originally Posted by flipotto View Post
Source question
I am trying to use a midi program change on midi chan 2 pc#00
I need to receive the data val 1 with it.
In the mapping section I only see the channel info, can you add data val 1? Or is there another way for source to be filtered for pc# (data1 value)?
Yes, there's another way: Set Source Min and Max to the desired value (e.g. 0 for program change 0) AND set out-of-range behavior to "Ignore" (will ignore all program change values except 0).

Quote:
Originally Posted by flipotto View Post
Reason - I'm trying different approaches to the same thing.
I need to change the snippet on the X32 and pc message on chan 2 value 00-99 will let me change the snippet.

Re the osc message above, I tried using Patrick's x32 emulator and it does respond to /config/routing/routswitch ,i [0,1]. I have the pc source created. How do I have the same source midi message toggle the target int arg between 0, 1?
I am looking at the tuning -
I think that is where I could set the same midi source to toggle the target in arg between /config/routing/routswitch ,i 0 and /config/routing/routswitch ,i 1?
Mmh, I can see how this would be useful. At the moment, toggling is not possible with the "MIDI/OSC: Send message" targets because they don't have the notion of a "current value". But I guess it would make sense to add an artifical current value ... which would make things like toggling and increasing/decreasing possible. Shouldn't be difficult. Please open an issue on GitHub (then you will also be informed about updates)!


Quote:
Originally Posted by migman View Post
Hi Helgoboss,

I am trying to get Realearn to work with my MidiFighter Twister to control the Receive volume (by position) on the selected track. I got it working very nicely but upon quitting Reaper and restarting the mappings have all been changed to "Sends" instead of "Receives" and the positions have been all set to 1.

I have deleted everything and started over and get the same result. Am I doing something incorrectly? Thank you.

Edit: I started a new minimal project to duplicate the issue. Here are the before and after images. After is merely closing the saved project and re-opening.
Mmh, I can't reproduce this here. Please send a minimal RPP file to info@helgoboss.org.
helgoboss is online now   Reply With Quote
Old 06-16-2021, 04:23 PM   #1408
Arthur McArthur
Human being with feelings
 
Arthur McArthur's Avatar
 
Join Date: Sep 2016
Location: Toronto
Posts: 749
Default

Quote:
Originally Posted by helgoboss View Post
Yes, that's possible. Put ReaLearn on the normal track FX chain (not the input FX chain) and set its control input to <FX input>. Then record MIDI in REAPER as usual.

But keep in mind that this kind of pseudo-automation will be rendered only if you use "Online" rendering in REAPER (see this user guide section).
I'm having an issue with this where it seems like Reaper is recording the relative values into the MIDI item instead of absolute values and therefore cannot be relied upon for accurate playback of what was recorded, for example starting the playback several times increases the value each time it is started:

https://www.youtube.com/watch?v=NyPSeUpBnNc

Is there something I'm doing wrong?
Arthur McArthur is offline   Reply With Quote
Old 06-16-2021, 08:45 PM   #1409
ChadNebri
Human being with feelings
 
Join Date: Jun 2021
Posts: 2
Default It works, but I totally did something completely different this time!

Quote:
Originally Posted by helgoboss View Post
Having multiple ReaLearn instances is fine in general and in your case probably the right thing because you want to always combine one ReaLearn instance with a VST instrument and reuse this "couple" multiple times. It's also correct that you use control input <FX input> in this case because you are treating ReaLearn as a kind of "insert" effect. Great!
Thank you for getting back to me! So, uhh, I kind of changed what I did entirely after reading the manual over again haha. This time I (1) Loaded ReaLearn on its own track; (2) added the Platform M+ as both control input and feedback output; (3) created different mapping groups--mapping controls for expression, dynamics, reverb amount, release, etc. for my High Strings, Low Strings, Trumpets, Low Brass, High Woods, and other instruments (which are all part of the same Spitfire Abbey Road One library) using "Conditional Activation to implement the banks/pages"; and (4) programmed the previous "<--" and next "-->" bank buttons to switch between these groups.

I don't know if I've overcomplicated ReaLearn for myself, but I'm happy it's working at least!


Quote:
Originally Posted by helgoboss View Post
Concerning separating the different instances: By default, all mappings (and all instances) in ReaLearn are active. If you assign targets to the same hardware faders, e.g. in multiple instances, one fader will control many things at once! And if you don't disable feedback for some mappings, the different mappings will "fight with each other" to get the motor fader's attention. One way to solve this is to use <FX input> - as you do - and make sure that only one of these tracks is ever armed. Another way is to use the "Track must be selected" condition.
In the new case I described above, can I just add more mapping groups as I see fit, so long as they're all using conditional activation, and just operate solely on one instance of ReaLearn?


Quote:
Originally Posted by helgoboss View Post
Please follow the instructions in the user guide for the Platform M+! Otherwise it might not work correctly. It says: Please start the device in "Mackie" control mode (channel 1 since firmware version 2).
I initially experienced a bit of trouble with "Mackie control" mode. The buttons on the Platform M+ are originally mapped to be "note" messages, so I kept hearing the instrument being played whenever I tried switching banks, so I switched to custom mode, and changed all the buttons to send out (I think that's the right term) CC messages.

The good news is that it currently works with what I'm running, and it allows me to utilize the "Projection" feature onto an old phone I had stuffed in a drawer doing nothing, which is AWWWEsome!!! I love that I can see which mapping group I'm currently using by just looking at that projection. Also, the motorized faders know to switch what they "read" based on what mapping group is currently active!
ChadNebri is offline   Reply With Quote
Old 06-17-2021, 08:50 AM   #1410
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,199
Default

Quote:
Originally Posted by Arthur McArthur View Post
I'm having an issue with this where it seems like Reaper is recording the relative values into the MIDI item instead of absolute values and therefore cannot be relied upon for accurate playback of what was recorded, for example starting the playback several times increases the value each time it is started:

https://www.youtube.com/watch?v=NyPSeUpBnNc

Is there something I'm doing wrong?
No, you are not doing anything wrong, the way you describe it is exactly how things are supposed to work. If your MIDI device sends relative MIDI messages, REAPER will of course record relative MIDI messages. ReaLearn is not even involved at that point.

If you absolutely insist on using MIDI items to have some pseudo-automation via ReaLearn and you want this automation to be absolute (of course you want it to be absolute), you need to convert the relative MIDI messages to absolute ones before they end up in the recorded item. In order to do this, you need to put some conversion FX on the input FX chain (the output of that FX = the absolute MIDI messages, will then end up in the item). Either you write (or find) a JS FX which does this in a very generic way or you use ReaLearn itself. ReaLearn is capable of converting relative to absolute messages by using the "MIDI: Send message" target in combination with "Make absolute". However, you need one mapping for each rotary encoder.

But honestly, unless you have some very special case, I wouldn't bother and record automation envelopes instead.

Quote:
Originally Posted by ChadNebri View Post
Thank you for getting back to me! So, uhh, I kind of changed what I did entirely after reading the manual over again haha. This time I (1) Loaded ReaLearn on its own track; (2) added the Platform M+ as both control input and feedback output; (3) created different mapping groups--mapping controls for expression, dynamics, reverb amount, release, etc. for my High Strings, Low Strings, Trumpets, Low Brass, High Woods, and other instruments (which are all part of the same Spitfire Abbey Road One library) using "Conditional Activation to implement the banks/pages"; and (4) programmed the previous "<--" and next "-->" bank buttons to switch between these groups.

I don't know if I've overcomplicated ReaLearn for myself, but I'm happy it's working at least!
Doing everything in one instance is not necessarily overcomplication. The "unit of reuse" is getting larger if you do that but if that's okay for you, why not.

Quote:
Originally Posted by ChadNebri View Post
In the new case I described above, can I just add more mapping groups as I see fit, so long as they're all using conditional activation, and just operate solely on one instance of ReaLearn?
You can do that. Performance-wise it doesn't make a difference. Just remember that groups are not the unit of reuse in ReaLearn - so you cannot save a group, give it a name and reuse it independently from the other groups in another project. That's what presets are for.

Quote:
Originally Posted by ChadNebri View Post
I initially experienced a bit of trouble with "Mackie control" mode. The buttons on the Platform M+ are originally mapped to be "note" messages, so I kept hearing the instrument being played whenever I tried switching banks, so I switched to custom mode, and changed all the buttons to send out (I think that's the right term) CC messages.
Yeah, the phenomena of ending up with buttons that trigger both some action and cause an audible note comes up pretty often here. Your solution of course works but it's also inconvenient. Also, keep in mind that your VSTi will not receive "note" messages then but CC messages instead - and maybe your VSTi interprets them in some way you wouldn't expect! So indeed the best would be if it wouldn't get these control messages at all.

The clean way to deal with this is to use <FX input> and put the VSTi directly below ReaLearn - then ReaLearn filters out all messages that are used for control purposes. With your new approach you can't do that anymore because you have one global ReaLearn instance only that serves multiple instruments (I guess). However, there's one feature request which I want to implement at some point, that would allow this kind of filtering even in this case: https://github.com/helgoboss/realearn/issues/378

Quote:
Originally Posted by ChadNebri View Post
The good news is that it currently works with what I'm running, and it allows me to utilize the "Projection" feature onto an old phone I had stuffed in a drawer doing nothing, which is AWWWEsome!!! I love that I can see which mapping group I'm currently using by just looking at that projection. Also, the motorized faders know to switch what they "read" based on what mapping group is currently active!
Great.
helgoboss is online now   Reply With Quote
Old 06-17-2021, 12:22 PM   #1411
nofish
Human being with feelings
 
nofish's Avatar
 
Join Date: Oct 2007
Location: home is where the heart is
Posts: 12,108
Default

@helgoboss
It's a little OT, sorry, as it's more about ReaLearn coding than usage but I wonder how you manage to get host (= REAPER) context in ReaLearn (i.e. the track ReaLearn currently lives on, in ReaLearn GUI: Target > Track > <This>).
I'm currently trying to do something similar for a plugin but I'm stumped.
If you by chance could help me out in that thread I'd much appreciate it.
https://forum.cockos.com/showpost.ph...89&postcount=8 (for VST3)
https://forum.cockos.com/showpost.ph...6&postcount=11 (for VST2)

(private message also appreciated if you think that's more suitable.)
nofish is offline   Reply With Quote
Old 06-18-2021, 01:24 AM   #1412
baldo
Human being with feelings
 
Join Date: May 2018
Posts: 52
Default plugin mapping does n't work for a few plugins

hi,

I have some strange issues with realearn : Most of the time, mapping of plugins works (I tried with a bunch such as klanghelm DC8C3, SDRR, sonimus SonEQ pro, valhalla room and other) but for some, such as massive of or other native instrument, it doesn't work, and I don't get why.
For Massive for instance :
- feedback works (I have the led of the encoder displaying the current value)
- the parameter value doesn't change.

Note that I am using relative encoders.

Any idea ?
baldo is offline   Reply With Quote
Old 06-18-2021, 07:08 AM   #1413
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,776
Default

Quote:
Originally Posted by helgoboss View Post
At the moment, toggling is not possible with the "MIDI/OSC: Send message" targets because they don't have the notion of a "current value".
I suppose using a small JSFX for creating different Midi messages from a "toggle!" message should be an easy workaround.

-Michael
mschnell is online now   Reply With Quote
Old 06-18-2021, 08:45 AM   #1414
foxAsteria
Human being with feelings
 
foxAsteria's Avatar
 
Join Date: Dec 2009
Location: Oblivion
Posts: 10,271
Default

Quote:
Originally Posted by baldo View Post
Any idea ?
Some plugins have their own automation systems and/or only report a handful of "generic" parameters to the host. You have to assign those generics to parameters in the plugin for Reaper or ReaLearn to automate them.

To test it, move any parameter and then in the fx chain click "param" and you'll see the name of the last touched parameter.
__________________
foxyyymusic
foxAsteria is online now   Reply With Quote
Old 06-18-2021, 09:36 AM   #1415
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,199
Default

Quote:
Originally Posted by nofish View Post
@helgoboss
It's a little OT, sorry, as it's more about ReaLearn coding than usage but I wonder how you manage to get host (= REAPER) context in ReaLearn (i.e. the track ReaLearn currently lives on, in ReaLearn GUI: Target > Track > <This>).
I'm currently trying to do something similar for a plugin but I'm stumped.
If you by chance could help me out in that thread I'd much appreciate it.
https://forum.cockos.com/showpost.ph...89&postcount=8 (for VST3)
https://forum.cockos.com/showpost.ph...6&postcount=11 (for VST2)

(private message also appreciated if you think that's more suitable.)
That's documented right here: https://www.reaper.fm/sdk/vst/vst_ext.php in section at the bottom "Host Context" but you might know that already. I looked at your example in the second post. You seem to be using some framework ... ah, it's JUCE. No idea what JUCE does in addition. But if you have the *raw host callback function pointer*, then it works exactly as documented with the first parameter being the pointer to the audio effect. I do it the same way (in Rust instead of C++ but this doesn't make any difference). mschnell said this doesn't work for VST3. But for VST2 it works for sure.

In older REAPER versions I use a workaround: I give the plug-in a named VST parameter "instance id" with an ever-increasing static number and then I use the REAPER API to iterate over all tracks and FX and see which FX returns the correct parameter value. But this shouldn't be necessary anymore.

Quote:
Originally Posted by baldo View Post
hi,

I have some strange issues with realearn : Most of the time, mapping of plugins works (I tried with a bunch such as klanghelm DC8C3, SDRR, sonimus SonEQ pro, valhalla room and other) but for some, such as massive of or other native instrument, it doesn't work, and I don't get why.
For Massive for instance :
- feedback works (I have the led of the encoder displaying the current value)
- the parameter value doesn't change.

Note that I am using relative encoders.

Any idea ?
I've heard from another user that NI plug-ins do something weird: They report continuous parameters as discrete parameters, with a ridiculously small step size (something like 10000 possible values = something like 0,01%). And then - if you use relative controls and ReaLearn's default "Speed" of 1x - it either appears that the parameter doesn't move or it indeed doesn't move (which would be a bad oversight on their side). You know that's the case if "Speed" is displayed in stead of "Step size". In that case, set "Speed Min" to a very high value using the text field (not possible via slider), e.g. 500.

Quote:
Originally Posted by mschnell View Post
I suppose using a small JSFX for creating different Midi messages from a "toggle!" message should be an easy workaround.

-Michael
Yes, slightly inconvenient but that would do it.
helgoboss is online now   Reply With Quote
Old 06-18-2021, 10:25 AM   #1416
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,776
Default

Quote:
Originally Posted by helgoboss View Post
No idea what JUCE does in addition.... mschnell said this doesn't work for VST3. But for VST2 it works for sure.
I did not yet test with the final release of JUCE, but with the "prerelease" in VST3 and the previous release with VST2, it works perfect. You can simply use the tool provided by Reaper that converts all possible Reaper API calls to normal functions. And after that you can call them directly without using anything provided by JUCE.

-Michael
mschnell is online now   Reply With Quote
Old 06-21-2021, 08:43 AM   #1417
hedge
Human being with feelings
 
Join Date: Sep 2008
Posts: 11
Default

Quote:
Originally Posted by helgoboss View Post
That's exactly what "Conditional activation" feature is about in ReaLearn 1.11-pre2. Check it out. It's explained in the user guide for that version which you can find on the GitHub releases page.

Hint: Map those 8 buttons to one of the (new) ReaLearn parameters so that each one sets the parameter to a different value (absolute mode, by setting target min and max to the same value value), e.g. button 1 to 0%, button 2 to 1% etc. Then for each mapping use "Active: When program selected", set "Bank" to that parameter. For each napping in one group set "Program" to the same value, e.g. 1.
I'm resurrecting this old post as I am getting my way through Realearn, which is really wonderful and powerful. Thankful helgoboss.

I have a Behringer BCF2000. What is the elegant and "proper" way to configure realearn for switching to at least 2 "layers"? Each "layer" would have 8 faders on the BCF2000 mapped to different sets of 8 params in a plugin, such that when I switch "layer" the BCF2000 would load the current values and move the 8 faders to the appropriate place, just like a digital mixer.
hedge is offline   Reply With Quote
Old 06-21-2021, 11:34 AM   #1418
buschag
Human being with feelings
 
Join Date: Sep 2020
Location: STL
Posts: 211
Default Xtouch universal

Does anyone have a basic, or any for that matter, mapping for the 8 channel xtouch? I’m struggling with the settings. I’ve read the user guide several times and I know how to map for selected track, but when it comes to banking faders, I’m not sure where to go.
buschag is offline   Reply With Quote
Old 06-21-2021, 03:27 PM   #1419
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,199
Default

Quote:
Originally Posted by hedge View Post
I'm resurrecting this old post as I am getting my way through Realearn, which is really wonderful and powerful. Thankful helgoboss.

I have a Behringer BCF2000. What is the elegant and "proper" way to configure realearn for switching to at least 2 "layers"? Each "layer" would have 8 faders on the BCF2000 mapped to different sets of 8 params in a plugin, such that when I switch "layer" the BCF2000 would load the current values and move the 8 faders to the appropriate place, just like a digital mixer.
There are 2 proper ways:

A. Everything in one ReaLearn instance

This is the easier way. It makes reuse of single layers more difficult (not sure if you need that in future).

Create 2 mapping groups, one for each layer. Use conditional activation with banks to switch between the layers (tutorial 2).

B. 3 ReaLearn instances

This might be a bit overwhelming at first but once you understand the composability of that approach, it should be actually more simple.

One lead instance, one instance for layer 1 and one instance for layer 2.

The lead instance takes care of switching between the other two instances - that is, making sure that only one of them is ever enabled. This should be very elegant to achieve with 2.10.0-pre.2 because it has the new "Group interaction" feature.

Quote:
Originally Posted by buschag View Post
Does anyone have a basic, or any for that matter, mapping for the 8 channel xtouch? I’m struggling with the settings. I’ve read the user guide several times and I know how to map for selected track, but when it comes to banking faders, I’m not sure where to go.
Just in case you don't know this: The first thing you should do is navigating to the "Controller compartment" and creating a (relatively dumb) controller preset of your X-Touch with all real control elements mapped to named virtual control elements. Take "iCON Platform M+" controller preset as an example. You will see that the virtual control elements are named in standard ways. That's cool because then you can use main presets like "DAW control" for free - even though they were never built for your particular controller.

Now that ReaLearn knows about your controller, head over to the "Main compartment". All the actual target mapping should happen in the main preset. Take "DAW Control" as an example an learn from it. It uses many of ReaLearn's features to recreate the typical DAW control usage scenario, including fader banks.
helgoboss is online now   Reply With Quote
Old 06-21-2021, 05:47 PM   #1420
buschag
Human being with feelings
 
Join Date: Sep 2020
Location: STL
Posts: 211
Default

Yeah I did that. I get that I have to learn source for everything in the preset but when it comes to target I get lost for assigning to a track that will be banked. If that makes sense. I’ll figure it out when the kids allow me the free time I’m sure.
buschag is offline   Reply With Quote
Old 06-22-2021, 08:15 AM   #1421
hedge
Human being with feelings
 
Join Date: Sep 2008
Posts: 11
Default

Quote:
Originally Posted by helgoboss View Post
There are 2 proper ways:

A. Everything in one ReaLearn instance

This is the easier way. It makes reuse of single layers more difficult (not sure if you need that in future).

Create 2 mapping groups, one for each layer. Use conditional activation with banks to switch between the layers (tutorial 2).

B. 3 ReaLearn instances

This might be a bit overwhelming at first but once you understand the composability of that approach, it should be actually more simple.

One lead instance, one instance for layer 1 and one instance for layer 2.

The lead instance takes care of switching between the other two instances - that is, making sure that only one of them is ever enabled. This should be very elegant to achieve with 2.10.0-pre.2 because it has the new "Group interaction" feature.



Just in case you don't know this: The first thing you should do is navigating to the "Controller compartment" and creating a (relatively dumb) controller preset of your X-Touch with all real control elements mapped to named virtual control elements. Take "iCON Platform M+" controller preset as an example. You will see that the virtual control elements are named in standard ways. That's cool because then you can use main presets like "DAW control" for free - even though they were never built for your particular controller.

Now that ReaLearn knows about your controller, head over to the "Main compartment". All the actual target mapping should happen in the main preset. Take "DAW Control" as an example an learn from it. It uses many of ReaLearn's features to recreate the typical DAW control usage scenario, including fader banks.
Thanks a ton helgoboss. I opted for method A and so far so good. Mega props to you for creating such an incredibly useful plugin.
hedge is offline   Reply With Quote
Old 06-22-2021, 10:49 AM   #1422
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,199
Default

Quote:
Originally Posted by buschag View Post
Yeah I did that. I get that I have to learn source for everything in the preset but when it comes to target I get lost for assigning to a track that will be banked. If that makes sense. I’ll figure it out when the kids allow me the free time I’m sure.
Yes, targets are definitely the more difficult part because there are really many different scenarios and your job is to know ReaLearn's pledora of features and combine them in a way to satisfy your scenario. Because you want some more complex "bank" logic, a simple "Learn target" won't cut it. You want banks of tracks, therefore you should use ReaLearn's <Dynamic> track feature. Load the "DAW control" main preset and have a look at the following mappings (they contain the essence of the banking logic in that preset):

- Tr1 Vol
- Track +
- Bank +
helgoboss is online now   Reply With Quote
Old 06-22-2021, 01:49 PM   #1423
buschag
Human being with feelings
 
Join Date: Sep 2020
Location: STL
Posts: 211
Default

Yeah I was messing with that, but after I learn the bank right source, I can’t figure out the target settings. I need a way to just bank 8 tracks at a time because my mix template is set up a certain way.
buschag is offline   Reply With Quote
Old 06-22-2021, 02:33 PM   #1424
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,199
Default

Quote:
Originally Posted by buschag View Post
Yeah I was messing with that, but after I learn the bank right source, I can’t figure out the target settings. I need a way to just bank 8 tracks at a time because my mix template is set up a certain way.
I don't quite understand. If you check the mentioned mappings in the "DAW control" preset, you can see exactly what target settings are used. The "Bank +" button for example changes a main compartment parameter, thereby changing what set of tracks e.g. the 8 faders control.
helgoboss is online now   Reply With Quote
Old 06-23-2021, 05:03 PM   #1425
nofish
Human being with feelings
 
nofish's Avatar
 
Join Date: Oct 2007
Location: home is where the heart is
Posts: 12,108
Default

Quote:
Originally Posted by helgoboss View Post
That's documented right here: (...)
Just as a follow up (if you're interested), it's solved now with the help of a JUCE dev.
Your confirmation that it does work properly was also very helpful, thanks.
nofish is offline   Reply With Quote
Old 06-24-2021, 09:39 AM   #1426
hedge
Human being with feelings
 
Join Date: Sep 2008
Posts: 11
Default

Thanks for all the help so far. Realearn has been great so far but I still have a question. Is there a way to easily program one MIDI source to change multiple targets at once? By "easily", I mean not having to create, say, 32 different targets from one source for trying to control 32 things with one hardware button.
hedge is offline   Reply With Quote
Old 06-24-2021, 12:09 PM   #1427
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,199
Default

Quote:
Originally Posted by nofish View Post
Just as a follow up (if you're interested), it's solved now with the help of a JUCE dev.
Your confirmation that it does work properly was also very helpful, thanks.
Good to know, thank you!

Quote:
Originally Posted by hedge View Post
Thanks for all the help so far. Realearn has been great so far but I still have a question. Is there a way to easily program one MIDI source to change multiple targets at once? By "easily", I mean not having to create, say, 32 different targets from one source for trying to control 32 things with one hardware button.
1. If you want to control the same target but for multiple tracks, you have 2 possibilities:

a) Use track "All selected"

b) Use track "All by name" with wildcards, e.g. "Violin *" (possible since v2.10.0-pre.1)

With both options you need just one mapping.


2. If you want to control arbitrary targets with just one source (possible since v2.10.0-pre.2):

- Create a new mapping group.
- Create a "lead" mapping for which you define the desired source and set "Group interaction" to "Same control" or "Same target value". As target you can learn a dummy parameter or something that you really want to control.
- Then create a bunch of "follow" mappings for which you set the Source Category to "None" and the target to whatever you want.
helgoboss is online now   Reply With Quote
Old 06-26-2021, 06:00 AM   #1428
snowball
Human being with feelings
 
Join Date: Dec 2019
Location: Dnipro, Ukraine
Posts: 13
Default

Thank you Helgoboss for your incredible work. Realearn has really grown up.

I've now spent many hours setting up my controller.
I have a little problem, I don't see any changes on my tablet in real time when I turn a knob. The correct status is only displayed when I change a bank. But nothing moves after that, when I turn a knob.
Do you have an idea?
snowball is offline   Reply With Quote
Old 07-03-2021, 08:38 PM   #1429
paat
Human being with feelings
 
Join Date: Oct 2016
Posts: 225
Default

I would like to use my MIDI Fighter Twister to arm different tracks for recording, in groups. The idea is that I have a folder for a certain instrument type (Bass, Keys, Pad, etc) and then I can move the MFT knob to select and arm a different track in that group. So knob 1 = bass, knob 2 = keys, knob 3 = pads. This way by moving the knobs I can come up with different combinations of sounds very quickly.

Is something like that possible? I don't know of a way to "go to previous/next track in folder."
paat is offline   Reply With Quote
Old 07-04-2021, 02:56 AM   #1430
paat
Human being with feelings
 
Join Date: Oct 2016
Posts: 225
Default

Quote:
Originally Posted by paat View Post
I would like to use my MIDI Fighter Twister to arm different tracks for recording, in groups. The idea is that I have a folder for a certain instrument type (Bass, Keys, Pad, etc) and then I can move the MFT knob to select and arm a different track in that group. So knob 1 = bass, knob 2 = keys, knob 3 = pads. This way by moving the knobs I can come up with different combinations of sounds very quickly.

Is something like that possible? I don't know of a way to "go to previous/next track in folder."
Okay I got it! I wrote two scripts to provide the functionality I need [1]. It took a while to figure out how to tie them in to ReaLearn but I got something working and it should scale pretty well.

Each knob needs four mappings:

1. An "index" mapping, which sets the value of "P1 - Folder Index" to a specific value. K1 = 1%, K2 = 2%, only if the parameter doesn't have that current value.
2. A "select" mapping which selects the folder track, but only if the "P1 - Folder Index" is not that knob's specific value.
3. Increment mapping to call the "next sibling" script, if the "P1 - Folder Index" is that knob's value.
4. Decrement mapping to call the "previous sibling" script.

Here's my config.

I am really pleased with this. It's helping me build a setup that I've wanted to do with Reaper for a long time - use it as a giant rompler. I like the principles of hardware romplers quite a bit - multiple tracks, easy sound selection within categories. But they're a PITA to program, not very ergonomic, expensive, and miss out on all the cool ITB sounds. So with this setup I can create a folder for each type of sound, add as many tracks in there as I want with the different plugins, and scroll through them with the MFT.

Thank you helgoboss!

[1] Cycle Siblings and Remember Child.

Last edited by paat; 07-04-2021 at 05:32 AM.
paat is offline   Reply With Quote
Old 07-04-2021, 03:28 AM   #1431
TonE
Human being with feelings
 
Join Date: Feb 2009
Location: Reaper HAS send control via midi !!!
Posts: 4,032
Default

Quote:
Originally Posted by snowball View Post
Thank you Helgoboss for your incredible work. Realearn has really grown up.
For wine 32 bit use case it shrunk, because there it is not working at all. But no problem, I am in the process of switching to full linux version. This has mainly following advantages:
- better timing (important for real-time monitoring your instruments, having fun mainly using Super8 like Justin is doing in all his videos, put some loop, play your instruments)
- no need for wineasio problems
- ReaLearn 2 might work there, hopefully

Sometimes it is good certain things not working, then you make your full change, leaving the problematic space.
TonE is offline   Reply With Quote
Old 07-11-2021, 02:39 AM   #1432
snowball
Human being with feelings
 
Join Date: Dec 2019
Location: Dnipro, Ukraine
Posts: 13
Default

I found a strange behaviour. My goal is to open a fx (selected track, fx by name). Works great. I use all my mapping for the particular group with "fx must have focus".

When I open the fx as a floating window, the floating window appears and it has the focus, but my mappings are not active. After using the mouse and change a parameter on the screen, the mapping becomes active.

When I open in "fx chain" mode. It works correctly.

Last edited by snowball; 07-11-2021 at 07:52 AM.
snowball is offline   Reply With Quote
Old 07-13-2021, 05:45 AM   #1433
BengtS
Human being with feelings
 
Join Date: Feb 2012
Location: Berlin
Posts: 40
Default

Hi Helgoboss,

just started using Realearn and it is amazing! I use a nanoKontrol studio as control surface, and it works great.

I have the ReaLearn on the Montitor FX. Thus, it is available on all projects.

One thing I am trying to do, which I have not found a solution for is the following:

When I load a new project, the position of the faders (which are not motorized) do not update the Target. In my case it is the volume of a channel. I have to move them slightly to set that value.

I use one channel to output to my headphones and another one to output to my main speakers and a third one for my low fi monitors. I want those volume values to remain when loading a new project. Otherwise, I suddenly hear sound coming out the wrong speaker when starting playback.

Is there a way to set the Target to the current value of the fader on the control surface when a new project is loaded?

TIA!

Best regards,
Bengt
BengtS is offline   Reply With Quote
Old 07-13-2021, 05:55 AM   #1434
nofish
Human being with feelings
 
nofish's Avatar
 
Join Date: Oct 2007
Location: home is where the heart is
Posts: 12,108
Default

Quote:
Originally Posted by BengtS View Post
Is there a way to set the Target to the current value of the fader on the control surface when a new project is loaded?
Sometimes it's possible from the control surface side, something like "send all current fader values to MIDI out".
But I guess you've checked already if that's possible with the nanoKontrol (I don't know it)?
nofish is offline   Reply With Quote
Old 07-13-2021, 07:35 AM   #1435
mozart999uk
Human being with feelings
 
Join Date: Nov 2010
Posts: 1,742
Default

Can anyone help with this?

I used to use realearn to map the metronome volume to a knob on my MFT.

I've attached the mapping

It's been working fine for ages. However, having updated to 6.32, it no longer works. I have no idea why.

I haven't changed anything that I can remember (other than updated to 6.32 from 6.30.


Any ideas?
Attached Images
File Type: png Reapack metronome.png (9.2 KB, 139 views)
mozart999uk is offline   Reply With Quote
Old 07-13-2021, 03:49 PM   #1436
foxAsteria
Human being with feelings
 
foxAsteria's Avatar
 
Join Date: Dec 2009
Location: Oblivion
Posts: 10,271
Default

Quote:
Originally Posted by mozart999uk View Post
Can anyone help with this?

I used to use realearn to map the metronome volume to a knob on my MFT.
Still working fine here, but I don't bother going thru ReaLearn for that; just map directly in Actions List. Maybe try it.
__________________
foxyyymusic
foxAsteria is online now   Reply With Quote
Old 07-14-2021, 01:27 AM   #1437
mozart999uk
Human being with feelings
 
Join Date: Nov 2010
Posts: 1,742
Default

Quote:
Originally Posted by foxAsteria View Post
Still working fine here, but I don't bother going thru ReaLearn for that; just map directly in Actions List. Maybe try it.
Thanks :-)

Just tried that and nothing happening at all.

I ran the script and wiggled a knob on the mft.

Is there a gui when you run the script? Just seems to do nothing :-(
mozart999uk is offline   Reply With Quote
Old 07-14-2021, 05:54 AM   #1438
BengtS
Human being with feelings
 
Join Date: Feb 2012
Location: Berlin
Posts: 40
Default

Quote:
Originally Posted by nofish View Post
Sometimes it's possible from the control surface side, something like "send all current fader values to MIDI out".
But I guess you've checked already if that's possible with the nanoKontrol (I don't know it)?
I think I could trigger that with a button, somewhere. I will try.

Still, that would be a hack. It would be better if the trigger came from Reaper itself, after it had loaded the new project.
BengtS is offline   Reply With Quote
Old 07-15-2021, 06:46 AM   #1439
foxAsteria
Human being with feelings
 
foxAsteria's Avatar
 
Join Date: Dec 2009
Location: Oblivion
Posts: 10,271
Default

Quote:
Originally Posted by BengtS View Post
Still, that would be a hack. It would be better if the trigger came from Reaper itself, after it had loaded the new project.
Not a hack, it's the reason such features exist. Reaper can't know what values your controls are at unless that data is sent somehow.

You'd be much better off spending $50 on a small hardware mixer for mixing volume levels you want to remain consistent.
__________________
foxyyymusic
foxAsteria is online now   Reply With Quote
Old 07-15-2021, 06:49 AM   #1440
foxAsteria
Human being with feelings
 
foxAsteria's Avatar
 
Join Date: Dec 2009
Location: Oblivion
Posts: 10,271
Default

Quote:
Originally Posted by mozart999uk View Post
Thanks :-)

Just tried that and nothing happening at all.

I ran the script and wiggled a knob on the mft.

Is there a gui when you run the script? Just seems to do nothing :-(
What script? I thought you just wanted to control the metronome volume action? Search the Actions List and assign the action there to your knob. That's what I suggested.
__________________
foxyyymusic
foxAsteria is online now   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 11:08 AM.


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