 |
|
|
02-10-2022, 01:03 PM
|
#2001
|
Human being with feelings
Join Date: Aug 2010
Location: Germany
Posts: 2,024
|
Quote:
Originally Posted by ahanysz
Sure, I'm up for it, if it wouldn't bore others to death (-: I've done parallel programming for numerical analysis before. I'd be interested to hear about how it works in the context of a DAW.
|
Well, I can't tell the whole story because REAPER is not open source, so I'm far away from having a complete understanding of the REAPER internals. But I think I collected enough puzzle pieces to make a good guess.
First, it's a well-known fact that the majority of REAPER API functions (e.g. something like "change track volume") must not be called in any other thread than the main thread (*). If you don't obey that rule, you get undefined behavior, e.g. a crash. That is actually a pretty common restriction in desktop software because UIs are designed to not be thread safe. They run in a fast event loop that's driven by exactly one thread, the main thread.
When I think of this in the context of REAPER, I always have the picture of a railroad in my mind: The audio and MIDI stream is the train. The main thread is the switchman - the one who changes the switch and decides where the train goes.
Now, MIDI messages usually arrive in a real-time thread, not the main thread. So here's what ReaLearn does when a MIDI message comes in: It does half of the processing in the real-time thread and then enqueues the second half for later execution in the main thread. As soon as the next main thread event loop cycle is executed, the second half of the processing is executed, which includes the REAPER API function call.
This all works nicely ... until the main thread is not participating anymore: During offline rendering. The real offline rendering work is done using some special worker threads. Justin wrote that the main thread is merely a spectator. It doesn't have any influence on the actual rendering. Any REAPER API functions that one calls in the main thread during the period of offline rendering won't have an effect on the result. If I remember correctly, it takes effect after the offline rendering is done. In other words: The switchman takes a break to watch the amazing offline rendering spectacle and continues processing its tasks afterwards
This raises the question "Why?". Why not let the main thread (switchman) do its usual work during offline rendering? I guess because when you do rendering, everything should be predictable. You don't want any user interaction (= railroad switch change) to mess up the result. And there's also no need for that, usually. Everything is already predestined: Automation envelopes, items on the track ... it's all there as far as REAPER is concerned, no interaction is necessary.
However, from the perspective of ReaLearn, the possibility of interaction would be desirable. Luckily, Justin suggested that changing FX parameter values during offline rendering via TrackFX_SetParamNormalized() could actually work! Obviously, this would mean making an exception to the rule "call from main thread only". I guess one reason why this exception can be made is because the VST plug-in specification (and maybe also other plug-in APIs) dictates that a plug-in should be capable of handling parameter changes from *any* thread (I guess in order to give the DAW manufacturers enough freedom and not burden them with implementation constraints). Nice.
But what about the part of TrackFX_SetParamNormalized() which is REAPER code, not plug-in code? This part is still sensitive to threading. Justin gave a little hint here: That it would be good if I could make sure that the ReaLearn instance only affects the track it is on ... So he considers it as safe to call TrackFX_SetParamNormalized() if the affected FX is on that track, but as unsafe if on another track. This leads me to the following guess: That REAPER probably parallelizes offline rendering in a way so that one track (including all of its items, FX and stuff) is processed by exactly one thread.
(*) There are exceptions (e.g. search for "AnyThread" here).
Quote:
Originally Posted by ahanysz
That does make sense, at an abstract level. I'd assumed that rendering was basically the same pathway as playback, except that at the end you convert the buffer to something you can save as a file, rather than sending it to an audio driver. But now you mention it, I guess rendering doesn't need to happen strictly in order, or at constant speed, so it can be optimised in ways that playback can't.
|
Yes, exactly.
Quote:
Originally Posted by soulaccess
Is it possible to increase the time between outgoing messages? It seems my MIDI Controller can't handle the pace at they are sent.
Here are the details:
I managed to hook up my Arturia BeatStep as controller including feedback for the LED Pads via ReaLearn. Everything works fine so far, except when feedback for all pads is updated at once (on initialise, or plugin-preset change, etc). It seems as if BeatStep is too slow to process the MIDI command strings at the pace ReaLearn sends it. (BeatStep answers each MIDI command with a Sysex string and ignores what's being sent while doing so)
Some more info:
When logging outgoing messages, the log first shows about 3 outgoing messages per millisecond. As the log grows larger, the time between outgoing messages gets larger as well and at around 1 message per 10ms everything works as expected (means: BeatStep updates the color of all pads correctly)
|
There's no built-in way to throttle feedback messages. Mmh. It would be possible to implement it (on a ReaLearn instance basis). Feel free to raise a FR on GitHub. In the meantime, you could try writing a little JSFX first that does throttling and put it behind ReaLearn with feedback output set to "FX output".
|
|
|
02-10-2022, 02:10 PM
|
#2002
|
Human being with feelings
Join Date: Oct 2007
Location: home is where the heart is
Posts: 11,975
|
Quote:
Originally Posted by helgoboss
Well, I can't tell the whole story because REAPER is not open source, so I'm far away from having a complete understanding of the REAPER internals. But I think I collected enough puzzle pieces to make a good guess.
|
Interesting read (for me anyway), thanks.
|
|
|
02-10-2022, 02:25 PM
|
#2003
|
Human being with feelings
Join Date: Apr 2013
Location: France
Posts: 9,567
|
This would explain why few days ago I had issue rendering a project with ReaLearn, it didn't sound like playback...
This is kind of 'hidden' cause no message about this. :S
So it seems the solution was online render, I'll try to remember that !
|
|
|
02-10-2022, 02:32 PM
|
#2004
|
Human being with feelings
Join Date: Aug 2010
Location: Germany
Posts: 2,024
|
Quote:
Originally Posted by X-Raym
This would explain why few days ago I had issue rendering a project with ReaLearn, it didn't sound like playback...
This is kind of 'hidden' cause no message about this. :S
So it seems the solution was online render, I'll try to remember that !
|
Section "3.5. Automation and rendering" in the user guide
Yes, either online rendering or using automation envelopes.
|
|
|
02-10-2022, 02:41 PM
|
#2005
|
Human being with feelings
Join Date: Jul 2012
Posts: 41
|
Quote:
Originally Posted by helgoboss
There's no built-in way to throttle feedback messages. Mmh. It would be possible to implement it (on a ReaLearn instance basis). Feel free to raise a FR on GitHub. In the meantime, you could try writing a little JSFX first that does throttling and put it behind ReaLearn with feedback output set to "FX output".
|
Thank you for your quick response, I will rise an FR and also try the jsfx route.
|
|
|
02-10-2022, 04:20 PM
|
#2006
|
Human being with feelings
Join Date: Apr 2013
Location: France
Posts: 9,567
|
Ok ! Anyway to convert MIDI items to automations data before rendering ?
|
|
|
02-10-2022, 11:32 PM
|
#2007
|
Human being with feelings
Join Date: Dec 2009
Location: Oblivion
Posts: 10,097
|
Hi again helgo, any chance you could briefly answer those questions from that post for me, please?
I'm just in a mental limbo with this project and would like to put it to bed one way or another. It would really put my mind at ease.
|
|
|
02-11-2022, 01:48 AM
|
#2008
|
Human being with feelings
Join Date: Apr 2020
Posts: 29
|
Quote:
Originally Posted by helgoboss
Well, I can't tell the whole story because REAPER is not open source, so I'm far away from having a complete understanding of the REAPER internals. But I think I collected enough puzzle pieces to make a good guess.
|
Thanks! This was a fascinating read. Glad I asked.
|
|
|
02-11-2022, 03:16 PM
|
#2009
|
Human being with feelings
Join Date: Oct 2007
Location: home is where the heart is
Posts: 11,975
|
Quote:
Originally Posted by X-Raym
Ok ! Anyway to convert MIDI items to automations data before rendering ?
|
There's 'SWS/BR: Convert selected CC events in active item to linear envelope points in selected envelope' (MIDI editor action section), but it doesn't work with bezier curves.
|
|
|
02-11-2022, 07:34 PM
|
#2010
|
Human being with feelings
Join Date: Apr 2013
Location: France
Posts: 9,567
|
@nofish
Perfect ! I'll test that on my next project.
|
|
|
02-14-2022, 10:30 AM
|
#2011
|
Human being with feelings
Join Date: Jun 2010
Location: Berlin
Posts: 558
|
Quote:
Originally Posted by helgoboss
For everyone reading this: Below stuff is only relevant for people who are looking to feed MIDI items into ReaLearn as an alternative to automation lanes. For everyone else, don't let it confuse you.
@ahanysz @dave I got a response from Justin. It might be possible to add offline rendering support to ReaLearn, but with serious limitations that the user must know about. Looks like it depends on 2 things:
### 1. Where the ReaLearn instance is located.
The ReaLearn instance should basically be on the same track as the adjusted parameter. This is not so uncommon for MIDI-CC based control scenarios as you want to use them, so this might not be a bad limitation to you.
### 2. Which targets you use.
Of course, not all targets will work. For some targets (e.g. "Project: Invoke transport action") it should be obvious that this doesn't make any sense during offline rendering.
E.g. the "FX: Set parameter value" target should work (maybe the most important one?).
|
That sounds great!
Quote:
Originally Posted by helgoboss
"Track: Set volume" wouldn't work reliably itself, but it could be simulated by letting ReaLearn itself lower the incoming audio volume (= act as an audio FX itself). That could be done transparently but it would require that you put ReaLearn at the last position in the FX chain, otherwise it doesn't have the power to lower the audio volume. So maybe it's better if you avoid using "Track: Set volume" and use a volume-modification plug-in instead.
So ... which targets do you use and where do you have your instances? It would probably not be hard to make "FX: Set parameter value" work under above conditions.
|
I only use "FX: Set parameter value" on an FX on the same track and "MIDI: Send message" on an instance of the track's input FX chain.
|
|
|
02-14-2022, 07:24 PM
|
#2012
|
Human being with feelings
Join Date: Mar 2012
Posts: 359
|
Conditional Activation for Three Distinct States
I'm trying to setup the following via conditional activation on my Twister via ReaLearn for a vst synth with three oscillators:
Osc 1 = ON --> Osc 2 & 3 = OFF
Osc 2 = ON --> Osc 1 & 3 = OFF
Osc 3 = ON --> Osc 1 & 2 = OFF
The problem I am running into is that it seems I cannot do this with only two conditional activation options in each mapping /if I also want to use conditional activation for specific mappings for each oscillator/.
For example, I've begun setting up as follows:
Osc 1 = ON iff (p1 = 0 and p3 = 0)
Osc 2 = ON iff (p1 = 1 and p3 = 0)
Osc 3 = ON iff (p1 = 1 and p4 = 1)
So far, these states are properly exclusive: any time osc 1-3 is on, the other two oscillators are off. That works fine. (If you're wondering why I'm using these parameters...: L Bank Top button toggles p1 ON/OFF, so it controls Osc 1 and 2, while L Bank Bottom button toggles p3 ON/OFF, and p4 is active only if p3 = ON. There's probably an easier way to do this, but this is the way I got conditional activation working for three exclusive states using just two buttons).
The problem arises when I also want to use conditional activation for specific mappings within each oscillator. This is because any particular button mapped to a particular oscillator will be in/active iff its conditional activation states match those above.
So, for example, let's say Osc 1 = ON, and therefore that (p1 = 0 and p3 = 0). Now assume that I want button 1/1 to toggle between two distinct mappings in Osc 1. The problem is that I have no more independent conditional activation states with which to do this. Once the button has been activated as part of osc 1, its conditional activation states are fixed to (p1 = 0 and p3 = 0). I don't have a third conditional activation state to toggle between, such that when the button = OFF it is mapped to one parameter in osc 1, and when the button = ON it is mapped to another parameter in osc 1.
This /seems/ to be a limitation of having only two conditional activation states to work with. But I'm wondering if I'm overlooking something.
Any tips?
*EDIT: figgered it out. I forgot that groups themselves can be conditionally activated. That changes everything, and makes conditional activation exponentially more powerful.
Last edited by Miscreant; 02-15-2022 at 06:07 PM.
|
|
|
02-15-2022, 12:55 AM
|
#2013
|
Human being with feelings
Join Date: Nov 2012
Posts: 178
|
Can you use ReaLearn to remap CC channels?
Hi, I'd like to map my MIDI controller's faders (CC41 to 48) to CC1 to 8.
I can get ReaLearn to detect the CC input, but how do I map it to a different CC channel output globally?
There is no "CC" target. "MIDI message" target doesn't have any CC settings, and I can't specify 'all selected tracks'. "FX parameter" target doesn't have any CC settings.
Help please.
|
|
|
02-15-2022, 12:57 AM
|
#2014
|
Human being with feelings
Join Date: Jun 2010
Location: Berlin
Posts: 558
|
Quote:
Originally Posted by richardj
Hi, I'd like to map my MIDI controller's faders (CC41 to 48) to CC1 to 8.
I can get ReaLearn to detect the CC input, but how do I map it to a different CC channel output globally?
There is no "CC" target. "MIDI message" target doesn't have any CC settings, and I can't specify 'all selected tracks'. "FX parameter" target doesn't have any CC settings.
Help please.
|
With a "MIDI message" target, you have to click on the "Pick!" button which opens a menu from where you can select what you want.
|
|
|
02-15-2022, 01:05 AM
|
#2015
|
Human being with feelings
Join Date: Nov 2012
Posts: 178
|
Quote:
Originally Posted by Reaktor:[Dave]
With a "MIDI message" target, you have to click on the "Pick!" button which opens a menu from where you can select what you want.
|
Thanks, but if I go to pick and choose CC channel 1 it still doesn't send my message
|
|
|
02-15-2022, 01:10 AM
|
#2016
|
Human being with feelings
Join Date: Jun 2010
Location: Berlin
Posts: 558
|
Quote:
Originally Posted by richardj
Thanks, but if I go to pick and choose CC channel 1 it still doesn't send my message 
|
Still in the mapping window that you opened via the "Edit" button from ReaLearn's main window, you see an "Output" in the target section below "MIDI: Send message". If that one is set to "FX output (with FX only)", ReaLearn will convert the incoming MIDI according to your rules and send it to the next FX up in the FX chain.
Note that it's not possible to send that MIDI data to any other track than the one the ReaLearn instance is on and it's also not possible to send MIDI data to FX that are before that ReaLearn instance.
|
|
|
02-15-2022, 01:17 AM
|
#2017
|
Human being with feelings
Join Date: Nov 2012
Posts: 178
|
Quote:
Originally Posted by Reaktor:[Dave]
Still in the mapping window that you opened via the "Edit" button from ReaLearn's main window, you see an "Output" in the target section below "MIDI: Send message". If that one is set to "FX output (with FX only)", ReaLearn will convert the incoming MIDI according to your rules and send it to the next FX up in the FX chain.
Note that it's not possible to send that MIDI data to any other track than the one the ReaLearn instance is on and it's also not possible to send MIDI data to FX that are before that ReaLearn instance.
|
Yeah, it doesn't seem to work for me. Guess I'll stick to Reaper's normal MIDI CC Mapper plugin. I was looking for a global remapping capability anyway, thanks though.
|
|
|
02-15-2022, 01:36 AM
|
#2018
|
Human being with feelings
Join Date: Aug 2010
Location: Germany
Posts: 2,024
|
Quote:
Originally Posted by richardj
Yeah, it doesn't seem to work for me. Guess I'll stick to Reaper's normal MIDI CC Mapper plugin. I was looking for a global remapping capability anyway, thanks though.
|
The most flexible way of doing MIDI-to-MIDI conversion is writing a JS FX. ReaLearn is not primarily a MIDI converter. The "MIDI: Send message" target is just a bonus feature that sometimes comes in handy if you use ReaLearn anyway for controlling REAPER and don't want to add another tool to the mix.
|
|
|
02-15-2022, 05:12 AM
|
#2019
|
Human being with feelings
Join Date: Feb 2008
Location: So Florida
Posts: 1,390
|
Toggle Parent assignments?
Hi Everyone,
Here is a video of what I'm trying to do with a cc shortcut, Thx
https://www.dropbox.com/s/ef5aoodzkl...06-50.mp4?dl=0
Jeff
__________________
Win 10 I9 20 core 48g Ram always on the latest update
|
|
|
02-19-2022, 10:53 AM
|
#2020
|
Human being with feelings
Join Date: Sep 2016
Location: Toronto
Posts: 683
|
Hi helgoboss, I'm wondering how I would accomplish the following:
Select a track and while it is selected control the sends and fx parameters on multiple other tracks by name. For example, Track A sends to Track B, C and Track B and C send to Track D. When track A is selected, the controls become available for the sends of Track B, C and the fx on Track D.
Is this currently possible?
|
|
|
02-19-2022, 11:10 AM
|
#2021
|
Human being with feelings
Join Date: Aug 2010
Location: Germany
Posts: 2,024
|
Quote:
Originally Posted by foxAsteria
I've been working on my TouchOSC setup all last year and now I'm almost finished. There are a number of things I still want to achieve, so I hope you can tell me whether I need to keep digging, give up or make some new FR's.
To save time, please just let me know if they are
(A) Currently possible
(B) Planned feature
(C) Possible; make FR
(D) Unlikely / uninterested / impossible
1. Display current (at cursor) Region/Marker name/number
2. Display last action name (feedback for undo)
3. Display Loop/Time selection start and end times independently
4. Display pan mode
5. Separate Peak feedback for L/R/etc channels
6. Automatically exclude prefixes from target.fx.name (Vst: etc)
7. Pulse/flash OSC buttons (not only on/off feedback)
8. Feedback for metronome checkbox settings, volume fader
9. Native support for changing time signature with feedback
Thanks!
|
1. B ( https://github.com/helgoboss/realearn/issues/523)
2. C
3. C
4. C
5. C
6. C
7. D (It feels wrong implementing this in ReaLearn. The OSC software can implement this much better/smoother using native animation facilities.)
8. A/C (should work to some degree)
9. C ... but how exactly? Numerator and denominator separately?
|
|
|
02-19-2022, 11:14 AM
|
#2022
|
Human being with feelings
Join Date: Aug 2010
Location: Germany
Posts: 2,024
|
Quote:
Originally Posted by Arthur McArthur
Hi helgoboss, I'm wondering how I would accomplish the following:
Select a track and while it is selected control the sends and fx parameters on multiple other tracks by name. For example, Track A sends to Track B, C and Track B and C send to Track D. When track A is selected, the controls become available for the sends of Track B, C and the fx on Track D.
Is this currently possible?
|
You can do it now, but not super elegantly. You would need to map the same button (which you use for selecting the track) to a "ReaLearn: Enable/disable mappings" target which enables exactly the mappings you want.
To do this elegantly, you need https://github.com/helgoboss/realearn/issues/392. One of the top FRs on my list. Only topped by Playtime / Clip Engine at the moment
|
|
|
02-19-2022, 11:54 AM
|
#2023
|
Human being with feelings
Join Date: Nov 2010
Location: In the abyss...gazing at you...
Posts: 1,227
|
Thank you and a few questions
Hey Helgoboss,
thank you very much for this outstanding piece of Reaper-extension.
I really feel like if I can master this, it will maybe get me a giant leap foreward.
First qustion is:
Where can I donate? I purchased your Playtime plugin and will certainliy purchase Playtime2 when it´s available.
But seriousely I want to contribute to this phantastic work.
Second (and maybe third question  ):
I try to set up my APC40mkII.
What I struggle with is conditional mapping.
I can setup track sends for 8 sends on a selected track.
I can set up control an instance of ReaEQ on the focused instance.
I struggle with switching between them. I would love to have kind of an exclude button or a dedicated button for each.
This is surely possible I know, but how.
I tried to make this with conditional group activation.
I understood that I have to use additional mappings to activate one or the other but I can´t get my head around that atm.
BTW I am trying to make this from within on instance of Realearn on my monitoring FX-chain because I want to have it in all my projects.
If someone could give me a hint into the right direction....please
Last edited by TheWhistler; 02-20-2022 at 02:01 AM.
Reason: typo
|
|
|
02-19-2022, 12:54 PM
|
#2024
|
Human being with feelings
Join Date: Sep 2016
Location: Toronto
Posts: 683
|
Quote:
Originally Posted by helgoboss
You can do it now, but not super elegantly. You would need to map the same button (which you use for selecting the track) to a "ReaLearn: Enable/disable mappings" target which enables exactly the mappings you want.
To do this elegantly, you need https://github.com/helgoboss/realearn/issues/392. One of the top FRs on my list. Only topped by Playtime / Clip Engine at the moment 
|
Great, I suppose my only question is if this would work by selecting a track on by clicking on the TCP and not only by using a ReaLearn-assigned button.
Excited to see what you have been cooking up for Playtime 2 as well!
|
|
|
02-20-2022, 01:54 AM
|
#2025
|
Human being with feelings
Join Date: Nov 2010
Location: In the abyss...gazing at you...
Posts: 1,227
|
Quote:
Originally Posted by TheWhistler
Hey Helgoboss,
First qustion is:
Where can I donate? I purchased your Playtime plugin and will certainliy purchase Playtime2 when it´s available.
But seriousely I want to contribute to this phantastic work.
|
Ahhh... found it on the ReaLearn page...donation is on the way.
|
|
|
02-20-2022, 03:10 AM
|
#2026
|
Human being with feelings
Join Date: Nov 2010
Location: In the abyss...gazing at you...
Posts: 1,227
|
Found an oddity with ReEQ
Hi all you ReaLearners  ,
I am nearly not able to supress my excitement about Realearn.
Seem to get some serious steps further which is very cool.
I am setting up track sends and a template for ReaEQ with my APC40mkII using conditional seetings.
I found one oddity/bug with Realearn and ReaEQ and my APC though which might most likely be related to ReaEQ.
I set up my EQ-bands (for bell bands) like this. One knob for freq (with feedback), one knob for bandwidth (feedback) and one fader for gain.
This is working very good on all bands except for band 5 and the frequency knob.
The knob and the feedback are behaving like there would be some kind of exponential function working in the background.
The travel upward get´s slower and finer the more it get´s up and jumpy when turned down.
All the other EQs I set up move smoothly with no accelleration thru the frequencies.
I tried everything I could imagine.
First deleted the setting and copied one that did work good on the band below.
Once again learned the source and destination, same problem again.
I then examined my Akai APC for possible problems with this actual knob.
I recorded a knob sweep back and fourth but it turned out that it transmits every controller very smooth and without any kind offset.
I then tried to map this very knob on this very band 5 to another EQ - bang - works as expected.
Chances are, there is a bug in band 5 of my beloved ReaEQ - is this possible?
I bet there is someone out there who has setup ReaLearn for ReaEQ in a similar way.
Edit:
Something strange going on in ReaComp as well.
No way to get smooth transitions on the threshold as well.
I tried it with MCompressor (the free comp by Melda Production) and it works smoothly there.
I can remember that I tried this a while ago within the Reaper midi mapping as well.
Same result there. Is this due to some internal specifics in the Reaper plugins?
That is sad, they sound good and I don´t know any plugs that use less CPU.
Last edited by TheWhistler; 02-20-2022 at 07:07 AM.
Reason: typo
|
|
|
02-20-2022, 10:57 AM
|
#2027
|
Human being with feelings
Join Date: Oct 2016
Posts: 225
|
Quote:
Originally Posted by helgoboss
The most obvious approach would be to divide the MIDI data into multiple items and put each item on the track with the corresponding instrument. But there's probably a good reason why you don't do this? If the reason is that you record this MIDI live, then let me know, there's another way.
|
I am using a different sequencer, which is sending MIDI to Reaper. I'm essentially using Reaper as an instrument rack. So it's similar to playing live I guess, in that the MIDI is coming via MIDI input rather than being items on tracks.
Quote:
The second-obvious way would be to use one channel per instrument and then add one send per channel to the corresponding instrument track.
|
Do you mean one MIDI channel per instrument? If so, I don't think that works - the incoming MIDI is on a single channel.
I think I can clarify what I want better: I am using Reaper as an instrument rack, like I said. But any given track has multiple layers that I'd like to activate / deactivate on the fly by sending CC messages. The thing is I don't want to activate / deactivate the instrument or track itself because then it'll cut off instrument release, reverb tails, etc. So I'm effectively trying to automate which layers receive any MIDI. Does that make sense?
|
|
|
02-21-2022, 10:05 AM
|
#2028
|
Human being with feelings
Join Date: Apr 2019
Posts: 97
|
Great effort making ReaLearn such a useful tool - for many different things
Just curious how much extra latency is added using OSC -> MIDI conversion? If I use an OSC controller playing a VSTi - is that out of the question latency wise?
|
|
|
02-21-2022, 12:55 PM
|
#2029
|
Human being with feelings
Join Date: Aug 2010
Location: Germany
Posts: 2,024
|
Quote:
Originally Posted by netphreak
Great effort making ReaLearn such a useful tool - for many different things
Just curious how much extra latency is added using OSC -> MIDI conversion? If I use an OSC controller playing a VSTi - is that out of the question latency wise?
|
At the moment, OSC-to-MIDI is restricted to sending the resulting MIDI to a hardware output, so that won't work anyway. However, there's a FR: https://github.com/helgoboss/realearn/issues/526
The latency wouldn't be very satisfying for playing an instrument, but it could be. At the time of this writing, ReaLearn captures OSC events at the rate of REAPER's control surface API (roughly each 30ms), which is enough for the "control parameters" use case that ReaLearn was built for initially. But that will change at some point. Playtime 2's clip engine will become a part of ReaLearn, so ReaLearn will also become an instrument in the classical sense, where one expects much lower latencies. Triggering clips by OSC is one thing I want to allow, so I will need to capture OSC events at a higher rate anyway to make this work. As soon as this is implemented, it's also worth adjusting the OSC-to-MIDI implementation to include MIDI-to-FX-output.
|
|
|
02-21-2022, 05:23 PM
|
#2030
|
Human being with feelings
Join Date: Apr 2019
Posts: 97
|
Quote:
Originally Posted by helgoboss
At the moment, OSC-to-MIDI is restricted to sending the resulting MIDI to a hardware output, so that won't work anyway. But the 30ms (API) is noticeable (very).
|
Actually, it is possible, using Feedback Output to a virtual MIDI interface (I used "LoopMIDI"). I can now send an OSC package from ESP8266 to ReaLearn, and it triggers the snare drum in Superior Drummer
Quote:
Originally Posted by helgoboss
The latency wouldn't be very satisfying for playing an instrument, but it could be. At the time of this writing, ReaLearn captures OSC events at the rate of REAPER's control surface API (roughly each 30ms), which is enough for the "control parameters" use case that ReaLearn was built for initially. But that will change at some point. Playtime 2's clip engine will become a part of ReaLearn, so ReaLearn will also become an instrument in the classical sense, where one expects much lower latencies. Triggering clips by OSC is one thing I want to allow, so I will need to capture OSC events at a higher rate anyway to make this work. As soon as this is implemented, it's also worth adjusting the OSC-to-MIDI implementation to include MIDI-to-FX-output.
|
Wow - seems there's no limit on what ReaLearn eventually can be used for! Really great news
|
|
|
02-21-2022, 05:37 PM
|
#2031
|
Human being with feelings
Join Date: Nov 2019
Posts: 4
|
Updated to Reaper 6.49, Realearn 2.11.1 UI displays all black as in the attached image. Rolled back to 6.48, same issue. Went back to 6.47 where Realearn is displaying properly. Tried updating to Realearn 1-12-0 pre4, same results. I'm running 64bit Universal Reaper in all cases on Big Sur 11.6.4 with a 2018 mac mini.
I love Realearn by the way. So thankful for this project!
[edit 02/25/22]
this is being looked into. https://github.com/helgoboss/realearn/issues/535 Going to leave this comment here in case anyone else with this issue looks at this thread first.
I should have posted at the Github issue tracker initially. Thank you for your hard work Helgoboss.
Last edited by monocent; 02-25-2022 at 10:47 AM.
Reason: clarification of realearn versions, link to github issue tracker
|
|
|
02-22-2022, 06:24 PM
|
#2032
|
Human being with feelings
Join Date: Jan 2017
Posts: 113
|
I am trying to use this to automate the record arm on and off for multiple tracks but having one issue.
I'm using ReaControlMIDI to generate a CC that I can automate the envelope of to feed ReaLearn which seems to be working and it does work properly but only when the ReaLearn windows is open. When I close the window it will stop working. Is this normal?
Any way around it?
Here is a screenshot of my settings.
Thanks!
|
|
|
02-23-2022, 02:05 PM
|
#2033
|
Human being with feelings
Join Date: Oct 2013
Location: Argentina
Posts: 1,299
|
Hi!
I'd like to point out a certain issue with Realearn's GUI in Linux Manjaro. First of all, I've found a report in the issue tracker which coincides with this, although it's focused on Windows and MacOS :
https://github.com/helgoboss/realearn/issues/136
Since the issue is closed, I'd like to ask here first not to annoy with a mistaken post. The thing is this... on my notebook, I see Realearn's GUI like this :

So, everything is fine (except for an important detail that I'll comment below * ).
But then, on my desktop PC, I see the same Realearn setup like this :
And if I edit the first mapping, then the characters of it in the main GUI dissapear :
It's good to remark that on both machines the OS and theme are the same. I use the libswell.so thing ( https://forum.cockos.com/showpost.ph...90&postcount=1) to have a dark appearance in the windows and menus of the theme I use. Regarding this issue, any insight will be deeply appreciated.
* And one more thing, this time on the notebook : when I have many mappings assigned, I cannot get to the last ones; the vertical slider on the right does not reach past a certain number of mappings. That's really serious, since I've been having to leave the mapping work for the desktop PC due to not being able to use Realearn to its full extent on the notebook.
Thanks for this wonderful plugin, really.
Last edited by Soli Deo Gloria; 02-23-2022 at 02:14 PM.
|
|
|
02-24-2022, 05:26 AM
|
#2034
|
Human being with feelings
Join Date: Nov 2010
Posts: 1,623
|
Does anyone have a faderfox ec4 setup with realearn?
I'm currently using a MFT and, having just bought the waves scheps omni, I need more knobs!
The problem I have is remembering what all the knobs do per plugin and I thought the display on the EC4 would help with that. Then I could buy two of those and retire the MFT.
I appreciate there is the fantastic projection feature in realearn but at the moment I can't work out a satisfactory place for that in my screen setup.
My other option is to buy a bigger video card, buy another MFT, add a small third screen above the two MFT's and have that solely for the realearn projection....
Alternatively, any controllers out there with more than 16 rotary knobs that also have virtual lables that could get feedback from realearn?
|
|
|
02-25-2022, 02:52 AM
|
#2035
|
Human being with feelings
Join Date: Nov 2010
Location: In the abyss...gazing at you...
Posts: 1,227
|
Hello Helgoboss,
I´ve spent the last week with getting my head around ReaLearn and have to say that the most things are pretty straight foreward.
Setup send-fx for selected track, made some exlusive groups (found the glue area  )
What I still struggle with is setting up a mapping for ReaEQ.
On some bands it refuses to feedback correctly.
All bands I´ve set up this with spread their control amount evenly.
Not so in band 5. It seems that it has a exponential funtion working in the background.
It is quite jumpy in the bass area (20 Hz, 172 Hz, ,....).
The resolution on the other bands is also a bit coarse but I could live with that.
Do you have an idea why this is or what I could do to deal with it?
BTW this does not only happen with ReaEQ. I dl a copy of Hornets total EQ and it´s just the same but on band 1.
Is this related to ReaLearn, the controller resolution, is it a bug?
Would be really helpful to get a statement from you.
I saw you using the DJ midi fighter. It´s 14Bit midi right? Might this solve my problem?
Thank´s for making this and (hopefuly) answering my questions.
Best
Mario
|
|
|
02-25-2022, 08:19 AM
|
#2036
|
Human being with feelings
Join Date: Aug 2010
Location: Germany
Posts: 2,024
|
Quote:
Originally Posted by TheWhistler
What I still struggle with is setting up a mapping for ReaEQ.
On some bands it refuses to feedback correctly.
All bands I´ve set up this with spread their control amount evenly.
Not so in band 5. It seems that it has a exponential funtion working in the background.
It is quite jumpy in the bass area (20 Hz, 172 Hz, ,....).
The resolution on the other bands is also a bit coarse but I could live with that.
Do you have an idea why this is or what I could do to deal with it?
BTW this does not only happen with ReaEQ. I dl a copy of Hornets total EQ and it´s just the same but on band 1.
Is this related to ReaLearn, the controller resolution, is it a bug?
Would be really helpful to get a statement from you.
I saw you using the DJ midi fighter. It´s 14Bit midi right? Might this solve my problem?
|
Glad you find it useful!
Try to put this into the field "Control transformation (EEL"):
Code:
y = 0.00099310918137498 * exp(6.914669948931068 * x)
Explanation: The problem is not your control resolution. The scale of that ReaEQ parameter is logarithmic. So you need to convert the linear input to a logarithmic output. "Control transformation" let's you do such stuff.
Although I'm a developer, I'm not particularly good at math  So I looked that up here: https://stackoverflow.com/a/19472811/5418870
I wrote a little JavaScript snippet that calculates the factors a and b (according to that linked answer) and, for your convenience, outputs the ready-to-paste EEL formula. If you want to fine-tune the conversion (by adjusting min/max), simply open your browser, press F12 (open developer console), paste that code and press return. It will show you the resulting EEL formula:
Code:
// Parameters
min = 0.01
max = 1
// Calculate factors
b = Math.log(max / min) / (max - min)
a = max / Math.exp(b * max)
// Output formula
console.log(`EEL formula: y = ${a} * exp(${b} * x)`)
So ... most things can be done using your existing controller. No need to buy a new one. (The MIDI Figther Twister is really nice though. It has endless encoders that can output relative increment/decrement messages, that means the resolution is irrelevant).
|
|
|
02-25-2022, 09:12 AM
|
#2037
|
Human being with feelings
Join Date: Jan 2017
Location: London
Posts: 312
|
Quote:
Originally Posted by mozart999uk
Does anyone have a faderfox ec4 setup with realearn?
I'm currently using a MFT and, having just bought the waves scheps omni, I need more knobs!
The problem I have is remembering what all the knobs do per plugin and I thought the display on the EC4 would help with that. Then I could buy two of those and retire the MFT.
I appreciate there is the fantastic projection feature in realearn but at the moment I can't work out a satisfactory place for that in my screen setup.
My other option is to buy a bigger video card, buy another MFT, add a small third screen above the two MFT's and have that solely for the realearn projection....
Alternatively, any controllers out there with more than 16 rotary knobs that also have virtual lables that could get feedback from realearn?
|
I was just about to post the same question but you beat me to it!
So far I have been wanting to use Realearn but haven't got around to it because I only have an EC4 and it seems the MIDIFighter Twister is the one everybody is using.
Whilst I can't help you with your question I can tell you that the Faderfox EC4 is a fine controller.
The main differences to the MFT are:
- you can't individually configure push messages separately like on the MFT. The push buttons can send a different message to the encoders but they are related in a way and cannot be fully configured in a custom manner.
- obviously there are no colour rings/indicators of any kind.
- need to check whether it can accept value feedback in case absolute CC values are used to avoid jumps.
- The display is really helpful but only 4digits per encoder. That's completely manageable though.
- You have 256 presets arranged over 16 banks that can be changed quickly. Presets have names as do banks which is neat.
I would like to start using Realearn with my EC4 and if there were other users I'd find it a lot less daunting I think. In an ideal world I'd like Realearn to send a program change message to the EC4 based on what is happening on the screen - i.e. which plugin is in focus.
Here are a couple of setups: one is for the Sonnox OXF-EQ where I have spread the controls over two setups next to each other (with some overlap) as there are ore than 16 parameters to cover.
The other one is for my Virus TDM and only has the most important parameters on one page.
Most setups end up being a little bit generic so they can be used for a variety of plug-ins of the same type.
__________________
PC Ryzen 7950x|W11 Pro|Reaper (latest)
2x RME HDSPe MADI FX | SSL UF8|UF1|UC1
PC Ryzen 5950X|W11 Pro|AudioGridder Server
|
|
|
02-25-2022, 09:26 AM
|
#2038
|
Human being with feelings
Join Date: Aug 2010
Location: Germany
Posts: 2,024
|
About the EC4. So you two are looking to send custom text to the built-in display?
|
|
|
02-25-2022, 09:40 AM
|
#2039
|
Human being with feelings
Join Date: Nov 2010
Location: In the abyss...gazing at you...
Posts: 1,227
|
Quote:
Originally Posted by helgoboss
Glad you find it useful!
Try to put this into the field "Control transformation (EEL"):
Code:
y = 0.00099310918137498 * exp(6.914669948931068 * x)
Explanation: The problem is not your control resolution. The scale of that ReaEQ parameter is logarithmic. So you need to convert the linear input to a logarithmic output. "Control transformation" let's you do such stuff.
|
Hello and thank´s for your support. I will try this asap.
I know what logarithmic means and why it is useful on eqs.
But why will this only happen on certain bands?
|
|
|
02-25-2022, 09:55 AM
|
#2040
|
Human being with feelings
Join Date: Aug 2010
Location: Germany
Posts: 2,024
|
Quote:
Originally Posted by TheWhistler
Hello and thank´s for your support. I will try this asap.
I know what logarithmic means and why it is useful on eqs.
But why will this only happen on certain bands?
|
I think it's possible to make different bands have different band types. I guess it depends on that?
|
|
|
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 04:04 PM.
|