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

Reply
 
Thread Tools Display Modes
Old 11-14-2022, 09:18 AM   #2881
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,126
Default

Quote:
Originally Posted by Jkeeton72 View Post
Hey Benjamin I'm absolutely loving the software. I've been using it with a Nanokontrol2. I want to upgrade to a midi twister fighter to have the endless encoders. My question for you is can the side buttons on the midi twister be used with realearn? I mean can they be assigned as MIDI so you can use them instead of using the encoder knobs to switch pages? Not a deal breaker if not but I'm just curious and trying to think how I would map things out of my head. This would be nice for not only faders and pan in Reaper but also for sends and channel strip plugins etc. I don't do much keyboard instruments as I play drums and guitar. But this seems like a great controller to do all the other things that I need. Please let me know if you have time and thank you so much for this amazing software.
Absolutely, you can totally customize the side buttons. See https://github.com/helgoboss/realear...ighter-twister.
helgoboss is offline   Reply With Quote
Old 11-14-2022, 09:21 AM   #2882
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,126
Default

Quote:
Originally Posted by binbinhfr View Post
Hi Helgoboss !

about the transmission of parameters to a script, as you suggested, I tested the new reaper pre release :

- Realearn now transmits parameters to the script, but it seems that there was an inversion in the 14/7bits protocol :
- the Launchcontrol is supposed to be mode 0(absolute) and 7 bits from 0 to 127 (and the classic Reaper mapping confirms and returns values 0-127).
- but when I set Realearn to 14bits, the script returns 0-127 with a resolution of 127,
- and when I set Realearn to 7bits, the script returns 0-16383 with a resolution of 16383,
- maybe the high and low bytes where inversed ?


Another test in relative mode with the xtouch mini.
- Reaper's classic mapping return mode 0 resolution 127, with values 125-127 and 0-3 (so not detecting real relative mode)
- Realearn (set in relative mode) now sends mode 2 resolution 127 and value -3 +3, so it's great.



For memory, here is the simple test script :
Code:
reaper.ShowConsoleMsg("----\n")

local is_new_value , filename_with_path, sectionID, cmdID, mode, resolution, val = reaper.get_action_context()

reaper.ShowConsoleMsg( "mode: " .. mode .. " res: " .. resolution .. " val = " .. val .. "\n")
Damn it. I got that one wrong :/ Yes, it's the opposite. I'll fix that and migrate existing presets as soon as they are loaded into ReaLearn (on-the-fly).
helgoboss is offline   Reply With Quote
Old 11-14-2022, 03:38 PM   #2883
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,501
Default

Quote:
Originally Posted by mschnell View Post
@Ben:
In the prerelease forum I learned that the action context now is supposed to provide OSC parameter values.
Could that be used by ReaLearn to also decently fetch OSC messages via Reaper (while I do know that it allows for it's own direct OSC channel) ?
Any comments ?

Thanks,

-Michael
mschnell is offline   Reply With Quote
Old 11-14-2022, 11:33 PM   #2884
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,126
Default

Quote:
Originally Posted by mschnell View Post
Any comments ?

Thanks,

-Michael
I need to check. It would be interesting for sure. Would only work if REAPER makes the complete OSC message available for get _action_context, which I'm not sure about.

Mmh, but wait, since you always have to assign a specific OSC address to the action, it could never be a general "route REAPER OSC to ReaLearn" mechanism.
helgoboss is offline   Reply With Quote
Old 11-15-2022, 02:37 AM   #2885
Puck
Human being with feelings
 
Puck's Avatar
 
Join Date: Feb 2022
Location: Almost Canada
Posts: 505
Default

Another general question about FX before I get started there:

Firstly, I now understand the Auto-load functionality and working with focused fx, thanks for the explanation.

But is there a way I could populate an FXMenu (this is just what CSI calls it) where say 8 of a particular channel's FX laid across 8 buttons and then push a particular button to load the FX myself?

I do believe this is possible now with;

1. The FX Target with Textual Feedback
2. Instance FX mapping

But I don't quite get the workflow with Instance FX mapping. Would I still make one separate preset per FX and just not use the Auto load?
Puck is offline   Reply With Quote
Old 11-15-2022, 05:14 AM   #2886
Bassman002
Human being with feelings
 
Join Date: Aug 2022
Location: Göppingen, Deutschland
Posts: 328
Default

Quote:
Originally Posted by helgoboss View Post
Released ReaLearn 2.14.0-pre.10 (ReaPack installation instructions)

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

Greetz
Bassman.
Bassman002 is offline   Reply With Quote
Old 11-15-2022, 09:45 AM   #2887
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,126
Default

Quote:
Originally Posted by Puck View Post
Another general question about FX before I get started there:

Firstly, I now understand the Auto-load functionality and working with focused fx, thanks for the explanation.

But is there a way I could populate an FXMenu (this is just what CSI calls it) where say 8 of a particular channel's FX laid across 8 buttons and then push a particular button to load the FX myself?

I do believe this is possible now with;

1. The FX Target with Textual Feedback
2. Instance FX mapping

But I don't quite get the workflow with Instance FX mapping. Would I still make one separate preset per FX and just not use the Auto load?
Yes, that's possible and it's also best done with auto-load.

Map each button to a target "FX" with track "Selected", FX "At position" (1 - 8, depending on button) and Act "Pin (as instance FX)". Then, whenever you press the corresponding button, the FX at that position is pinned as instance FX and auto-load will do its job to load the preset for that FX.

This will not cause the FX to appear on screen, it will all work in the background. You will see the "Instance FX" change in the status bar of the main panel.

If you want the FX to appear on screen, I just wanted to suggest to use "FX: Open/close" with Display "Floating window" ... that works but I just realized that it doesn't take care of putting the FX into focus if it already is open. I guess I should add that. An alternative would be to make sure that only one FX is open. Unlike track targets, on/off-style FX targets don't have an "Exclusive" setting to make sure that only one FX is e.g. open (I guess I should add that too). However, you could use 2 mappings mapped to the same button, one that closes all FX on all tracks (Named "*") and one that opens the desired FX. That should work.
helgoboss is offline   Reply With Quote
Old 11-15-2022, 09:55 AM   #2888
Nick Morris
Human being with feelings
 
Nick Morris's Avatar
 
Join Date: Nov 2010
Posts: 655
Default

Quote:
Originally Posted by helgoboss View Post
Yes, that's possible and it's also best done with auto-load.

Map each button to a target "FX" with track "Selected", FX "At position" (1 - 8, depending on button) and Act "Pin (as instance FX)". Then, whenever you press the corresponding button, the FX at that position is pinned as instance FX and auto-load will do its job to load the preset for that FX.

This will not cause the FX to appear on screen, it will all work in the background. You will see the "Instance FX" change in the status bar of the main panel.

If you want the FX to appear on screen, I just wanted to suggest to use "FX: Open/close" with Display "Floating window" ... that works but I just realized that it doesn't take care of putting the FX into focus if it already is open. I guess I should add that. An alternative would be to make sure that only one FX is open. Unlike track targets, on/off-style FX targets don't have an "Exclusive" setting to make sure that only one FX is e.g. open (I guess I should add that too). However, you could use 2 mappings mapped to the same button, one that closes all FX on all tracks (Named "*") and one that opens the desired FX. That should work.
Very impressive.
__________________
www.ElaireStudios.com
Robo-Mic RMS robotic remote controlled mic stands aimed at mic'ing amps
Nick Morris is offline   Reply With Quote
Old 11-15-2022, 03:56 PM   #2889
Sound asleep
Human being with feelings
 
Sound asleep's Avatar
 
Join Date: Nov 2009
Location: Montreal, Canada
Posts: 8,937
Default

Is it possible to do the following?

Have drum pads assigned to midi CC, have realearn assign the drum pad to a midi note, using the source target feature?


I have drum pads on a controller, which are very cool, and sometimes I wish I could just record in a groove, but assigning a note to a pad is like pulling teeth. If I could just hit the pad, and click on the midi note in piano roll that I want to record, that would be heaven.
__________________
Slava Ukraini
Sound asleep is online now   Reply With Quote
Old 11-15-2022, 06:51 PM   #2890
7enz
Human being with feelings
 
Join Date: Sep 2022
Posts: 367
Default

Quote:
Originally Posted by Sound asleep View Post
Is it possible to do the following?

Have drum pads assigned to midi CC, have realearn assign the drum pad to a midi note, using the source target feature?


I have drum pads on a controller, which are very cool, and sometimes I wish I could just record in a groove, but assigning a note to a pad is like pulling teeth. If I could just hit the pad, and click on the midi note in piano roll that I want to record, that would be heaven.
its a interesting question you pose.. essentially asking...
can you convert a CC button... and make it recogniseable to a program/script as a midi note.
im unsure about whether Realearn has this??

but i know there are some JS plugins that can process a midiCC and spit out a midi note, but i take it you want to avoid that process altogether
7enz is offline   Reply With Quote
Old 11-15-2022, 07:22 PM   #2891
Jkeeton72
Human being with feelings
 
Join Date: Aug 2018
Posts: 9
Default 2 controllers as one in Realearn (Companion)

Hey guys. I'm curious if I were to get two Behringer X touch Minis could I make a controller preset combining the two? The only reason I'm asking is for the sake of using the companion app. I know with projection or at least I think you can only have one controller preset projected at a time. My thoughts we're getting a couple cheap X touch Minis and using them in combination to build a mapping on the screen of companion showing both at the same time for my plugins in reaper. My other option would be this question, use only one controller and map layer a and layer B together in a controller preset mapping to basically look like one controller. But I would much rather have two controllers and double the encoders. Please help if you have any idea if this could be done? It seems like the layer A and B would work but two separate controllers I don't see a way that relearn would see them as one because you have to choose the controllers in the drop-downs. Thanks for any help much appreciated
Jkeeton72 is offline   Reply With Quote
Old 11-15-2022, 09:37 PM   #2892
7enz
Human being with feelings
 
Join Date: Sep 2022
Posts: 367
Default

@Jkeaton22
if you are wanting them to work independantly, then the Midi channels or CC or notes would all have to be different,
what i cannot tell you is whether the drivers will be regonised as independant devices. someone else will have to chime in on this, who has used 2...

I use 2 Maschine Jams, and in the controller editor software i need to assign the controllers to 1,2,3 or 4... this is what you need to find out(try downloading the controller software and see if there is anything that would indicate what i have mentioned)
also check if your OS is supported
7enz is offline   Reply With Quote
Old 11-15-2022, 09:47 PM   #2893
7enz
Human being with feelings
 
Join Date: Sep 2022
Posts: 367
Default

would someone who has access to a BCR2000 or BCF2000
try these sys-ex messages out, and tell me if they actively change the preset banks
i cannot figure out how to send these, or if they even work :-s

bcr2000 & bcf2000
F0 00 20 32 00 21 22 00 F7 Preset 1 BCR2000
F0 00 20 32 00 21 22 01 F7 Preset 2 BCR2000

F0 00 20 32 00 20 22 00 F7 Preset 1 BCF2000
F0 00 20 32 00 20 22 01 F7 Preset 2 BCF2000

EDIT: dont bother with this!! see follow up post

Last edited by 7enz; 11-16-2022 at 06:29 AM.
7enz is offline   Reply With Quote
Old 11-15-2022, 11:50 PM   #2894
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,126
Default

Quote:
Originally Posted by Sound asleep View Post
Is it possible to do the following?

Have drum pads assigned to midi CC, have realearn assign the drum pad to a midi note, using the source target feature?


I have drum pads on a controller, which are very cool, and sometimes I wish I could just record in a groove, but assigning a note to a pad is like pulling teeth. If I could just hit the pad, and click on the midi note in piano roll that I want to record, that would be heaven.
It is possible but at the moment you could only learn the source (the CC, in your case), not the target (the note, in your case).

For this to work, you need to put the ReaLearn instance above the instrument that you want to control and choose input "FX input".

I think the source part is obvious. On the target side you need "MIDI: Send message" with destination "FX output" and pick the desired note, manually (learn doesn't work there).


It would be nice if one could learn the "MIDI: Send message" target as well. Then your piano roll click would actually work. But I'm a bit hesitating to add it because it might be confusing in general to let an incoming MIDI message be a candidate for target learning.

This makes ReaLearn essentially become a MIDI-to-MIDI converter. Almost a bit overkill to use ReaLearn for such a simple task but I know it's tempting because of the learn function, especially if you use ReaLearn anyway. An alternative would be to write a JSFX that does that. Actually would be a bit surprised if it wouldn't exist yet!
helgoboss is offline   Reply With Quote
Old 11-16-2022, 12:05 AM   #2895
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,126
Default

Quote:
Originally Posted by Jkeeton72 View Post
Hey guys. I'm curious if I were to get two Behringer X touch Minis could I make a controller preset combining the two? The only reason I'm asking is for the sake of using the companion app. I know with projection or at least I think you can only have one controller preset projected at a time. My thoughts we're getting a couple cheap X touch Minis and using them in combination to build a mapping on the screen of companion showing both at the same time for my plugins in reaper. My other option would be this question, use only one controller and map layer a and layer B together in a controller preset mapping to basically look like one controller. But I would much rather have two controllers and double the encoders. Please help if you have any idea if this could be done? It seems like the layer A and B would work but two separate controllers I don't see a way that relearn would see them as one because you have to choose the controllers in the drop-downs. Thanks for any help much appreciated
Mmh, one option would be to use different MIDI channels. For this, you need to use input "FX input" and output "FX output" in ReaLearn and take care of routing the messages to/from ReaLearn via REAPER sends. You would need to map the messages coming from device 2 to MIDI channel 2 before they reach ReaLearn. And map the feedback messages back to MIDI channel one before they reach device 2. This assumes that these controllers work with channel one only by default, which I'm not 100% sure about at the moment.

Personally, I wouldn't bother doing this just to get a combined projection. How important is it that the projection is combined? Why not take 2 tablets/phones and put them beside each other, each showing one controller? I can imagine that there's also not enough screen space on one tablet/phone to present 2 XTouch Minis nicely?
helgoboss is offline   Reply With Quote
Old 11-16-2022, 03:27 AM   #2896
Bassman002
Human being with feelings
 
Join Date: Aug 2022
Location: Göppingen, Deutschland
Posts: 328
Default

Quote:
Originally Posted by 7enz View Post
would someone who has access to a BCR2000 or BCF2000
try these sys-ex messages out, and tell me if they actively change the preset banks
i cannot figure out how to send these, or if they even work :-s

bcr2000 & bcf2000
F0 00 20 32 00 21 22 00 F7 Preset 1 BCR2000
F0 00 20 32 00 21 22 01 F7 Preset 2 BCR2000

F0 00 20 32 00 20 22 00 F7 Preset 1 BCF2000
F0 00 20 32 00 20 22 01 F7 Preset 2 BCF2000
Hi

Trying out tomorrow. I have 2 BCR2000, but they are not used anymore, have to look where I put them....
I'M thinking of using them again cause of the endless Rotors!

Greetz
Bassman.
Bassman002 is offline   Reply With Quote
Old 11-16-2022, 05:49 AM   #2897
7enz
Human being with feelings
 
Join Date: Sep 2022
Posts: 367
Default

regarding BCR2000
i found this on the ableton live website,
It changes the BCR2000 preset to 32
if you use this
F0 00 20 32 7F 7F 20 00 00 24 72 65 76 20 52 31 F7 F0 00 20 32 7F 7F 20 00 01 F7 F0 00 20 32 7F 7F 20 00 02 24 72 65 63 61 6C 6C 20 (33) (32) F7 F0 00 20 32 7F 7F 20 00 03 F7 F0 00 20 32 7F 7F 20 00 04 24 65 6E 64 F7

remove the brackets surrounding the 33 & 32, that will change the BCR2000 to preset 32
This works using Bomes midi translator pro, by simply assigning an input midi button, and the pasting the sysex into the Outgoing-midimessage-Raw midi/systemexclusive
Also by changing the (32) to 31 will change the preset to 31
(at least thats what im seeing!)
i wouldnt have the faintest idea how to work it with Realearn

Edit: okay so how the preset numbering works is (33) (32) the last 2 numbers on both 33 & 32 equates to preset 32, (31) (39) = preset 19, (30) (31) = preset 1

Last edited by 7enz; 11-16-2022 at 06:44 AM.
7enz is offline   Reply With Quote
Old 11-16-2022, 06:43 AM   #2898
7enz
Human being with feelings
 
Join Date: Sep 2022
Posts: 367
Default

you can paste the whole sysex message into the pattern input area of
Realearn(source) midi - raw-sysex - pattern
so very handy!
Attached Files
File Type: txt BCR2000sysex.txt (6.7 KB, 46 views)

Last edited by 7enz; 11-16-2022 at 07:07 AM.
7enz is offline   Reply With Quote
Old 11-16-2022, 07:20 AM   #2899
Bassman002
Human being with feelings
 
Join Date: Aug 2022
Location: Göppingen, Deutschland
Posts: 328
Default

Quote:
Originally Posted by 7enz View Post
regarding BCR2000
i found this on the ableton live website,
It changes the BCR2000 preset to 32
if you use this
F0 00 20 32 7F 7F 20 00 00 24 72 65 76 20 52 31 F7 F0 00 20 32 7F 7F 20 00 01 F7 F0 00 20 32 7F 7F 20 00 02 24 72 65 63 61 6C 6C 20 (33) (32) F7 F0 00 20 32 7F 7F 20 00 03 F7 F0 00 20 32 7F 7F 20 00 04 24 65 6E 64 F7

remove the brackets surrounding the 33 & 32, that will change the BCR2000 to preset 32
This works using Bomes midi translator pro, by simply assigning an input midi button, and the pasting the sysex into the Outgoing-midimessage-Raw midi/systemexclusive
Also by changing the (32) to 31 will change the preset to 31
(at least thats what im seeing!)
i wouldnt have the faintest idea how to work it with Realearn

Edit: okay so how the preset numbering works is (33) (32) the last 2 numbers on both 33 & 32 equates to preset 32, (31) (39) = preset 19, (30) (31) = preset 1
HI

Tested with: (BCR2000 (15))

F0 00 20 32 00 15 22 01 F7

Selects Preset 2

Changing to:
F0 00 20 32 00 15 22 05 F7

Selects Preset 6

It works

Greetz
Bassman.
Bassman002 is offline   Reply With Quote
Old 11-16-2022, 07:28 AM   #2900
RamboMadCow
Human being with feelings
 
Join Date: Nov 2022
Posts: 14
Default

Has there possibly been a bug that was introduced or maybe this was never implemented? When I step the through process to record my midi input, ReaLearn doesn't actually record specific Program Change numbers.

I'm using a VoodooLabs Ground Control Pro, and it only sends PC numbers unless you have an expression pedal attached. For my purposes, I only need my foot switches for it to navigate songs and play/stop. I have currently assigned from PC0 up to PC60 but ReaLearn doesn't recognize any of the actual numbers and only records a generic Program Change.

In fact, I don't even see any option/dialog box that allows me to specify which numerical PC number I want. When I map specific Reaper functions, such as "Next project tab", Reaper correctly sees all 61 Program Change numbers, so I know it has the capability, but ReaLearn seems to not recognize the discreet PC numbers.

Has anyone else experienced this and know of a work around?
RamboMadCow is offline   Reply With Quote
Old 11-16-2022, 07:44 AM   #2901
7enz
Human being with feelings
 
Join Date: Sep 2022
Posts: 367
Default

@RamboMadCow

i have one of those foot pedal controller, the way i used it is directly with the Reaper Actions list... everything worked when last using it

edit: just looked program changes are still in the source menu...just not the numbering only the channel number

Last edited by 7enz; 11-16-2022 at 07:51 AM.
7enz is offline   Reply With Quote
Old 11-16-2022, 08:52 AM   #2902
RamboMadCow
Human being with feelings
 
Join Date: Nov 2022
Posts: 14
Default

Quote:
Originally Posted by 7enz View Post
@RamboMadCow

i have one of those foot pedal controller, the way i used it is directly with the Reaper Actions list... everything worked when last using it

edit: just looked program changes are still in the source menu...just not the numbering only the channel number
It works perfectly when controlling Reaper directly, but when I was using ReaLearn to assign specific actions to each switch, it treated every switch identically.

Firstly, let me explain the use case: I'm actually trying to use the Song Switcher extension to assign a specific MIDI code to a specific song in the Song Switcher play list. I wanted to have dynamic control over the order of songs during a gig in the rare chance my group decides to call an audible and wants to changes songs completely or the order of songs.

When I try and use the Add function, it wouldn't display the PC number (which it seems you confirm), but that led to every single button I "learned" and then pressed would fire the event.

Example: I assign button 1 to change to Song1. I assign button 2 to Song2. When looking at the "Mapping" section where you have a list of all the current mappings, Pressing button 1 lit up both action 1 and action 2. Pressing button 2 did the same thing as well. Both mappings were assigned a different task but it seems like Reaper got confused as to which to execute.

I don't specifically need ReaLearn to map this stuff if I can figure out how to map songs to specific MIDI input. I have posted this exact question over on that extension for help as well, but I was hoping that ReaLearn could've been an easier fix for me but doesn't seem to do what I expected.
RamboMadCow is offline   Reply With Quote
Old 11-16-2022, 09:33 AM   #2903
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,126
Default

Quote:
Originally Posted by RamboMadCow View Post
It works perfectly when controlling Reaper directly, but when I was using ReaLearn to assign specific actions to each switch, it treated every switch identically.

Firstly, let me explain the use case: I'm actually trying to use the Song Switcher extension to assign a specific MIDI code to a specific song in the Song Switcher play list. I wanted to have dynamic control over the order of songs during a gig in the rare chance my group decides to call an audible and wants to changes songs completely or the order of songs.

When I try and use the Add function, it wouldn't display the PC number (which it seems you confirm), but that led to every single button I "learned" and then pressed would fire the event.

Example: I assign button 1 to change to Song1. I assign button 2 to Song2. When looking at the "Mapping" section where you have a list of all the current mappings, Pressing button 1 lit up both action 1 and action 2. Pressing button 2 did the same thing as well. Both mappings were assigned a different task but it seems like Reaper got confused as to which to execute.

I don't specifically need ReaLearn to map this stuff if I can figure out how to map songs to specific MIDI input. I have posted this exact question over on that extension for help as well, but I was hoping that ReaLearn could've been an easier fix for me but doesn't seem to do what I expected.
You need to use "Source Min/Max" and set both to the program change value that you are interested in. And set "Out-of-range" to "Ignore".

This question came far too often, I think I will add a dedicated "Specific program change" MIDI source, soon https://github.com/helgoboss/realearn/issues/763
helgoboss is offline   Reply With Quote
Old 11-16-2022, 09:59 AM   #2904
RamboMadCow
Human being with feelings
 
Join Date: Nov 2022
Posts: 14
Default

Quote:
Originally Posted by helgoboss View Post
You need to use "Source Min/Max" and set both to the program change value that you are interested in. And set "Out-of-range" to "Ignore".

This question came far too often, I think I will add a dedicated "Specific program change" MIDI source, soon https://github.com/helgoboss/realearn/issues/763
Ahh, if I understand what you're saying, I would set the first mapping (which is PC0) Source Min/Max both to 0. Then set the 2nd mapping (which is PC1) Source Min/Max both to 1? And then continue on up to my current PC60?
RamboMadCow is offline   Reply With Quote
Old 11-16-2022, 10:14 AM   #2905
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,126
Default

Quote:
Originally Posted by RamboMadCow View Post
Ahh, if I understand what you're saying, I would set the first mapping (which is PC0) Source Min/Max both to 0. Then set the 2nd mapping (which is PC1) Source Min/Max both to 1? And then continue on up to my current PC60?
Yes. And don't forget to set "Out-of-range" to "Ignore".

Implementing the new program change source as we speak, should be in next pre-release. This new one will also have the benefit that you see the relevant program change number in the mapping row source label.
helgoboss is offline   Reply With Quote
Old 11-16-2022, 10:50 AM   #2906
RamboMadCow
Human being with feelings
 
Join Date: Nov 2022
Posts: 14
Default

Quote:
Originally Posted by helgoboss View Post
Yes. And don't forget to set "Out-of-range" to "Ignore".

Implementing the new program change source as we speak, should be in next pre-release. This new one will also have the benefit that you see the relevant program change number in the mapping row source label.
That's awesome! Thanks so much!
RamboMadCow is offline   Reply With Quote
Old 11-16-2022, 10:57 AM   #2907
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,126
Default

Good news, I finally managed to create another tutorial video. It covers most elements of the mapping panel, especially those of the "Glue" section. I highly recommend to watch this if you want to get the most out of ReaLearn!

helgoboss is offline   Reply With Quote
Old 11-16-2022, 11:32 AM   #2908
Sound asleep
Human being with feelings
 
Sound asleep's Avatar
 
Join Date: Nov 2009
Location: Montreal, Canada
Posts: 8,937
Default

Quote:
Originally Posted by helgoboss View Post
It is possible but at the moment you could only learn the source (the CC, in your case), not the target (the note, in your case).

For this to work, you need to put the ReaLearn instance above the instrument that you want to control and choose input "FX input".

I think the source part is obvious. On the target side you need "MIDI: Send message" with destination "FX output" and pick the desired note, manually (learn doesn't work there).


It would be nice if one could learn the "MIDI: Send message" target as well. Then your piano roll click would actually work. But I'm a bit hesitating to add it because it might be confusing in general to let an incoming MIDI message be a candidate for target learning.

This makes ReaLearn essentially become a MIDI-to-MIDI converter. Almost a bit overkill to use ReaLearn for such a simple task but I know it's tempting because of the learn function, especially if you use ReaLearn anyway. An alternative would be to write a JSFX that does that. Actually would be a bit surprised if it wouldn't exist yet!
Okm thanks for the reply! I'll look for a JFX that does that. Using relearn would definitely be a really nice plus though. I wouldn't need an extra plugin, and I can use the same learn function mapped to the same button on my controller. Would it make things easier if you had a checkmark that could include midi notes, which would be disabled by default? I just had a side thought related to this, because I was thinking, I could have a relearn instance that I make just for those pads, and if there was that option, I'd activate it only for that, and I'd leave relearn in my monitor thing out of sight out of mind. But then it occurred to me, I have "learn" mapped to a controller button. I guess that's a global learn, right? every instance of realearn would listen for a relevant control source, and it will map all the ones that are listed in all instances of realearn, right?

So, by having two separate instances in this way, one for only pads with that box checked, that would work seamlessly as though it's one thing, and the "midi target" option would be isolated to only if I strike those pads with those specific midi CC?
__________________
Slava Ukraini
Sound asleep is online now   Reply With Quote
Old 11-16-2022, 01:51 PM   #2909
RamboMadCow
Human being with feelings
 
Join Date: Nov 2022
Posts: 14
Default

Quote:
Originally Posted by helgoboss View Post
Yes. And don't forget to set "Out-of-range" to "Ignore".

Implementing the new program change source as we speak, should be in next pre-release. This new one will also have the benefit that you see the relevant program change number in the mapping row source label.
I'm not sure if I'm doing something wrong in my setup or not so I figured I'd grab several screen shots for you. After making the adjustments you recommended, I still seem to have the problem where a single switch is activating all 3 mappings that I have defined. In fact, even after defining the Source Min/Max, other switches that have a higher program change number also fire all 3 mappings.

Hopefully the pictures attach correctly and make clear what my current setup is and everything. I have tried giving the images descriptive names as well but I'll describe them briefly:

Input_All_Off - Just a reference for when no switch has sent input. Default state.
Input_All_On - Demonstrates that a single press triggers all mappings. Doesn't matter what switch it is or even if it was actually mapped or not.
FX_And_Mapping - Hopefully shows how the routing is setup and the list of current mappings.
Mapping_Details - Demonstrates that I attempted to correct my problem based on your advice.
Reaper_Sees_All - Demonstrates that Reaper can see all of my switches as independent PC numbers and are assignable.

If I've made a mistake in my setup anywhere please let me know! I'm still getting used to Reaper and trying to figure out everything so it wouldn't surprise me if I made a mistake somewhere. If you need additional details or pics let me know as I'm happy to provide anything that can help you help me lol
Attached Images
File Type: png Input_All_Off.PNG (4.4 KB, 34 views)
File Type: png Input_All_On.PNG (3.5 KB, 36 views)
File Type: jpg FX_And_Mapping.jpg (180.1 KB, 42 views)
File Type: jpg Mapping_Details.jpg (198.2 KB, 41 views)
File Type: jpg Reaper_Sees_All.jpg (143.7 KB, 46 views)
RamboMadCow is offline   Reply With Quote
Old 11-16-2022, 03:09 PM   #2910
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,126
Default

Quote:
Originally Posted by RamboMadCow View Post
I'm not sure if I'm doing something wrong in my setup or not so I figured I'd grab several screen shots for you. After making the adjustments you recommended, I still seem to have the problem where a single switch is activating all 3 mappings that I have defined. In fact, even after defining the Source Min/Max, other switches that have a higher program change number also fire all 3 mappings.

Hopefully the pictures attach correctly and make clear what my current setup is and everything. I have tried giving the images descriptive names as well but I'll describe them briefly:

Input_All_Off - Just a reference for when no switch has sent input. Default state.
Input_All_On - Demonstrates that a single press triggers all mappings. Doesn't matter what switch it is or even if it was actually mapped or not.
FX_And_Mapping - Hopefully shows how the routing is setup and the list of current mappings.
Mapping_Details - Demonstrates that I attempted to correct my problem based on your advice.
Reaper_Sees_All - Demonstrates that Reaper can see all of my switches as independent PC numbers and are assignable.

If I've made a mistake in my setup anywhere please let me know! I'm still getting used to Reaper and trying to figure out everything so it wouldn't surprise me if I made a mistake somewhere. If you need additional details or pics let me know as I'm happy to provide anything that can help you help me lol
Reaper_Sees_All stuff must not be there, otherwise both ReaLearn and REAPER will do stuff.

Are you sure you have set "Out-of-range" to "Ignore" for all mappings and there are no other mappings / ReaLearn instances lurking anywhere?

You can use the latest pre-release of ReaLearn and it will show you more what happens in the mapping panel. There should be written "Control value ignored by glue" if the program change number doesn't match. The "dot" indicator will still light up.
helgoboss is offline   Reply With Quote
Old 11-16-2022, 04:38 PM   #2911
Jkeeton72
Human being with feelings
 
Join Date: Aug 2018
Posts: 9
Default

Quote:
Originally Posted by helgoboss View Post
Mmh, one option would be to use different MIDI channels. For this, you need to use input "FX input" and output "FX output" in ReaLearn and take care of routing the messages to/from ReaLearn via REAPER sends. You would need to map the messages coming from device 2 to MIDI channel 2 before they reach ReaLearn. And map the feedback messages back to MIDI channel one before they reach device 2. This assumes that these controllers work with channel one only by default, which I'm not 100% sure about at the moment.

Personally, I wouldn't bother doing this just to get a combined projection. How important is it that the projection is combined? Why not take 2 tablets/phones and put them beside each other, each showing one controller? I can imagine that there's also not enough screen space on one tablet/phone to present 2 XTouch Minis nicely?
Excellent! Thanks for you quick reponse. I agree two monitors or tablets would work perfectly in this case.
Jkeeton72 is offline   Reply With Quote
Old 11-16-2022, 04:58 PM   #2912
7enz
Human being with feelings
 
Join Date: Sep 2022
Posts: 367
Default

Quote:
Originally Posted by RamboMadCow View Post
I'm not sure if I'm doing something wrong in my setup or not so I figured I'd grab several screen shots for you. After making the adjustments you recommended, I still seem to have the problem where a single switch is activating all 3 mappings that I have defined. In fact, even after defining the Source Min/Max, other switches that have a higher program change number also fire all 3 mappings.

Hopefully the pictures attach correctly and make clear what my current setup is and everything. I have tried giving the images descriptive names as well but I'll describe them briefly:

Input_All_Off - Just a reference for when no switch has sent input. Default state.
Input_All_On - Demonstrates that a single press triggers all mappings. Doesn't matter what switch it is or even if it was actually mapped or not.
FX_And_Mapping - Hopefully shows how the routing is setup and the list of current mappings.
Mapping_Details - Demonstrates that I attempted to correct my problem based on your advice.
Reaper_Sees_All - Demonstrates that Reaper can see all of my switches as independent PC numbers and are assignable.

If I've made a mistake in my setup anywhere please let me know! I'm still getting used to Reaper and trying to figure out everything so it wouldn't surprise me if I made a mistake somewhere. If you need additional details or pics let me know as I'm happy to provide anything that can help you help me lol
check you have removed ANY Reaper assigned actions and that they are not clashing,
click the find shortcut in your actions menu and test if you have existing P.Changes
7enz is offline   Reply With Quote
Old 11-16-2022, 08:20 PM   #2913
revdrmaru
Human being with feelings
 
Join Date: Aug 2014
Posts: 10
Default ReaLearn not seeing OSC messages from TouchOSC

I can get Reaper to receive OSC messages from TouchOSC, but when I hit the learn source button on ReaLearn, it doesn't receive them.

I've looked all over the place for a solution to this. I think I saw it a few times while trying to resolve other issues, but can't find anything now.

If there's anything in the instructions, I can't find it.

Thanks
revdrmaru is offline   Reply With Quote
Old 11-17-2022, 12:16 AM   #2914
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,126
Default

Quote:
Originally Posted by revdrmaru View Post
I can get Reaper to receive OSC messages from TouchOSC, but when I hit the learn source button on ReaLearn, it doesn't receive them.

I've looked all over the place for a solution to this. I think I saw it a few times while trying to resolve other issues, but can't find anything now.

If there's anything in the instructions, I can't find it.

Thanks
Section "OSC devices" in the user guide: https://github.com/helgoboss/realear...oc#osc-devices

ReaLearn uses a different OSC setup than REAPER. In fact, they can't share the same ports. So be sure to follow the user guide instructions exactly
helgoboss is offline   Reply With Quote
Old 11-17-2022, 12:19 AM   #2915
binbinhfr
Human being with feelings
 
binbinhfr's Avatar
 
Join Date: Oct 2021
Location: France
Posts: 363
Default

Quote:
Originally Posted by helgoboss View Post
Good news, I finally managed to create another tutorial video.
Thanks Helgoboss !!!
__________________
Reaper's lunatic
Reapack repository / GitHub / SoundCloud / Donate
binbinhfr is offline   Reply With Quote
Old 11-17-2022, 07:06 AM   #2916
RamboMadCow
Human being with feelings
 
Join Date: Nov 2022
Posts: 14
Default

Quote:
Originally Posted by helgoboss View Post
Reaper_Sees_All stuff must not be there, otherwise both ReaLearn and REAPER will do stuff.

Are you sure you have set "Out-of-range" to "Ignore" for all mappings and there are no other mappings / ReaLearn instances lurking anywhere?

You can use the latest pre-release of ReaLearn and it will show you more what happens in the mapping panel. There should be written "Control value ignored by glue" if the program change number doesn't match. The "dot" indicator will still light up.
I had to play around with a bunch of things last night doing a bunch of testing, but I finally got it to work. I think the first problem was not setting the settings you mentioned properly first. But then the next problem had something to do with the "Exclusive" setting or a combination of the "Exclusive" and "Target" settings.

I've attached a screenshot to show what the current setting for those two are. I'm not entirely sure how or why they work, but now I do have discreet control over every song on a per MIDI PC# request. Super stoked to have figured it out finally! Thanks for your help!
Attached Images
File Type: jpg Success_Settings.JPG (91.7 KB, 48 views)
RamboMadCow is offline   Reply With Quote
Old 11-17-2022, 07:13 AM   #2917
Puck
Human being with feelings
 
Puck's Avatar
 
Join Date: Feb 2022
Location: Almost Canada
Posts: 505
Default

Great work on the new video! I learned a lot!

Question:

Is there a way to force an empty string to be sent?

A lot of my layout tries to be dynamic as possible, eliminating things visually that you don’t need. I do that by hiding groups(TouchOSC groups) that have an empty label. This “just works” for things like tracks as Realearn sends an empty string if there isn’t a track there. But In regard to my fx page, I’m definitely going to need a way to clear out previously used values. Now mind you, I haven’t actually tried anything yet, Realearn: Dummy Target may even do this by default. But rather than just poking around and guessing, I figured I’d ask.

…….

Bug?

You can bank off the edge of your project into a pit of despair I didn’t see that while looking through the issues page on GitHub so maybe it’s not known?
Puck is offline   Reply With Quote
Old 11-17-2022, 10:19 AM   #2918
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,126
Default

Quote:
Originally Posted by RamboMadCow View Post
I had to play around with a bunch of things last night doing a bunch of testing, but I finally got it to work. I think the first problem was not setting the settings you mentioned properly first. But then the next problem had something to do with the "Exclusive" setting or a combination of the "Exclusive" and "Target" settings.

I've attached a screenshot to show what the current setting for those two are. I'm not entirely sure how or why they work, but now I do have discreet control over every song on a per MIDI PC# request. Super stoked to have figured it out finally! Thanks for your help!
So with target min/max both set to 0%, you essentially unmute the track when the corresponding program change message comes in.

In combination with "Exclusive" set to "Within folder", ReaLearn makes sure that it additionally mutes all other tracks in the same REAPER track folder ... so at the end the track in question will be the only unmuted track in that folder. Is that what you want (especially the "folder" thing)!? In general, it's of course always better if you understand what you are doing Otherwise you might be up for a surprise at a later stage

Quote:
Originally Posted by Puck View Post
Great work on the new video! I learned a lot!

Question:

Is there a way to force an empty string to be sent?

A lot of my layout tries to be dynamic as possible, eliminating things visually that you don’t need. I do that by hiding groups(TouchOSC groups) that have an empty label. This “just works” for things like tracks as Realearn sends an empty string if there isn’t a track there. But In regard to my fx page, I’m definitely going to need a way to clear out previously used values. Now mind you, I haven’t actually tried anything yet, Realearn: Dummy Target may even do this by default. But rather than just poking around and guessing, I figured I’d ask.
"Clearing out previously used values" ... usually that should just work without any manual sending of empty strings. E.g. if you refer to an FX parameter and the corresponding FX is not there anymore (or your dynamic expression doesn't resolve to an FX anymore or your activation condition is not fulfilled anymore, ...), the mapping and/or target turns INACTIVE. In which case it will always send an empty string. Chances are that this just works with your "FX page" setup.

You could send an empty string explicitly e.g. by using the target "ReaLearn: Dummy target" with textual feedback. Or you enter a space in the textual feedback field (which will technically not be completely empty ... but almost haha). But in general you need to know that ReaLearn is a declarative tool, not a procedural one. That means you don't tell it WHEN to do WHAT. You just tell it WHAT you want and ReaLearn figures out itself when to do what. It's like Excel ... you enter a number in one cell and it automatically updates the other cells. AFAIK I think this is different from CSI where you e.g. explicitly jump to a specific zone on press of a button.

Quote:
Originally Posted by Puck View Post

Bug?

You can bank off the edge of your project into a pit of despair I didn’t see that while looking through the issues page on GitHub so maybe it’s not known?
Sorry, I think my English is not good enough to understand "bank off the edge of your project" Do you mean that you have a parameter x which you use in a dynamic track expression to choose the track to control ... and it can be higher than the actual track count?
helgoboss is offline   Reply With Quote
Old 11-17-2022, 10:32 AM   #2919
Puck
Human being with feelings
 
Puck's Avatar
 
Join Date: Feb 2022
Location: Almost Canada
Posts: 505
Default

Quote:
Originally Posted by helgoboss View Post


"Clearing out previously used values" ... usually that should just work without any manual sending of empty strings. E.g. if you refer to an FX parameter and the corresponding FX is not there anymore (or your dynamic expression doesn't resolve to an FX anymore or your activation condition is not fulfilled anymore, ...), the mapping and/or target turns INACTIVE. In which case it will always send an empty string. Chances are that this just works with your "FX page" setup.

You could send an empty string explicitly e.g. by using the target "ReaLearn: Dummy target" with textual feedback. Or you enter a space in the textual feedback field (which will technically not be completely empty ... but almost haha). But in general you need to know that ReaLearn is a declarative tool, not a procedural one. That means you don't tell it WHEN to do WHAT. You just tell it WHAT you want and ReaLearn figures out itself when to do what. It's like Excel ... you enter a number in one cell and it automatically updates the other cells. AFAIK I think this is different from CSI where you e.g. explicitly jump to a specific zone on press of a button.
This is all very interesting. Let me dig in and see what happens . Thank you!



Quote:
Sorry, I think my English is not good enough to understand "bank off the edge of your project" Do you mean that you have a parameter x which you use in a dynamic track expression to choose the track to control ... and it can be higher than the actual track count?
The blame is on me here. My apologies.

What I mean is this:

While banking through your project and you get to the last track, you can actually keep on banking past that for as long as you like. There should be some logic there that tells Realearn that you no longer need to bank. Let’s say you bank 6 times past the last track, you now need to bank in the opposite direction 6 times to be where you were before you went past the last track. We shouldn’t be able to do that, Realearn should stop us

Is that more clear than “off the edge of the project into a pit of despair”?

Sorry again for being vague and using weird phrases!
Puck is offline   Reply With Quote
Old 11-17-2022, 12:00 PM   #2920
RamboMadCow
Human being with feelings
 
Join Date: Nov 2022
Posts: 14
Default

Quote:
Originally Posted by helgoboss View Post
So with target min/max both set to 0%, you essentially unmute the track when the corresponding program change message comes in.

In combination with "Exclusive" set to "Within folder", ReaLearn makes sure that it additionally mutes all other tracks in the same REAPER track folder ... so at the end the track in question will be the only unmuted track in that folder. Is that what you want (especially the "folder" thing)!? In general, it's of course always better if you understand what you are doing Otherwise you might be up for a surprise at a later stage
That is exactly what I was looking to do. The way that Song Switcher said to setup a live show type backing track setup was: Make a track folder with the song name, but add a number in the format of ##., such as 01. 02. etc. Inside those track folders you'd put backing tracks, click tracks, effect tracks etc.

Then when you click each individual song, it mutes all other track folders, thus muting the tracks inside the track folders, and un-mutes the track folder you selected.

This way you can build a show in a single project that is dynamic and allows you to change the order of how songs are played. And provided you export a click track + tempo map with the click track, you can have multiple different clicks of different tempos and meter changes without having to have this 2 hour REAPER project with a crazy amount of tempo changes and time signature changes.
RamboMadCow 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 02:26 PM.


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