|
|
|
09-18-2022, 02:36 AM
|
#1
|
Human being with feelings
Join Date: Oct 2013
Location: Moscow, Russia
Posts: 3,960
|
Allow to use specific memory entries for FX IO
That was requested directly to Justin before, but it seems it require some discussiion.
I'm worked a lot on concept of modular FX chain view, I also saw Sexan doing pretty same thing but more UI friendly. What I noticed is some things are impossible because main paradigm of "straight" flow of REAPER FX chain. That means I can't do, for example, feedback loops without custom JSFX with gmem routing inside (I mean sharing signal between slots). Also even if feedback will be somehow implemented eventually, this doesn`t solve complex routing or does it incredibly complex to handle. At the same time, I want FX chain to be visually clear and NOT be cluttered with lots of JSFX utilities (JSFX that handle gmem routing IO flow) on the UI side.
So my concept is: when building FX chain in modular fashion from the script UI, - disable all normal signal flow inside FX chain (clear all regular pin mappings in all plugins in the FX chain) and use gmem phantom routing (available from API but no nesessary available from UI) - kinda turn FX chain into signal-flow-direction-free mode
- have JSFX or some other method at the end of the chain managing this routing, also editable by the script (so it doesn`t require from script to be running permanently). This JSFX can also include buildin tools like VCAs, LFO etc, controlled from hardware as well
To get this working I imagine following implementation: - ability to natively receive/send audio/MIDI from/to some gmem idx memory entry (namespace could be specific per-project FX gmem namespace, track GUID + FX GUID for example)
- ability to natively receive parameter modulation from some gmem idx memory entry
- Overview/edit such routing options mainly from the API and from IO pins window, just like normal pin mappings setup (image attached).
- ability to change and reinitialise code for specific JSFX on the fly from ReaScript, just like what we do from JSFX IDE. In my case I would take JSFX code from EXT section of track chunk
- that come from previous item - to have an ability to load custom JSFX code from its parent track state chunk by GUID (of course the code should be editable/removeable from API).
If using gmem (or specific variable memory scope for to not be collapsed with existing gmem values) this would open following possibilies: - build a true-modular view just like VCV rack / NI Reaktor, so users can built or use existed custom JSFX or VST modules: VCAs, LFOs, oscillators, ReaRack stuff. In this case it can be not only single primitive feedback routing but far more complex signal flow chains (controll by script-generated JSFX code), connecting wires back and forth.
- customise modulation between plugin parameters (scale, offset, limit then) or CV
- generate some complex smart parameter links between different plugins with custom formula, not just offset+scale
So in short, that opens a whole new world of routing possibilities inside the FX chain (or further - per project).
Basic UI flow I imagine- script engine: setup gmem mappings in the FX chain plugins,
- script GUI: interpret all FX as blocks. When user drop wire to create connection...
- ... script engine: generates and reinitialize code of control JSFX). Note: that would be per-chain JSFX code, so the code should be stored somewhere in the RPP chunk, specifically TrackStateChunk.
- side note: so if user closes the lua script, everything still works even if script not installed on other machine, so lua script doesn't do anything with signal, only signal flow setup (gmem routing and JSFX code). All incoming/outcoming data handled by control JSFX.
Last edited by mpl; 02-24-2024 at 12:21 AM.
|
|
|
09-18-2022, 02:57 AM
|
#2
|
Human being with feelings
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,686
|
Quote:
Originally Posted by mpl
I can't do, for example, feedback loops without custom JSFX with gmem routing inside
|
Hmm.
I doubt that feedback loops are technically doable without introducing major quirks (with Reaper or any other DAW).
gmem phantom routing does not take care of PDC (unless you explicitly do that by programming). Of course in the end PDC just calculates a number for a track that is then used by Reaper to manage the inter-thread synchronicity. But the pin routing within a track needs to be acknowledged on the fly.
In the Prerelease forum Cockos shows that they re working on "internal pin management overhaul for future extension". They did not state what this is supposed to means (I assume some kind of meta-plugin handling on the way). But IMHO it would make sense to wait with enhancements of their concepts until they are obvious.
-Michael
Last edited by mschnell; 09-19-2022 at 01:47 PM.
|
|
|
09-19-2022, 07:33 AM
|
#3
|
Human being with feelings
Join Date: Oct 2013
Location: Moscow, Russia
Posts: 3,960
|
Since it is possible to get PDC from API, yes, I can take care of it.
Feedback routing works pretty well with custom jsfx with current version of Reaper. What I suggest is to make signal flow more extendable than it is, from developer side. I understand there can be couple of problems (unable to use oversampling, care of pdc), but that seem minor things to me comparing with count of possibilities this feature can potentially bring.
Last edited by mpl; 10-01-2022 at 01:15 PM.
|
|
|
10-30-2022, 01:39 PM
|
#4
|
Human being with feelings
Join Date: Oct 2019
Location: Moscow / Tbilisi
Posts: 909
|
Great idea! Any improvements in gmem area for audio use are very welcome.
And midi too, yeah)
|
|
|
01-30-2023, 01:51 AM
|
#5
|
Human being with feelings
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,686
|
To do feedback routing within a track (via gmem) you would need to consider, that the plugins within the loop will impose a delay of at least one sample block, as the lower are processed after the upper, and audio (and Midi) is passed in chunks of sample blocks.
Hence you need to create an appropriate delay (and compensate that by stating an appropriate PDC) within which the "upper" parts of the loop can work.
Might be possible but might impose weird side effects.
-Michael
|
|
|
03-27-2023, 03:24 AM
|
#6
|
Human being with feelings
Join Date: May 2020
Posts: 434
|
I don't understand the title and lots of other things, I hope that the devs do, +1 if this will allow you or sexan to create a wiring diagram view for the fx chains.
|
|
|
09-02-2023, 02:26 AM
|
#7
|
Human being with feelings
Join Date: Jul 2009
Posts: 3,294
|
Justin/Schwa
please show us some light here.
|
|
|
11-24-2023, 07:36 PM
|
#8
|
Human being with feelings
Join Date: Jul 2019
Posts: 39
|
I noticed on this post ( https://forum.cockos.com/showthread.php?t=209768&page=3) that WiredFrame has been removed from the ReaPack repo. Is there anything else out there to replace it?
I was looking at a plugin called SigMod by Nugen Audio. Looks like it would do what I am looking for, but I was hoping there was a script for Reaper out there already.
|
|
|
02-24-2024, 12:21 AM
|
#9
|
Human being with feelings
Join Date: Oct 2013
Location: Moscow, Russia
Posts: 3,960
|
Edited implementation section a bit for better consistency.
|
|
|
02-24-2024, 07:18 AM
|
#10
|
Human being with feelings
Join Date: Oct 2017
Location: Larisa, Greece
Posts: 3,795
|
Omg mpl I just saw this FR, I'm also a big modular user almost two decades and I would LOVE if it was possible to build a modular view for fx/modulations. This is one of the things I'm missing in reaper and have created a request about a better PM system with a view similar to track wiring.
1.000.000 YES for this to happen, so the devs could give this man what he needs to build a modular view, which could open a lot of possibilities for sound design and with a better signal flow.
|
|
|
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 01:57 AM.
|