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

Reply
 
Thread Tools Display Modes
Old 09-26-2021, 06:37 AM   #1601
cjunekim
Human being with feelings
 
Join Date: Dec 2016
Posts: 255
Default

This is a different suggestion from our ongoing discussion on exclusive but all-off possible solution.

I found the EEL2 option quite flexible. However, the EelTransformation and EElCondition are not symmetrical.

Parameter variables such as p1 and p2 are allowed in EelCondition only. It could be useful if I can use it in EelTranformation as well. And conceptually, it seems more consistent to me.

Moreover, it doesn't seem to be too much of a change in the implementation(according to open-closed principle). What do you think?
cjunekim is offline   Reply With Quote
Old 09-26-2021, 08:13 AM   #1602
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,184
Default

Quote:
Originally Posted by cjunekim View Post
Wow. Thank you for your interest and suggestion!

I think I understood what you wrote here and implemented it. However, it works differently from what I expected.

So there are 3 mappings.

1. midi button 1 to p1 : target min,max = 0,1%
2. midi button 2 to p1 : target min,max = 0,2%
3. midi button 3 to p1 : target min,max = 0,3%

And all are in Toggle buttons mode and their Out-of-range behavior is all Min.

Now if I start testing.

1. I hit button 1. It is turned on.
2. hit button 2. Button 1 goes off and button 2 is on. Okay.
3. hit button 3. All buttons go off. Uh-oh. Not what I wanted.
1%, not 0.1% (important if you use "Active: When bank selected" because this assumes 100 banks). Although that doesn't explain your particular issue, you could still try it. Maybe the issue only occurs with certain numbers as result of a rounding problem (I will check when home).

Plus, if you want the toggle to work, you need to set target min to 0%.
helgoboss is online now   Reply With Quote
Old 09-26-2021, 08:16 AM   #1603
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,184
Default

Quote:
Originally Posted by cjunekim View Post
This is a different suggestion from our ongoing discussion on exclusive but all-off possible solution.

I found the EEL2 option quite flexible. However, the EelTransformation and EElCondition are not symmetrical.

Parameter variables such as p1 and p2 are allowed in EelCondition only. It could be useful if I can use it in EelTranformation as well. And conceptually, it seems more consistent to me.

Moreover, it doesn't seem to be too much of a change in the implementation(according to open-closed principle). What do you think?
I agree. Back then it was not trivial to implement this, that's why I didn't add it yet. Maybe now it became easier. Have to check.
helgoboss is online now   Reply With Quote
Old 09-26-2021, 10:59 AM   #1604
cjunekim
Human being with feelings
 
Join Date: Dec 2016
Posts: 255
Default

Quote:
Originally Posted by helgoboss View Post
1%, not 0.1% (important if you use "Active: When bank selected" because this assumes 100 banks). Although that doesn't explain your particular issue, you could still try it. Maybe the issue only occurs with certain numbers as result of a rounding problem (I will check when home).

Plus, if you want the toggle to work, you need to set target min to 0%.
Yes. 1%.

Actually, some people seem to use comma, not period, to denote a decimal point. But not me. I use period to denote the decimal point and comma for separating numbers.

To be clear,

1. midi button 1 to p1 : target (min,max) = (0%,1%)
2. midi button 2 to p1 : target (min,max) = (0%,2%)
3. midi button 3 to p1 : target (min,max) = (0%,3%)

I experimented with 1%, 5%, 10% and so on for each button, for example. However it failed. Maybe it has something to do with how toggle button works in realearn.
cjunekim is offline   Reply With Quote
Old 09-26-2021, 11:07 AM   #1605
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,184
Default

Quote:
Originally Posted by cjunekim View Post
Yes. 1%.

Actually, some people seem to use comma, not period, to denote a decimal point. But not me. I use period to denote the decimal point and comma for separating numbers.

To be clear,

1. midi button 1 to p1 : target (min,max) = (0%,1%)
2. midi button 2 to p1 : target (min,max) = (0%,2%)
3. midi button 3 to p1 : target (min,max) = (0%,3%)

I experimented with 1%, 5%, 10% and so on for each button, for example. However it failed. Maybe it has something to do with how toggle button works in realearn.
I was just about to write you:

Ha, now I see what you mean! Now I'm sure you've set up things exactly as I described, using 1%, 2%, and 3%. The line "target min,max = 0,1%" looked to me as if you would have set target min and max both to the same value of 0.1% (because in Germany we use "," instead of "."). But that was a misinterpretation on my side. Now I see you meant "min = 0%, max = 1%".

You are right, it doesn't work the way I said! I didn't take into consideration the way "Toggle buttons" works. It works in this way: If the target value is within the first half of the target min/max range, it's considered as "off" and will therefore be switched on (set to target max). If it's within the second half, it's considered as "on" and will therefore be switched off (set to target min). This is not quite what we need here. Also, the feedback will not be nice with this setting.

Here's something that works (copy, right click the header panel, "Paste 3 mappings", learn sources accordingly):

Code:
{
  "mappings": [
    {
      "id": "bd2a215b-3137-4853-b240-700262f713ef",
      "name": "Toggle bank 1",
      "source": {
        "category": "virtual",
        "isRegistered": false,
        "is14Bit": false,
        "oscArgIndex": 0,
        "controlElementType": "button"
      },
      "mode": {
        "maxStepSize": 0.05,
        "eelControlTransformation": "y = (y == 0.01) ? 0 : 0.01",
        "eelFeedbackTransformation": "x = (y == 0.01)",
        "buttonUsage": "press-only"
      },
      "target": {
        "fxAnchor": "this",
        "useProject": true,
        "moveView": true,
        "seekPlay": true,
        "oscArgIndex": 0
      }
    },
    {
      "id": "ed1c3046-3d0a-46b3-bbe1-3e7d50dc8c0c",
      "name": "Toggle bank 2",
      "source": {
        "category": "virtual",
        "isRegistered": false,
        "is14Bit": false,
        "oscArgIndex": 0,
        "controlElementType": "button",
        "controlElementIndex": 1
      },
      "mode": {
        "maxStepSize": 0.05,
        "eelControlTransformation": "y = (y == 0.02) ? 0 : 0.02",
        "eelFeedbackTransformation": "x = (y == 0.02)",
        "buttonUsage": "press-only"
      },
      "target": {
        "fxAnchor": "this",
        "useProject": true,
        "moveView": true,
        "seekPlay": true,
        "oscArgIndex": 0
      }
    },
    {
      "id": "c8bac401-ef0f-4e8b-b7bf-0753d79f561d",
      "name": "Toggle bank 3",
      "source": {
        "category": "virtual",
        "isRegistered": false,
        "is14Bit": false,
        "oscArgIndex": 0,
        "controlElementType": "button",
        "controlElementIndex": 2
      },
      "mode": {
        "maxStepSize": 0.05,
        "eelControlTransformation": "y = (y == 0.03) ? 0 : 0.03",
        "eelFeedbackTransformation": "x = (y == 0.03)",
        "buttonUsage": "press-only"
      },
      "target": {
        "fxAnchor": "this",
        "useProject": true,
        "moveView": true,
        "seekPlay": true,
        "oscArgIndex": 0
      }
    }
  ]
}
This solution makes use of control and feedback transformation. I'm now considering to adjust "Toggle buttons" mode in a way so that it acts just like these control/feedback formulas IF target min and max are set to the same value. Because if target min/max are the same, "Toggle buttons" doesn't make sense anyway the way it works now, so we could give this special target min/max constellation a new practical meaning.
helgoboss is online now   Reply With Quote
Old 09-27-2021, 07:29 AM   #1606
cjunekim
Human being with feelings
 
Join Date: Dec 2016
Posts: 255
Default

Quote:
Originally Posted by helgoboss View Post
I was just about to write you:

Ha, now I see what you mean! Now I'm sure you've set up things exactly as I described, using 1%, 2%, and 3%. The line "target min,max = 0,1%" looked to me as if you would have set target min and max both to the same value of 0.1% (because in Germany we use "," instead of "."). But that was a misinterpretation on my side. Now I see you meant "min = 0%, max = 1%".

You are right, it doesn't work the way I said! I didn't take into consideration the way "Toggle buttons" works. It works in this way: If the target value is within the first half of the target min/max range, it's considered as "off" and will therefore be switched on (set to target max). If it's within the second half, it's considered as "on" and will therefore be switched off (set to target min). This is not quite what we need here. Also, the feedback will not be nice with this setting.

Here's something that works (copy, right click the header panel, "Paste 3 mappings", learn sources accordingly):

Code:
{
  "mappings": [
    {
      "id": "bd2a215b-3137-4853-b240-700262f713ef",
      "name": "Toggle bank 1",
      "source": {
        "category": "virtual",
        "isRegistered": false,
        "is14Bit": false,
        "oscArgIndex": 0,
        "controlElementType": "button"
      },
      "mode": {
        "maxStepSize": 0.05,
        "eelControlTransformation": "y = (y == 0.01) ? 0 : 0.01",
        "eelFeedbackTransformation": "x = (y == 0.01)",
        "buttonUsage": "press-only"
      },
      "target": {
        "fxAnchor": "this",
        "useProject": true,
        "moveView": true,
        "seekPlay": true,
        "oscArgIndex": 0
      }
    },
    {
      "id": "ed1c3046-3d0a-46b3-bbe1-3e7d50dc8c0c",
      "name": "Toggle bank 2",
      "source": {
        "category": "virtual",
        "isRegistered": false,
        "is14Bit": false,
        "oscArgIndex": 0,
        "controlElementType": "button",
        "controlElementIndex": 1
      },
      "mode": {
        "maxStepSize": 0.05,
        "eelControlTransformation": "y = (y == 0.02) ? 0 : 0.02",
        "eelFeedbackTransformation": "x = (y == 0.02)",
        "buttonUsage": "press-only"
      },
      "target": {
        "fxAnchor": "this",
        "useProject": true,
        "moveView": true,
        "seekPlay": true,
        "oscArgIndex": 0
      }
    },
    {
      "id": "c8bac401-ef0f-4e8b-b7bf-0753d79f561d",
      "name": "Toggle bank 3",
      "source": {
        "category": "virtual",
        "isRegistered": false,
        "is14Bit": false,
        "oscArgIndex": 0,
        "controlElementType": "button",
        "controlElementIndex": 2
      },
      "mode": {
        "maxStepSize": 0.05,
        "eelControlTransformation": "y = (y == 0.03) ? 0 : 0.03",
        "eelFeedbackTransformation": "x = (y == 0.03)",
        "buttonUsage": "press-only"
      },
      "target": {
        "fxAnchor": "this",
        "useProject": true,
        "moveView": true,
        "seekPlay": true,
        "oscArgIndex": 0
      }
    }
  ]
}
This solution makes use of control and feedback transformation. I'm now considering to adjust "Toggle buttons" mode in a way so that it acts just like these control/feedback formulas IF target min and max are set to the same value. Because if target min/max are the same, "Toggle buttons" doesn't make sense anyway the way it works now, so we could give this special target min/max constellation a new practical meaning.

Wow! Thanks. I wasn't aware of buttonUsage option. That's useful!
cjunekim is offline   Reply With Quote
Old 09-28-2021, 01:35 PM   #1607
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,184
Default

Released ReaLearn 2.11.0-pre.2 (ReaPack installation instructions)

Changes:
- #365 Added "exclusive (on only)" options wherever appropriate in order to easily support exclusive toggle buttons (group interaction "inverse target value", track exclusivity, mapping/instance enable/disable exclusivity)
- #385 Added support for (N)RPN data increment/decrement messages
- #451 Added <New group> option to "Move to group" context menu actions
- #280 Added target "Track: Phase invert/normal"
- #280 Added target "Send: Automation mode"
- #280 Added target "Send: Mono/stereo"
- #280 Added target "Send: Phase invert/normal"
- #178 Added optional track dropdown to "Project: Invoke REAPER action" target (The target makes sure that this track is selected before executing the action. This makes it possible to combine ReaLearn's flexible track selection capabilities with the plethora of REAPER actions that work on the currently selected track.)
- #452 Improved "Toggle buttons" mode to support exclusive toggle button use cases (if target min is equal to target max, it now toggles between that specific value and zero)

@cjunekim FYI There are now many ways to make your exclusive button toggle scenarios work, including the first one that you came up with (using group interaction "Inverse target value (on only)").
helgoboss is online now   Reply With Quote
Old 09-29-2021, 09:05 AM   #1608
MusicIsMedicine
Human being with feelings
 
Join Date: Jun 2021
Posts: 8
Default

- #385 Added support for (N)RPN data increment/decrement messages

Thank you, so much, can't wait to try it out.
MusicIsMedicine is offline   Reply With Quote
Old 10-02-2021, 07:45 AM   #1609
r3sonant
Human being with feelings
 
Join Date: Oct 2019
Posts: 17
Default

Hello.

I wonder if anyone could help me.

I have just got a Behringer X-Touch Mini and I'm trying to create a Controller Preset but I can't get it to work how I want it.

For those that don't know, the X-Touch Mini has 8 clickable rotary encoders, 16 illuminated buttons and a fader.

I want to use the top row of 8 illuminated buttons to each select a separate group of 8 encoders.

I then want each rotary to have two states, switched by pressing the encoder.

I have set the first illuminated button to control Param1, then added in two instances of the first rotary encoder and set Modifier A to Param 1 off for the first and on for the second.

However, pushing the rotary encoder doesn't seem to switch between the two encoder states.

One was enabled and the other disabled after setting the When modifiers on/off. I updated to the pre build but that doesn't seem to work now either.

Any help would be greatly appreciated. I have read through the relevant parts of the documentation several times and think I have it setup correctly so not sure what I am doing wrong.

Thanks.
r3sonant is offline   Reply With Quote
Old 10-08-2021, 12:13 PM   #1610
Dex
Human being with feelings
 
Join Date: Sep 2017
Posts: 518
Default

I am trying to use ReaLearn with TouchOSC. So far, it is working great. I can send messages from TouchOSC to ReaLearn just fine, and feedback from ReaLearn to TouchOSC also works great.

There is one message type that I can't figure out how to send from ReaLearn to TouchOSC, though. When I change the track selection in Reaper, I would like to send three text messages to TouchOSC:
-One message to one text item containing the selected track name.
-One message to another text item containing the previous track's name.
-One message to a third text item containing the next track's name.

I cannot figure out how to send any of these three messages to TouchOSC. The only option I can even think to choose for the target argument is "string (ignored)," which indeed seems to be ignored (maybe not implemented yet?) and I cannot think of how to trigger it.

Any ideas? Thanks!
Dex is offline   Reply With Quote
Old 10-08-2021, 01:30 PM   #1611
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,184
Default

Quote:
Originally Posted by r3sonant View Post
Hello.

I wonder if anyone could help me.

I have just got a Behringer X-Touch Mini and I'm trying to create a Controller Preset but I can't get it to work how I want it.

For those that don't know, the X-Touch Mini has 8 clickable rotary encoders, 16 illuminated buttons and a fader.

I want to use the top row of 8 illuminated buttons to each select a separate group of 8 encoders.

I then want each rotary to have two states, switched by pressing the encoder.

I have set the first illuminated button to control Param1, then added in two instances of the first rotary encoder and set Modifier A to Param 1 off for the first and on for the second.

However, pushing the rotary encoder doesn't seem to switch between the two encoder states.

One was enabled and the other disabled after setting the When modifiers on/off. I updated to the pre build but that doesn't seem to work now either.

Any help would be greatly appreciated. I have read through the relevant parts of the documentation several times and think I have it setup correctly so not sure what I am doing wrong.

Thanks.
Discussion here: https://github.com/helgoboss/realearn/discussions/456

Quote:
Originally Posted by Dex View Post
I am trying to use ReaLearn with TouchOSC. So far, it is working great. I can send messages from TouchOSC to ReaLearn just fine, and feedback from ReaLearn to TouchOSC also works great.

There is one message type that I can't figure out how to send from ReaLearn to TouchOSC, though. When I change the track selection in Reaper, I would like to send three text messages to TouchOSC:
-One message to one text item containing the selected track name.
-One message to another text item containing the previous track's name.
-One message to a third text item containing the next track's name.

I cannot figure out how to send any of these three messages to TouchOSC. The only option I can even think to choose for the target argument is "string (ignored)," which indeed seems to be ignored (maybe not implemented yet?) and I cannot think of how to trigger it.

Any ideas? Thanks!
Your timing couldn't be better. I have implemented textual feedback (both for OSC string types and MIDI/Mackie-compatible displays) and want to publish it in a prerelease tomorrow.
helgoboss is online now   Reply With Quote
Old 10-09-2021, 04:38 PM   #1612
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,184
Default

Released ReaLearn 2.11.0-pre.3 (ReaPack installation instructions)

Changes:
- #448 Added support for textual feedback (usable with OSC String sources and MIDI hardware displays: Mackie, SiniCon)

Good news for everyone who wished that ReaLearn could send text to OSC devices or to those nice little (Mackie-compatible) hardware displays. It's supported now. For OSC, use a String argument type. For Mackie-compatible displays (MCU), use the brand-new MIDI Display source. For telling ReaLearn which text to send, search the user guide for "Textual feedback expression". You can send static text along with a plethora of target properties.

I used the Behringer X-Touch One control surface for testing MCU display support. Does anyone have other controllers with display and can test a bit?
helgoboss is online now   Reply With Quote
Old 10-09-2021, 09:22 PM   #1613
Dex
Human being with feelings
 
Join Date: Sep 2017
Posts: 518
Default

Using ReaLearn v2.11.0-pre.3 x86 on Windows 10.

The user guide says:

Quote:
Textual: By default, ReaLearn sends numeric feedback values to the controller. If you tick this checkbox, you can send textual feedback values instead.
I see the MIDI display source and OSC string source as options.

However, I do not see a "Textual" checkbox anywhere. I have looked all over for it. Can you post a screenshot indicating where it should be?
Dex is offline   Reply With Quote
Old 10-10-2021, 12:29 AM   #1614
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,184
Default

Quote:
Originally Posted by Dex View Post
Using ReaLearn v2.11.0-pre.3 x86 on Windows 10.

The user guide says:



I see the MIDI display source and OSC string source as options.

However, I do not see a "Textual" checkbox anywhere. I have looked all over for it. Can you post a screenshot indicating where it should be?
It's in the tuning section, next to the "Feedback transformation" field. It's displayed only if feedback is enabled for that mapping.
helgoboss is online now   Reply With Quote
Old 10-10-2021, 06:57 PM   #1615
Dex
Human being with feelings
 
Join Date: Sep 2017
Posts: 518
Default

I got it to work!

In case anyone is wondering, here is how you send the track name of the track just above the first selected track to a text item (in this case, /1/text5) in TouchOSC. Note that the label item in TouchOSC must be configured to receive messages, which they are not by default.

Dex is offline   Reply With Quote
Old 10-11-2021, 06:06 AM   #1616
BenjyO
Human being with feelings
 
Join Date: Nov 2011
Posts: 308
Default

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

Changes:
- #448 Added support for textual feedback (usable with OSC String sources and MIDI hardware displays: Mackie, SiniCon)

Good news for everyone who wished that ReaLearn could send text to OSC devices or to those nice little (Mackie-compatible) hardware displays. It's supported now. For OSC, use a String argument type. For Mackie-compatible displays (MCU), use the brand-new MIDI Display source. For telling ReaLearn which text to send, search the user guide for "Textual feedback expression". You can send static text along with a plethora of target properties.

I used the Behringer X-Touch One control surface for testing MCU display support. Does anyone have other controllers with display and can test a bit?
YES! Thank you, Benjamin. This is something I've really been missing in ReaLearn.
BenjyO is offline   Reply With Quote
Old 10-11-2021, 02:48 PM   #1617
calvin006
Human being with feelings
 
Join Date: Sep 2021
Posts: 4
Default

Thanks for the update. I'm using a Platform M+ with the display screen. I'm looking for basic display functionality, like having the track names above the faders, which move with the tracks as I move through channels and banks on the console. On the second line, it would be nice to have a readout of volume and pan value when these are adjusted.

I'm not sure how to achieve the above. Just as a test, I copied some of Dex's config but used MIDI Display as the source. With his target settings, the track name that is to the left of the selected track shows up on the display.

So at least feedback is being received but I'm a bit lost as to how I can achieve what I want.
calvin006 is offline   Reply With Quote
Old 10-11-2021, 03:28 PM   #1618
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,184
Default

Quote:
Originally Posted by calvin006 View Post
Thanks for the update. I'm using a Platform M+ with the display screen. I'm looking for basic display functionality, like having the track names above the faders, which move with the tracks as I move through channels and banks on the console. On the second line, it would be nice to have a readout of volume and pan value when these are adjusted.

I'm not sure how to achieve the above. Just as a test, I copied some of Dex's config but used MIDI Display as the source. With his target settings, the track name that is to the left of the selected track shows up on the display.

So at least feedback is being received but I'm a bit lost as to how I can achieve what I want.
I assume you have that bank/channel thing correctly set up in general already (I mean without the display functionality) by using <Dynamic> track selectors? If yes, you need to do the following for each channel:

1. Find one arbitrary mapping for the channel, e.g. the fader-to-volume mapping, duplicate it, select the Display source line 1 and set the textual feedback expression to {{target.track.name}}.
2. Find the fader-to-volume mapping for the channel, duplicate it, select the Display source line 2 and leave the textual feedback expression empty (in which case some nice textual default will be displayed, it's the same as writing {{target.text_value}}).
3. Do the same with the encoder-to-pan mapping.

You can read everything about the meaning of the placeholders in the user guide. Search for "Textual feedback expression:".

In case you use the "Mackie Control" or "iCON Platform M+" controller preset together with the "DAW control" main preset, I'm planning to update it for the next real release to include basic display function out-of-the-box. If you don't want to wait, you can do it manually of course.

Good to know that it works with the M+ display!
helgoboss is online now   Reply With Quote
Old 10-11-2021, 08:23 PM   #1619
calvin006
Human being with feelings
 
Join Date: Sep 2021
Posts: 4
Default

Quote:
Originally Posted by helgoboss View Post

In case you use the "Mackie Control" or "iCON Platform M+" controller preset together with the "DAW control" main preset, I'm planning to update it for the next real release to include basic display function out-of-the-box. If you don't want to wait, you can do it manually of course.
Thanks! I'll mess around with it and also keep an eye out for the full release. I do use the Platform M+ preset with the DAW control preset so having the basic display function baked in would be super helpful.
calvin006 is offline   Reply With Quote
Old 10-12-2021, 03:09 AM   #1620
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,184
Default

Released ReaLearn 2.11.0-pre.6 (ReaPack installation instructions)

Changes:
- #454 Added support for Raspberry Pi (Linux armv7 and Linux aarch64)
- #432 Improved auto-load preset functionality to work better with shell plug-ins, e.g. Waves (now by default uses plug-in name instead of file name to distinguish between the single plug-in types; in order for this to take effect, you need to remove each problematic link and reestablish it or edit the link and fill out the FX ID name yourself)
- Improved usability by disabling certain UI elements depending on the selected OSC argument type
helgoboss is online now   Reply With Quote
Old 10-19-2021, 11:12 AM   #1621
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,184
Default

Released ReaLearn 2.11.0-pre.9 (ReaPack installation instructions)

Changes:
- #448 Added text and background color support for some MIDI controller displays that have color capabilities (at the moment SiniCon E24 and Launchpad Pro)
- #448 Added support for SiniCon E24 display type protocol
- #448 Added basic support for displaying scrollable text on the Launchpad Pro (also supports text color)
- #448 Fixed possible flickering on LCDs by effectively preventing the same feedback message to be sent twice to the same source (duplicate prevention for real - mapping-independent, per source feedback element, not globally, making an exception of "Send feedback after control")
- #448 Fixed UI error in prerelease when switching from non-MIDI source to MIDI source
helgoboss is online now   Reply With Quote
Old 10-20-2021, 02:19 PM   #1622
CLVMTT
Human being with feelings
 
Join Date: Oct 2021
Location: Milan, Italy
Posts: 12
Default

Hi, I'm trying to figure out an odd behavior I get from my Platform X:
The faders (at the moment only track volume) maps and work perfectly while in pause or during playback, BUT when I press Play they all reset to center position (not zero db), then they work without any problem again.
Has anyone witnessed similar behavior?
I'm using Version 2.11.0 pre9, should I downgrade to 2.10.3?
Thanks
CLVMTT is offline   Reply With Quote
Old 10-21-2021, 10:27 PM   #1623
CLVMTT
Human being with feelings
 
Join Date: Oct 2021
Location: Milan, Italy
Posts: 12
Default

Quote:
Originally Posted by CLVMTT View Post
Hi, I'm trying to figure out an odd behavior I get from my Platform X:
The faders (at the moment only track volume) maps and work perfectly while in pause or during playback, BUT when I press Play they all reset to center position (not zero db), then they work without any problem again.
Has anyone witnessed similar behavior?
I'm using Version 2.11.0 pre9, should I downgrade to 2.10.3?
Thanks
I think I solved the issue, on the Midi Devices Preferences Tab I had the "Reset on: Play" checked, my bad!
Now Reaper won't send any Reset Midi Message on Play, but this could be useful for other device, maybe it could be fixed in the next update
Great work anyway Helgoboss
CLVMTT is offline   Reply With Quote
Old 10-22-2021, 12:15 AM   #1624
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,184
Default

Quote:
Originally Posted by CLVMTT View Post
I think I solved the issue, on the Midi Devices Preferences Tab I had the "Reset on: Play" checked, my bad!
Now Reaper won't send any Reset Midi Message on Play, but this could be useful for other device, maybe it could be fixed in the next update
Great work anyway Helgoboss
Interesting. Do you have control input set to a device or to <FX input>? Anyway, I will look into it. I vaguely remember that some new "All sounds off" feature was added in recent REAPER versions, could be related.
helgoboss is online now   Reply With Quote
Old 10-22-2021, 09:00 AM   #1625
foxAsteria
Human being with feelings
 
foxAsteria's Avatar
 
Join Date: Dec 2009
Location: Oblivion
Posts: 10,252
Default

Sorry, this must have been covered somewhere already but I simply can't discover how to get selected track monitoring feedback...surely I'm missing something obvious?

It's not a toggle and I don't find it in the Targets list, so how can I report that state to my OSC device?
__________________
foxyyymusic
foxAsteria is offline   Reply With Quote
Old 10-22-2021, 09:10 AM   #1626
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,184
Default

Quote:
Originally Posted by foxAsteria View Post
Sorry, this must have been covered somewhere already but I simply can't discover how to get selected track monitoring feedback...surely I'm missing something obvious?

It's not a toggle and I don't find it in the Targets list, so how can I report that state to my OSC device?
Input monitoring mode? Tape, auto and that stuff? Open an issue and I will create a target. Nobody requested it in all these years.

Oh, I requested it myself, but at the end I didn't need it: https://github.com/helgoboss/realearn/issues/192. I'll set it on high prio.
helgoboss is online now   Reply With Quote
Old 10-22-2021, 03:04 PM   #1627
foxAsteria
Human being with feelings
 
foxAsteria's Avatar
 
Join Date: Dec 2009
Location: Oblivion
Posts: 10,252
Default

Quote:
Originally Posted by helgoboss View Post
Oh, I requested it myself, but at the end I didn't need it: https://github.com/helgoboss/realearn/issues/192. I'll set it on high prio.
Lol, thanks! I'm surprised no one needed it...for me it's useful in setting up drum mics but I'll direct-monitor when I record.
__________________
foxyyymusic
foxAsteria is offline   Reply With Quote
Old 10-24-2021, 05:26 PM   #1628
foxAsteria
Human being with feelings
 
foxAsteria's Avatar
 
Join Date: Dec 2009
Location: Oblivion
Posts: 10,252
Default

Hey, I'm not at all sure how the OSC message feature works...

Can someone show for example how to send the name of a particular fx parameter? Or how about the selected track pan value?
__________________
foxyyymusic
foxAsteria is offline   Reply With Quote
Old 10-25-2021, 04:46 AM   #1629
BenjyO
Human being with feelings
 
Join Date: Nov 2011
Posts: 308
Default

Quote:
Originally Posted by foxAsteria View Post
Hey, I'm not at all sure how the OSC message feature works...

Can someone show for example how to send the name of a particular fx parameter? Or how about the selected track pan value?
Unless someone else chimes in, I might find some time to do that in a couple of hours.
BenjyO is offline   Reply With Quote
Old 10-25-2021, 08:07 AM   #1630
Sound asleep
Human being with feelings
 
Sound asleep's Avatar
 
Join Date: Nov 2009
Location: Montreal, Canada
Posts: 9,048
Default

Is there a way to setup sort of presets? One thing that might be very convenient, is to say, you setup your controller to work with a given plugin, or a set of tracks, and then you need to assign all of the controls to other targets for another task. It would be really convenient to be able to recall a preset for your assignments, like let's say you wanted to go back and tweak something you did.

What would also be insane is if you could have a project specific list of presets, and you could assign a button on your controller to cycle the list. Although, you'd really need a readout telling you what preset you have selected, if you're doing it that way, which may be extra complicated/impossible. What else might be cool is being able to assign presets to specific keypresses. Sort of like loadouts.

It would be crazy awesome if you could do that.

I should be getting my controller today or tomorrow. I'm definitely gonna dig deep into this when I do.
Sound asleep is offline   Reply With Quote
Old 10-25-2021, 04:53 PM   #1631
foxAsteria
Human being with feelings
 
foxAsteria's Avatar
 
Join Date: Dec 2009
Location: Oblivion
Posts: 10,252
Default

Quote:
Originally Posted by Sound asleep View Post
Is there a way to setup sort of presets?
Bread and butter, my friend.
__________________
foxyyymusic
foxAsteria is offline   Reply With Quote
Old 10-26-2021, 10:27 AM   #1632
Miscreant
Human being with feelings
 
Miscreant's Avatar
 
Join Date: Mar 2012
Posts: 375
Default

Hey Helgo, got a (hopefully quick) question for you.

I'm trying to use an expression pedal connected to my Yamaha Motif 7 synth to /toggle on and off/ a custom toggle action in Reaper. Since I am already using the Twister as a control input to the ReaLearn plugin on my Monitor FX, I have added a second instance of ReaLearn to my Monitor FX chain to handle my Motif as a distinct input.

The (expected) problem I am running into is that when I depress the expression pedal my custom toggle action is engaged, but when I release the pedal the custom toggle is disengaged. So to sustain the action (it's for a custom click track I use just to quickly play guitar to a metronome, which I want to be able to turn on/off), I have to hold down the expression pedal.

Clearly part of the issue here is the the expression pedal is received on CC64, and when it is depressed I get the value of 127 (on), and when it's not depressed I get the value of 0 (off). In other words, Reaper is not recognizing this expression pedal as a toggle.

I hoped I might be able to bypass this in ReaLearn. So in the Controller compartment I added a controller preset called Motif, and I added a mapping linking the expression pedal on CC64 to the custom action. Under Character I also chose 'Button', hoping this would override the expression pedal and turn it into a toggle/button controller.

Unfortunately, no dice.

Any help on how I can go about this?

*Bonus points if you know how I can restrict this controller to when I am looking at my arrange view. This way the expression pedal will not activate the custom action when, say, I am using the expression pedal to control a synth.

**EDIT: I just changed the 'Mode' to Toggle buttons (from Normal). This has gotten me halfway there: now when I depress and immediately release the expression pedal, the action continues to run in its ON state (i.e., my metronome keeps playing). But when I tap the expression pedal again to toggle the action OFF, it /reruns/ the action and gives me a second click track. Here's the kicker: when I hit the expression pedal /one more time/, it toggles this second action--and only this second action--OFF>

In other words: the first action does not turn off when I hit the expression pedal again, but the second action does.
Miscreant is offline   Reply With Quote
Old 10-26-2021, 02:52 PM   #1633
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,184
Default

Quote:
Originally Posted by foxAsteria View Post
Hey, I'm not at all sure how the OSC message feature works...

Can someone show for example how to send the name of a particular fx parameter? Or how about the selected track pan value?
Ingredients for the 1st dish:

- Source: OSC argument type "String"
- Tuning: Textual feedback with text expression "{{target.fx_parameter.name}}"
- Target: "FX: Set parameter value"

Ingredients for the 2nd dish:

- Source: OSC argument type "String"
- Tuning: Textual feedback with text expression "{{target.text_value}}" (or empty because that's the default placeholder)
- Target: "Track: Set pan" with Track <Selected>

Consult the user guide if you want to know what are the available placeholders for text expressions.

Quote:
Originally Posted by Sound asleep View Post
Is there a way to setup sort of presets? One thing that might be very convenient, is to say, you setup your controller to work with a given plugin, or a set of tracks, and then you need to assign all of the controls to other targets for another task. It would be really convenient to be able to recall a preset for your assignments, like let's say you wanted to go back and tweak something you did.

What would also be insane is if you could have a project specific list of presets, and you could assign a button on your controller to cycle the list. Although, you'd really need a readout telling you what preset you have selected, if you're doing it that way, which may be extra complicated/impossible. What else might be cool is being able to assign presets to specific keypresses. Sort of like loadouts.

It would be crazy awesome if you could do that.

I should be getting my controller today or tomorrow. I'm definitely gonna dig deep into this when I do.
Achievable in many ways (ordered from most recommended to least recommended ... but ultimately depends on what you want):

- Target "ReaLearn: Enable/disable instances" (in order to flexibly enable/disable ReaLearn instances - then each ReaLearn instance acts like what you call a "preset") ... available only in latest prereleases
- Target "ReaLearn: Enable/disable mappings" (in order to flexibly enable/disable ReaLearn mappings - then each set of mappings with the same tag acts like what you call a "preset") ... available only in latest prereleases
- Conditional activation: Make each mapping group have a different activation condition (then each group acts like what you call a "preset")

Please note, since you want a *project-specific* list of "presets", you don't actually need to use ReaLearn's built-in compartment presets feature (in your case main compartment presets). Compartment presets are only necessary if you want to share stuff between projects.

For further info, consider RTNM (read the nice manual .

Quote:
Originally Posted by Miscreant View Post
Hey Helgo, got a (hopefully quick) question for you.

I'm trying to use an expression pedal connected to my Yamaha Motif 7 synth to /toggle on and off/ a custom toggle action in Reaper. Since I am already using the Twister as a control input to the ReaLearn plugin on my Monitor FX, I have added a second instance of ReaLearn to my Monitor FX chain to handle my Motif as a distinct input.

The (expected) problem I am running into is that when I depress the expression pedal my custom toggle action is engaged, but when I release the pedal the custom toggle is disengaged. So to sustain the action (it's for a custom click track I use just to quickly play guitar to a metronome, which I want to be able to turn on/off), I have to hold down the expression pedal.

Clearly part of the issue here is the the expression pedal is received on CC64, and when it is depressed I get the value of 127 (on), and when it's not depressed I get the value of 0 (off). In other words, Reaper is not recognizing this expression pedal as a toggle.

I hoped I might be able to bypass this in ReaLearn. So in the Controller compartment I added a controller preset called Motif, and I added a mapping linking the expression pedal on CC64 to the custom action. Under Character I also chose 'Button', hoping this would override the expression pedal and turn it into a toggle/button controller.

Unfortunately, no dice.

Any help on how I can go about this?

*Bonus points if you know how I can restrict this controller to when I am looking at my arrange view. This way the expression pedal will not activate the custom action when, say, I am using the expression pedal to control a synth.

**EDIT: I just changed the 'Mode' to Toggle buttons (from Normal). This has gotten me halfway there: now when I depress and immediately release the expression pedal, the action continues to run in its ON state (i.e., my metronome keeps playing). But when I tap the expression pedal again to toggle the action OFF, it /reruns/ the action and gives me a second click track. Here's the kicker: when I hit the expression pedal /one more time/, it toggles this second action--and only this second action--OFF>

In other words: the first action does not turn off when I hit the expression pedal again, but the second action does.
"Toggle buttons" is the first ingredient. The second one is to set "Invoke" to "Absolute" (not "Trigger"). The third one is to make sure that the REAPER action that you picked is actually capable of switching between on and off. This is not under ReaLearn's influence. Which actions do you use?
helgoboss is online now   Reply With Quote
Old 10-26-2021, 09:20 PM   #1634
foxAsteria
Human being with feelings
 
foxAsteria's Avatar
 
Join Date: Dec 2009
Location: Oblivion
Posts: 10,252
Default

Ah, thank you helgoboss! Both dishes: delicious. Missing ingredient: string.

I'd just discovered the text expressions in the manual, but couldn't make them work for at least the last hour!
__________________
foxyyymusic
foxAsteria is offline   Reply With Quote
Old 10-26-2021, 09:57 PM   #1635
Sound asleep
Human being with feelings
 
Sound asleep's Avatar
 
Join Date: Nov 2009
Location: Montreal, Canada
Posts: 9,048
Default

[QUOTE=helgoboss;2491900]


Achievable in many ways (ordered from most recommended to least recommended ... but ultimately depends on what you want):

- Target "ReaLearn: Enable/disable instances" (in order to flexibly enable/disable ReaLearn instances - then each ReaLearn instance acts like what you call a "preset")[quote] amazing. I'm definitely doing this lol.

Quote:
- Target "ReaLearn: Enable/disable mappings" (in order to flexibly enable/disable ReaLearn mappings - then each set of mappings with the same tag acts like what you call a "preset") ... available only in latest prereleases
Sorry, I don't quite understand this. But it sounds interesting. And brings up a question. Maybe this is why this is option 2, but what happens if I enable 2 things that conflict? I guess that one control will modify 2 separate parameters. Could be dangerous lol.

Quote:
- Conditional activation: Make each mapping group have a different activation condition (then each group acts like what you call a "preset")
Good idea, cool feature that I'll definitely try and work into my workflow somehow if I can, but not exactly what I'm looking for in this instance. But thanks for the suggestion anyway.

Quote:
Please note, since you want a *project-specific* list of "presets", you don't actually need to use ReaLearn's built-in compartment presets feature (in your case main compartment presets). Compartment presets are only necessary if you want to share stuff between projects.
There is definitely at least one preset I will want to share globally.

Quote:
For further info, consider RTNM (read the nice manual .
ah, there's a manual. I will be reading it lol. Thanks.
Sound asleep is offline   Reply With Quote
Old 10-27-2021, 03:38 AM   #1636
pyrannial
Human being with feelings
 
Join Date: Jun 2020
Posts: 66
Default

I've just migrated to another device and wanted to continue using my ReaLearn setup. When I click on projection it says 'Please create a controller layout!'. From the manual I see it states 'All of these settings will be saved on your device, not in ReaLearn’s controller preset' however later it states 'Whenever you press the save button (floppy disk) in the app bar, the layout is saved - not on your specific device but as part of ReaLearn’s controller preset!'.

My question is, where are these settings saved so I can migrate them to my new device, and perhaps even edit them more easily with a text editor? Thanks
pyrannial is offline   Reply With Quote
Old 10-27-2021, 11:16 AM   #1637
Sound asleep
Human being with feelings
 
Sound asleep's Avatar
 
Join Date: Nov 2009
Location: Montreal, Canada
Posts: 9,048
Default

This is probably really basic, but, I've looked everywhere for how to do this, and can't seem to find it.

How do I assign midi controller to envelopes in reaper? The touch for learning doesn't seem to work. I also don't see a way to manually set it. didn't find anything in the manual about it either, when searching for word "envelope".

EDIT: I'm also having trouble being able to use the fader on my device in such a way that it only begins to affect the parameter once the values meet. As soon as I touch the fader the parameter jumps to whatever absolute value it's at on my controller. I haven't had any luck with any of the relative modes either. Those would be more for rotary, but they don't work with my rotary encoders either. When I switch direction the parameters keep changing in the same direction for a while before they decide to start going the other way.

Last edited by Sound asleep; 10-27-2021 at 11:40 AM.
Sound asleep is offline   Reply With Quote
Old 10-27-2021, 10:26 PM   #1638
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,184
Default

Quote:
Originally Posted by pyrannial View Post
I've just migrated to another device and wanted to continue using my ReaLearn setup. When I click on projection it says 'Please create a controller layout!'. From the manual I see it states 'All of these settings will be saved on your device, not in ReaLearn’s controller preset' however later it states 'Whenever you press the save button (floppy disk) in the app bar, the layout is saved - not on your specific device but as part of ReaLearn’s controller preset!'.

My question is, where are these settings saved so I can migrate them to my new device, and perhaps even edit them more easily with a text editor? Thanks
They are saved as part of the controller preset. In the REAPER resource folder at Data/helgoboss/realearn/preset/controller/*.json

Quote:
Originally Posted by Sound asleep View Post
This is probably really basic, but, I've looked everywhere for how to do this, and can't seem to find it.

How do I assign midi controller to envelopes in reaper? The touch for learning doesn't seem to work. I also don't see a way to manually set it. didn't find anything in the manual about it either, when searching for word "envelope".

EDIT: I'm also having trouble being able to use the fader on my device in such a way that it only begins to affect the parameter once the values meet. As soon as I touch the fader the parameter jumps to whatever absolute value it's at on my controller. I haven't had any luck with any of the relative modes either. Those would be more for rotary, but they don't work with my rotary encoders either. When I switch direction the parameters keep changing in the same direction for a while before they decide to start going the other way.
You never assign things to envelopes. You assign things to parameters (such as track volume) and then change the automation mode in REAPER to Write, Touch or Latch to record your parameter changes. This is not different from normal MIDI learn.

Not having jumps with faders can be achieved by setting Jump Max to a very small value. You can then experiment with takeover modes to get exactly the behavior you want.

The behavior you describe for rotary encoders: Sounds like you picked the wrong encoder mode in the source character.
helgoboss is online now   Reply With Quote
Old 10-28-2021, 12:36 AM   #1639
Sound asleep
Human being with feelings
 
Sound asleep's Avatar
 
Join Date: Nov 2009
Location: Montreal, Canada
Posts: 9,048
Default

Quote:
Originally Posted by helgoboss View Post
They are saved as part of the controller preset. In the REAPER resource folder at Data/helgoboss/realearn/preset/controller/*.json



You never assign things to envelopes. You assign things to parameters (such as track volume) and then change the automation mode in REAPER to Write, Touch or Latch to record your parameter changes. This is not different from normal MIDI learn.

Not having jumps with faders can be achieved by setting Jump Max to a very small value. You can then experiment with takeover modes to get exactly the behavior you want.

The behavior you describe for rotary encoders: Sounds like you picked the wrong encoder mode in the source character.
That's a significant bummer lol. So, to be clear, you're saying that if I would like to use my controller to automate volume, the only way to do it, is to automate my fader? I don't think I can send volume envelope to an FX slot on a channel for reaper either. I think a gain plugin would really be the only way, which is quite annoying. One of the rare times reaper has failed me. Those envelopes are the main things I'd want to control. Some are repeats from "hardware" on the tracks but others not.

But I see now why the absolute versions were the ones I needed lol. If the rotaries aren't endless, then you need absolute, really. Which I don't mind actually, as long as the latch functionality works, which I should be able to get working without too much trouble with the jump max setings you were talking about. I think I remember you saying that before actually. Thanks for the help!
Sound asleep is offline   Reply With Quote
Old 10-28-2021, 12:54 PM   #1640
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,184
Default

Quote:
Originally Posted by Sound asleep View Post
That's a significant bummer lol. So, to be clear, you're saying that if I would like to use my controller to automate volume, the only way to do it, is to automate my fader? I don't think I can send volume envelope to an FX slot on a channel for reaper either. I think a gain plugin would really be the only way, which is quite annoying. One of the rare times reaper has failed me. Those envelopes are the main things I'd want to control. Some are repeats from "hardware" on the tracks but others not.
Significant bummer? Why? If you want to use your controller to automate volume, you simply do this:

1. Map your fader to "Track: Set volume".
2. Enable automation mode Write, Touch or Latch in REAPER (or via another ReaLearn mapping).
3. Press play and move your fader.
4. Done. You have a volume envelope.
helgoboss is online now   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -7. The time now is 03:25 AM.


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