Go Back   Cockos Incorporated Forums > REAPER Forums > ReaScript, JSFX, REAPER Plug-in Extensions, Developer Forum

Reply
 
Thread Tools Display Modes
Old 11-21-2022, 10:48 AM   #41
vitalker
Human being with feelings
 
vitalker's Avatar
 
Join Date: Dec 2012
Posts: 10,008
Default

Quote:
Originally Posted by AtmanActive View Post
Now I'm thinking: maybe a JSFX capable of continually measuring delay in audio signal?
Is there such a thing?
Yes, it can analyse signal.
vitalker is offline   Reply With Quote
Old 11-21-2022, 02:22 PM   #42
TonE
Human being with feelings
 
Join Date: Feb 2009
Location: Reaper HAS send control via midi !!!
Posts: 3,588
Default

Quote:
Originally Posted by AtmanActive View Post
Thank you, TonE for these beautiful graphs. I would like to enhance them a bit to make them even more clear about the configuration. Could you please zip and attach the SVG files?
Thanks.
Of course I can, but even you could, as I am using a script created by Fabian, shared somewhere in the Reaper forum lands, which is visualizing all sends in a RPP, saving as dot (graphviz format). Then you can use command line to convert this dot to SVG, PNG for example. I shared the PNG as it is easier here. But just to inform you, you can use it on any of your projects. See all shared RPP by various users in stash, complex orchestral stuff for example, then check its routing. Great for discussing routing ideas in general, imo. Keep up the sharing here. Reaper community power can not be beaten, as long as we share what is useful to entire community. Thanks friends.

Last edited by TonE; 11-21-2022 at 02:29 PM.
TonE is online now   Reply With Quote
Old 11-21-2022, 02:27 PM   #43
TonE
Human being with feelings
 
Join Date: Feb 2009
Location: Reaper HAS send control via midi !!!
Posts: 3,588
Default

Composer SVG as zip attached.
Performer SVG as zip attached.
Attached Files
File Type: zip routing_composer.dot.dot.svg.zip (2.4 KB, 2 views)
File Type: zip routing_performer.dot.dot.svg.zip (1.4 KB, 1 views)
TonE is online now   Reply With Quote
Old 11-21-2022, 11:43 PM   #44
mpl
Human being with feelings
 
mpl's Avatar
 
Join Date: Oct 2013
Location: Moscow, Russia
Posts: 3,523
Default

see mpl_Align item position by SMPTE code on last channel.lua
__________________
SoundCloud | MPL Scripts discussion | ReaPack
mpl is offline   Reply With Quote
Old 11-22-2022, 03:20 AM   #45
AtmanActive
Human being with feelings
 
AtmanActive's Avatar
 
Join Date: Dec 2009
Location: United Kingdom
Posts: 644
Default

Quote:
Originally Posted by mpl View Post
see mpl_Align item position by SMPTE code on last channel.lua
Great news, mpl, thanks!

Unfortunately, it does not work here.
Instead of moving the item to the left, it just deletes the item.
I tested it with composer.rpp I've sent you earlier.
I just selected the recorded item and executed your script.
AtmanActive is offline   Reply With Quote
Old 11-22-2022, 03:42 AM   #46
mpl
Human being with feelings
 
mpl's Avatar
 
Join Date: Oct 2013
Location: Moscow, Russia
Posts: 3,523
Default

with the composer project it moves item to approximately 14 minutes (786 seconds) which timecode on 6th channel actually gives.

Specifically, the try to find valid timecode frame+ its offset. So first valid timecode is 14minutes, its offset about 0.03. So the script shift item to valid timecode position shifted to its offset (calculated in samples)

Make sure timecode is actually right?
Maybe my decoding is not good? What position is supposed to be? Maybe you recorded it while composer project was looped?
__________________
SoundCloud | MPL Scripts discussion | ReaPack
mpl is offline   Reply With Quote
Old 11-22-2022, 04:11 AM   #47
AtmanActive
Human being with feelings
 
AtmanActive's Avatar
 
Join Date: Dec 2009
Location: United Kingdom
Posts: 644
Default

Quote:
Originally Posted by mpl View Post
with the composer project it moves item to approximately 14 minutes (786 seconds) which timecode on 6th channel actually gives.
Yes, thank you, it doesn't delete it, it moves it way off to the right.

Quote:
Originally Posted by mpl View Post
with the composer project it moves item to approximately 14 minutes (786 seconds) which timecode on 6th channel actually gives.
It should have moved it to 0:13.191 (-126ms).

Quote:
Originally Posted by mpl View Post
Make sure timecode is actually right?
I wouldn't know how.
Track 9 is a Reaper's SMPTE generator.
No controls there.
It does say "resampled from 44.1kHz", but I doubt that bares any significance.
Could sample rate be the culprit?
My project and my ASIO are set to 192kHz.

Quote:
Originally Posted by mpl View Post
Maybe my decoding is not good?
It seems so.

Quote:
Originally Posted by mpl View Post
Maybe you recorded it while composer project was looped?
No, it wasn't looped.

When you compare reapeaks from the recorded item with reapeaks shown on Track 6 (Mix), you can see that it was recorded exactly there.

Attached Images
File Type: jpg 2022-11-22_11-04-24.jpg (104.2 KB, 87 views)
AtmanActive is offline   Reply With Quote
Old 11-22-2022, 04:13 AM   #48
AtmanActive
Human being with feelings
 
AtmanActive's Avatar
 
Join Date: Dec 2009
Location: United Kingdom
Posts: 644
Default

I'll double-check the loop case again...
AtmanActive is offline   Reply With Quote
Old 11-22-2022, 04:26 AM   #49
AtmanActive
Human being with feelings
 
AtmanActive's Avatar
 
Join Date: Dec 2009
Location: United Kingdom
Posts: 644
Default

Here is project test #2:

https://atmanactive.me.uk/temp/VST_C..._Example_2.zip

This time I made sure transport-loop is OFF and I did several manual punch-in/punch-outs.

Unfortunately, the script still moves the items way off to the right.

Thanks.
AtmanActive is offline   Reply With Quote
Old 11-22-2022, 05:25 AM   #50
-_~
Human being with feelings
 
Join Date: Oct 2019
Location: Location: Location: Location: ###Fatal error: Interface RecursiveLocation cannot implement itself###
Posts: 40
Default

If you add a "JS: Time adjustment delay" plugin onto the Sonobus track with a negative delay equal to the round trip delay, this will to force PDC so that the mix audio is sent early and the returned performance is in time. Sonobus should really add an option for PDC for this kind of situation.

Then monitor your composer local mix with the returned performance via the Sonobus track, muting the returned mix.

(While the PDC JSFX is active all tracks sent to the Sonobus track will have delay when playing locally)
__________________
Studio One 5 Pro | REAPER v6
-_~ is offline   Reply With Quote
Old 11-22-2022, 05:28 AM   #51
vitalker
Human being with feelings
 
vitalker's Avatar
 
Join Date: Dec 2012
Posts: 10,008
Default

Quote:
Originally Posted by -_~ View Post
If you add a "JS: Time adjustment delay" plugin onto the Sonobus track with a negative delay equal to the round trip delay, this will to force PDC so that the mix audio is sent early and the returned performance is in time. Sonobus should really add an option for PDC for this kind of situation.
No need for JS, it is implemented inside Routing window.
vitalker is offline   Reply With Quote
Old 11-22-2022, 05:32 AM   #52
-_~
Human being with feelings
 
Join Date: Oct 2019
Location: Location: Location: Location: ###Fatal error: Interface RecursiveLocation cannot implement itself###
Posts: 40
Default

Quote:
Originally Posted by vitalker View Post
No need for JS, it is implemented inside Routing window.
Oh I did not know that, thanks for the info.

edit: can't find it, I see "Media playback offset" in the "Routing for track X" window but that doesn't change PDC for the track.
__________________
Studio One 5 Pro | REAPER v6

Last edited by -_~; 11-22-2022 at 05:40 AM.
-_~ is offline   Reply With Quote
Old 11-22-2022, 05:41 AM   #53
AtmanActive
Human being with feelings
 
AtmanActive's Avatar
 
Join Date: Dec 2009
Location: United Kingdom
Posts: 644
Default

Quote:
Originally Posted by -_~ View Post
If you add a "JS: Time adjustment delay" plugin onto the Sonobus track with a negative delay equal to the round trip delay, this will to force PDC so that the mix audio is sent early and the returned performance is in time. Sonobus should really add an option for PDC for this kind of situation.

Then monitor your composer local mix with the returned performance via the Sonobus track, muting the returned mix.

(While the PDC JSFX is active all tracks sent to the Sonobus track will have delay when playing locally)
Thank you, -_~, for your thoughts.

I don't think that would be a good solution.
The first problem is how to know the exact internet induced roundtrip latency.
But even if we would know it, it would be bad to PDC the whole project at all times. This would introduce unneccessary delay to everything composer does.
I believe this roundtrip latency compensation should happen only once, when a new recording on that particular track occurs.

One option is to decrypt the SMPTE signal.

Anoher option could be a JSFX plugin that could measure latency between two audio streams, expose that as it's parameter or variable that a script could use.

The problem with Sonobus or Audiomovers measuring latency is that they can only measure one trip, but not the whole roundtrip time.
AtmanActive is offline   Reply With Quote
Old 11-22-2022, 05:50 AM   #54
vitalker
Human being with feelings
 
vitalker's Avatar
 
Join Date: Dec 2012
Posts: 10,008
Default

Quote:
Originally Posted by -_~ View Post
edit: can't find it, I see "Media playback offset" in the "Routing for track X" window but that doesn't change PDC for the track.
Yes, this is it. I thought it does, sorry then.
vitalker is offline   Reply With Quote
Old 11-22-2022, 07:27 AM   #55
AtmanActive
Human being with feelings
 
AtmanActive's Avatar
 
Join Date: Dec 2009
Location: United Kingdom
Posts: 644
Default

While writing all this I realized that we have nowhere to account for performer's ASIO latency. Reaper is taking care of recording latency but only when that Reaper is recording. Since, in this situation, another Reaper is recording, this information will be lost.

For fast computers at performer side this shouldn't be a problem, if ASIO latency can be set low enough.

But, generally speaking, this performer-ASIO-latency will have to be offset manually somewhere later in the pipeline.

ASIO latency should be calculated as ASIO input latency + ASIO output latency.
AtmanActive is offline   Reply With Quote
Old 11-22-2022, 10:08 AM   #56
mpl
Human being with feelings
 
mpl's Avatar
 
Join Date: Oct 2013
Location: Moscow, Russia
Posts: 3,523
Default

ah 13 seconds not minutes, Im going to look at the parser
__________________
SoundCloud | MPL Scripts discussion | ReaPack
mpl is offline   Reply With Quote
Old 11-22-2022, 10:45 AM   #57
-_~
Human being with feelings
 
Join Date: Oct 2019
Location: Location: Location: Location: ###Fatal error: Interface RecursiveLocation cannot implement itself###
Posts: 40
Default

Quote:
Originally Posted by AtmanActive View Post
The problem with Sonobus or Audiomovers measuring latency is that they can only measure one trip, but not the whole roundtrip time.
Sonobus does give a total (in + out separately) latency reading that's correctly affected by the "Revc Jitter Buffer" setting (which can be set manually). It's not stable though, when total latency should be stable from a user's perspective by allowing always safe buffer sizes and working within that.

Oh, one nice thing Reaper does is that it allows live rec-armed tracks (with low latency) to exist in the same project as heavy PDC tracks. Just a quick FWIW to your point about everything being delayed on the composer side when PDC is active.

Btw, careful with ASIO reported latency, accuracy can be very manufacturer dependent. There are threads here and on Gearslutz about actual latency vs reported. Drivers can add safety buffers here and there and marketing departments don't like talking about any of it.
__________________
Studio One 5 Pro | REAPER v6
-_~ is offline   Reply With Quote
Old 11-22-2022, 10:49 AM   #58
AtmanActive
Human being with feelings
 
AtmanActive's Avatar
 
Join Date: Dec 2009
Location: United Kingdom
Posts: 644
Default

Quote:
Originally Posted by -_~ View Post
Sonobus does give a total (in + out separately) latency reading that's correctly affected by the "Revc Jitter Buffer" setting (which can be set manually).
Yes, but we have two Sonobuses at play: A-to-B and B-to-A. Even if they both report correct, stable latency, how to get performer's Reaper to relay this information back to composer's Reaper?
AtmanActive is offline   Reply With Quote
Old 11-22-2022, 11:59 AM   #59
mpl
Human being with feelings
 
mpl's Avatar
 
Join Date: Oct 2013
Location: Moscow, Russia
Posts: 3,523
Default

ah sorry, I`m an idiot, I totally fcked up the SMPTE sync pattern offset and used take samplerate instead project SR (since take samples are always resampled, exact your case)

try 1.01, it moves to 0:13.189 (now it follow SMPTE code right, I hope)

upd: by the way as I noted, my script search for a first valid SMPTE frame, and in your example first frame is broken, so it aligns by the second frame, about 8330 samples off from item position (in 192kHz rate), dunno is that something about smpte specification or just some dropped samples
__________________
SoundCloud | MPL Scripts discussion | ReaPack

Last edited by mpl; 11-22-2022 at 12:05 PM.
mpl is offline   Reply With Quote
Old 11-22-2022, 01:36 PM   #60
AtmanActive
Human being with feelings
 
AtmanActive's Avatar
 
Join Date: Dec 2009
Location: United Kingdom
Posts: 644
Default

Quote:
Originally Posted by mpl View Post
ah sorry, I`m an idiot, I totally fcked up the SMPTE sync pattern offset and used take samplerate instead project SR (since take samples are always resampled, exact your case)

try 1.01, it moves to 0:13.189 (now it follow SMPTE code right, I hope)

upd: by the way as I noted, my script search for a first valid SMPTE frame, and in your example first frame is broken, so it aligns by the second frame, about 8330 samples off from item position (in 192kHz rate), dunno is that something about smpte specification or just some dropped samples
Fantastic!
Congratulations, mpl on this awesome achievement!
You rock Reaper extension development!
I'm just waiting for the day when Cockos will invite you to join their ranks.

This was the ingredient that we were missing and now it is finally here.

But we are not fully done here yet.
We just need to polish it and make it as streamlined as possible for pleasant day-to-day use.

First, do you think it would be possible to have this script run on every newly recorded item on a particularly tagged track automatically, without user having to invoke the script manually?

Next, we'll need this whole react-on-a-recording-on-a-particular-track script/action to be a composite of several actions.
Here is what I believe should happen once composer records something on a track tagged as "STREAM FROM PERFORMER REC" or whatever tag we agree on:
1.) the SMPTE script should run to align the recorded item (the thing we have now)
2.) additional script should run on the same item to pull it back some more for a user-defined number of milliseconds to compensate for performer's ASIO latency, which is a well-known user-configurable value
3.) one more script should run to get rid of last 4 channels in the recorded item (to remove roundtrip DAW and SMPTE channels)
4.) one more script should run to move this item to a brand new track inside the "Mix" (or whatever user tags it with) folder.

So, the track "STREAM FROM PERFORMER REC" is only that: only for incoming recordings from Reaper VST Connect system. It should never play-back, it should never monitor directly into parent (master). As soon as there is a recording there, this script system mentioned above should take it and move it to a new track so that on play-back, everyone can hear it properly.
Also, when creating this new track to land the new recorded audio incoming from Reaper VST Connect system, it would be great if we could use a track template, so that track can already have reverb or compressor or whatever is needed for that particular use-case.

This is really, really great news. I'm so excited. This is fantastic!

Let's keep up the great work.

Thanks.
AtmanActive is offline   Reply With Quote
Old 11-22-2022, 01:45 PM   #61
AtmanActive
Human being with feelings
 
AtmanActive's Avatar
 
Join Date: Dec 2009
Location: United Kingdom
Posts: 644
Default

Quote:
Originally Posted by AtmanActive View Post
Yes, but we have two Sonobuses at play: A-to-B and B-to-A. Even if they both report correct, stable latency, how to get performer's Reaper to relay this information back to composer's Reaper?
And I know the answer.
It should be doubled.
That's presuming that internet latency is the same for going-to and coming-from, which, most of the time is.
So, how to order Sonobus/Audiomovers to report double latency from the one measured?
No way I'm afraid.

But, never mind, this is not needed anymore now that mpl has mastered the SMPTE decryption method.
We have everything we need right here.
AtmanActive is offline   Reply With Quote
Old 11-22-2022, 05:57 PM   #62
-_~
Human being with feelings
 
Join Date: Oct 2019
Location: Location: Location: Location: ###Fatal error: Interface RecursiveLocation cannot implement itself###
Posts: 40
Default

Quote:
Originally Posted by AtmanActive View Post
Yes, but we have two Sonobuses at play: A-to-B and B-to-A. Even if they both report correct, stable latency, how to get performer's Reaper to relay this information back to composer's Reaper?
I've checked the code and one instance pings the other(s) but also asks it/them for additional info too. It's not just network latency, but the different delays (e.g. jitter buffer) introduced by different settings in the individual instances.

This measurement of round-trip happens when we ping with the "Set From Peers" button and the "Round-trip" option in the dropdown is selected. All in the "M.FX" button pop-up which compensates for latency in monitoring by delaying, instead of using PDC which it could also do there.
__________________
Studio One 5 Pro | REAPER v6
-_~ is offline   Reply With Quote
Old 11-22-2022, 10:35 PM   #63
mpl
Human being with feelings
 
mpl's Avatar
 
Join Date: Oct 2013
Location: Moscow, Russia
Posts: 3,523
Default

Quote:
2.) additional script should run on the same item to pull it back some more for a user-defined number of milliseconds to compensate for performer's ASIO latency, which is a well-known user-configurable value
Code:
samples = -1024
reaper.ApplyNudge( 0, 0, 0, 17, samples, 0, 0 )
or
Code:
ms= -12
reaper.ApplyNudge( 0, 0, 0, 0, ms, 0, 0 )
Quote:
3.) one more script should run to get rid of last 4 channels in the recorded item (to remove roundtrip DAW and SMPTE channels)
Code:
it = reaper.GetSelectedMediaItem(0,0)
if it then 
  take = reaper.GetActiveTake(it)
  reaper.SetMediaItemTakeInfo_Value( take, 'I_CHANMODE', 3|64 )
  reaper.UpdateArrange()
end
Quote:
4.) one more script should run to move this item to a brand new track inside the "Mix" (or whatever user tags it with) folder.
Code:
  function main()
    -- get item
      it = reaper.GetSelectedMediaItem(0,0)
      if not it then return end
    
    -- search MIX track 
      for i  =1, reaper.CountTracks(0) do
        local track = reaper.GetTrack(0,i-1)
         retval, buf = reaper.GetTrackName( track )
        if buf:lower():match('mix') then
          fold_id = i break
        end
      end
      if not fold_id then return end
      
    -- insert new trck
      reaper.InsertTrackAtIndex( fold_id, false )
      local desttr = reaper.GetTrack(0,fold_id)
      reaper.MoveMediaItemToTrack( it, desttr )

    -- select dest track
      reaper.SetOnlyTrackSelected(desttr)

    -- refresh UI
      reaper.UpdateArrange()
  end

  main()
Quote:
First, do you think it would be possible to have this script run on every newly recorded item on a particularly tagged track automatically, without user having to invoke the script manually?
Replace your [transport stop] shortcut to a custom action contains [Transport stop + all this stuff]?
__________________
SoundCloud | MPL Scripts discussion | ReaPack

Last edited by mpl; 11-22-2022 at 11:36 PM.
mpl is offline   Reply With Quote
Old 11-23-2022, 02:19 AM   #64
AtmanActive
Human being with feelings
 
AtmanActive's Avatar
 
Join Date: Dec 2009
Location: United Kingdom
Posts: 644
Default

Quote:
Originally Posted by mpl View Post
Code:
samples = -1024
reaper.ApplyNudge( 0, 0, 0, 17, samples, 0, 0 )
or
Code:
ms= -12
reaper.ApplyNudge( 0, 0, 0, 0, ms, 0, 0 )


Code:
it = reaper.GetSelectedMediaItem(0,0)
if it then 
  take = reaper.GetActiveTake(it)
  reaper.SetMediaItemTakeInfo_Value( take, 'I_CHANMODE', 3|64 )
  reaper.UpdateArrange()
end

Code:
  function main()
    -- get item
      it = reaper.GetSelectedMediaItem(0,0)
      if not it then return end
    
    -- search MIX track 
      for i  =1, reaper.CountTracks(0) do
        local track = reaper.GetTrack(0,i-1)
         retval, buf = reaper.GetTrackName( track )
        if buf:lower():match('mix') then
          fold_id = i break
        end
      end
      if not fold_id then return end
      
    -- insert new trck
      reaper.InsertTrackAtIndex( fold_id, false )
      local desttr = reaper.GetTrack(0,fold_id)
      reaper.MoveMediaItemToTrack( it, desttr )

    -- select dest track
      reaper.SetOnlyTrackSelected(desttr)

    -- refresh UI
      reaper.UpdateArrange()
  end

  main()

Replace your [transport stop] shortcut to a custom action contains [Transport stop + all this stuff]?


Alright, great, thank you.


I decided to name the project ReaConnect.


@mpl, please create 4 more scripts:

- ReaConnect_on_record: this will be the script composer will execute after each recording (we'll ignore automatic part, for now)

- ReaConnect_now_me: this script should mute the track named "ReaConnect: Remote" and unmute the track "ReaConnect: Local".

- ReaConnect_now_you: this script should mute the track named "ReaConnect: Local" and unmute the track named "ReaConnect: Remote".

- ReaConnect_now_toggle: this script should execute either ReaConnect_now_me or ReaConnect_now_you depending on the state of if-track-named "ReaConnect: Local" is muted or not.

The 6-channel track where Sonobus/Audiomovers will receive and record the audio from performer will be named:

ReaConnect: REC [XX] (Y)

Where, XX will be the amount of milliseconds for performer's ASIO, meaning, the script ReaConnect_on_record should analyze the track name, extract the number between square brackets and do the additional pull-left of the recorded (now selected) item to the left for XX milliseconds (after SMPTE decrypt/align part has executed).

Where Y will be the ID number of the desired template track to be used when moving the recorded item and creating a brand new track. This means that ReaConnect_on_record should analyze the track name, extract the number between round brackets and use that number as template ID. Template tracks should be named "ReaConnect: template Y". If no template track found with that name, then, just create a new default Reaper track.

The folder holding the mix will be named "ReaConnect: Mix".

I will briefly post a new example Reaper project.

Thanks!

Last edited by AtmanActive; 11-23-2022 at 02:36 AM.
AtmanActive is offline   Reply With Quote
Old 11-23-2022, 02:34 AM   #65
AtmanActive
Human being with feelings
 
AtmanActive's Avatar
 
Join Date: Dec 2009
Location: United Kingdom
Posts: 644
Default

Here is the ReaConnect Reaper project and ReaConnect track templates:


https://atmanactive.me.uk/temp/ReaCo...Project_v1.zip
AtmanActive is offline   Reply With Quote
Old 11-23-2022, 02:45 AM   #66
AtmanActive
Human being with feelings
 
AtmanActive's Avatar
 
Join Date: Dec 2009
Location: United Kingdom
Posts: 644
Default

Quote:
Originally Posted by mpl View Post
Code:
ms= -12
reaper.ApplyNudge( 0, 0, 0, 0, ms, 0, 0 )


We'll use milliseconds. That way composer and performer don't have to keep track of the sample rate. They can read what Reaper reports as ASIO latency on performer's machine and use that number (in ms + out ms).



Quote:
Originally Posted by mpl View Post
Code:
it = reaper.GetSelectedMediaItem(0,0)
if it then 
  take = reaper.GetActiveTake(it)
  reaper.SetMediaItemTakeInfo_Value( take, 'I_CHANMODE', 3|64 )
  reaper.UpdateArrange()
end


This one should not presume the number of channels to remove/leave. It should examine (if possible) the number of channels present and should just remove the last 4. So, if it is a 6-channel media item, then, yes, leave just first two channels. But, if it is a 10-channel media item, for example, then, it should leave first six channels.
Using Audiomovers with it's 16-channel max transport, one could even collaborate and record with a drummer, using 12 channels of usable audio to record.



Quote:
Originally Posted by mpl View Post
Code:
  function main()
    -- get item
      it = reaper.GetSelectedMediaItem(0,0)
      if not it then return end
    
    -- search MIX track 
      for i  =1, reaper.CountTracks(0) do
        local track = reaper.GetTrack(0,i-1)
         retval, buf = reaper.GetTrackName( track )
        if buf:lower():match('mix') then
          fold_id = i break
        end
      end
      if not fold_id then return end
      
    -- insert new trck
      reaper.InsertTrackAtIndex( fold_id, false )
      local desttr = reaper.GetTrack(0,fold_id)
      reaper.MoveMediaItemToTrack( it, desttr )

    -- select dest track
      reaper.SetOnlyTrackSelected(desttr)

    -- refresh UI
      reaper.UpdateArrange()
  end

  main()


We'll need to expand this one to use Templates, if possible.


Thanks.
AtmanActive is offline   Reply With Quote
Old 11-23-2022, 03:53 AM   #67
AtmanActive
Human being with feelings
 
AtmanActive's Avatar
 
Join Date: Dec 2009
Location: United Kingdom
Posts: 644
Default

Here is the latest graph of the composer track routing:


Attached Images
File Type: jpg ReaConnect - Routing - Composer.jpg (99.1 KB, 55 views)
AtmanActive is offline   Reply With Quote
Old 11-23-2022, 05:08 AM   #68
TonE
Human being with feelings
 
Join Date: Feb 2009
Location: Reaper HAS send control via midi !!!
Posts: 3,588
Default

"Master send disabled" is not necessary, as lines are sends (only), dashed lines are going to master send (or parent send), so if those were enabled you would see dashed lines going to master. The diagram tells already what is going where and where not. Wanted to add this comment for clarification.
TonE is online now   Reply With Quote
Old 11-24-2022, 06:28 AM   #69
AtmanActive
Human being with feelings
 
AtmanActive's Avatar
 
Join Date: Dec 2009
Location: United Kingdom
Posts: 644
Default

Here is the updated version:

https://atmanactive.me.uk/temp/ReaConnect.zip



Started saving everything into Reaper Stash as well, but no audio tracks there (too big):

https://stash.reaper.fm/v/45737/ReaConnect.zip



Here is the updated diagram:





if the image is too small, right-click on it and choose "Open image in new tab", it will be displayed larger.
Attached Images
File Type: png ReaConnect.png (142.8 KB, 34 views)
AtmanActive is offline   Reply With Quote
Old 11-24-2022, 07:41 AM   #70
TonE
Human being with feelings
 
Join Date: Feb 2009
Location: Reaper HAS send control via midi !!!
Posts: 3,588
Default

Now that is a diagram, cool. Setting new standards in Reaper forums. Thanks for sharing your work here.
What is Reaper offering for Audio-over-IP? Nothing there?
TonE is online now   Reply With Quote
Old 11-24-2022, 08:35 AM   #71
AtmanActive
Human being with feelings
 
AtmanActive's Avatar
 
Join Date: Dec 2009
Location: United Kingdom
Posts: 644
Default

Quote:
Originally Posted by TonE View Post
What is Reaper offering for Audio-over-IP? Nothing there?
There is ReaStream but it's not designed for long-distance. It has hardcoded buffer so when you try it long-distance all you get is crackling. It works perfectly well for LAN though.

But even if ReaStream had configurable buffer size and jitter protection and packet reassembling to survive long-distance internet connections, there would still be the problem of incoming packets (a.k.a. port-forwarding, a.k.a. NAT traversal).

As I said earlier, that's a huge problem.
In a perfect world, where both parties have good connections, good modems/routers, and static internet IP addresses, manually configuring port-forwarding is not a problem. But, for dynamic IP addresses, it is a problem. And, sometimes, for some connections and modems, it is impossible to set it up.

Sonobus tries to overcome this problem using UDP-port-bombardment-NAT-traversal technique, and Audiomovers uses server-reflection technique.

Last edited by AtmanActive; 11-24-2022 at 10:39 AM.
AtmanActive 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 11:30 PM.


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