Old 09-20-2018, 01:42 PM   #1
nappies
Human being with feelings
 
nappies's Avatar
 
Join Date: Dec 2017
Posts: 39
Default JSFX audio transmition?

Hi Dear Reaper users!Here hard question for me.
Can JSFX transmit stereo/mono signals from one instance to another?
Please, answer people who experienced in JSFX !)
nappies is offline   Reply With Quote
Old 09-20-2018, 02:49 PM   #2
sonicowl
Human being with feelings
 
sonicowl's Avatar
 
Join Date: Oct 2015
Posts: 314
Default

Yes, it can. On the same track use routing. On different tracks use routing too, or try with gmem.
sonicowl is offline   Reply With Quote
Old 09-20-2018, 05:29 PM   #3
nofish
Human being with feelings
 
nofish's Avatar
 
Join Date: Oct 2007
Location: home is where the heart is
Posts: 8,172
Default

See here for an example JSFX transmitting audio to another JSFX instance to create a feedback delay.
https://stash.reaper.fm/v/312/Super_...Delay.RfxChain

Similar example:
https://www.youtube.com/watch?v=GEoI88I59Y4
gmem_Send / gmem_Receive by loser
nofish is offline   Reply With Quote
Old 09-20-2018, 05:53 PM   #4
nappies
Human being with feelings
 
nappies's Avatar
 
Join Date: Dec 2017
Posts: 39
Default

sonicowl, Thanks for the answer! But a regular routing in my case will not work)



nofish, Thank you a lot! This is exactly what I was looking for!You save my time! google do not answer this question)
nappies is offline   Reply With Quote
Old 09-21-2018, 07:56 AM   #5
geraintluff
Human being with feelings
 
geraintluff's Avatar
 
Join Date: Nov 2009
Location: mostly inside my own head
Posts: 264
Default

Quote:
Originally Posted by nofish View Post
Similar example:
https://www.youtube.com/watch?v=GEoI88I59Y4
gmem_Send / gmem_Receive by loser
This relies quite a lot on the processing order being the constant, which is almost certainly the same for a single track, but seems like it might get hairy if they're too far apart in the arrangement and running on different threads. It also doesn't give you an idea of the latency it's operating at. The code's beautifully simple, though.

It seems possible to create a combined feedback+delay plugin, where it accounts for latency/block-size, and then only adds the extra delay it needs. It would let you get the delays exactly right - the current solutions I've seen look (to me) like they'd change delay length if you added an effect with latency (e.g. ReaFIR) inside the loop.

(I assume you're looking to use this result as fast as possible, i.e. to play it as audio. I did cross-instance routing for "Stereo Alignment Delay", where aligning the two audio streams exactly was necessary, but getting didn't need the results instantly, so the goals were different.)
geraintluff is offline   Reply With Quote
Old 09-21-2018, 08:37 AM   #6
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Germany
Posts: 5,986
Default

Quote:
Originally Posted by sonicowl View Post
. On different tracks use routing too, or try with gmem.
The tracks are each associated to an OS thread they are not in sync when they are executed and can differ by an amount up to the total audio latency of the system. Hence using gmem for audio routing is not recommended, unless the "effect" you want to implement is rather immune regarding timing differences between the "channels".
-Michael
__________________
www.boa-sorte.de

Last edited by mschnell; 09-22-2018 at 05:55 AM.
mschnell is online now   Reply With Quote
Old 09-21-2018, 12:57 PM   #7
nappies
Human being with feelings
 
nappies's Avatar
 
Join Date: Dec 2017
Posts: 39
Default

Quote:
Originally Posted by geraintluff View Post
It seems possible to create a combined feedback+delay plugin, where it accounts for latency/block-size, and then only adds the extra delay it needs. It would let you get the delays exactly right - the current solutions I've seen look (to me) like they'd change delay length if you added an effect with latency (e.g. ReaFIR) inside the loop.
geraintluff! Thank you for the detailed response and analysis of possible pitfalls!

Do you think it is possible to use the gmem and compensate for the delay in the borders: the folder (parent) and its child track? With the condition that JSFX instances will always first in the chain?


I want to use it just for template where the phase and the delay are of great importance. Separation into parallel channels but in a folder. I also wanted to try to do with Midi.





Why?
1)After all, you can use multiple channels and just route them.
I tried this option. This is cumbersome. Even if you pack all the channels in a folder including the source channel, each time I have to open and look for the source channel.And only after,can editing the item of the source track.

2)Why not use routing on one channel using a pins?

I tried to use native commutation parallel chains - hell , also use scripts helpers such as a TrackFXs Routing Matrix (Kawa mod),FXRack, WiredChain. But commutation is still hell(seepage of Vsti see project.
https://drive.google.com/open?id=1eZ...x3nw-XDud2nNO9
Try to mute SINE synh by mixers faders - haha!)

It is much easier and more convenient to use the folder parent ch as the source channel and child ch like it chains.
Reaper have some limitation to add midi or audio send from folder to child track.That is why I'm trying to find an alternative.

Quote:
Originally Posted by mschnell View Post
As the tracks are each associated to an OS thread they are not in sync when they are executed and can differ by an amount up to the tolal latency of the system. Hence using gmem for audio routing is not recommended, unless the "effect" you want to implement is rather immune regarding timing differences between the "channels".
-Michael
Thank you for reply, mschnell! May be there is another way to transmit the audio stream synchronized between the instances of the JSFX?

To obtain a double benefit, one could make JSFX similar of Ableton's rack with audio/midi switch, macros faders, chain keyzones ,velocity range and chain selector(cross-fade).Probably need to be a system of indexing instances of sends and each of their receiver.


But I newie in JSFX if you guys could help a bit in the implementation, mainly with answers advices and examples.
To do this together. How do you like the idea in general? Is it worth starting? Does JSFX allow such ideas?
nappies is offline   Reply With Quote
Old 09-22-2018, 04:31 AM   #8
geraintluff
Human being with feelings
 
geraintluff's Avatar
 
Join Date: Nov 2009
Location: mostly inside my own head
Posts: 264
Default

Quote:
Originally Posted by nappies View Post
geraintluff! Thank you for the detailed response and analysis of possible pitfalls!

Do you think it is possible to use the gmem and compensate for the delay in the borders: the folder (parent) and its child track? With the condition that JSFX instances will always first in the chain?
In short: no, I'm afraid not. Essentially your track cannot both feed input to the FX sends, and act as a parent track that's collecting the outputs from its children and sending it on to its own parent/master.

This is because what you are looking for is not an audio effect. I'd argue that you are looking for a UI change, and it would be better approached as a ReaScript.

Here's what I think you might need - two ReaScripts with opposite actions, assigned to two shortcuts (Shortcut1 and Shortcut2):
  1. Hide the currently-selected track's parent and all siblings from the track view
  2. Return the currently-selected track's parent and siblings back to the track view
Here's how it would work: you start with all your tracks visible. There is a parent track with three children: the "main child" has the audio/MIDI that you're really interested in, and it's sending to its two siblings, but it's not sending to the parent. This gives you the correct processing flow:



Now, you want to tidy things up because you've finished tweaking the effects - but if you do that, you'll lose convenient access to the "main child". So instead of collapsing the folder, you press Shortcut1. This doesn't collapse the folder, but it hides the parent and its siblings from the track view:



If you want to edit the FX chains again, select your "main child" again, and press Shortcut2, and the parent/siblings would return.

I know that the indenting ends up slightly off, and perhaps some more details could be added such as adding a track icon or some other indicator to clearly show there are hidden tracks surrounding it.

I'm not fluent in ReaScript, so this might be a job for someone else - however, I sincerely think this would be a much better solution than trying to do some gnarly routing with JSFX.

Geraint
Attached Images
File Type: png Screen Shot 2018-09-22 at 12.24.32.png (44.4 KB, 111 views)
File Type: png Screen Shot 2018-09-22 at 12.24.23.png (61.9 KB, 116 views)

Last edited by geraintluff; 09-22-2018 at 04:55 AM.
geraintluff is offline   Reply With Quote
Old 09-22-2018, 05:59 AM   #9
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Germany
Posts: 5,986
Default

Quote:
Originally Posted by nappies View Post
May be there is another way to transmit the audio stream synchronized between the instances of the JSFX?
Can't you use the standard routing features and place the JSFXes in appropriate tracks and/or use multiple channels within the same track ?

With the routing, Reaper automatically manages the synchronizing and the latency of any plugin (PDC).

-Michael
__________________
www.boa-sorte.de
mschnell is online now   Reply With Quote
Old 11-10-2018, 06:57 AM   #10
nappies
Human being with feelings
 
nappies's Avatar
 
Join Date: Dec 2017
Posts: 39
Default

Sorry, guys, I’ve been impolite and was out of the thread. There were some problems!


geraintluff thanks for the detailed idea! I advised this scheme to my colleagues. But they are confused with the routing. I will try to still make my idea with the folder and her children as chains.

Now we have a reaper.GetAudioDeviceInfo API in lua/eel !
I will try to make full combined version of JSFX/LUA with latency compensation.Maybe it will be useful to someone else. Already there is an alpha prototype working fine yet!

mschnell
Quote:
Originally Posted by mschnell View Post
Can't you use the standard routing features and place the JSFXes in appropriate tracks and/or use multiple channels within the same track ?
Unfortunately, in the process of work it is very confusing (autorouting, signal leakage through plugins. And many other problems. It would be more convenient for me to use the channels in the folder as parallel chains)
nappies is offline   Reply With Quote
Reply

Thread Tools
Display Modes

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

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

Forum Jump


All times are GMT -7. The time now is 01:15 AM.


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