 |
|
|
02-27-2023, 08:36 AM
|
#3281
|
Human being with feelings
Join Date: Aug 2010
Location: Germany
Posts: 1,885
|
Quote:
Originally Posted by KennyG5000
Thanks both Puck and Helgoboss for the pointers with nks and presets, I am very keen to explore this further (saw the other thread you mentioned Puck, a lot of helpful stuff there too!). I am old enough to remember getting Kore 1 way back and there was so much potential there with the ksd format; never really clicked with Komplete Kontrol as the software felt like a step backwards from Kore 2, but if you can access the presets natively (and have the controllers correctly mapped in Open Stage Control) then that is huge! Actually really excited to see if I can get this working (basically would be a long wanted replacement for Kore!). Great stuff! Quick question, does Reaper working alongside Realearn let you save new presets in the nks format without needing Komplete Kontrol, or is this not currently possible?
|
Agreed, I liked the idea of Kore back in the day and was somewhat disappointed by Komplete Kontrol. Still, Kore had the same issue as Komplete Kontrol - it was just a wrapper plug-in.
It's not currently possible to let ReaLearn save presets in NKS format. However, I think it would be possible to implement, at least with 3rd-party plug-ins (non-NI).
|
|
|
02-27-2023, 08:40 AM
|
#3282
|
Human being with feelings
Join Date: Aug 2010
Location: Germany
Posts: 1,885
|
Quote:
Originally Posted by X-Raym
@helgoboss
Thx for your feedback!
BTW I realized something,
Did you know that REAPER API has Joystic support ?
If you want to add native Joystic support to Realearn source, here how to use it:
https://github.com/ReaTeam/ReaScript...API%20test.lua
(Usual way requires using a middleware for joystic to keyboard/MIDI - which may be more flexible anyway).
(note: I absolutely dont know any script which take care of this API. not sure there is any demand for such input support in realean ^^)
|
I was aware of REAPER's joystick support in general and always found it interesting but never ended up using it in practice. However, I was not aware of the ReaScript functions. Could be nice to add a joystick source to ReaLearn, even only for the sake of completeness.
|
|
|
02-27-2023, 08:52 AM
|
#3283
|
Human being with feelings
Join Date: Aug 2010
Location: Germany
Posts: 1,885
|
Quote:
Originally Posted by indigomirage
Hi there -
I'm trying to create a conditional activation EEL2 script for a mapping group where the group should only be activated if there is an enabled FX on the track with a specific name. Ideally if the fx is in focus too, but I can handle that in the target config.
Basically, the mapping will translate a midi cc from once value to another, but I only want this to happen when that FX is in place. Since 'MIDI: Send Message' targets cannot be made contingent on a specific track, etc., I have to manually enable/disable the section.
Is this possible? I think I just need to see to sample EEL scripts to help get me started...
Thanks,
EDIT - I have come to the conclusion that the EEL2 scripts will not have the overall reaper API/project in scope, so this is probably a non-starter.
|
Yes, you can do that. You need to use activation condition "When target value met" and then pick a mapping that has target "FX: Enable/disable" (if "enabled" is the condition of interest) or "FX: Open/close" (if "focused" is the condition of interest). Then put "y > 0" in the expression field.
You don't need the REAPER API in scope for this to work.
Quote:
Originally Posted by indigomirage
I think the best solution (and this is perhaps a feature request) would be to extend the 'Auto-Load' feature to i) apply to groups and ii) allow further specification of a name filter (with wildcard/asterisk). Since many of the mappings/parameter control I'm doing with Realearn applies to various Kontakt instances, simply filtering on FX-Type is not sufficient.
|
It's already possible to take the preset name into consideration, in case that suites you (I implemented that a long time ago because a Kontakt user requested it). Menu => Global FX-to-preset links => Choose an existing one => Edit FX ID: There you have a few options available. There's also "FX name" but I think this refers to the original FX name, not the customized one. I could easily add that though. Need an FR on GitHub.
I don't understand "(i) apply to groups". What do you mean?
Quote:
Originally Posted by indigomirage
Also - Is there a way to have projection display the name of the FX parameter being controlled as a target, rather than just 'FX_Param'. Since the FX often changes the parameter name for a given parameter id, this could be extremely useful!
Cheers,
|
This was requested already a few times. I will do an overhaul of the projection app when it becomes part of the Playtime app, but that will still take a while.
|
|
|
02-27-2023, 08:53 AM
|
#3284
|
Human being with feelings
Join Date: Aug 2010
Location: Germany
Posts: 1,885
|
Quote:
Originally Posted by souk21
Hello @helgoboss, hope you're doing well.
I was wondering if it would be possible to create an action "Open first ReaLearn instance and filter by source".
The goal would be to wiggle a controller and quickly be able to see a list of bindings for this particular source.
Another use case is deleting or duplicating a binding, but "ReaLearn: Find first mapping by source" opens the edit window from which you can't do either
Thanks again for all the work you do for this amazing extension!
|
I could add such an action but I'll need an FR (GitHub).
|
|
|
02-27-2023, 08:59 AM
|
#3285
|
Human being with feelings
Join Date: Aug 2010
Location: Germany
Posts: 1,885
|
Quote:
Originally Posted by KennyG5000
Is there a way to cycle through the different banks of parameters of each nks preset (the banks with each of the mapped 8 controllers in) or do you just need to sort that out at the controller side?
|
ReaLearn lets you access higher banks by using indexes greater than 7 (bank one = indexes 0 - 7, bank 2 = indexes 8 - 15, and so on). With that knowledge and the ability to use ReaLearn parameters in dynamic expressions (p[0] for example), you can build what you want. Don't forget to give your ReaLearn parameter a value count (Menu => Compartment parameters). Otherwise it will have values between 0.0 and 1.0, which is counter-intuitive if you want to deal with integers.
Quote:
Originally Posted by KennyG5000
Also, I don't know whether it is currently possible (but would be awesome!) but is there a way to send the 'headings' of the parameters (eg where in the macro controls in Komplete Kontrol there are section headings such as 'filter', 'OSC 1/2' etc), I am guessing they must be stored in the nks data, but don't know if Realearn can currently access this.
Finally, wondered if Realearn currently has a way to filter to just the 'user' presets of Komplete Kontrol? (as that would be really useful too!)
As always, any help greatly appreciated!
|
No, but also something I could add (a text expression placeholder). Please add both requests to https://github.com/helgoboss/realearn/issues/743 as comment.
|
|
|
02-27-2023, 10:30 AM
|
#3286
|
Human being with feelings
Join Date: Oct 2020
Posts: 48
|
Quote:
Originally Posted by helgoboss
Yes, you can do that. You need to use activation condition "When target value met" and then pick a mapping that has target "FX: Enable/disable" (if "enabled" is the condition of interest) or "FX: Open/close" (if "focused" is the condition of interest). Then put "y > 0" in the expression field.
You don't need the REAPER API in scope for this to work.
It's already possible to take the preset name into consideration, in case that suites you (I implemented that a long time ago because a Kontakt user requested it). Menu => Global FX-to-preset links => Choose an existing one => Edit FX ID: There you have a few options available. There's also "FX name" but I think this refers to the original FX name, not the customized one. I could easily add that though. Need an FR on GitHub.
I don't understand "(i) apply to groups". What do you mean?
This was requested already a few times. I will do an overhaul of the projection app when it becomes part of the Playtime app, but that will still take a while.
|
Hi there - thanks for the detailed response.
I'm not sure the 'Target value met' approach will work here - the ultimate goal is to enable a mapping group (that's what I meant wrt Groups) if it has focus, and if it has a specific name pattern (ie - via wildcard '*'). The name being a name that I give the FX on the track. This makes it possible to tweak the name and ignore it if needed. Preset name, though handy isn't quite what I'm after (especially with other FX, such as synths within Reaktor, etc)
Basically, I'm putting Realearn a large number of mapping groups on my monitoring FX and having the maps become active when FX is in focus and the name matches a given pattern.
Over the weekend I came up with a way that works by doing this at the individual map level. I set Track to 'All named' '*', and the FX Named '*Monark*' (or whatever), and FX must have focus checked.
This works, but it's not as efficient as being able to specify an Auto Load at the mapping group level, but using a FX name pattern and Focus. It also has the benefit of activating/de-activating maps of different types besides FX: Set parameter value as part of a group, based on focused FX with a given name pattern (ie - midi sends and similar).
In the end I managed to get it working for my immediate needs.
Should I add a FR on github? Not entirely sure on your preferred workflow.
Definitely appreciating the power of this tool - I can configure new FX with a new group on realearn on my FX chain and it'll be there whenever I load it again - well done!
Cheers!
|
|
|
02-27-2023, 11:05 AM
|
#3287
|
Human being with feelings
Join Date: May 2016
Location: out west
Posts: 279
|
Quote:
Originally Posted by helgoboss
It's not currently possible to let ReaLearn save presets in NKS format. However, I think it would be possible to implement, at least with 3rd-party plug-ins (non-NI).
|
the two single best sources to understand NI's NKS format are in my mind:
https://github.com/PresetMagician/PresetMagician (I know you are aware of this one)
and
https://denivel.blogspot.com/search/label/NimBank
The Python source code of NimBank reveals additional details about NKS, including the headers which would allow to disguise your own User NKS presets as NI native ones.
|
|
|
02-27-2023, 03:18 PM
|
#3288
|
Human being with feelings
Join Date: Mar 2021
Posts: 301
|
Quote:
Originally Posted by helgoboss
I could add such an action but I'll need an FR (GitHub).
|
Amazing, I filed an issue there
Thanks !
|
|
|
02-27-2023, 05:05 PM
|
#3289
|
Human being with feelings
Join Date: Aug 2010
Location: Germany
Posts: 1,885
|
Quote:
Originally Posted by indigomirage
Hi there - thanks for the detailed response.
I'm not sure the 'Target value met' approach will work here - the ultimate goal is to enable a mapping group (that's what I meant wrt Groups) if it has focus, and if it has a specific name pattern (ie - via wildcard '*'). The name being a name that I give the FX on the track. This makes it possible to tweak the name and ignore it if needed. Preset name, though handy isn't quite what I'm after (especially with other FX, such as synths within Reaktor, etc)
Basically, I'm putting Realearn a large number of mapping groups on my monitoring FX and having the maps become active when FX is in focus and the name matches a given pattern.
|
Auto-loading of groups is not going to happen. Groups are not intended as a unit of reuse in ReaLearn. Presets are. Groups can't be saved/loaded, presets can. Why would you want to use groups when you have presets? Groups are just a feature to organize things *within* a preset.
That being said, you can achieve what you want by giving the group itself a "Target value met" condition. Here's an example that activates the group "ReaDelay" whenever a ReaDelay effect is focused and analogously with ReaSynth:
Code:
{
kind = "MainCompartment",
version = "2.14.3",
value = {
groups = {
{
id = "AX0_TWwK5BIrxsKnILEVE",
name = "ReaDelay",
activation_condition = {
kind = "TargetValue",
mapping = "jqnPKwe6hB5PX0KNnbgRO",
condition = "y > 0",
},
},
{
id = "sIq7ahWLaxQGqTnu0O1W5",
name = "ReaSynth",
activation_condition = {
kind = "TargetValue",
mapping = "PgAsvyQ6uzFQfL8TJJAMu",
condition = "y > 0",
},
},
{
id = "xn6ZYYzn6WSoBj-ftQdKL",
name = "Utility mappings",
},
},
mappings = {
{
id = "jqnPKwe6hB5PX0KNnbgRO",
name = "ReaDelay focus",
group = "xn6ZYYzn6WSoBj-ftQdKL",
glue = {
step_size_interval = {0.01, 0.05},
step_factor_interval = {1, 5},
},
target = {
kind = "FxVisibility",
fx = {
address = "ByName",
chain = {
address = "Track",
track = {
address = "ByName",
name = "*",
allow_multiple = true,
},
},
name = "*ReaDelay*",
allow_multiple = true,
},
},
},
{
id = "PgAsvyQ6uzFQfL8TJJAMu",
name = "ReaSynth focus",
group = "xn6ZYYzn6WSoBj-ftQdKL",
glue = {
step_size_interval = {0.01, 0.05},
step_factor_interval = {1, 5},
},
target = {
kind = "FxVisibility",
fx = {
address = "ByName",
chain = {
address = "Track",
track = {
address = "ByName",
name = "*",
allow_multiple = true,
},
},
name = "*ReaSynth*",
allow_multiple = true,
},
},
},
{
id = "yJadcgmJPhFqSw85pxJWi",
name = "3",
group = "sIq7ahWLaxQGqTnu0O1W5",
glue = {
step_size_interval = {0.01, 0.05},
step_factor_interval = {1, 5},
},
target = {
kind = "Dummy",
},
},
{
id = "HW8NZerGA1wIpQQG2LQyb",
name = "4",
group = "AX0_TWwK5BIrxsKnILEVE",
glue = {
step_size_interval = {0.01, 0.05},
step_factor_interval = {1, 5},
},
target = {
kind = "Dummy",
},
},
},
},
}
|
|
|
02-27-2023, 05:19 PM
|
#3290
|
Human being with feelings
Join Date: Aug 2010
Location: Germany
Posts: 1,885
|
Quote:
Originally Posted by brummbear
|
Ah cool, thanks brummbear. I was not aware of NimBank. Any chance you know how to construct the VST preset chunk out of a native NI preset file (e.g. *.nfm8 for FM8)? That's the most pressing issue at the moment. With *.nksf and *.nksfx it's quite easy/documented, just extracting the PCHK RIFF chunk from a RIFF file and using the largest part of it as VST preset chunk. With *.nfm8, *.nki and all the others I don't know. But I also haven't tried again during the last months. This project looks very promising when it comes to understanding the NI file formats: https://github.com/monomadic/ni-file
|
|
|
02-27-2023, 05:47 PM
|
#3291
|
Human being with feelings
Join Date: Oct 2020
Posts: 48
|
Quote:
Originally Posted by helgoboss
Auto-loading of groups is not going to happen. Groups are not intended as a unit of reuse in ReaLearn. Presets are. Groups can't be saved/loaded, presets can. Why would you want to use groups when you have presets? Groups are just a feature to organize things *within* a preset.
That being said, you can achieve what you want by giving the group itself a "Target value met" condition. Here's an example that activates the group "ReaDelay" whenever a ReaDelay effect is focused and analogously with ReaSynth:
Code:
{
kind = "MainCompartment",
version = "2.14.3",
value = {
groups = {
{
id = "AX0_TWwK5BIrxsKnILEVE",
name = "ReaDelay",
activation_condition = {
kind = "TargetValue",
mapping = "jqnPKwe6hB5PX0KNnbgRO",
condition = "y > 0",
},
},
{
id = "sIq7ahWLaxQGqTnu0O1W5",
name = "ReaSynth",
activation_condition = {
kind = "TargetValue",
mapping = "PgAsvyQ6uzFQfL8TJJAMu",
condition = "y > 0",
},
},
{
id = "xn6ZYYzn6WSoBj-ftQdKL",
name = "Utility mappings",
},
},
mappings = {
{
id = "jqnPKwe6hB5PX0KNnbgRO",
name = "ReaDelay focus",
group = "xn6ZYYzn6WSoBj-ftQdKL",
glue = {
step_size_interval = {0.01, 0.05},
step_factor_interval = {1, 5},
},
target = {
kind = "FxVisibility",
fx = {
address = "ByName",
chain = {
address = "Track",
track = {
address = "ByName",
name = "*",
allow_multiple = true,
},
},
name = "*ReaDelay*",
allow_multiple = true,
},
},
},
{
id = "PgAsvyQ6uzFQfL8TJJAMu",
name = "ReaSynth focus",
group = "xn6ZYYzn6WSoBj-ftQdKL",
glue = {
step_size_interval = {0.01, 0.05},
step_factor_interval = {1, 5},
},
target = {
kind = "FxVisibility",
fx = {
address = "ByName",
chain = {
address = "Track",
track = {
address = "ByName",
name = "*",
allow_multiple = true,
},
},
name = "*ReaSynth*",
allow_multiple = true,
},
},
},
{
id = "yJadcgmJPhFqSw85pxJWi",
name = "3",
group = "sIq7ahWLaxQGqTnu0O1W5",
glue = {
step_size_interval = {0.01, 0.05},
step_factor_interval = {1, 5},
},
target = {
kind = "Dummy",
},
},
{
id = "HW8NZerGA1wIpQQG2LQyb",
name = "4",
group = "AX0_TWwK5BIrxsKnILEVE",
glue = {
step_size_interval = {0.01, 0.05},
step_factor_interval = {1, 5},
},
target = {
kind = "Dummy",
},
},
},
},
}
|
Thank you! Very useful code snippet.
Wrt groups vs presets I agree that presets are much more useful and had originally mapped all my stuff through multiple instances of realearn (on for each FX) and this was my original approach. However, since I intention was to map my single controller to handle each separate FX, I would end up with the same controller preset on each instance of realearn. When I launched projection, though, I had issues getting the correct instance of the controller to appear. I ended up assuming (probably incorrectly?) that the correct configuration was a single instance per controller - something that I likely misheard from your tutorial videos.
If I can reuse the same controller preset in multiple instances of realearn with a single projection that is the ideal scenario - I'm suspecting now it was an issue on my end. If this is the case, please do confirm!
(The good news is that I've already done the hard part - mapping the controller preset to the main compartment (in my case, a large main compartment, separated by mapping groups). Breaking it back out is trivial of course.)
Thank you so much for your patience here, BTW.
|
|
|
02-27-2023, 06:20 PM
|
#3292
|
Human being with feelings
Join Date: May 2016
Location: out west
Posts: 279
|
Quote:
Originally Posted by helgoboss
Ah cool, thanks brummbear. I was not aware of NimBank. Any chance you know how to construct the VST preset chunk out of a native NI preset file (e.g. *.nfm8 for FM8)? That's the most pressing issue at the moment. With *.nksf and *.nksfx it's quite easy/documented, just extracting the PCHK RIFF chunk from a RIFF file and using the largest part of it as VST preset chunk. With *.nfm8, *.nki and all the others I don't know. But I also haven't tried again during the last months. This project looks very promising when it comes to understanding the NI file formats: https://github.com/monomadic/ni-file
|
Sorry, no. I have come to terms with using the Komplete Kontrol Wrapper almost all of the time (obviously also when using the KK S88 keyboard it is a no brainer). The overhead - even if I use dozens of tracks - is acceptable and in this way I always end up with a consistent look and feel (plus you get the audio preset ability which I find just as important as tags). With other controllers it is ReaLearn of course :-) (and btw also the still brilliant Playtime 1, using it as a sophisticated live looper with a launchpad).
Oh and thanks for the link to the ni-file github, every piece of documentation / tool helps to unravel the format.
Last edited by brummbear; 02-27-2023 at 06:27 PM.
|
|
|
02-27-2023, 06:33 PM
|
#3293
|
Human being with feelings
Join Date: Aug 2010
Location: Germany
Posts: 1,885
|
Quote:
Originally Posted by indigomirage
Thank you! Very useful code snippet.
Wrt groups vs presets I agree that presets are much more useful and had originally mapped all my stuff through multiple instances of realearn (on for each FX) and this was my original approach. However, since I intention was to map my single controller to handle each separate FX, I would end up with the same controller preset on each instance of realearn. When I launched projection, though, I had issues getting the correct instance of the controller to appear. I ended up assuming (probably incorrectly?) that the correct configuration was a single instance per controller - something that I likely misheard from your tutorial videos.
If I can reuse the same controller preset in multiple instances of realearn with a single projection that is the ideal scenario - I'm suspecting now it was an issue on my end. If this is the case, please do confirm!
(The good news is that I've already done the hard part - mapping the controller preset to the main compartment (in my case, a large main compartment, separated by mapping groups). Breaking it back out is trivial of course.)
Thank you so much for your patience here, BTW.
|
You need only one instance having auto-load enabled, per controller. So I think the same controller preset being on each instance of ReaLearn is a non-issue (even if there would be, it wouldn't be a bad thing to have the same controller preset being used in multiple instances).
The general rule is that you need AT LEAST one instance of ReaLearn per controller. But depending on what you want to do, you can also have multiple instances per controller. The only thing not possible is supporting multiple controllers with just a single instance (although this can be emulated using FX input, it's not straightforward).
Combining multiple instances with projection though is a different story  You are looking for this FR: https://github.com/helgoboss/realearn/issues/108 ... but it will take a while. But from here it doesn't look like you need multiple instances in the first place?
|
|
|
02-27-2023, 06:36 PM
|
#3294
|
Human being with feelings
Join Date: Aug 2010
Location: Germany
Posts: 1,885
|
Quote:
Originally Posted by brummbear
Sorry, no. I have come to terms with using the Komplete Kontrol Wrapper almost all of the time (obviously also when using the KK S88 keyboard it is a no brainer). The overhead - even if I use dozens of tracks - is acceptable and in this way I always end up with a consistent look and feel (plus you get the audio preset ability which I find just as important as tags). With other controllers it is ReaLearn of course :-) (and btw also the still brilliant Playtime 1, using it as a sophisticated live looper with a launchpad).
Oh and thanks for the link to the ni-file github, every piece of documentation / tool helps to unravel the format.
|
I understand. What's the "audio preset ability"? Haven't heard of it.
|
|
|
02-27-2023, 06:45 PM
|
#3295
|
Human being with feelings
Join Date: May 2016
Location: out west
Posts: 279
|
Quote:
Originally Posted by helgoboss
I understand. What's the "audio preset ability"? Haven't heard of it.
|
Oops, I meant "preview" not "preset": the ability to listen to a an audio sample preview belonging to a preset (if it is an instrument / sample / loop - not an effect of course).
|
|
|
02-27-2023, 07:32 PM
|
#3296
|
Human being with feelings
Join Date: Aug 2010
Location: Germany
Posts: 1,885
|
Quote:
Originally Posted by brummbear
Oops, I meant "preview" not "preset": the ability to listen to a an audio sample preview belonging to a preset (if it is an instrument / sample / loop - not an effect of course).
|
Ah okay, that's possible in ReaLearn by using target "Pot: Preview preset".
|
|
|
02-27-2023, 08:44 PM
|
#3297
|
Human being with feelings
Join Date: Aug 2010
Location: Germany
Posts: 1,885
|
Released ReaLearn 2.15.0-pre.1 ( ReaPack installation instructions)
Changes:
- #493 Added possibility to restrict the list of included target types when using target "Global: Last touched"
- #744 Added new target "ReaLearn: Modify mapping", currently supporting the following modifications: "Learn target", "Set target to last touched", supports picking included target types and modifying mapping of other ReaLearn instance
- #744 Added possibility to pick target from last-touched ones (one last-touched per type)
- #811 Added group interaction kind "Inverse target value (off only)"
- #708 Added basic Behringer x32 instructions to the list of tested controllers
- #765 Improved transformation editor to apply changes immediately when typing (no need to close window)
- #744 Improved performance of target "Global: Last touched"
- #744 Improved target "Global: Last touched" to pick up transport actions and some other actions as well (if included in the list of target types)
- #810 Fixed disappearing target value sequence values when the target is "FX parameter: Set value" and the FX is a JS FX
|
|
|
02-28-2023, 01:40 AM
|
#3298
|
Human being with feelings
Join Date: May 2017
Posts: 299
|
Quote:
Originally Posted by helgoboss
Released ReaLearn 2.15.0-pre.1 ( ReaPack installation instructions)
Changes:
- #493 Added possibility to restrict the list of included target types when using target "Global: Last touched"
- #744 Added new target "ReaLearn: Modify mapping", currently supporting the following modifications: "Learn target", "Set target to last touched", supports picking included target types and modifying mapping of other ReaLearn instance
- #744 Added possibility to pick target from last-touched ones (one last-touched per type)
- #811 Added group interaction kind "Inverse target value (off only)"
- #708 Added basic Behringer x32 instructions to the list of tested controllers
- #765 Improved transformation editor to apply changes immediately when typing (no need to close window)
- #744 Improved performance of target "Global: Last touched"
- #744 Improved target "Global: Last touched" to pick up transport actions and some other actions as well (if included in the list of target types)
- #810 Fixed disappearing target value sequence values when the target is "FX parameter: Set value" and the FX is a JS FX
|
yahoo!
- #744 Added new target "ReaLearn: Modify mapping", currently supporting the following modifications: "Learn target", "Set target to last touched", supports picking included target types and modifying mapping of other ReaLearn instance
Could you kindly explain how this works, was playing around with it and wasnt too sure!
thanks!
Last edited by Cloudswim; 02-28-2023 at 02:25 AM.
|
|
|
02-28-2023, 03:52 AM
|
#3299
|
Human being with feelings
Join Date: Nov 2022
Posts: 43
|
Quote:
Originally Posted by helgoboss
ReaLearn lets you access higher banks by using indexes greater than 7 (bank one = indexes 0 - 7, bank 2 = indexes 8 - 15, and so on). With that knowledge and the ability to use ReaLearn parameters in dynamic expressions (p[0] for example), you can build what you want. Don't forget to give your ReaLearn parameter a value count (Menu => Compartment parameters). Otherwise it will have values between 0.0 and 1.0, which is counter-intuitive if you want to deal with integers.
|
That's working perfectly now, thanks for the help Helgoboss, this is beyond useful! I was attempting to map my most used plugins in Open Stage Control one by one, and I now realise how much more intuitive and powerful this system is using the nks database, a huge thank you for building this in to Realearn!
Thinking about the possibilities of utilising this feature even further, can you use one of Realearn's internal parameters as a variable to dynamically select which slot you wish to load (using 'Pot: Load Preset) the FX into? Have briefly tried to set this up (using 'selected' for the track and 'p2' in the 'at position' slot, but without success! I am thinking then you could quickly load a number of different FX and similarly jump between them dynamically to control everything remotely on the fly! (Might need some textual feedback to define what FX you are currently controlling mind!).
This would take things to the next level (this always annoyed me about using the Kore 2 hardware, jumping between different instances of Kore within a session was less than intuitive!). If this is possible somehow, I would be over the moon!
|
|
|
02-28-2023, 05:05 AM
|
#3300
|
Human being with feelings
Join Date: Jul 2022
Posts: 79
|
Quote:
Originally Posted by Cloudswim
yahoo!
- #744 Added new target "ReaLearn: Modify mapping", currently supporting the following modifications: "Learn target", "Set target to last touched", supports picking included target types and modifying mapping of other ReaLearn instance
Could you kindly explain how this works, was playing around with it and wasnt too sure!
thanks!
|
Yes I support you! it would be better to moderny get the necessary information on the settings and examples of use ...
Otherwise - most ordinary users do not keep up with @Helgoboss and his innovations! Here We didn`t have time to study the old user guide but updates are already appearing one by one!
By the way!
@helgoboss pay attention to the "user guide update" PR, more than 112 screenshots of panels have been added there, which would help new candidates to quickly understand the structure and system of realearn, .. otherwise it will quickly turn into an elite club of "advanced Realearn coders" and will not wide knowledge for another music produsers w/DAW-users! In the same way as it happened with your competitor developers, when you wrote to at the beginning of introduce the RL..
|
|
|
02-28-2023, 08:35 AM
|
#3301
|
Human being with feelings
Join Date: Oct 2020
Posts: 48
|
Quote:
Originally Posted by helgoboss
You need only one instance having auto-load enabled, per controller. So I think the same controller preset being on each instance of ReaLearn is a non-issue (even if there would be, it wouldn't be a bad thing to have the same controller preset being used in multiple instances).
The general rule is that you need AT LEAST one instance of ReaLearn per controller. But depending on what you want to do, you can also have multiple instances per controller. The only thing not possible is supporting multiple controllers with just a single instance (although this can be emulated using FX input, it's not straightforward).
Combining multiple instances with projection though is a different story  You are looking for this FR: https://github.com/helgoboss/realearn/issues/108 ... but it will take a while. But from here it doesn't look like you need multiple instances in the first place?
|
In my case, you are right - I don't need multiple controller instances, in fact, I'm at a loss as to how you'd prioritize projection if a control drives more than one active item, etc... So, I'm keeping everything mutually exclusive for my own sake.
As for presets - this is making more sense now finally (and I continue to be grateful for your patience). You mentioned a possibility of adding an FX ID parameter that reflects the customized FX Name (as opposed to the original) with wildcards as a further filter requirement for auto-load. I think this would be a very useful addition. To prevent an FX instance from participating in the Auto-Load process it would be a simple matter of giving it a different name.
Note - I added https://github.com/helgoboss/realearn/issues/828 for this FR.
I continue to be very impressed with ReaLearn and believe it's a tool worthy of ongoing support from the community.
Many thanks!
Last edited by indigomirage; 02-28-2023 at 08:50 AM.
|
|
|
02-28-2023, 06:20 PM
|
#3302
|
Human being with feelings
Join Date: Aug 2010
Location: Germany
Posts: 1,885
|
Quote:
Originally Posted by Cloudswim
yahoo!
- #744 Added new target "ReaLearn: Modify mapping", currently supporting the following modifications: "Learn target", "Set target to last touched", supports picking included target types and modifying mapping of other ReaLearn instance
Could you kindly explain how this works, was playing around with it and wasnt too sure!
thanks!
|
This target is for bringing another mapping into "Learn target" mode or to set its target to whatever target was recently touched.
1. Choose "Kind" ("Learn target" or "Set target to last touched").
2. Click the "..." button right next to it in order to choose the included types of target (other ones will be ignored). => That step is probably non-obvious, need to improve on that.
3. If the other mapping resides in another ReaLearn instance, pick that instance here. If it's in the same instance, just leave it as <This>.
4. Pick the mapping!
Then you map that to some button and that's it! The "Learn target" kind also has feedback, so it makes sense to map it to an LED button.
|
|
|
02-28-2023, 06:25 PM
|
#3303
|
Human being with feelings
Join Date: Aug 2010
Location: Germany
Posts: 1,885
|
Quote:
Originally Posted by KennyG5000
That's working perfectly now, thanks for the help Helgoboss, this is beyond useful! I was attempting to map my most used plugins in Open Stage Control one by one, and I now realise how much more intuitive and powerful this system is using the nks database, a huge thank you for building this in to Realearn!
Thinking about the possibilities of utilising this feature even further, can you use one of Realearn's internal parameters as a variable to dynamically select which slot you wish to load (using 'Pot: Load Preset) the FX into? Have briefly tried to set this up (using 'selected' for the track and 'p2' in the 'at position' slot, but without success! I am thinking then you could quickly load a number of different FX and similarly jump between them dynamically to control everything remotely on the fly! (Might need some textual feedback to define what FX you are currently controlling mind!).
This would take things to the next level (this always annoyed me about using the Kore 2 hardware, jumping between different instances of Kore within a session was less than intuitive!). If this is possible somehow, I would be over the moon!
|
You should be able to do that. Some hints:
- You need to use FX "<Dynamic>", not "At position". Only the dynamic selector allows you to use compartment parameters (p2 aka p[1], for example).
- Give the compartment parameter a value count (in your case, Compartment Parameter 2).
- Keep in mind that the result of dynamic expressions is an *index*. Indexes start at 0, so the first FX would be 0, the second FX 1, and so on.
- There must be an FX at the resulting position, otherwise the target won't become active. Just put some placeholder FX there, e.g. ReaSynth
|
|
|
02-28-2023, 06:38 PM
|
#3304
|
Human being with feelings
Join Date: Aug 2010
Location: Germany
Posts: 1,885
|
Quote:
Originally Posted by Vladistone
Yes I support you! it would be better to moderny get the necessary information on the settings and examples of use ...
Otherwise - most ordinary users do not keep up with @Helgoboss and his innovations! Here We didn`t have time to study the old user guide but updates are already appearing one by one!
By the way!
@helgoboss pay attention to the "user guide update" PR, more than 112 screenshots of panels have been added there, which would help new candidates to quickly understand the structure and system of realearn, .. otherwise it will quickly turn into an elite club of "advanced Realearn coders" and will not wide knowledge for another music produsers w/DAW-users! In the same way as it happened with your competitor developers, when you wrote to at the beginning of introduce the RL..
|
Appreciate the screenshots! But to me it looks like this new PR has similar issues as the previous one (too many changes at once, unexpected file format, ...). As I said, we should talk about file format, exact procedure, PR size, possible means of automation and so on, *before* you do all that work. Usually, the way is to post a GitHub issue, discuss all of these things, and then make a PR. The reason for this is that I want to maintain a certain amount of consistency in the code base / documentation. Also, a small PR that I see coming, is something that I can respond to much faster. I have a full time contract at the moment, so unfortunately I can't be super quick with processing the PRs.
See my second response to your initial PR here: https://github.com/helgoboss/realearn/pull/819
|
|
|
03-01-2023, 07:03 AM
|
#3305
|
Human being with feelings
Join Date: Jul 2007
Location: Cincinnati, Ohio
Posts: 42
|
Send Feedback to all
Is there a way to basically send a reset feedback to all channels/CCs for a device?
I can use the marker ID of !_REALEARN_SEND_ALL_FEEDBACK and it will reset the state of a button color that I have mapped on a Novation Launchpad; but I want to be able to reset the entire Launchpad when hitting a certain point in a song - so if it's something I can do with those marker points; that'd be great.
|
|
|
03-01-2023, 08:37 AM
|
#3306
|
Human being with feelings
Join Date: Aug 2010
Location: Germany
Posts: 1,885
|
Quote:
Originally Posted by jimosity
Is there a way to basically send a reset feedback to all channels/CCs for a device?
I can use the marker ID of !_REALEARN_SEND_ALL_FEEDBACK and it will reset the state of a button color that I have mapped on a Novation Launchpad; but I want to be able to reset the entire Launchpad when hitting a certain point in a song - so if it's something I can do with those marker points; that'd be great.
|
So you want to clear all LEDs of the Launchpad in response to a marker being reached? Well, looks like you have it working for one LED already. So the missing piece of the puzzle is to figure out the MIDI message that the Launchpad needs to clear all LEDs. As soon as you know that, you can use the "Raw MIDI" source to enter that message.
|
|
|
03-01-2023, 08:54 AM
|
#3307
|
Human being with feelings
Join Date: Jul 2007
Location: Cincinnati, Ohio
Posts: 42
|
Quote:
Originally Posted by helgoboss
So you want to clear all LEDs of the Launchpad in response to a marker being reached? Well, looks like you have it working for one LED already. So the missing piece of the puzzle is to figure out the MIDI message that the Launchpad needs to clear all LEDs. As soon as you know that, you can use the "Raw MIDI" source to enter that message.
|
Actually, it looks like as long as there is a mapping for a particular channel/button; the "!_REALEARN_SEND_ALL_FEEDBACK" marker action will work.
I'm not seeing a good midi message to reset the buttons on the launchpad without switching it into programmer mode and using SYSEX (I don't want to do that).
If there were a way to set the OSC target coming back to all channels or CCs, that sounds like it'd be an easier way.
Otherwise, just having a mapping for a button seems to work - it's just a lot of extra entries.
|
|
|
03-02-2023, 10:42 PM
|
#3308
|
Human being with feelings
Join Date: Aug 2010
Location: Germany
Posts: 1,885
|
Quote:
Originally Posted by jimosity
Actually, it looks like as long as there is a mapping for a particular channel/button; the "!_REALEARN_SEND_ALL_FEEDBACK" marker action will work.
I'm not seeing a good midi message to reset the buttons on the launchpad without switching it into programmer mode and using SYSEX (I don't want to do that).
If there were a way to set the OSC target coming back to all channels or CCs, that sounds like it'd be an easier way.
Otherwise, just having a mapping for a button seems to work - it's just a lot of extra entries.
|
How about just placing a MIDI item on the timeline that contains the MIDI messages to reset the Launchpad? Seems the most straightforward solution to me, since you would prefer it to be triggered at a specific time anyway instead of at a button press.
|
|
|
03-03-2023, 12:46 AM
|
#3309
|
Human being with feelings
Join Date: Jul 2022
Posts: 79
|
log debug info
why when you click on log debug info - an information dump immediately pops up? (even if no key is pressed on the controller)
and how to read such information?
Code:
abels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }]), Main: CompartmentParams([Param { setting: ParamSetting { key: None, name: "Track", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "Seek coarse/fine", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "Zoom on/off", value_count: Some(2), value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "Timer 250 Warp", value_count: None, value_labels: [] }, value: 0.5 }, Param { setting: ParamSetting { key: None, name: "Timer 1 / LCD page", value_count: None, value_labels: [] }, value: 1.0 }, Param { setting: ParamSetting { key: None, name: "CHAN Strip", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "SEND / AUX", value_count: Some(8), value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "EQ / Width", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "PLUG", value_count: Some(2), value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "INSTR", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "Parameter LCD", value_count: Some(2), value_labels: [] }, value: 1.0 }, Param { setting: ParamSetting { key: None, name: "SHIFT", value_count: Some(2), value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "OPT", value_count: Some(2), value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "Cmd", value_count: Some(2), value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "WIN\u{a0}Ctrl", value_count: Some(2), value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "LCD COUTER", value_count: Some(6), value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }])} }
my problem was the strange behavior of the controller: duplication of the controller feedback from two buttons:
Mapping PAN mode button 4
real control | [90, 2A, 7F] = [144, 42, 127] = NoteOn
and scrub/seek
real feedback | [90, 65, 7F] = [144, 101, 127] = NoteOn
how to find mutual influence on each other?
Code:
1677829201.339 | ReaLearn Q5496NyV | Target control | Mapping PAN mode button 4: Hit target successfully [invocation = 44, target = 1, control value = 1] (normal control)
1677829201.357 | ReaLearn Q5496NyV | Target control | Mapping SEND reset Switch 5: Hit target successfully [invocation = 15, target = 1, control value = 0] (group interaction)
1677829201.357 | ReaLearn Q5496NyV | Target control | Mapping INST mode button 1: Hit target successfully [invocation = 16, target = 1, control value = 0] (group interaction)
1677829201.358 | ReaLearn Q5496NyV | Target control | Mapping PLUG mode button 2: Hit target successfully [invocation = 16, target = 1, control value = 0] (group interaction)
1677829201.359 | ReaLearn Q5496NyV | Target control | Mapping EQ mode button 3: Hit target successfully [invocation = 16, target = 1, control value = 0] (group interaction)
1677829201.359 | ReaLearn Q5496NyV | Target control | Mapping CHAN S. mode button 6: Hit target successfully [invocation = 15, target = 1, control value = 0] (group interaction)
1677829201.361 | ReaLearn Q5496NyV | Target control | Mapping MODE button 7: Hit target successfully [invocation = 15, target = 1, control value = 0] (group interaction)
1677829201.362 | ReaLearn Q5496NyV | Virtual feedback | Multi 7 with value 0.0000
1677829201.363 | ReaLearn Q5496NyV | Target control | Mapping MODE button 8: Hit target successfully [invocation = 15, target = 1, control value = 0] (group interaction)
1677829201.365 | ReaLearn Q5496NyV | Virtual feedback | Multi 8 with value 0.0000
1677829201.366 | ReaLearn Q5496NyV | Virtual control | Button 4 with value 127/127 at Instant { t: 3192184229426 } (matched)
1677829201.368 | ReaLearn Q5496NyV | Real control | [90, 2A, 7F] = [144, 42, 127] = NoteOn { channel: Channel(0), key_number: KeyNumber(42), velocity: U7(127) } at Instant { t: 3192184229426 } (matched)
1677829201.404 | ReaLearn Q5496NyV | Real control | Parameter 1 with value 1
1677829201.406 | ReaLearn Q5496NyV | Virtual feedback | Button 4 with value 100.0000
1677829201.408 | ReaLearn Q5496NyV | Real feedback | [90, 2A, 7F] = [144, 42, 127] = NoteOn { channel: Channel(0), key_number: KeyNumber(42), velocity: U7(127) } (Normal)
1677829201.428 | ReaLearn Q5496NyV | Virtual feedback | Button scrub with value 100.0000
1677829201.431 | ReaLearn Q5496NyV | Real feedback | [90, 65, 7F] = [144, 101, 127] = NoteOn { channel: Channel(0), key_number: KeyNumber(101), velocity: U7(127) } (Normal)
1677829201.519 | ReaLearn Q5496NyV | Target control | Mapping PAN mode button 4: Control value ignored by glue [invocation = 45, target = 1] (normal control)
1677829201.522 | ReaLearn Q5496NyV | Virtual control | Button 4 with value 0/127 at Instant { t: 3192386905245 } (matched)
1677829201.524 | ReaLearn Q5496NyV | Real control | [90, 2A, 00] = [144, 42, 0] = NoteOn { channel: Channel(0), key_number: KeyNumber(42), velocity: U7(0) } at Instant { t: 3192386905245 } (matched)
after logical reflections on the mapping panels, I came to the conclusion that the target was accidentally changed from "particular" to "dynamic"
- and therefore the parameter element changed when switching from p(2) "scrub" to p(10) "PAN".
it would be nice if this data options was displayed in the logging list. or are there other tracking options? Tell me please!
Last edited by Vladistone; 03-03-2023 at 01:40 AM.
|
|
|
03-03-2023, 01:33 AM
|
#3310
|
Human being with feelings
Join Date: Jul 2022
Posts: 79
|
mapping rows size window
and the last lamer question for Main panel window:
what is the reason of window size made for 5 elements, and not 8 rows of the mapping? a classic bank layout of 8 would be much better for viewing elements.
|
|
|
03-03-2023, 04:40 AM
|
#3311
|
Human being with feelings
Join Date: Jul 2022
Posts: 79
|
Realearn warning
for common monitor FX settings: what is the method to eliminate the Realearn warning about automatic mapping conversion in the MCU controller? in those cases when you describe the target settings for changing the parameter of XT banks of other controller? (specifying "particular FX" destination for XT instance)
This is a usгaly installation for bank to left/right control buttons... that are always in the MCU instance, and XT instances only receive changes from the MCU influence
.
Last edited by Vladistone; 03-03-2023 at 04:57 AM.
|
|
|
03-04-2023, 07:32 AM
|
#3312
|
Human being with feelings
Join Date: Feb 2022
Location: Almost Canada
Posts: 494
|
I *thought* I asked this before and made a feature request. However I can't find it here or on Github. It's likely that my search skills are lacking.
....
Currently, we don't have access to stereo metering, correct? That's something I'd like to be able to do.
|
|
|
03-04-2023, 04:37 PM
|
#3313
|
Human being with feelings
Join Date: Mar 2017
Posts: 119
|
I have midi fighter twister
"Global: last touched" works perfectly but Reaper has focus issues and I don't want to control tcp controls on this particular knob.
I only want it to affect the last touched parameter of an FX.
I cant find any scripts that do this, we have "Adjust last touched FX parameter (MIDI CC/OSC only)" but it does not work with an encoder and makes the next parameter jump to where the position of the knob is at.
Does someone have an solution to only control :last touched FX parameter" work like "Global: last touched"?
|
|
|
03-04-2023, 08:29 PM
|
#3314
|
Human being with feelings
Join Date: Apr 2013
Posts: 75
|
Hi, I'm having a lot of problems with the value sequence function. I'm trying to set a button to increment through "0, 170, 340, 510, 680, 850, 1000," and wrap back to 0, it's for the mode select in NastyDLA MkII.
If the last value is 1000 (the max for this target) the value sequence just doesn't work at all, it just increments via the step size sliders. 999 is fine, but not good enough for this because the last mode in the plugin is set at 1000.
Also if I click off of the value sequence the numbers disappear leaving just commas, and in this case with the last number at 1000 the box is entirely cleared. I've noticed the disappearing numbers thing generally when trying to use the value sequence feature.
|
|
|
03-05-2023, 01:14 AM
|
#3315
|
Human being with feelings
Join Date: Aug 2010
Location: Germany
Posts: 1,885
|
Quote:
Originally Posted by theFRXST
I have midi fighter twister
"Global: last touched" works perfectly but Reaper has focus issues and I don't want to control tcp controls on this particular knob.
I only want it to affect the last touched parameter of an FX.
I cant find any scripts that do this, we have "Adjust last touched FX parameter (MIDI CC/OSC only)" but it does not work with an encoder and makes the next parameter jump to where the position of the knob is at.
Does someone have an solution to only control :last touched FX parameter" work like "Global: last touched"?
|
See below.
Quote:
Originally Posted by Gurt Tractor
Hi, I'm having a lot of problems with the value sequence function. I'm trying to set a button to increment through "0, 170, 340, 510, 680, 850, 1000," and wrap back to 0, it's for the mode select in NastyDLA MkII.
If the last value is 1000 (the max for this target) the value sequence just doesn't work at all, it just increments via the step size sliders. 999 is fine, but not good enough for this because the last mode in the plugin is set at 1000.
Also if I click off of the value sequence the numbers disappear leaving just commas, and in this case with the last number at 1000 the box is entirely cleared. I've noticed the disappearing numbers thing generally when trying to use the value sequence feature.
|
Quick answer to both of you: Use the latest pre-release 2.15.0-pre.1. see the fixes (disappearing target value numbers) and new features (configurable target types for last touched target) above.
The target value number 1000 not working, this must be something plug-in specific. Nothing I can do without more details and an example project.
Last edited by helgoboss; 03-05-2023 at 04:08 AM.
|
|
|
03-05-2023, 04:09 AM
|
#3316
|
Human being with feelings
Join Date: Aug 2010
Location: Germany
Posts: 1,885
|
Quote:
Originally Posted by Puck
I *thought* I asked this before and made a feature request. However I can't find it here or on Github. It's likely that my search skills are lacking.
....
Currently, we don't have access to stereo metering, correct? That's something I'd like to be able to do.
|
Stereo metering? You mean the target "Track: Peak" allowing to feed two displays, one for left and one for right channel?
|
|
|
03-05-2023, 04:22 AM
|
#3317
|
Human being with feelings
Join Date: Aug 2010
Location: Germany
Posts: 1,885
|
Quote:
Originally Posted by Vladistone
why when you click on log debug info - an information dump immediately pops up? (even if no key is pressed on the controller)
and how to read such information?
Code:
abels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }]), Main: CompartmentParams([Param { setting: ParamSetting { key: None, name: "Track", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "Seek coarse/fine", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "Zoom on/off", value_count: Some(2), value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "Timer 250 Warp", value_count: None, value_labels: [] }, value: 0.5 }, Param { setting: ParamSetting { key: None, name: "Timer 1 / LCD page", value_count: None, value_labels: [] }, value: 1.0 }, Param { setting: ParamSetting { key: None, name: "CHAN Strip", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "SEND / AUX", value_count: Some(8), value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "EQ / Width", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "PLUG", value_count: Some(2), value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "INSTR", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "Parameter LCD", value_count: Some(2), value_labels: [] }, value: 1.0 }, Param { setting: ParamSetting { key: None, name: "SHIFT", value_count: Some(2), value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "OPT", value_count: Some(2), value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "Cmd", value_count: Some(2), value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "WIN\u{a0}Ctrl", value_count: Some(2), value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "LCD COUTER", value_count: Some(6), value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }, Param { setting: ParamSetting { key: None, name: "", value_count: None, value_labels: [] }, value: 0.0 }])} }
my problem was the strange behavior of the controller: duplication of the controller feedback from two buttons:
Mapping PAN mode button 4
real control | [90, 2A, 7F] = [144, 42, 127] = NoteOn
and scrub/seek
real feedback | [90, 65, 7F] = [144, 101, 127] = NoteOn
how to find mutual influence on each other?
Code:
1677829201.339 | ReaLearn Q5496NyV | Target control | Mapping PAN mode button 4: Hit target successfully [invocation = 44, target = 1, control value = 1] (normal control)
1677829201.357 | ReaLearn Q5496NyV | Target control | Mapping SEND reset Switch 5: Hit target successfully [invocation = 15, target = 1, control value = 0] (group interaction)
1677829201.357 | ReaLearn Q5496NyV | Target control | Mapping INST mode button 1: Hit target successfully [invocation = 16, target = 1, control value = 0] (group interaction)
1677829201.358 | ReaLearn Q5496NyV | Target control | Mapping PLUG mode button 2: Hit target successfully [invocation = 16, target = 1, control value = 0] (group interaction)
1677829201.359 | ReaLearn Q5496NyV | Target control | Mapping EQ mode button 3: Hit target successfully [invocation = 16, target = 1, control value = 0] (group interaction)
1677829201.359 | ReaLearn Q5496NyV | Target control | Mapping CHAN S. mode button 6: Hit target successfully [invocation = 15, target = 1, control value = 0] (group interaction)
1677829201.361 | ReaLearn Q5496NyV | Target control | Mapping MODE button 7: Hit target successfully [invocation = 15, target = 1, control value = 0] (group interaction)
1677829201.362 | ReaLearn Q5496NyV | Virtual feedback | Multi 7 with value 0.0000
1677829201.363 | ReaLearn Q5496NyV | Target control | Mapping MODE button 8: Hit target successfully [invocation = 15, target = 1, control value = 0] (group interaction)
1677829201.365 | ReaLearn Q5496NyV | Virtual feedback | Multi 8 with value 0.0000
1677829201.366 | ReaLearn Q5496NyV | Virtual control | Button 4 with value 127/127 at Instant { t: 3192184229426 } (matched)
1677829201.368 | ReaLearn Q5496NyV | Real control | [90, 2A, 7F] = [144, 42, 127] = NoteOn { channel: Channel(0), key_number: KeyNumber(42), velocity: U7(127) } at Instant { t: 3192184229426 } (matched)
1677829201.404 | ReaLearn Q5496NyV | Real control | Parameter 1 with value 1
1677829201.406 | ReaLearn Q5496NyV | Virtual feedback | Button 4 with value 100.0000
1677829201.408 | ReaLearn Q5496NyV | Real feedback | [90, 2A, 7F] = [144, 42, 127] = NoteOn { channel: Channel(0), key_number: KeyNumber(42), velocity: U7(127) } (Normal)
1677829201.428 | ReaLearn Q5496NyV | Virtual feedback | Button scrub with value 100.0000
1677829201.431 | ReaLearn Q5496NyV | Real feedback | [90, 65, 7F] = [144, 101, 127] = NoteOn { channel: Channel(0), key_number: KeyNumber(101), velocity: U7(127) } (Normal)
1677829201.519 | ReaLearn Q5496NyV | Target control | Mapping PAN mode button 4: Control value ignored by glue [invocation = 45, target = 1] (normal control)
1677829201.522 | ReaLearn Q5496NyV | Virtual control | Button 4 with value 0/127 at Instant { t: 3192386905245 } (matched)
1677829201.524 | ReaLearn Q5496NyV | Real control | [90, 2A, 00] = [144, 42, 0] = NoteOn { channel: Channel(0), key_number: KeyNumber(42), velocity: U7(0) } at Instant { t: 3192386905245 } (matched)
after logical reflections on the mapping panels, I came to the conclusion that the target was accidentally changed from "particular" to "dynamic"
- and therefore the parameter element changed when switching from p(2) "scrub" to p(10) "PAN".
it would be nice if this data options was displayed in the logging list. or are there other tracking options? Tell me please!
|
"Log debug info" is something like a dump of ReaLearn's internal data. Don't try to read it  If a user reports a very hard-to-analyze bug, I might ask them to press "Log debug info" and send me the result. But otherwise, there's no reason to ever use it.
Control/feedback logging is what you are looking for, and you already found it, it seems.
If you want to see the result of dynamic expression (in real-time), you need to look at the text next to the dynamic expression text field. It's not in the logs.
|
|
|
03-05-2023, 04:28 AM
|
#3318
|
Human being with feelings
Join Date: Aug 2010
Location: Germany
Posts: 1,885
|
Quote:
Originally Posted by Vladistone
and the last lamer question for Main panel window:
what is the reason of window size made for 5 elements, and not 8 rows of the mapping? a classic bank layout of 8 would be much better for viewing elements.
|
Because a hand has 5 fingers.
Kidding.
It's just 5 to not exhaust vertical screen space. Now don't ask me about resizability  Too much effort.
|
|
|
03-05-2023, 04:36 AM
|
#3319
|
Human being with feelings
Join Date: Aug 2010
Location: Germany
Posts: 1,885
|
Quote:
Originally Posted by Vladistone
for common monitor FX settings: what is the method to eliminate the Realearn warning about automatic mapping conversion in the MCU controller? in those cases when you describe the target settings for changing the parameter of XT banks of other controller? (specifying "particular FX" destination for XT instance)
This is a usгaly installation for bank to left/right control buttons... that are always in the MCU instance, and XT instances only receive changes from the MCU influence
.
|
What's XT? Mackie Extender? Anyway, it never make sense to save mappings with "Particular" FX targets as presets. So ReaLearn provides no way to disable that question.
|
|
|
03-05-2023, 06:30 AM
|
#3320
|
Human being with feelings
Join Date: Feb 2022
Location: Almost Canada
Posts: 494
|
Quote:
Originally Posted by helgoboss
Stereo metering? You mean the target "Track: Peak" allowing to feed two displays, one for left and one for right channel?
|
Precisely
|
|
|
Thread Tools |
|
Display Modes |
Linear Mode
|
Posting Rules
|
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is Off
|
|
|
All times are GMT -7. The time now is 06:07 PM.
|