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

Reply
 
Thread Tools Display Modes
Old 04-22-2023, 02:48 PM   #3441
indigomirage
Human being with feelings
 
Join Date: Oct 2020
Posts: 78
Default

Quote:
Originally Posted by Kickaxe View Post
Does anyone know if there is a way to use a midi cc from a foot controller to go to a specific region on a track? I'm thinking of having several songs on the same track and wonder if there is a way to play them in any order I want using regions. I know you can trigger automation from a marker or region that I found in my research but I was not able to determine if it's possible to do the opposite.

Thanks
I have a few scripts that let me navigate (and play) current, next and previous regions. Very handy for looping/practicing sections. Since I don't know in advance how many regions I'll have, I settled on next, current and previous. With a bit of creativity, you could fire the action 'n' times in a row and go to a known spot. I use a piano key to trigger this (via ReaLearn). A foot controller would be the same idea.

Not near a PC tight now, but can try to dig up the actions I use if it helps you.

Cheers!
indigomirage is offline   Reply With Quote
Old 04-22-2023, 06:49 PM   #3442
7enz
Human being with feelings
 
Join Date: Sep 2022
Posts: 331
Default

Quote:
Originally Posted by Kickaxe View Post
Does anyone know if there is a way to use a midi cc from a foot controller to go to a specific region on a track? I'm thinking of having several songs on the same track and wonder if there is a way to play them in any order I want using regions. I know you can trigger automation from a marker or region that I found in my research but I was not able to determine if it's possible to do the opposite.

Thanks
look into Sws extension called Sws playlist (SWS/S&M: Open/close Region Playlist window)
and use a custom action like below and assign to an encoder... or just split the prev/next into individual actions and assign a midi CC

Custom: move up/down in playlist (when focussed in Sws playlist)
Action: Skip next action if CC parameter <=0/mid
SWS/S&M: Region Playlist - Play next region (smooth seek)
Action: Skip next action if CC parameter >0/mid
SWS/S&M: Region Playlist - Play previous region (smooth seek)

Last edited by 7enz; 04-22-2023 at 06:57 PM.
7enz is offline   Reply With Quote
Old 04-22-2023, 11:24 PM   #3443
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,023
Default

Quote:
Originally Posted by Kickaxe View Post
Does anyone know if there is a way to use a midi cc from a foot controller to go to a specific region on a track? I'm thinking of having several songs on the same track and wonder if there is a way to play them in any order I want using regions. I know you can trigger automation from a marker or region that I found in my research but I was not able to determine if it's possible to do the opposite.

Thanks
Going to a specific region: Target "Marker/region: Go to" of ReaLearn.
helgoboss is offline   Reply With Quote
Old 04-22-2023, 11:32 PM   #3444
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,023
Default

Quote:
Originally Posted by moribund View Post
Is it possible to use more than 1 button to execute the same mapping in ReaLearn without actually creating another identical mapping? I'd like to do something like this:

Push Button 1 OR Button 2 on MIDI controller => execute action A (e.g., bypass FX A) in Reaper.

Thanks
Put both mappings into one group. Set the desired target for only one of the mappings. In the other mapping, set group interaction to "Same control".
helgoboss is offline   Reply With Quote
Old 04-22-2023, 11:33 PM   #3445
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,169
Default

If ReaLearn can't do that you could try ReaPack->Song Switcher.
-Michael
mschnell is online now   Reply With Quote
Old 04-22-2023, 11:37 PM   #3446
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,023
Default

Quote:
Originally Posted by drummerboy View Post
Agree, Sigma and Realearn beats the SSL Plugins out of the park.
For instance, I have mapped Track-Width to Sigma Stereo/Mono switch and a normal Reaper Send to map to Mix A and Mix B. Works perfectly!

Before Realearn I controlled the Sigma via Parameter Modulation (I used a sine wave generator to determine the volume of Reaper Tracks (Post Trim/Read) and used that to control the Sigma Faders. It came with a slight performance penalty due to allowing feedback-routing). Any way to do this with Realearn? Maybe it's worth a try.
ReaLearn picks up parameter modulation. You can also use time-based control transformation, a more flexible alternative than parameter modulation.

If you then enable feedback, motor faders should start to move accordingly (assuming the SSL has motor faders and you have the source configured correctly)
helgoboss is offline   Reply With Quote
Old 04-22-2023, 11:41 PM   #3447
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,023
Default

Quote:
Originally Posted by Nick Morris View Post
As it stands the automation/fader position being sent to Sigma relies on the fader moving in Reaper. So Trim/Read will NOT send anything. I do not see any way to have the VOLUME ENVELOPE transmit its value. And further thought, I can't see how this would work with the Sigma if you want to have the automation play back but still use those faders to trim. If you were able to send the trim fader positions and automation data, which positions would the Sigma use? You would want the automation data to be merged then, the tracks fader position plus the trim fader position since the Sigma has only one absolute fader per track. Ideally, you would want REAPER to trim the actual Volume Fader, rather than have its own trim envelope lane, and altering the volume fader envelope that controls the Sigma fader. Not seeing a way that this is possible at all.

Maybe there is a complex way of reading the data of two instances of realearn and combining it? No clue.

Trimming envelopes by mouse over here using the trim volume lane and the "Track: Apply trim envelope to volume envelope, clear trim envelope" action for now.

Realearn and Sigma are awesome together, much nicer than the SSL plugins for control of the Sigma.
Mmh, about the trim/read issue. I don't understand how exactly you wish this would work on a conceptual level, leaving any technical questions aside. Either the faders move together with the envelope OR you can make global adjustments ... how is "something inbetween" supposed to work?
helgoboss is offline   Reply With Quote
Old 04-23-2023, 07:48 AM   #3448
Kickaxe
Human being with feelings
 
Join Date: Apr 2023
Posts: 21
Default

Quote:
Originally Posted by helgoboss View Post
Going to a specific region: Target "Marker/region: Go to" of ReaLearn.
Thank you all for your suggestions. Helgoboss, this worked perfectly. Much appreciated.
Kickaxe is offline   Reply With Quote
Old 04-25-2023, 10:44 AM   #3449
drummerboy
Human being with feelings
 
drummerboy's Avatar
 
Join Date: Mar 2017
Location: Switzerland
Posts: 200
Default

Quote:
Originally Posted by helgoboss View Post
Mmh, about the trim/read issue. I don't understand how exactly you wish this would work on a conceptual level, leaving any technical questions aside. Either the faders move together with the envelope OR you can make global adjustments ... how is "something inbetween" supposed to work?
I was planing to use the trim/read as a trim for what's going to the sigma fader.
Before Realearn/OSC I was able to do this via parameter modulation (a sinewave generator feeding channels 5/6 of a channel which then in turn controlled the fader in the sigma plugin).

It should be possible if I could just figure out how to use parameter modulation with Realearn. Can anyone point me to where this is documented?

Edit: Found it! Parameter Modulation works

Best,
Frank

Last edited by drummerboy; 04-25-2023 at 11:10 AM. Reason: Found it!
drummerboy is offline   Reply With Quote
Old 04-25-2023, 11:15 AM   #3450
Nick Morris
Human being with feelings
 
Nick Morris's Avatar
 
Join Date: Nov 2010
Posts: 652
Default

Quote:
Originally Posted by helgoboss View Post
Mmh, about the trim/read issue. I don't understand how exactly you wish this would work on a conceptual level, leaving any technical questions aside. Either the faders move together with the envelope OR you can make global adjustments ... how is "something inbetween" supposed to work?
Thats just it, I don't see how it could. If the volume envelope + the trim volume envelope were added together prior to the volume fader position all would be fine. The issue is that the volume fader only follows the volume envelope with no regard to the trim envelope.
__________________
www.ElaireStudios.com
Robo-Mic RMS robotic remote controlled mic stands aimed at mic'ing amps
Nick Morris is offline   Reply With Quote
Old 04-25-2023, 11:36 AM   #3451
drummerboy
Human being with feelings
 
drummerboy's Avatar
 
Join Date: Mar 2017
Location: Switzerland
Posts: 200
Default

Quote:
Originally Posted by Nick Morris View Post
Thats just it, I don't see how it could. If the volume envelope + the trim volume envelope were added together prior to the volume fader position all would be fine. The issue is that the volume fader only follows the volume envelope with no regard to the trim envelope.
I‘ll try it with a sinewave generator on the sigma folder track that sends to all the sigma child-tracks on channels 5/6. The child-tracks then send the sinewave postfader (including volume automation and trim/read value) back to the Sigma Folder: Sigma 1 to Channels 7/8, Sigma 2 to 9/10 etc.
ReaLearn can then use those signals as parameter modulation to control the Sigma via OSC.
That way, I can even turn down the Sigma Fokder itself to lower all the Faders together.

I‘ll try it tomorrow and report back.
drummerboy is offline   Reply With Quote
Old 04-26-2023, 03:22 AM   #3452
Bärtreuer
Human being with feelings
 
Join Date: Sep 2020
Posts: 11
Default

Hello all,

regarding Realearn and two (or more) SSL UF8:

I preapre for a larger mixing session, beginning in a few weeks. My initial thought was to use the CSI implementaion for this task. Today I came across the Youtube video of the artist Tycho, demonstrating his approach with Console 1 and Realearn, which is impressive.
My question is:
Is it possible to have two (!) SSL UF8 chained together, behaving as ONE device with 16 channels ?
I use Realearn for controlling plugins (only created mapping for simpler tasks yet), but it works like a charm. The possibility for controlling 2 (or even 3 UF) would be fantastic. Any one here already tried this ?

All the best
BT
Bärtreuer is offline   Reply With Quote
Old 04-27-2023, 10:54 AM   #3453
muech011
Human being with feelings
 
Join Date: Apr 2023
Posts: 7
Default My Solution for Live-Controlling?

Hi.

Just posted a message for Live-Controlling REAPER using a ROLAND FA-06 (see here: https://forum.cockos.com/showthread.php?t=278622) and now I've found ReaLearn.

Before starting to go deeper into this (very well documented) extension: Is this a proper way to
1. Receive Program Change Messages from the FA-06 and map the Value to a REAPER-Region and select this region (by means of "Receiving Program Change 48 should go to beginning of region 14 and select it")?
2. Can this be Conditional or do I have to add a mapping for each PCM value? What I mean is something like "if PCM-Value==48 select Region14 else if PCM-Value==49 select Region10 else if ...."
3. Receive "Midi Runtime Message" for the PLAY/STOP Button of the FA-06 and START/STOP playback in REAPER? There is a Mapping available for MIDI clock transport with message START/CONTINUE/STOP. Is this System Realtime Message FAH/FBH/FCH???

Thanks in advance

ChriS
muech011 is offline   Reply With Quote
Old 04-27-2023, 04:26 PM   #3454
7enz
Human being with feelings
 
Join Date: Sep 2022
Posts: 331
Default

Quote:
Originally Posted by muech011 View Post
Hi.

Just posted a message for Live-Controlling REAPER using a ROLAND FA-06 (see here: https://forum.cockos.com/showthread.php?t=278622) and now I've found ReaLearn.

Before starting to go deeper into this (very well documented) extension: Is this a proper way to
1. Receive Program Change Messages from the FA-06 and map the Value to a REAPER-Region and select this region (by means of "Receiving Program Change 48 should go to beginning of region 14 and select it")?
2. Can this be Conditional or do I have to add a mapping for each PCM value? What I mean is something like "if PCM-Value==48 select Region14 else if PCM-Value==49 select Region10 else if ...."
3. Receive "Midi Runtime Message" for the PLAY/STOP Button of the FA-06 and START/STOP playback in REAPER? There is a Mapping available for MIDI clock transport with message START/CONTINUE/STOP. Is this System Realtime Message FAH/FBH/FCH???

Thanks in advance

ChriS
im sure Program Change values can be tied with region/markers, have not done this myself, but recall seeing PC midi being implemented in realearn some time back

in the source area
category: midi
type: specific program change (insert manually)

in the target area
Type: Marker/region Go to

i personally havent used the above method... but suspect thats where you would want to start.

As an alternative..... with SWS extensions installed.. consider
SWS/S&M: Open/close Region Playlist window
7enz is offline   Reply With Quote
Old 04-29-2023, 08:41 AM   #3455
indigomirage
Human being with feelings
 
Join Date: Oct 2020
Posts: 78
Default initial template for DAW control with the Maschine MK3

I made an initial template for DAW control with the Maschine MK3.

https://stash.reaper.fm/v/46798/Real...hineMK3-v1.zip

This is the start of a workable Realearn DAW control template for the Maschine MK3. There are some quirks as the MK3 MCU Faders operate as pitch wheels and are pretty much unusable, so I had to use V-Pots (typically reserved for pan).

The 'Select' button clears all track selections (so you can span banks if needed).

I may try to add a few things, like a mode to switch the V-Pots between Volume and Pan. And maybe a general mode to have Volume, Pan and Width for all selected. The challenge is limited LED display real estate - I may just override the first channel (of the bank) LED so show the current mode.

I use Dynamic (MCP) for the banks so that the bank channels skip that which is not visible.

I did a modification to the Marviq bank monitor script to highlight the MCP buttons based on the bank, but accounting for the visibility of the tracks. I will probably upload that elsewhere as I don't want to step on toes.

I obviously used the core Realearn presets as a template here, but the MK3 is quirky enough that I needed to start anew.

It's a start...

Hope this is useful for someone!

Cheers!

Last edited by indigomirage; 04-29-2023 at 09:28 AM.
indigomirage is offline   Reply With Quote
Old 04-29-2023, 10:54 AM   #3456
7enz
Human being with feelings
 
Join Date: Sep 2022
Posts: 331
Default

Quote:
Originally Posted by indigomirage View Post
I made an initial template for DAW control with the Maschine MK3.

https://stash.reaper.fm/v/46798/Real...hineMK3-v1.zip

This is the start of a workable Realearn DAW control template for the Maschine MK3. There are some quirks as the MK3 MCU Faders operate as pitch wheels and are pretty much unusable, so I had to use V-Pots (typically reserved for pan).

The 'Select' button clears all track selections (so you can span banks if needed).

I may try to add a few things, like a mode to switch the V-Pots between Volume and Pan. And maybe a general mode to have Volume, Pan and Width for all selected. The challenge is limited LED display real estate - I may just override the first channel (of the bank) LED so show the current mode.

I use Dynamic (MCP) for the banks so that the bank channels skip that which is not visible.

I did a modification to the Marviq bank monitor script to highlight the MCP buttons based on the bank, but accounting for the visibility of the tracks. I will probably upload that elsewhere as I don't want to step on toes.

I obviously used the core Realearn presets as a template here, but the MK3 is quirky enough that I needed to start anew.

It's a start...

Hope this is useful for someone!

Cheers!
well done!
i had a look at your preset for the MK3 just to have a look at the methods used to implement.
i dont have a Mk3... rather i have a couple of Mk2's and a couple of Maschine Jam's
im still adding to the maschine Jam template & streamlining things, i will share it in time

have you tried using the VU peaks in realearn to add VU meter monitoring to your tracks? (basically provides feedback of volumes on playing tracks)
you would need to have them work in dynamic mode... purely for utilising what is playing

Last edited by 7enz; 04-29-2023 at 11:02 AM.
7enz is offline   Reply With Quote
Old 04-29-2023, 11:03 AM   #3457
indigomirage
Human being with feelings
 
Join Date: Oct 2020
Posts: 78
Default

I suspect it'll work on the MK2, but I'm not sure. One big frustration was that I couldn't use regular cc controls for the knobs since any non-MCU mode seemed to disable the led screen labels.

I haven't tried the metering functionality. The display on the MK3, though marvelous for normal maschine operations is hobbled for mcu stuff.

I also want to add a button to turn the scrub into a 'fine' mode as Helgobos has stated to flesh that out. However, I almost think the might be better uses for the knob.

The exercise was more frustrating than I'd hoped, but I certainly learned a lot about the inner workings of the various components.

Ultimately, my main goal is to find a way to avoid using the mouse for v this stuff. More tactile control. (I've wired my midi fighter twister in to control many fx and it's great!)

Either way, it might help others get a leg up on this...
indigomirage is offline   Reply With Quote
Old 04-29-2023, 03:03 PM   #3458
Malandro
Human being with feelings
 
Join Date: Jul 2022
Posts: 131
Default

Hey helgoboss,

Thanks so much for ReaLearn.

I'm on the latest version (2.15.0-pre.2) and I'm having some issues with the Global: Last touched target. Here are the issues I'm facing:

-It is not always sending feedback when the target is changed via REAPER (and there is no "Poll for feedback" option). This is a new problem since 2.14.3:



-It does not change to a new target when the target is just "touched" in REAPER without being changed. This was also a problem in 2.14.3:



-Finally, I don't see a way to set the automation touch state for Global: Last touched.
Malandro is offline   Reply With Quote
Old 04-30-2023, 12:38 AM   #3459
Vladistone
Human being with feelings
 
Join Date: Jul 2022
Posts: 80
Default

Quote:
Originally Posted by Bärtreuer View Post
Hello all,

regarding Realearn and two (or more) SSL UF8:

I preapre for a larger mixing session, beginning in a few weeks. My initial thought was to use the CSI implementaion for this task. Today I came across the Youtube video of the artist Tycho, demonstrating his approach with Console 1 and Realearn, which is impressive.
My question is:
Is it possible to have two (!) SSL UF8 chained together, behaving as ONE device with 16 channels ?
I use Realearn for controlling plugins (only created mapping for simpler tasks yet), but it works like a charm. The possibility for controlling 2 (or even 3 UF) would be fantastic. Any one here already tried this ?

All the best
BT
Hello Bärtreuer!
(maybe it will help to learn how to use pair of UF8s?)
I'm using the SSL nucleus2 which is implemented as Mackie control emulation ("MCU"+"XT" extension) plugged in different IPMIDI ports pair as a multiple layer modes: one of this for MCU and second for XT, and at the same time, I switch additional nucleus2 ports (3+4; 5+6) for similar purposes of controlling FX parameters as you discribed above... or for controlling parameters of external devices and with standalong plugins;
so if you organize the UF8 connection in a similar way with different destination MIDI-ports with 8 parameters per device, then maybe you will succeed as you wanted.

the only thing that needs to be defined is the master device (similar to the MCU). from which messages will be reassigned to UF8 slaves when pages or bank selection are changes

Last edited by Vladistone; 04-30-2023 at 02:20 AM.
Vladistone is offline   Reply With Quote
Old 04-30-2023, 03:21 PM   #3460
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,023
Default

Quote:
Originally Posted by indigomirage View Post
Potential issue with ReaLearn and Auto-load with CLAP plugins?

Hi there - I've been mapping my plugins so that they auto-load with presets. In this case, I was trying to configure Surge XT (CLAP format), however I could not find it in the list of FX based on last focus, and when I tried setting Auto-load Based on instance FX< I got the following message...:

Since my other plugins (VST3) had no issue, I'm making a guess that this is an issue with CLAP plugins... (?)

Grateful for any help (or pointers if I'm on the wrong track here).

Cheers!

--- cut ---
REAPER version: 6.78/x64
Module name: ReaLearn
Module version: v2.14.3/x86_64 rev 68c524 (2023-01-13 17:18:04 UTC)
Module base address: 0x7ffb1d030000
Module size: 0x1b63000

Message: already mutably borrowed: BorrowError

0: 0x7ffb1e13f135 - cpp_to_rust_ProjectStateContext_SetTempFlag
1: 0x7ffb1e13d989 - cpp_to_rust_ProjectStateContext_SetTempFlag
2: 0x7ffb1e04b7ff - DllMain
3: 0x7ffb1e163032 - cpp_to_rust_ProjectStateContext_SetTempFlag
4: 0x7ffb1e162dbd - cpp_to_rust_ProjectStateContext_SetTempFlag
5: 0x7ffb1e16082f - cpp_to_rust_ProjectStateContext_SetTempFlag
6: 0x7ffb1e162a80 - cpp_to_rust_ProjectStateContext_SetTempFlag
7: 0x7ffb1e38b825 - cpp_to_rust_ProjectStateContext_SetTempFlag
8: 0x7ffb1e38b9a3 - cpp_to_rust_ProjectStateContext_SetTempFlag
9: 0x7ffb1d6b5d18 - VSTPluginMain
10: 0x7ffb1d2c9e9c - NSEEL_HOSTSTUB_LeaveMutex
11: 0x7ffb1da60150 - VSTPluginMain
12: 0x7ffb1d6b6a92 - VSTPluginMain
13: 0x7ffb1e148ee1 - cpp_to_rust_ProjectStateContext_SetTempFlag
14: 0x1409710bb - <unknown>
15: 0x140989f19 - <unknown>
16: 0x1403f3e37 - <unknown>
17: 0x14041de49 - <unknown>
18: 0x14041dd2c - <unknown>
19: 0x1408bea14 - <unknown>
20: 0x14060bc1b - <unknown>
21: 0x14060d1ef - <unknown>
22: 0x14060e669 - <unknown>
23: 0x7ffb1e041c55 - DllMain
24: 0x7ffb1e052d42 - DllMain
25: 0x7ffb1e025691 - DllMain
26: 0x7ffb1e03934b - DllMain
27: 0x7ffb1e039d8e - DllMain
28: 0x7ffb1d9a1068 - VSTPluginMain
29: 0x7ffb1d9a0923 - VSTPluginMain
30: 0x7ffb1dbeed69 - DllMain
31: 0x7ffb1dbe4ec3 - DllMain
32: 0x7ffb1d4f9163 - VSTPluginMain
33: 0x7ffb1e07ddaf - cpp_to_rust_IReaperControlSurface_Run
34: 0x140306b44 - <unknown>
35: 0x1401fcae5 - <unknown>
36: 0x1401fc048 - <unknown>
37: 0x14046aa4d - <unknown>
38: 0x7ffbc53195e6 - GetMenuItemCount
39: 0x7ffbc5318ed7 - GetMenuItemCount
40: 0x7ffbc5332bc9 - DrawTextA
41: 0x7ffbc5318231 - DispatchMessageW
42: 0x7ffbc5317cf1 - DispatchMessageW
43: 0x140461a89 - <unknown>
44: 0x1409d7e41 - <unknown>
45: 0x7ffbc5e3269d - BaseThreadInitThunk
46: 0x7ffbc6e4a9f8 - RtlUserThreadStart
--- cut ---
Thx, this should work in upcoming 2.15.0-pre.3
helgoboss is offline   Reply With Quote
Old 05-01-2023, 08:45 AM   #3461
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,023
Default

Quote:
Originally Posted by Malandro View Post
Hey helgoboss,

Thanks so much for ReaLearn.

I'm on the latest version (2.15.0-pre.2) and I'm having some issues with the Global: Last touched target. Here are the issues I'm facing:

1. It is not always sending feedback when the target is changed via REAPER (and there is no "Poll for feedback" option). This is a new problem since 2.14.3:

2. It does not change to a new target when the target is just "touched" in REAPER without being changed. This was also a problem in 2.14.3:


3. Finally, I don't see a way to set the automation touch state for Global: Last touched.
1. I need a test project (simple, without any 3rd-party plug-ins) or a more detailed description of what target you are touching. When I try it with the usual learnable targets, it works here.

2. In general, I only consider value changes as "touches". I'm not sure whether REAPER even emits some notification when just touching some UI element without changing the value ... I don't think so. But again, need a more detailed description.

3. Are you referring to target "Track: Set automation touch state"? So you always want to refer to the last "touched" track? In that case, it would need a new track selector "<Last touched>". That would be a new feature.
helgoboss is offline   Reply With Quote
Old 05-01-2023, 08:53 AM   #3462
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,023
Default

Quote:
Originally Posted by muech011 View Post
Hi.

Just posted a message for Live-Controlling REAPER using a ROLAND FA-06 (see here: https://forum.cockos.com/showthread.php?t=278622) and now I've found ReaLearn.

Before starting to go deeper into this (very well documented) extension: Is this a proper way to
1. Receive Program Change Messages from the FA-06 and map the Value to a REAPER-Region and select this region (by means of "Receiving Program Change 48 should go to beginning of region 14 and select it")?
2. Can this be Conditional or do I have to add a mapping for each PCM value? What I mean is something like "if PCM-Value==48 select Region14 else if PCM-Value==49 select Region10 else if ...."
3. Receive "Midi Runtime Message" for the PLAY/STOP Button of the FA-06 and START/STOP playback in REAPER? There is a Mapping available for MIDI clock transport with message START/CONTINUE/STOP. Is this System Realtime Message FAH/FBH/FCH???

Thanks in advance

ChriS
1. Yes, you can receive program change messages. There are two sources actually, I think the best source for you is "Specific program change".
2. You want a mapping for each PCM value. BUT! You don't need to create it by hand. You can use Lua to build that preset and in Lua you can use as much conditional stuff as you want. Just use the GUI to create one or two mappings, then press "Export to clipboard" => "Export main compartment as Lua". The resulting Lua code should be a good starting point for introducing conditionals, loops, etc. The only important thing is that at the end you return a table which structurally looks like the export.
3. Yes. Source "MIDI clock transport". That should do the job.
helgoboss is offline   Reply With Quote
Old 05-01-2023, 10:17 AM   #3463
Malandro
Human being with feelings
 
Join Date: Jul 2022
Posts: 131
Default

Quote:
Originally Posted by helgoboss View Post
1. I need a test project (simple, without any 3rd-party plug-ins) or a more detailed description of what target you are touching. When I try it with the usual learnable targets, it works here.
Attached.

Quote:
2. In general, I only consider value changes as "touches". I'm not sure whether REAPER even emits some notification when just touching some UI element without changing the value ... I don't think so. But again, need a more detailed description.
It does, at least according to the script "Script: edgemeal_Display last touched FX parameter.lua" (available in ReaPack).

Quote:
3. Are you referring to target "Track: Set automation touch state"? So you always want to refer to the last "touched" track? In that case, it would need a new track selector "<Last touched>". That would be a new feature.
Sort of? I want something like "Global: Set automation touch state for last touched parameter". I'll open an FR on github.
Malandro is offline   Reply With Quote
Old 05-01-2023, 01:16 PM   #3464
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,023
Default

Quote:
Originally Posted by Malandro View Post
Attached.



It does, at least according to the script "Script: edgemeal_Display last touched FX parameter.lua" (available in ReaPack).



Sort of? I want something like "Global: Set automation touch state for last touched parameter". I'll open an FR on github.
I reproduced it. Tracked here: https://github.com/helgoboss/realearn/issues/849
helgoboss is offline   Reply With Quote
Old 05-02-2023, 01:45 AM   #3465
doghouse
Human being with feelings
 
Join Date: Dec 2011
Posts: 49
Default Fade out mute button ?

Hi Helgoboss,
i am using realearn mostly with buttons (midfighter) to mute tracks in a certain range.
(easy: target is the volume fader and i choose the max parameter for fitting into the mix).
Just like dubbing on an anlog desk with the mute buttons.
I really would love to have a slight (programable) fade out time, especially when releasing the button.
Is this possibel? And if yes how? I must admit that i did not dig the Control transformation (EEL) beside playing with it and just using something like an LFO for modulating a parameter.
doghouse is offline   Reply With Quote
Old 05-02-2023, 03:31 AM   #3466
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,023
Default

Quote:
Originally Posted by doghouse View Post
Hi Helgoboss,
i am using realearn mostly with buttons (midfighter) to mute tracks in a certain range.
(easy: target is the volume fader and i choose the max parameter for fitting into the mix).
Just like dubbing on an anlog desk with the mute buttons.
I really would love to have a slight (programable) fade out time, especially when releasing the button.
Is this possibel? And if yes how? I must admit that i did not dig the Control transformation (EEL) beside playing with it and just using something like an LFO for modulating a parameter.
Check out this control transformation and make sure you set button behavior to "Press only". It toggles with a fade in each direction. You can adjust target min/max to set the min/max value. You can adjust the code to adjust the transition time and which of the directions fade. As always, the devil is in the detail. This is just a starting point for your experimentation. The transformation can probably much better as it is now, e.g. taking account short subsequent presses (lower than transition time) and not jumping.

Code:
// Parameters

transition_time_in_ms = 500;

// Code

// On first invocation only, determine start value and direction
moving == 0 ? (
  moving = 1;
  y < 0.5 ? (
    start_val = 0;
    direction = 1;
  ) : (
    start_val = 1;
    direction = -1;
  );
);

// Determine next value
next_val = start_val + direction * (rel_time / transition_time_in_ms);

// Stop if boundary reached
next_val < 0 || next_val > 1 ? (
  moving = 0;
  y = stop(!start_val);
) : (
  y = next_val;
);
helgoboss is offline   Reply With Quote
Old 05-02-2023, 12:02 PM   #3467
Puck
Human being with feelings
 
Puck's Avatar
 
Join Date: Feb 2022
Location: Almost Canada
Posts: 505
Default

Is there a main preset to use with the faderport classic controller preset?

I got mine out of the closet wanting to see if it still works (looks like it does!) but I don't see anything other than that controller preset.
Puck is offline   Reply With Quote
Old 05-02-2023, 12:50 PM   #3468
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,023
Default

Quote:
Originally Posted by Puck View Post
Is there a main preset to use with the faderport classic controller preset?

I got mine out of the closet wanting to see if it still works (looks like it does!) but I don't see anything other than that controller preset.
Not to my knowledge. Contribution welcome The best and maybe even easiest approach would be to rename the virtual control element IDs of the existing controller preset to conform to the conventions of the "DAW" scheme, just like the "Mackie Control" controller preset. Then it would be compatible with the "DAW control" main preset and probably just work. When I made the preset, the DAW scheme and named virtual control elements didn't exist yet, so they are just numbers at the moment. I have that device here but I rarely use it.
helgoboss is offline   Reply With Quote
Old 05-02-2023, 10:11 PM   #3469
Bärtreuer
Human being with feelings
 
Join Date: Sep 2020
Posts: 11
Default

Quote:
Originally Posted by Vladistone View Post
Hello Bärtreuer!
(maybe it will help to learn how to use pair of UF8s?)
I'm using the SSL nucleus2 which is implemented as Mackie control emulation ("MCU"+"XT" extension) plugged in different IPMIDI ports pair as a multiple layer modes: one of this for MCU and second for XT, and at the same time, I switch additional nucleus2 ports (3+4; 5+6) for similar purposes of controlling FX parameters as you discribed above... or for controlling parameters of external devices and with standalong plugins;
so if you organize the UF8 connection in a similar way with different destination MIDI-ports with 8 parameters per device, then maybe you will succeed as you wanted.

the only thing that needs to be defined is the master device (similar to the MCU). from which messages will be reassigned to UF8 slaves when pages or bank selection are changes
Thank you, I will keep it in mind will trying.
Bärtreuer is offline   Reply With Quote
Old 05-03-2023, 12:51 AM   #3470
muech011
Human being with feelings
 
Join Date: Apr 2023
Posts: 7
Default

Quote:
Originally Posted by helgoboss View Post
1. Yes, you can receive program change messages. There are two sources actually, I think the best source for you is "Specific program change".
2. You want a mapping for each PCM value. BUT! You don't need to create it by hand. You can use Lua to build that preset and in Lua you can use as much conditional stuff as you want. Just use the GUI to create one or two mappings, then press "Export to clipboard" => "Export main compartment as Lua". The resulting Lua code should be a good starting point for introducing conditionals, loops, etc. The only important thing is that at the end you return a table which structurally looks like the export.
3. Yes. Source "MIDI clock transport". That should do the job.
Hi helgoboss.

Thanks for the reply. I'll give it a try. Exporting the Lua is a good tip which makes life much easier. But since every entry has a unique ID tag I'm not sure how to modify them. I will report back if it works as expected.

Thanks

Last edited by muech011; 05-03-2023 at 01:21 AM.
muech011 is offline   Reply With Quote
Old 05-03-2023, 05:32 AM   #3471
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,023
Default

Quote:
Originally Posted by muech011 View Post
Hi helgoboss.

Thanks for the reply. I'll give it a try. Exporting the Lua is a good tip which makes life much easier. But since every entry has a unique ID tag I'm not sure how to modify them. I will report back if it works as expected.

Thanks
You don't need the IDs. They are optional and only important if you need to refer to a mapping somewhere in your Lua code (e.g. there are targets that point to other mappings).
helgoboss is offline   Reply With Quote
Old 05-03-2023, 05:50 AM   #3472
dna598
Human being with feelings
 
Join Date: Jul 2007
Posts: 660
Default

Hi sorry if this has been asked.

Pulling my hair out trying to auto name the mappings from the parameters.
So i click on realearn gui in order to auto name, and the parameter names change from the actual names (eg.threshold) to "param 25", so it never works. Juist get "fx paramleter value" on all knobs in projection display.

What's the procedure here please?
dna598 is offline   Reply With Quote
Old 05-03-2023, 06:50 AM   #3473
muech011
Human being with feelings
 
Join Date: Apr 2023
Posts: 7
Default LUA-Examples

Quote:
Originally Posted by helgoboss View Post
You don't need the IDs. They are optional and only important if you need to refer to a mapping somewhere in your Lua code (e.g. there are targets that point to other mappings).
Ok, got that. Could you point to a reference manual of LUA? The export looks more like a notation rather than a language. So I'm not sure how/where to enter the code for the conditions and how to access the parameter of the specific PCM and select the appropriate region.
muech011 is offline   Reply With Quote
Old 05-03-2023, 07:45 AM   #3474
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,023
Default

Quote:
Originally Posted by dna598 View Post
Hi sorry if this has been asked.

Pulling my hair out trying to auto name the mappings from the parameters.
So i click on realearn gui in order to auto name, and the parameter names change from the actual names (eg.threshold) to "param 25", so it never works. Juist get "fx paramleter value" on all knobs in projection display.

What's the procedure here please?
Projection shows mapping names only, and only the ones that you enter manually, not the auto-generated ones. It doesn't show parameter names. I think there's an FR somewhere out there. I will probably improve projection at the end of this year.
helgoboss is offline   Reply With Quote
Old 05-03-2023, 07:48 AM   #3475
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,023
Default

Quote:
Originally Posted by muech011 View Post
Ok, got that. Could you point to a reference manual of LUA? The export looks more like a notation rather than a language. So I'm not sure how/where to enter the code for the conditions and how to access the parameter of the specific PCM and select the appropriate region.
https://www.lua.org/docs.html

The export is a Lua table. You can use whatever the official Lua language provides you to generate that table. The export just has one large table literal. If you want to generate the contents of that table, you would rather do something like this: https://github.com/helgoboss/realear...lip-engine.lua
helgoboss is offline   Reply With Quote
Old 05-03-2023, 09:38 AM   #3476
muech011
Human being with feelings
 
Join Date: Apr 2023
Posts: 7
Default

Quote:
Originally Posted by helgoboss View Post
https://www.lua.org/docs.html

The export is a Lua table. You can use whatever the official Lua language provides you to generate that table. The export just has one large table literal. If you want to generate the contents of that table, you would rather do something like this: https://github.com/helgoboss/realear...lip-engine.lua
You're a hero. That's pretty easy to maintain. Works. Thanks a lot.

Another question: The FA-06 has a wheel to select a program. So if the keyboarder is changing the program with the wheel there may be several PCM been fired by the FA-06 within a short time. That shouldn't be a problem for REAPER/ReLearn to handle? I guess it is not parallel processing.
muech011 is offline   Reply With Quote
Old 05-03-2023, 11:39 AM   #3477
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,023
Default

Quote:
Originally Posted by muech011 View Post
You're a hero. That's pretty easy to maintain. Works. Thanks a lot.

Another question: The FA-06 has a wheel to select a program. So if the keyboarder is changing the program with the wheel there may be several PCM been fired by the FA-06 within a short time. That shouldn't be a problem for REAPER/ReLearn to handle? I guess it is not parallel processing.
It depends on the target. If you, for example, invoke a ReaScript (via target "Project: Invoke REAPER action) that takes a long time, then quickly firing incoming messages will pile up of course. But if the target executes quickly, it's not an issue. Also, if ReaLearn detects that the target already has the desired value, it will not do anything, usually.

If you run into problems with this, you can use something similar to the control transformation "Debounce" preset. The idea is to wait until there's no incoming message anymore for n millis and THEN execute the target, not before. Oh, but I realize, this only works within one mapping. In your case, you would have one mapping per program change number, so not that useful probably.
helgoboss is offline   Reply With Quote
Old 05-04-2023, 12:51 AM   #3478
muech011
Human being with feelings
 
Join Date: Apr 2023
Posts: 7
Default

Quote:
Originally Posted by helgoboss View Post
It depends on the target. If you, for example, invoke a ReaScript (via target "Project: Invoke REAPER action) that takes a long time, then quickly firing incoming messages will pile up of course. But if the target executes quickly, it's not an issue. Also, if ReaLearn detects that the target already has the desired value, it will not do anything, usually.
Fortunately it's only "Select Region", so no action script.

Quote:
Originally Posted by helgoboss View Post
If you run into problems with this, you can use something similar to the control transformation "Debounce" preset. The idea is to wait until there's no incoming message anymore for n millis and THEN execute the target, not before. Oh, but I realize, this only works within one mapping. In your case, you would have one mapping per program change number, so not that useful probably.
Not exactly what I'm looking for but a good start. My concerns are mainly because of the Reaper GUI which has a lot to handle with several "Select Region" coming short after. I needed also to add a "Transport: Stop" Event as a Mapping for each PCM (just one mapping for all PCM) to be sure that Reaper is Stopped after executing the "Select Region".

If I map a "Program Change" to an action script, is it possible to access the Program Number in the script? The ReaLearn User Guide says it is in the control value.

Sorry for all the questions. Just want to check different options. And learning, learning, learning
muech011 is offline   Reply With Quote
Old 05-04-2023, 06:17 AM   #3479
BenjyO
Human being with feelings
 
Join Date: Nov 2011
Posts: 308
Default

@helgoboss, Is there a way to get textual feedback for {{target.track.index}} but one-based? I want to see the track number as it is shown in Reaper's TCP or MCP which is not zero-based.
__________________
Check out some of my music
BenjyO is offline   Reply With Quote
Old 05-04-2023, 07:04 AM   #3480
indigomirage
Human being with feelings
 
Join Date: Oct 2020
Posts: 78
Default

Quote:
Originally Posted by BenjyO View Post
@helgoboss, Is there a way to get textual feedback for {{target.track.index}} but one-based? I want to see the track number as it is shown in Reaper's TCP or MCP which is not zero-based.
I have a very similar question - is there anyway to do any rudimentary text/string manipulation on the textual feedback? I'm thinking things like left/left trim, etc. Maybe some conditionals?

(And the non-zero based would be a subset of the ability to do some basic scripting/manipulation.)
indigomirage 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 05:02 AM.


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