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

Reply
 
Thread Tools Display Modes
Old 02-10-2022, 01:03 PM   #2001
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,024
Default

Quote:
Originally Posted by ahanysz View Post
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 View Post
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 View Post
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".
helgoboss is online now   Reply With Quote
Old 02-10-2022, 02:10 PM   #2002
nofish
Human being with feelings
 
nofish's Avatar
 
Join Date: Oct 2007
Location: home is where the heart is
Posts: 11,975
Default

Quote:
Originally Posted by helgoboss View Post
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.
nofish is offline   Reply With Quote
Old 02-10-2022, 02:25 PM   #2003
X-Raym
Human being with feelings
 
X-Raym's Avatar
 
Join Date: Apr 2013
Location: France
Posts: 9,567
Default

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 !
X-Raym is offline   Reply With Quote
Old 02-10-2022, 02:32 PM   #2004
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,024
Default

Quote:
Originally Posted by X-Raym View Post
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.
helgoboss is online now   Reply With Quote
Old 02-10-2022, 02:41 PM   #2005
soulaccess
Human being with feelings
 
Join Date: Jul 2012
Posts: 41
Default

Quote:
Originally Posted by helgoboss View Post
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.
soulaccess is offline   Reply With Quote
Old 02-10-2022, 04:20 PM   #2006
X-Raym
Human being with feelings
 
X-Raym's Avatar
 
Join Date: Apr 2013
Location: France
Posts: 9,567
Default

Ok ! Anyway to convert MIDI items to automations data before rendering ?
X-Raym is offline   Reply With Quote
Old 02-10-2022, 11:32 PM   #2007
foxAsteria
Human being with feelings
 
foxAsteria's Avatar
 
Join Date: Dec 2009
Location: Oblivion
Posts: 10,097
Default

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.
__________________
foxyyymusic
foxAsteria is online now   Reply With Quote
Old 02-11-2022, 01:48 AM   #2008
ahanysz
Human being with feelings
 
Join Date: Apr 2020
Posts: 29
Default

Quote:
Originally Posted by helgoboss View Post
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.
ahanysz is offline   Reply With Quote
Old 02-11-2022, 03:16 PM   #2009
nofish
Human being with feelings
 
nofish's Avatar
 
Join Date: Oct 2007
Location: home is where the heart is
Posts: 11,975
Default

Quote:
Originally Posted by X-Raym View Post
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.
nofish is offline   Reply With Quote
Old 02-11-2022, 07:34 PM   #2010
X-Raym
Human being with feelings
 
X-Raym's Avatar
 
Join Date: Apr 2013
Location: France
Posts: 9,567
Default

@nofish
Perfect ! I'll test that on my next project.
X-Raym is offline   Reply With Quote
Old 02-14-2022, 10:30 AM   #2011
Reaktor:[Dave]
Human being with feelings
 
Reaktor:[Dave]'s Avatar
 
Join Date: Jun 2010
Location: Berlin
Posts: 558
Default

Quote:
Originally Posted by helgoboss View Post
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 View Post
"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.
Reaktor:[Dave] is offline   Reply With Quote
Old 02-14-2022, 07:24 PM   #2012
Miscreant
Human being with feelings
 
Miscreant's Avatar
 
Join Date: Mar 2012
Posts: 359
Default 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.
Miscreant is offline   Reply With Quote
Old 02-15-2022, 12:55 AM   #2013
richardj
Human being with feelings
 
Join Date: Nov 2012
Posts: 178
Default 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.
richardj is offline   Reply With Quote
Old 02-15-2022, 12:57 AM   #2014
Reaktor:[Dave]
Human being with feelings
 
Reaktor:[Dave]'s Avatar
 
Join Date: Jun 2010
Location: Berlin
Posts: 558
Default

Quote:
Originally Posted by richardj View Post
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.
Reaktor:[Dave] is offline   Reply With Quote
Old 02-15-2022, 01:05 AM   #2015
richardj
Human being with feelings
 
Join Date: Nov 2012
Posts: 178
Default

Quote:
Originally Posted by Reaktor:[Dave] View Post
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
richardj is offline   Reply With Quote
Old 02-15-2022, 01:10 AM   #2016
Reaktor:[Dave]
Human being with feelings
 
Reaktor:[Dave]'s Avatar
 
Join Date: Jun 2010
Location: Berlin
Posts: 558
Default

Quote:
Originally Posted by richardj View Post
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.
Reaktor:[Dave] is offline   Reply With Quote
Old 02-15-2022, 01:17 AM   #2017
richardj
Human being with feelings
 
Join Date: Nov 2012
Posts: 178
Default

Quote:
Originally Posted by Reaktor:[Dave] View Post
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.
richardj is offline   Reply With Quote
Old 02-15-2022, 01:36 AM   #2018
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,024
Default

Quote:
Originally Posted by richardj View Post
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.
helgoboss is online now   Reply With Quote
Old 02-15-2022, 05:12 AM   #2019
onewayout
Human being with feelings
 
Join Date: Feb 2008
Location: So Florida
Posts: 1,390
Default 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
onewayout is offline   Reply With Quote
Old 02-19-2022, 10:53 AM   #2020
Arthur McArthur
Human being with feelings
 
Join Date: Sep 2016
Location: Toronto
Posts: 683
Default

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?
Arthur McArthur is offline   Reply With Quote
Old 02-19-2022, 11:10 AM   #2021
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,024
Default

Quote:
Originally Posted by foxAsteria View Post
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?
helgoboss is online now   Reply With Quote
Old 02-19-2022, 11:14 AM   #2022
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,024
Default

Quote:
Originally Posted by Arthur McArthur View Post
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
helgoboss is online now   Reply With Quote
Old 02-19-2022, 11:54 AM   #2023
TheWhistler
Human being with feelings
 
TheWhistler's Avatar
 
Join Date: Nov 2010
Location: In the abyss...gazing at you...
Posts: 1,227
Default 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
__________________
And when you gaze long into an abyss the abyss also gazes into you.
https://marrowvoltage.bandcamp.com

Last edited by TheWhistler; 02-20-2022 at 02:01 AM. Reason: typo
TheWhistler is offline   Reply With Quote
Old 02-19-2022, 12:54 PM   #2024
Arthur McArthur
Human being with feelings
 
Join Date: Sep 2016
Location: Toronto
Posts: 683
Default

Quote:
Originally Posted by helgoboss View Post
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!
Arthur McArthur is offline   Reply With Quote
Old 02-20-2022, 01:54 AM   #2025
TheWhistler
Human being with feelings
 
TheWhistler's Avatar
 
Join Date: Nov 2010
Location: In the abyss...gazing at you...
Posts: 1,227
Default

Quote:
Originally Posted by TheWhistler View Post
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.
__________________
And when you gaze long into an abyss the abyss also gazes into you.
https://marrowvoltage.bandcamp.com
TheWhistler is offline   Reply With Quote
Old 02-20-2022, 03:10 AM   #2026
TheWhistler
Human being with feelings
 
TheWhistler's Avatar
 
Join Date: Nov 2010
Location: In the abyss...gazing at you...
Posts: 1,227
Default 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.
__________________
And when you gaze long into an abyss the abyss also gazes into you.
https://marrowvoltage.bandcamp.com

Last edited by TheWhistler; 02-20-2022 at 07:07 AM. Reason: typo
TheWhistler is offline   Reply With Quote
Old 02-20-2022, 10:57 AM   #2027
paat
Human being with feelings
 
Join Date: Oct 2016
Posts: 225
Default

Quote:
Originally Posted by helgoboss View Post
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?
paat is offline   Reply With Quote
Old 02-21-2022, 10:05 AM   #2028
netphreak
Human being with feelings
 
Join Date: Apr 2019
Posts: 97
Default

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?
netphreak is offline   Reply With Quote
Old 02-21-2022, 12:55 PM   #2029
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,024
Default

Quote:
Originally Posted by netphreak View Post
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.
helgoboss is online now   Reply With Quote
Old 02-21-2022, 05:23 PM   #2030
netphreak
Human being with feelings
 
Join Date: Apr 2019
Posts: 97
Default

Quote:
Originally Posted by helgoboss View Post
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 View Post
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
netphreak is offline   Reply With Quote
Old 02-21-2022, 05:37 PM   #2031
monocent
Human being with feelings
 
Join Date: Nov 2019
Posts: 4
Default

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
monocent is offline   Reply With Quote
Old 02-22-2022, 06:24 PM   #2032
mb945
Human being with feelings
 
Join Date: Jan 2017
Posts: 113
Default

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!

mb945 is offline   Reply With Quote
Old 02-23-2022, 02:05 PM   #2033
Soli Deo Gloria
Human being with feelings
 
Soli Deo Gloria's Avatar
 
Join Date: Oct 2013
Location: Argentina
Posts: 1,299
Default

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.
Soli Deo Gloria is offline   Reply With Quote
Old 02-24-2022, 05:26 AM   #2034
mozart999uk
Human being with feelings
 
Join Date: Nov 2010
Posts: 1,623
Default

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?
mozart999uk is offline   Reply With Quote
Old 02-25-2022, 02:52 AM   #2035
TheWhistler
Human being with feelings
 
TheWhistler's Avatar
 
Join Date: Nov 2010
Location: In the abyss...gazing at you...
Posts: 1,227
Default

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
__________________
And when you gaze long into an abyss the abyss also gazes into you.
https://marrowvoltage.bandcamp.com
TheWhistler is offline   Reply With Quote
Old 02-25-2022, 08:19 AM   #2036
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,024
Default

Quote:
Originally Posted by TheWhistler View Post
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).
helgoboss is online now   Reply With Quote
Old 02-25-2022, 09:12 AM   #2037
MixR
Human being with feelings
 
Join Date: Jan 2017
Location: London
Posts: 312
Default

Quote:
Originally Posted by mozart999uk View Post
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
MixR is offline   Reply With Quote
Old 02-25-2022, 09:26 AM   #2038
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,024
Default

About the EC4. So you two are looking to send custom text to the built-in display?
helgoboss is online now   Reply With Quote
Old 02-25-2022, 09:40 AM   #2039
TheWhistler
Human being with feelings
 
TheWhistler's Avatar
 
Join Date: Nov 2010
Location: In the abyss...gazing at you...
Posts: 1,227
Default

Quote:
Originally Posted by helgoboss View Post
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?
__________________
And when you gaze long into an abyss the abyss also gazes into you.
https://marrowvoltage.bandcamp.com
TheWhistler is offline   Reply With Quote
Old 02-25-2022, 09:55 AM   #2040
helgoboss
Human being with feelings
 
helgoboss's Avatar
 
Join Date: Aug 2010
Location: Germany
Posts: 2,024
Default

Quote:
Originally Posted by TheWhistler View Post
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?
helgoboss is online now   Reply With Quote
Reply

Thread Tools
Display Modes

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

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

Forum Jump


All times are GMT -7. The time now is 04:04 PM.


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