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

Reply
 
Thread Tools Display Modes
Old 07-04-2022, 12:27 PM   #2321
Sound asleep
Human being with feelings
 
Sound asleep's Avatar
 
Join Date: Nov 2009
Location: Montreal, Canada
Posts: 9,073
Default

Quote:
Originally Posted by Arthur McArthur View Post
Afaik the best way is to insert a ReaLearn instance on each track that you want to save as a template, with the track target as <this>.
Thanks for the idea, it's a good one, but unfortunately for reasons to do with my workflow, it's not really a workable solution for me to add FX to the FX track. if I could make it sort of "hidden" as in I wouldn't see it, and reaper would ignore its existence unless I unhide the hidden FX, then I'd be down for sure. But as it is, I would need another way, unfortunately.
__________________
Slava Ukraini
Sound asleep is offline   Reply With Quote
Old 07-04-2022, 01:11 PM   #2322
Arthur McArthur
Human being with feelings
 
Arthur McArthur's Avatar
 
Join Date: Sep 2016
Location: Toronto
Posts: 749
Default

Perhaps try adding it to the input FX chain?
Arthur McArthur is offline   Reply With Quote
Old 07-05-2022, 11:09 AM   #2323
Sound asleep
Human being with feelings
 
Sound asleep's Avatar
 
Join Date: Nov 2009
Location: Montreal, Canada
Posts: 9,073
Default

Quote:
Originally Posted by Arthur McArthur View Post
Perhaps try adding it to the input FX chain?
input FX chain? wdym?
__________________
Slava Ukraini
Sound asleep is offline   Reply With Quote
Old 07-06-2022, 06:10 AM   #2324
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,199
Default

Quote:
Originally Posted by Sound asleep View Post
does track ID save if you make a track template?

I always have track templates for all my instruments. It would be really cool if I could set certain tracks so that, whenever I load that template, the record arm will automatically be associated with a given button on my controller.

Right now I might use track name, but, I would like the name to be flexible, ideally.

Not sure if Track ID saves with a track template, or if there's a better way?
Did you actually try it? Does it save/load the track ID or not? I would guess that not because REAPER needs to make sure that track IDs stay unique, so latest if you try to insert the same track template twice, the resulting track would for sure get another ID (or at least I would hope so).

If not, I think using "By name" is still your best bet. If REAPER would have something like key-value pairs or tags assignable to tracks, that would be cool. Then you could name things as you want and ReaLearn could look instead for a certain value/tag (could also be used for automatically setting colors etc.). But I'm not aware of such a feature.
helgoboss is offline   Reply With Quote
Old 07-06-2022, 06:11 AM   #2325
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,199
Default ReaLearn 2.13.0 is here

Released ReaLearn 2.13.0 (ReaPack installation instructions)

Changes:
- Internal change: Migrate to Rust 1.61
- #392 Added target-based conditional activation
- #394 Added target "ReaLearn: Take mapping snapshot"
- #358 Added "Keyboard" source
- #161 Added new "Instance track" concept, a corresponding track selector &lt;Instance> and a way to set the instance track (this enables many new scenarios such as track pinning)
- #228 Added new "Instance FX" concept, a corresponding FX selector &lt;Instance> and a way to set the instance FX (this enables many new scenarios such as FX pinning)
- #468 Added absolute mode "Make relative" for turning absolute fader/knob movements into relative target adjustments
- #457 Added absolute mode "Performance control" for emulating the behavior of a typical soft synth modulation matrix mapping
- #518 Added source "Timer" for repeated triggering of arbitrary targets (you can find it in source category "REAPER", can for example be used to repeatedly send a particular OSC message, which is a precondition to support Behringer X32 OSC)
- #579 Added new source "ReaLearn parameter" in source category "REAPER" (for controlling targets with ReaLearn's automatable parameters itself)
- #576 Added initial accessibility (Thanks a lot to AZSlow3 for his contribution!)
- #599 Added possibility to address an FX instance relative to the current ReaLearn instance by using dynamic FX expression variable this_fx_index
- #612 Added instance_track_index and instance_fx_index variables to dynamic expressions (allows us cycling through tracks/FX while pinning them as instance track/FX)
- #228 Added "FX" target (analogously to "Track" target, well-suited for text feedback concerning a particular FX)
- #593 Added possibility to modulate ReaLearn target values and smooth transitions by making the rel_time variable available in control transformation formulas (read more on the issue tracker or in the user guide)
- #578 Added "ReaLearn: Dummy" target
- #584 Added support for Mackie Extender (XT) displays
- #572 Added option to log target control values (available in header panel context menu)
- #42 Added possibility to target FX parameters shown in track control panel by using the new variables tcp_fx_indexes and tcp_fx_parameter_indexes in dynamic FX and FX parameter expressions
- #556 Added context menu action "Dry-run Lua script from clipboard"
- #557 Added support for importing JSON presets via "Import from clipboard"
- #559 Added possibility to write MIDI scripts in Lua
- #561 Added possibility to map text feedback to numeric source values (API-only, feedback_value_table)
- #570 Added new activation condition type "Expression" (which lets one use the same expression language in activation conditions that's also used for dynamic selectors)
- #209 Added comprehensive support for discrete ReaLearn parameters (now you can use integers instead of only floating pointer numbers between 0.0 and 1.0)
- #474 Added target "FX parameter: Set automation touch state"
- #474 Added target "Send: Set automation touch state"
- #192 Added target "Track: Set monitoring mode"
- #548 Added support for instance-specific "FX-to-preset links" (making it possible to distinguish between different controllers when using "Auto-load: Depending on focused FX")
- #403 Added support for OSC value ranges other than 0.0 to 1.0
- #403 Added support for OSC type tags Int and Long
- #358 Added new context menu action "Named listed mappings after source"
- #332 Added limited support for offline rendering (works now with REAPER >= v6.52+dev0323, limited to controlling FX parameters on the same track)
- #501 Added option in context menu to log not just real but also incoming/outgoing virtual control elements and values (very useful for debugging mappings)
- #539 Added invocation mode "Absolute (7-bit)" to target "Project: Invoke REAPER action" (for controlling actions that don't correctly interpret 14-bit values, e.g. "SWS/SM: Live Config #1 - Apply config (MIDI/OSC only)")
- #504 Added plug'n'play for MIDI devices, also on Windows (automatically resends all feedback shortly after MIDI device plugged in without further user interaction)
- #544 Added John's presets for Behringer MOTÖR and FCB1010
- #336 Added clip engine to be used by upcoming Playtime 2
- #526 Improved target "MIDI: Send message" by lifting all previous restrictions when using destination "FX output" (Yes, you can now play your VSTs via OSC!)
- #540 Improved precision for entering and displaying percentages and dB to 4 fractional digits (e.g. useful for values in value sequences)
- #530 Improved error reporting by including the name of the channel in case a channel ran full
- #336 Improved ReaLearn plug-in topology by removing output pins (since ReaLearn doesn't output any audio streams)
- #358 Improved keyboard source significantly (save/load, more reliable key catching, catching of modifier-only key presses, keystroke normalization for better cross-platform experience, portability warnings)
- #549 Improved selectors "All by name" and "All selected" by allowing combinatorial explosion (you can now easily target many FX, FX parameters and sends on many tracks with just one target ... powerful, use with caution!)
- #551 Improved OSC by using one socket for sending and receiving OSC messages (makes "respond to sender" possible, used for example by Behringer XR mixers)
- #550 Improved user interface on macOS by taking up less vertical screen space (and a tiny bit less horizontal one, too)
- #550 Improved (or made worse?) user interface for macOS light mode by using an ugly but at least bright scrollbar
- #209 Improved bank-based conditional activation by making the number of banks configurable (by entering a value count for the corresponding ReaLearn parameter)
- #209 Improved performance when automating ReaLearn parameters by not processing value updates if value didn't change
- #403 Improved user interface layout for OSC source and target "OSC: Send message"
- #457 Improved dropdown menu for choosing an absolute mode by adding "NOT APPLICABLE" if the mode doesn't make sense under the current conditions
- Temporarily switched of auto-correction of absolute modes to see if users miss it or we can just throw it out
- #589 Improved usability by reducing height of mapping panel on Windows and macOS (also vastly improved GUI dialog development tooling to gain more flexibility for GUI modifications)
- #571 Improved wording of log actions and log messages
- #583 Improved usability by using text field to enter marker/region position
- #577 Improved accuracy when using relative mode with continuous target by not exceeding target min/max
- #188 Improved "Auto-load preset" feature to be more generic. It now works on the current instance FX instead of just on the currently focused FX (allows much more flexible auto-loading)
- #613 Improved usability by making trigger-like targets controllable with encoders (by default, each encoder increment/decrement will trigger the target)
- Improved virtual source label in mapping row
- #394 Improved target "ReaLearn: Load mapping snapshot" to be able to load manually taken mapping snapshots and set default values
- #619 Improved error reporting if session could not be restored (now logs session JSON)
- #442 Improved usability by making None the default source and dummy target the default target
- #589 Improved GUI dimensions on Linux, Windows and macOS
- #501 Improved virtual feedback message logging by logging them even if no match found
- #209 Improved bank-based conditional activation by showing value labels of discrete parameters as bank names
- #569 Improved projection by making it possible to use without saving a controller preset (projection widget settings are now saved together with the ReaLearn instance)
- Improved UI by adding link to list of tested controllers in help menu
- Improved UI by refreshing input/output dropdowns on MIDI device changes
- #619 Fixed backward compatibility to some old presets that use JSON null instead of omitting properties
- #620 Fixed learning/filtering for Arturia encoders in relative mode
- #621 Fixed accumulated control and possible errors after rendering
- #614 Fixed cut-off MIDI device names
- #615 Fixed error 'Only one of step_size_interval and step_factor_interval can be set' on Lua import
- #607 Fixed "Paste mappings (replace all in group)" for default group
- #553 Fixed long-standing serious GUI lags when modifying multiple tracks at once
- #560 Fixed target incorrect track peaks when using "Track: Peak" target with multi-channel tracks (Thanks a lot to AlbertoV5's contribution!)
- #582 Fixed missing update when changing FX in FX-related targets
- #588 Fixed missing text feedback updates when using placeholder target.fx.name and target.fx.index
- #594 Fixed "channel full" messages on high load (e.g. selecting many tracks at once) and improved initial memory consumption
- #595 Fixed error when using plug-ins with non-UTF8 names
- #563 Fixed feedback for virtual controller mappings by sending "Off" when not in use
- #565 Fixed feedback for virtual controller mappings if they are inactive
- #566 Fixed missing feedback on activation changes when replacing all parameters
- #537 Fixed bug that caused enabling/disabling ReaLearn to have no effect when on monitoring FX chain
- #542 Fixed white background color when using dark SWELL settings on Linux (by not enforcing any background color at all)
- #358 Fixed bug in target "MIDI: Send message" that made repeated sending of the same value have no effect with some configurations
- #336 Fixed sometimes missing text feedback updates for clip seek target and some other targets
- #336 Fixed some potential errors when using "Copy as Lua"
- #527 Fixed bug when combining conditional activation with single press fire mode (modifier firing unexpectedly)
- #336 Removed most of the support for the experimental legacy clip targets (replaced with the new clip engine, which is not completely compatible with the experimental legacy clip targets)
helgoboss is offline   Reply With Quote
Old 07-06-2022, 02:13 PM   #2326
Sound asleep
Human being with feelings
 
Sound asleep's Avatar
 
Join Date: Nov 2009
Location: Montreal, Canada
Posts: 9,073
Default

Quote:
Originally Posted by helgoboss View Post
Did you actually try it? Does it save/load the track ID or not? I would guess that not because REAPER needs to make sure that track IDs stay unique, so latest if you try to insert the same track template twice, the resulting track would for sure get another ID (or at least I would hope so).
good point. I'm not really sure what track ID is, how it is used or anything like that. If they all need to be unique all the time, I would say you're probably right, unless they keep creating completely unique
IDs with some long string of characters.
But you're right, if templates copied that, things looking for unique tracks would break.

Quote:
If not, I think using "By name" is still your best bet. If REAPER would have something like key-value pairs or tags assignable to tracks, that would be cool. Then you could name things as you want and ReaLearn could look instead for a certain value/tag (could also be used for automatically setting colors etc.). But I'm not aware of such a feature.

Ya, I was thinking something like that might be cool. I think I might keep a set of names I consistently use for certain things. I just wish there was a way to make sure only one thing could have that name. For example, I will have a realearn entry that sets record arm to the track named "Keys R" that's cool, works great. That makes things a little bit easier for me in some ways. I just need to make sure I remove the R when I don't want it anymore.
__________________
Slava Ukraini
Sound asleep is offline   Reply With Quote
Old 07-07-2022, 09:54 AM   #2327
foxAsteria
Human being with feelings
 
foxAsteria's Avatar
 
Join Date: Dec 2009
Location: Oblivion
Posts: 10,272
Default

Now that is a changelog!!
__________________
foxyyymusic
foxAsteria is offline   Reply With Quote
Old 07-07-2022, 10:10 AM   #2328
mozart999uk
Human being with feelings
 
Join Date: Nov 2010
Posts: 1,748
Default

Quote:
Originally Posted by helgoboss View Post
Wow!
mozart999uk is offline   Reply With Quote
Old 07-07-2022, 11:51 AM   #2329
Fleeesch
Human being with feelings
 
Fleeesch's Avatar
 
Join Date: Apr 2011
Location: Germany
Posts: 177
Default

Quote:
Originally Posted by helgoboss View Post
#474 Added target "FX parameter: Set automation touch state"
Oh boy, just in time when I'm getting myself my first set of motor faders. Now that's christmas in summer!
Fleeesch is offline   Reply With Quote
Old 07-08-2022, 09:47 PM   #2330
paat
Human being with feelings
 
Join Date: Oct 2016
Posts: 225
Default

With ReaLearn 2.13, I am getting really bad performance when using a technique that I previously used.

I used to be able to smoothly scroll the encoder on my MFT and navigate between the tracks in a single folder. Now it seems like Reaper / Realearn choke up - it will move a few times, and then I'll get a beach ball, and then it will maybe do one more.

I've simplified it a bit by using a button instead of an encoder. I see the same behavior: if I hit the button 15 times quickly, it will switch tracks a couple times, beach ball, and then switch once more.

When I log virtual control messages, I see a handful of matched events, then a beach ball, then some more matched events show up, then another beach ball.

Anyway, I'm not sure how to diagnose this performance issue. The best idea I have at this point is to re-install the version from last year (whatever was available on 2021-07-04) and bisect versions that have been released since then.

I'm open to ideas, as I'd really like to get this working again.
paat is offline   Reply With Quote
Old 07-08-2022, 10:17 PM   #2331
paat
Human being with feelings
 
Join Date: Oct 2016
Posts: 225
Default

Quote:
Originally Posted by paat View Post
With ReaLearn 2.13, I am getting really bad performance when using a technique that I previously used.
Alright, I tried an older version - and got a similar result.

It turns out that the performance is really bad when the mapping window is open. I closed the mapping window and it scrolled smoothly again.

Not sure what's up with that, or if it's documented anywhere... but it was very confusing to me.

Anyway, glad I got it working again. And the "with track" option cuts out two of my mappings and makes it more reliable to boot! Very cool.
paat is offline   Reply With Quote
Old 07-09-2022, 02:51 AM   #2332
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,199
Default

Quote:
Originally Posted by paat View Post
It turns out that the performance is really bad when the mapping window is open. I closed the mapping window and it scrolled smoothly again.

Not sure what's up with that, or if it's documented anywhere... but it was very confusing to me.
That's normal. The mapping window subscribes to lots of events and reacts to them in some way. Could probably be optimized, but since the ReaLearn GUI is only necessary for building mappings, I would rather invest the efforts in something else.
helgoboss is offline   Reply With Quote
Old 07-10-2022, 02:54 AM   #2333
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,199
Default

Released ReaLearn 2.13.1 (ReaPack installation instructions)

Changes:
- #624 Fixed Lua import/export by defaulting to This FX again when using FX targets (instead of Focused)
helgoboss is offline   Reply With Quote
Old 07-12-2022, 01:51 AM   #2334
mozart999uk
Human being with feelings
 
Join Date: Nov 2010
Posts: 1,748
Default

Are there any videos explaining the "instance track/ fx"?
mozart999uk is offline   Reply With Quote
Old 07-12-2022, 02:00 AM   #2335
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,199
Default

Quote:
Originally Posted by mozart999uk View Post
Are there any videos explaining the "instance track/ fx"?
Not yet.

For now, I think the important thing to know is that you can change the instance track using the "Track" target and the instance FX using the "FX" target. Then just use the <Instance> track/FX selectors in other mappings.

Anything else you want to know?
helgoboss is offline   Reply With Quote
Old 07-12-2022, 03:49 AM   #2336
mozart999uk
Human being with feelings
 
Join Date: Nov 2010
Posts: 1,748
Default

Quote:
Originally Posted by helgoboss View Post
Not yet.

For now, I think the important thing to know is that you can change the instance track using the "Track" target and the instance FX using the "FX" target. Then just use the <Instance> track/FX selectors in other mappings.

Anything else you want to know?
Thanks for such a quick response.

Fraid I don't quite get that but it's me needing to research more rather than your explanation 😊
mozart999uk is offline   Reply With Quote
Old 07-12-2022, 01:00 PM   #2337
DeBased
Human being with feelings
 
DeBased's Avatar
 
Join Date: Jun 2010
Location: UK
Posts: 412
Default

hey, new to RL. I'm just trying to cycle through specific tracks from a single momentary MIDI button (to unmute them exclusively on each step), and can't figure this out.

I guess I set 'Track: Mute/Unmute' with a momentary button source, 'incremental button' mode, and a value sequence that contains the track positions (or can you use names?).

But how do I get the action to reference the tracks from the value sequence? I've been over the manual (which I find confusing) and Google and I'm obviously missing something simple.
__________________
Reaper5, Win10Pro, Ryzen 5950x/64GB, RME UFX/BabyFace Pro, Behringer X-Touch
- my true 'global' (project-tab independent) Send/Receive FX
- my Behringer X-touch mods + XCtrl mode for CSI (coloured scribble strips!)
DeBased is offline   Reply With Quote
Old 07-12-2022, 02:51 PM   #2338
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,199
Default

Quote:
Originally Posted by DeBased View Post
hey, new to RL. I'm just trying to cycle through specific tracks from a single momentary MIDI button (to unmute them exclusively on each step), and can't figure this out.

I guess I set 'Track: Mute/Unmute' with a momentary button source, 'incremental button' mode, and a value sequence that contains the track positions (or can you use names?).

But how do I get the action to reference the tracks from the value sequence? I've been over the manual (which I find confusing) and Google and I'm obviously missing something simple.
Ah no, you are on the wrong "track" the "Track: Mute/unmute" target works on a specific track, not on the set of *all* tracks. It's an on/off target, nothing that you could cycle through, so value sequences don't make sense with it ... the only possible values are on or off.

Apart from that, you are not missing anything obvious. ReaLearn just doesn't have a built-in target to cycle through all tracks *unmuting* them (quite uncommon thing). It has a similar target "Navigate within tracks" which cycles through tracks *selecting* them.

You can achieve what you want by writing a simple "Unmute next track" ReaScript which mutes the currently unmuted track and unmutes the next one ... and trigger this ReaScript using the target "Project: Invoke REAPER action".
helgoboss is offline   Reply With Quote
Old 07-12-2022, 03:48 PM   #2339
DeBased
Human being with feelings
 
DeBased's Avatar
 
Join Date: Jun 2010
Location: UK
Posts: 412
Default

Quote:
Originally Posted by helgoboss View Post
Ah no, you are on the wrong "track"
, I figured it out. this is for a live project, which contains a 'Songs' folder, with each song in a sub-folder. I only have a single footswitch pedal free to switch between songs, so I need to switch round-robin style, unmuting the next song (exclusively) on each press, and then cycle around.

(what was confusing me is that the Glue section & Value sequence are still shown with the track-specific targets, even though they have no effect there)

this works (without scripts) - for the same momentary CC:

Mapping #1: 'Project: Navigate between tracks', 'incremental button', with the Value sequence set to each song folder's track position (being able to use track names would be great here, so the project doesn't break if you change track order) + 'Wrap' enabled.

Mapping #2: 'Track: Mute/Unmute' -> '<Selected>' with 'Exclusive: Within Folder'


so for anyone following along, you select the track first (for which the value sequence works), then apply what you want to it with the next mapping(s).
__________________
Reaper5, Win10Pro, Ryzen 5950x/64GB, RME UFX/BabyFace Pro, Behringer X-Touch
- my true 'global' (project-tab independent) Send/Receive FX
- my Behringer X-touch mods + XCtrl mode for CSI (coloured scribble strips!)

Last edited by DeBased; 07-12-2022 at 03:56 PM.
DeBased is offline   Reply With Quote
Old 07-12-2022, 07:58 PM   #2340
Dex
Human being with feelings
 
Join Date: Sep 2017
Posts: 518
Default

Quote:
Originally Posted by paat View Post
And the "with track" option cuts out two of my mappings and makes it more reliable to boot! Very cool.
Sounds interesting. Can you elaborate?
Dex is offline   Reply With Quote
Old 07-13-2022, 02:14 AM   #2341
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,199
Default

Quote:
Originally Posted by DeBased View Post
, I figured it out. this is for a live project, which contains a 'Songs' folder, with each song in a sub-folder. I only have a single footswitch pedal free to switch between songs, so I need to switch round-robin style, unmuting the next song (exclusively) on each press, and then cycle around.

(what was confusing me is that the Glue section & Value sequence are still shown with the track-specific targets, even though they have no effect there)

this works (without scripts) - for the same momentary CC:

Mapping #1: 'Project: Navigate between tracks', 'incremental button', with the Value sequence set to each song folder's track position (being able to use track names would be great here, so the project doesn't break if you change track order) + 'Wrap' enabled.

Mapping #2: 'Track: Mute/Unmute' -> '<Selected>' with 'Exclusive: Within Folder'


so for anyone following along, you select the track first (for which the value sequence works), then apply what you want to it with the next mapping(s).
Oh right, didn't think of that. Good idea.

I overlooked that you want to cycle through very specific tracks, not all. There's a better solution in that case! Your solution breaks as soon as you reorder tracks or even just add a track (because internally, the numbers you enter in "Value sequence" are percentages, not discrete track numbers).

The better option involves target "ReaLearn: Navigate within group":

1. Add a group, let's call it "Song tracks".
2. Add a "Track: Mute/unmute" mapping for each song track in that group. You can address the track by name or even by ID!
3. In another group (e.g. the default group), map your button to target "ReaLearn: Navigate within group" with mode "Incremental button".

*Issue for now:* It mutes the track, not unmutes it. You can't use "Revert" because "ReaLearn: Navigate within group" operates directly on the mapping targets. But I'll add an "Unmute" option to the mute target later today (I have a similar use case actually).

Here's an example of what I mean mapping this to the up/down keys of your computer keyboard.

1. Copy that code
2. Press "Import from clipboard"
3. Choose source "Computer keyboard".

Code:
{
    kind = "MainCompartment",
    value = {
        groups = {
            {
                id = "_yLvzhjIBz-uAgita3kLq",
                name = "Song tracks",
            },
        },
        mappings = {
            {
                id = "w99GCAG4pN95gN-6eWyyP",
                name = "Previous",
                source = {
                    kind = "Key",
                    keystroke = {
                        modifiers = 1,
                        key = 38,
                    },
                },
                glue = {
                    absolute_mode = "IncrementalButton",
                    reverse = true,
                    wrap = true,
                    step_size_interval = {0.5, 0.5},
                    fire_mode = {
                        kind = "AfterTimeoutKeepFiring",
                        rate = 200,
                    },
                },
                target = {
                    kind = "CycleThroughGroupMappings",
                    exclusivity = "Exclusive",
                    group = "_yLvzhjIBz-uAgita3kLq",
                },
            },
            {
                id = "kdJfXX1WDsYOUE_54RG5i",
                name = "Next",
                source = {
                    kind = "Key",
                    keystroke = {
                        modifiers = 1,
                        key = 40,
                    },
                },
                glue = {
                    absolute_mode = "IncrementalButton",
                    wrap = true,
                    step_size_interval = {0.5, 0.5},
                    fire_mode = {
                        kind = "AfterTimeoutKeepFiring",
                        rate = 200,
                    },
                },
                target = {
                    kind = "CycleThroughGroupMappings",
                    exclusivity = "Exclusive",
                    group = "_yLvzhjIBz-uAgita3kLq",
                },
            },
            {
                id = "1NZ8RJf-uv2gdmzlHBqOE",
                name = "Song 1",
                group = "_yLvzhjIBz-uAgita3kLq",
                glue = {
                    reverse = true,
                    step_size_interval = {0.01, 0.05},
                    step_factor_interval = {1, 5},
                },
                target = {
                    kind = "TrackMuteState",
                    track = {
                        address = "ByName",
                        name = "Song 1",
                    },
                },
            },
            {
                id = "8Pp3pyjDqLMZvS_wQ7pR4",
                name = "Song 2",
                group = "_yLvzhjIBz-uAgita3kLq",
                glue = {
                    reverse = true,
                    step_size_interval = {0.01, 0.05},
                    step_factor_interval = {1, 5},
                },
                target = {
                    kind = "TrackMuteState",
                    track = {
                        address = "ByName",
                        name = "Song 2",
                    },
                },
            },
            {
                id = "8DhHG2djkvxpl5_orwg-h",
                name = "Song 3",
                group = "_yLvzhjIBz-uAgita3kLq",
                glue = {
                    reverse = true,
                    step_size_interval = {0.01, 0.05},
                    step_factor_interval = {1, 5},
                },
                target = {
                    kind = "TrackMuteState",
                    track = {
                        address = "ByName",
                        name = "Song 3",
                    },
                },
            },
        },
    },
}
If you don't just want to associate track mute/unmute state with your song but other things as well, there's an even better way involving mapping snapshots. Let me know if you want to know more about this.
helgoboss is offline   Reply With Quote
Old 07-13-2022, 06:26 AM   #2342
DeBased
Human being with feelings
 
DeBased's Avatar
 
Join Date: Jun 2010
Location: UK
Posts: 412
Default

Quote:
Originally Posted by helgoboss View Post
I overlooked that you want to cycle through very specific tracks, not all. There's a better solution in that case! Your solution breaks as soon as you reorder tracks or even just add a track (because internally, the numbers you enter in "Value sequence" are percentages, not discrete track numbers).
that's right, but being able to enter track names into the value sequence would avoid that, eg. "Song Name 1", "Song Name 2", "Song Name3". It also would keep the track list neatly all in one mapping (easy to maintain).


Quote:
The better option involves target "ReaLearn: Navigate within group":
<snip>
*Issue for now:* It mutes the track, not unmutes it. You can't use "Revert" because "ReaLearn: Navigate within group" operates directly on the mapping targets. But I'll add an "Unmute" option to the mute target later today (I have a similar use case actually).
cool, I'll try it later. would unmuting each track also have the option to auto-mute the others in the same folder, like Track: Mute/Unmute does? that's what I need (it obviously saves CPU resources + means I can just route all my inputs to all songs simultaneously, without needing to automate their sends for each song).
__________________
Reaper5, Win10Pro, Ryzen 5950x/64GB, RME UFX/BabyFace Pro, Behringer X-Touch
- my true 'global' (project-tab independent) Send/Receive FX
- my Behringer X-touch mods + XCtrl mode for CSI (coloured scribble strips!)
DeBased is offline   Reply With Quote
Old 07-13-2022, 07:04 AM   #2343
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,199
Default

Quote:
Originally Posted by DeBased View Post
that's right, but being able to enter track names into the value sequence would avoid that, eg. "Song Name 1", "Song Name 2", "Song Name3". It also would keep the track list neatly all in one mapping (easy to maintain).
Probably not going to happen any time soon. Value sequences are for numeric values and value ranges only and at the moment always work as percentages. It would be a major headache extending this to support strings and make ReaLearn unnecessarily complex ... and even then it would just support "By name", nothing else. The "one mapping per song" method is much better. If you want maintainability by writing text, Lua is the way to go. Then you can write something like the following to automatically generate the desired mappings:

Code:
songs = { "Song 1", "Song 2", "Song 3" }
Quote:
Originally Posted by DeBased View Post
cool, I'll try it later. would unmuting each track also have the option to auto-mute the others in the same folder, like Track: Mute/Unmute does? that's what I need (it obviously saves CPU resources + means I can just route all my inputs to all songs simultaneously, without needing to automate their sends for each song).
Yes. It would work just like Mute but do the opposite.
helgoboss is offline   Reply With Quote
Old 07-13-2022, 12:29 PM   #2344
DeBased
Human being with feelings
 
DeBased's Avatar
 
Join Date: Jun 2010
Location: UK
Posts: 412
Default

Quote:
Originally Posted by helgoboss View Post
Probably not going to happen any time soon. Value sequences are for numeric values and value ranges only and at the moment always work as percentages.
<snip>
Yes. It would work just like Mute but do the opposite.
awesome, thanks @helgoboss .
__________________
Reaper5, Win10Pro, Ryzen 5950x/64GB, RME UFX/BabyFace Pro, Behringer X-Touch
- my true 'global' (project-tab independent) Send/Receive FX
- my Behringer X-touch mods + XCtrl mode for CSI (coloured scribble strips!)
DeBased is offline   Reply With Quote
Old 07-13-2022, 02:31 PM   #2345
pax-eterna
Human being with feelings
 
Join Date: Jun 2018
Posts: 854
Default

TL : DR

Not sure if it's been asked specifically, but with this plugin, do I need to install an instance on every track?

Is it possible to have one instance of it controlling several tracks?

Alternatively if I set it up globally and ensure all my [projects have the tracks in the same order, will the projects automatically follow the global setup of Rea Learn?
pax-eterna is offline   Reply With Quote
Old 07-13-2022, 03:05 PM   #2346
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,199
Default

Quote:
Originally Posted by pax-eterna View Post
TL : DR

Not sure if it's been asked specifically, but with this plugin, do I need to install an instance on every track?

Is it possible to have one instance of it controlling several tracks?

Alternatively if I set it up globally and ensure all my [projects have the tracks in the same order, will the projects automatically follow the global setup of Rea Learn?
No, yes, yes
helgoboss is offline   Reply With Quote
Old 07-13-2022, 03:13 PM   #2347
DeBased
Human being with feelings
 
DeBased's Avatar
 
Join Date: Jun 2010
Location: UK
Posts: 412
Default

Quote:
Originally Posted by helgoboss View Post
No, yes, yes
I believe the global solution is to put the ReaLearn instance into the Monitoring FX - that way it will affect all projects and project tabs.
__________________
Reaper5, Win10Pro, Ryzen 5950x/64GB, RME UFX/BabyFace Pro, Behringer X-Touch
- my true 'global' (project-tab independent) Send/Receive FX
- my Behringer X-touch mods + XCtrl mode for CSI (coloured scribble strips!)
DeBased is offline   Reply With Quote
Old 07-19-2022, 07:33 AM   #2348
Sound asleep
Human being with feelings
 
Sound asleep's Avatar
 
Join Date: Nov 2009
Location: Montreal, Canada
Posts: 9,073
Default

I have plugged an expression pedal into realearn. But, this expression pedal for some reason considers the down state, at the CC value most software would consider should be the up state. Is there a way with realearn that I could just reverse these values, or something like that?

EDIT: The group interaction, inverse control, and inverse target value, don't seem to have had any noticeable effect on that. Maybe I did something wrong?

EDIT2: Nevermind!! I found it. There's a "reverse" checkbox next to "Feedback transformation (EEL)" And that did it. Thanks HelgoBoss!
__________________
Slava Ukraini

Last edited by Sound asleep; 07-19-2022 at 08:27 AM.
Sound asleep is offline   Reply With Quote
Old 07-19-2022, 04:02 PM   #2349
Sound asleep
Human being with feelings
 
Sound asleep's Avatar
 
Join Date: Nov 2009
Location: Montreal, Canada
Posts: 9,073
Default

Is there a way I can map buttons so that I can create a learn for a specific thing?

For example, I have one midi controller with one instance of realearn. I have another midi controller on another instance. It has my expression pedal. I would like to have a button that only sets target for the expression pedal. Specifically that single entry in one specific instance of realearn, and only to map the target. Is this possible?
__________________
Slava Ukraini
Sound asleep is offline   Reply With Quote
Old 07-20-2022, 06:23 AM   #2350
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,793
Default

OFF-TOPIC

Quote:
Originally Posted by helgoboss View Post
Since last prerelease (v1.8.0-pre1).
- Made a complete rewrite in Rust programming language
Hi Benjamin
Despite of my old age, I am very bus learning the paradigm of the latest C++ variants (on top of my well trained ANSI C brain). I use VS Code as the SDK, and doing projects for PC and for embedded use (targeting the RP 2040 chip) .

I have a young and very talented colleague who is busy teaching me.

Recently he told me that he right now is getting up to speed with Rust and that he is perfectly happy with same.

What SDK do you use for Rust ?

What libraries do you use for targeting VST ?

What are your experiences with that language.

Thanks for listening,
-Michael
mschnell is online now   Reply With Quote
Old 07-23-2022, 07:10 PM   #2351
Vladistone
Human being with feelings
 
Join Date: Jul 2022
Posts: 80
Default

Hello helgoboss!
Please suggest variantes of solutions for setting up the realearn when using the SSL nucleus 2 as a DAW-controller?
This control panel has 16 faders with MCU + XT emulations and more over (including MIDI CC with simultaneous QWERTY command emulation) for use with different hosts. but besides that it has 6 IPMIDI channels (as MCU and XT) for switching between MODEs are named: "DAW1"; "DAW2"; "DAW3".
I just started to learn realearn and therefore I'm not strong in settings "Control IN" and "Feadback OUT" for such a variety of NUCLEUS controller command types for reaper FX Plugins.
my idear is consist for combined control from SSL Nucleus in my home studio... for example:
- MODE1 (DAW1) MCU+XT-mode of controller is - for general pirposes Reaper DAW control
- MODE2 (DAW2) is - for Suprerior Drummer plugin control (more as mixing drum-tracks control by MIDI CC)
- MODE3 (DAW3) is for external Korg Kronos&OASYS and Roland Integra7 synths remote control (wich espesialy is consist Sysex-implementation)
Vladistone is offline   Reply With Quote
Old 07-24-2022, 12:29 AM   #2352
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,793
Default

Welcome to the Reaper forums !

ReaLearn exports the parameters to he DAW, hence you can do Presets in the normal Reaper way.
-Michael
mschnell is online now   Reply With Quote
Old 07-24-2022, 05:08 AM   #2353
Vladistone
Human being with feelings
 
Join Date: Jul 2022
Posts: 80
Default

Quote:
Originally Posted by mschnell View Post
Welcome to the Reaper forums !

ReaLearn exports the parameters to he DAW, hence you can do Presets in the normal Reaper way.
-Michael
one question:
How implement the QWERTY-control effecttion? I tryed to lean the key-command into one connection setup (usualy as IPMIDI channels) with MCU+XT emulation...
I can't to do it. any ideas?
Vladistone is offline   Reply With Quote
Old 07-27-2022, 05:55 PM   #2354
gthibert
Human being with feelings
 
Join Date: Aug 2010
Posts: 10
Default JSFX trigger

Hi!

Is there a way to target a jsfx trigger with ReaLearn (such as in the Loop Sampler jsfx)?

The option does not show in FX parameter:Set value
gthibert is offline   Reply With Quote
Old 08-02-2022, 10:16 AM   #2355
BenjyO
Human being with feelings
 
Join Date: Nov 2011
Posts: 308
Default

Has anyone succesfully gotten textual feedback for marker/region names - target.bookmark.___?

I am trying to get the name of the region in which the edit cursor currently resides but I can't get it to work. The "Marker/region: Go to" target only offers as options "By position" or "By ID" which means a marker or region must be specified and textual feedback then returns only that region's/marker's name or ID.

I'm using ReaLearn v2.13.1
__________________
Check out some of my music
BenjyO is offline   Reply With Quote
Old 08-03-2022, 12:09 AM   #2356
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,199
Default

Quote:
Originally Posted by Vladistone View Post
one question:
How implement the QWERTY-control effecttion? I tryed to lean the key-command into one connection setup (usualy as IPMIDI channels) with MCU+XT emulation...
I can't to do it. any ideas?
What is a QWERTY control effection?

Quote:
Originally Posted by gthibert View Post
Hi!

Is there a way to target a jsfx trigger with ReaLearn (such as in the Loop Sampler jsfx)?

The option does not show in FX parameter:Set value
Interesting question, never tried. I'm surprised the trigger buttons don't appear as parameter. I'm afraid if they don't show up as parameter, there's nothing we can do except asking Cockos to make it somehow accessible via API.

Quote:
Originally Posted by BenjyO View Post
Has anyone succesfully gotten textual feedback for marker/region names - target.bookmark.___?

I am trying to get the name of the region in which the edit cursor currently resides but I can't get it to work. The "Marker/region: Go to" target only offers as options "By position" or "By ID" which means a marker or region must be specified and textual feedback then returns only that region's/marker's name or ID.

I'm using ReaLearn v2.13.1
You would need a target "Project: Navigate within markers/regions". This doesn't exist yet. Feel free to request it.
helgoboss is offline   Reply With Quote
Old 08-07-2022, 04:03 AM   #2357
soulaccess
Human being with feelings
 
soulaccess's Avatar
 
Join Date: Jul 2012
Posts: 43
Default saving "controller preset" problem

Hi
I don't know if the following is a (known) bug or a problem on my side (probably), hence I thought I ask here before opening a bug report:

When re-saving an existing "controller preset" some (all?) values are not saved / recalled properly.

e.g. I changed the value of "Speed Max" from "5" to "100", but after restarting Reaper, ReaLearn still showed (and acted like) the old value of "5". I then checked the corresponding json preset file and the value was indeed still "5".

So I edited the json file directly ("maxStepFactor": 100), but - alas - after restarting Reaper, ReaLearn still showed the old value "5" which isn't even present in the json file. I double checked if there are several files for the same controller, but no.

The same applies for other parameters, didn't test them all though.

This is with ReaLearn v2.13.1

Thank you for reading and any insights
soulaccess is offline   Reply With Quote
Old 08-07-2022, 01:22 PM   #2358
horneusz
Human being with feelings
 
horneusz's Avatar
 
Join Date: Aug 2013
Location: Poland
Posts: 105
Default

Question for more advanced users
I can't figure it out.

I am using one instance of ReaLearn to control Reaper (changing volume, pan, etc.) with Midi Fighter Twister.
I have created my own preset as Main Compartment.

I also created presets for my favorite VST instruments, which I run using the Auto Load function in separate instances of ReaLearn.
I have all instances of ReaLearn placed on the first track.

I use an Android app to visually view the mapped controllers.

The problem is that when I launch a VST instrument it:
1. the selected knob controls both the Reaper and the instrument - I want to control only the instrument at this point.
2. when I close the VST instrument window - the preset controlling the Reaper does not activate on the screen in the mobile app. A blank template appears.

How do I solve this?
horneusz is offline   Reply With Quote
Old 08-07-2022, 01:25 PM   #2359
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,199
Default

Quote:
Originally Posted by soulaccess View Post
Hi
I don't know if the following is a (known) bug or a problem on my side (probably), hence I thought I ask here before opening a bug report:

When re-saving an existing "controller preset" some (all?) values are not saved / recalled properly.

e.g. I changed the value of "Speed Max" from "5" to "100", but after restarting Reaper, ReaLearn still showed (and acted like) the old value of "5". I then checked the corresponding json preset file and the value was indeed still "5".

So I edited the json file directly ("maxStepFactor": 100), but - alas - after restarting Reaper, ReaLearn still showed the old value "5" which isn't even present in the json file. I double checked if there are several files for the same controller, but no.

The same applies for other parameters, didn't test them all though.

This is with ReaLearn v2.13.1

Thank you for reading and any insights
I've to try that.

Quote:
Originally Posted by horneusz View Post
Question for more advanced users
I can't figure it out.

I am using one instance of ReaLearn to control Reaper (changing volume, pan, etc.) with Midi Fighter Twister.
I have created my own preset as Main Compartment.

I also created presets for my favorite VST instruments, which I run using the Auto Load function in separate instances of ReaLearn.
I have all instances of ReaLearn placed on the first track.

I use an Android app to visually view the mapped controllers.

The problem is that when I launch a VST instrument it:
1. the selected knob controls both the Reaper and the instrument - I want to control only the instrument at this point.
2. when I close the VST instrument window - the preset controlling the Reaper does not activate on the screen in the mobile app. A blank template appears.

How do I solve this?
You must make the auto-load instance superior (right click the header panel and choose options).
helgoboss is offline   Reply With Quote
Old 08-07-2022, 01:41 PM   #2360
horneusz
Human being with feelings
 
horneusz's Avatar
 
Join Date: Aug 2013
Location: Poland
Posts: 105
Default

Quote:
Originally Posted by helgoboss View Post
You must make the auto-load instance superior (right click the header panel and choose options).
Thanks for your help.
It works, but now the preview of the controllers (from the VST instrument) does not load in the mobile app.
All mapped knobs work in the open instrument, but you can't see them on the screen.

I recorded a short video of what it looks like.
https://www.dropbox.com/s/uyvugpolff...12604.mp4?dl=0

At the beginning you can see the mapping of Reaper functions on the tablet. After opening the Sylenth window, the Sylenth mapping appears for a split second, but then there is a blank template.
------------------------------


I was able to partially solve it.
In the ReaLearn instance with AutoLoad enabled, I changed Feedback Output to FX Output. The mapping appeared on my tablet, but unfortunately, on the Midi Fighter Twister, no change is seen for the automatically loaded FXs.

Last edited by horneusz; 08-08-2022 at 02:22 PM. Reason: edit
horneusz 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 04:26 PM.


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