Feature Request - Relay Server/client #1031
Replies: 9 comments 8 replies
-
Hi @AndyMcProducer! Thanks for your feature request! I think there already was a discussion on this topic (server as relay as alternative to the multi threading approach) but it wasn't implemented since there might be too much latency and syncronisation issues. Not being able to control every participant on your own mix isn't useful and if you want to control everybody, you could just use a powerful server somewhere where the ping time is almost equal to both continents. The client approach sounds interesting and might somehow be possible via a headless client on a server which then connects to another server. I think the problem you want to solve with this idea is that it's not easy to route audio from server A to server B? |
Beta Was this translation helpful? Give feedback.
-
I'm wondering if this could just be a special, extra-fast, network-only Jamulus client which does not do any audio processing and just forwards the data between two servers. It would even be possible to relay chat messages (although it would still be noticable that they are forwarded). Such a special client could either be a fork of Jamulus, make use of Jamulus' protocol parsing as a library or it could even be implemented in any other language. @AndyMcProducer What specific use cases do you have in mind? |
Beta Was this translation helpful? Give feedback.
-
@AndyMcProducer Hi - just moving this to a discussion until we can firm it up into a defined backlog item we can implement. |
Beta Was this translation helpful? Give feedback.
-
@AndyMcProducer I am not understanding clearly the motivation for your proposed solution. Could you discuss the following: |
Beta Was this translation helpful? Give feedback.
-
I fail to see how relay servers could help any of the problematic use cases we might have. |
Beta Was this translation helpful? Give feedback.
-
People said that about the wheel once to, and that the Earth was flat.
Multiple connects will hit your ping eventually and have an impact if that's what ya was implying, more so on some isp's that throttle when many connections are made.
Some replies here show you didn't read it all and only skipped it, yes is a lot but best to read it if your gonna say how wrong it is.
Fake time would only be handy on the relay for some stuff, not fake time on the servers themselves.
I explained the physics of ping being speed of light and would not change.
IF you want to jam with high pings then as said physics prevents this. People say i can jam on high ping, great for you but bad for all else who have to hear you way out of sync and mute you.
But in a relay least one side hears the whole jam and as it's multiple servers then normally would be enough to fill each end meanign the server muted woudl still have plenty of jam.
But for live and multiple singers performing they could achieve this much more in sync.
I don't think an option shouldn't be implemented because some don't get it and others can't see why it would be needed.
I'm thinking this for ALL not the odd winger.
AND no processing is being adding from client to client, actually less ms from relay to relay would be achieved for all as an average.
So bill, ben and a flower pot man on server one with 30 ping, jack and jill wih a guy named phil on the server two with a 30ish ping.
Bill Ben and the flower pot man connect to server two directly, Bill has a ping 155, Ben has a ping of 95 and the flower pot man has a ping of 250.
BUT now Bill Ben and the flower pot man reconnect to server one with their nice 30 pings, now server one connects via relay to server two and has a ping of 80.
Now Bill and Ben and the Flower Pot Man are all in sync and their combined audio is sent in sync on a ping of 80 to server two. Server One is half a choir and server two the other half.
They are about to put on a show, server one starts a count in then start singing, server 2 now has all 3 in sync and sing along.
Now Server two streams it live on the internet to their audience, all in time, but server one will have to mute server two so they don't head them back delayed.
The show must go on.
Side 2 could even prerecord themselves and which could be a local server playback track, so a pre record of server 2's parts could be played for server 1 to sing to, if they needed it.
…________________________________
From: DonC <[email protected]>
Sent: 21 February 2021 08:36
To: jamulussoftware/jamulus <[email protected]>
Cc: AndyMc <[email protected]>; Mention <[email protected]>
Subject: Re: [jamulussoftware/jamulus] Feature Request - Relay Server/client (#1031)
I fail to see how relay servers could help any of the problematic use cases we might have.
Network bandwidth is not a major problem in this day and age.
The program allows jamming with over 100 participants if one (100) wishes. I have personally used up to 24 and it worked fine.
If a relay server could add time warp so that the packets arrive at the same time as they are sent it would be a dream.
Unfortunately we are bound by the laws of physics.
Adding any processing by additional servers along the route from one client to the next will only add latency.
This is a good idea to think through, but once thought threw, I think it is an idea to reject.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub<#1031 (comment)>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/AB64GYMKNWAFXP3PDML523DTADA2DANCNFSM4X4LAO3Q>.
|
Beta Was this translation helpful? Give feedback.
-
Yep, even fire once was thought of as magic. Pings are mostly dictated by hops, so yes you magically cut the latency to that of the server connection which most run on aws, google and so on.
Hops from within their own network tends to be even better.
I guess if it's implemented, you'll be convincing everyone is MAGIC! Except those who understand how it works.
:S
…________________________________
From: gene96817 <[email protected]>
Sent: 21 February 2021 18:46
To: jamulussoftware/jamulus <[email protected]>
Cc: AndyMc <[email protected]>; Mention <[email protected]>
Subject: Re: [jamulussoftware/jamulus] Feature Request - Relay Server/client (#1031)
People said that about the wheel once too, and that the Earth was flat.
Some replies here show you didn't read it all and only skipped it, yes is a lot but best to read it if your gonna say how wrong it is.
Please, we are all trying to be helpful. Our style here is terse and with a tricky idea, it would be really helpful to lay out the idea in the long, step-by-step explanation. Otherwise, a dummy like me might miss how clever your idea really is. I really don't want to read your proposal as an engineering problem set to reverse engineer the missing details.
IF you want to jam with high pings then as said physics prevents this. People say i can jam on high ping, great for you but bad for all else who have to hear you way out of sync and mute you.
I don't understand why physics prevents jamming with high ping times. It is easy to add an arbitrary amount of delay to satisfy anyone that want high ping times. Physics does establish the floor on minimum ping times.
But in a relay least one side hears the whole jam and as it's multiple servers then normally would be enough to fill each end meanign the server muted woudl still have plenty of jam.
But for live and multiple singers performing they could achieve this much more in sync.
I would really like to understand the scenario (or scope) where you have solved this problem.
So bill, ben and a flower pot man on server one with 30 ping, jack and jill wih a guy named phil on the server two with a 30ish ping.
Bill Ben and the flower pot man connect to server two directly, Bill has a ping 155, Ben has a ping of 95 and the flower pot man has a ping of 250.
BUT now Bill Ben and the flower pot man reconnect to server one with their nice 30 pings, now server one connects via relay to server two and has a ping of 80.
Thank you for some details.
What I see here is:
Ping (server1, server 2) =80ms
Ping (Bill, server 2) = 155ms
Ping (Ben, server 2) = 95 ms
Ping (FlowerPot, server 2) = 250 ms
Ping (Bill, server1) = Ping (Ben, server 1) = Ping (FlowerPot, server 1) = 30 ms
Approximating all distance as linear and applying Phytagorean theorem,
Ping (Bill, server 1)^2 + Ping (server 1, server 2)^2 = Ping (Bill, server2)^2
30ms^2 + 80ms^2 /= 155ms^2
900+6400-24025=-16725
you magically erased 129ms with relay for Bill.
similar math should/can be done for Ben and Mr. FlowerPot.
There is a timewarp in this architecture OR my rough model is very wrong.
Now Server two streams it live on the internet to their audience, all in time, but server one will have to mute server two so they don't head them back delayed.
At this point musicians at server 1 is not performing with musicians at server2. This really isn't jamming. Might as well do a virtual performance with recording magic.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub<#1031 (reply in thread)>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/AB64GYL3RGV7TB5M55CTE53TAFIJNANCNFSM4X4LAO3Q>.
|
Beta Was this translation helpful? Give feedback.
-
Also, I never said those on server 1 would then get a ping of 80 to server 2, their combined audio sync'd would be on one ping of 80 to server 2.
So rather than random all over the place pings they'd all be sync'd but could still be separate channels adjustable on server 2 and vice versa.
Some can play on a higher ping, this way they only have 1 ping to deal with not 10 pings all over the place.
But you dismissed it and didn't even understand it. 😕
…________________________________
From: Andy Mc <[email protected]>
Sent: 21 February 2021 19:19
To: jamulussoftware/jamulus <[email protected]>
Subject: Re: [jamulussoftware/jamulus] Feature Request - Relay Server/client (#1031)
Yep, even fire once was thought of as magic. Pings are mostly dictated by hops, so yes you magically cut the latency to that of the server connection which most run on aws, google and so on.
Hops from within their own network tends to be even better.
I guess if it's implemented, you'll be convincing everyone is MAGIC! Except those who understand how it works.
:S
________________________________
From: gene96817 <[email protected]>
Sent: 21 February 2021 18:46
To: jamulussoftware/jamulus <[email protected]>
Cc: AndyMc <[email protected]>; Mention <[email protected]>
Subject: Re: [jamulussoftware/jamulus] Feature Request - Relay Server/client (#1031)
People said that about the wheel once too, and that the Earth was flat.
Some replies here show you didn't read it all and only skipped it, yes is a lot but best to read it if your gonna say how wrong it is.
Please, we are all trying to be helpful. Our style here is terse and with a tricky idea, it would be really helpful to lay out the idea in the long, step-by-step explanation. Otherwise, a dummy like me might miss how clever your idea really is. I really don't want to read your proposal as an engineering problem set to reverse engineer the missing details.
IF you want to jam with high pings then as said physics prevents this. People say i can jam on high ping, great for you but bad for all else who have to hear you way out of sync and mute you.
I don't understand why physics prevents jamming with high ping times. It is easy to add an arbitrary amount of delay to satisfy anyone that want high ping times. Physics does establish the floor on minimum ping times.
But in a relay least one side hears the whole jam and as it's multiple servers then normally would be enough to fill each end meanign the server muted woudl still have plenty of jam.
But for live and multiple singers performing they could achieve this much more in sync.
I would really like to understand the scenario (or scope) where you have solved this problem.
So bill, ben and a flower pot man on server one with 30 ping, jack and jill wih a guy named phil on the server two with a 30ish ping.
Bill Ben and the flower pot man connect to server two directly, Bill has a ping 155, Ben has a ping of 95 and the flower pot man has a ping of 250.
BUT now Bill Ben and the flower pot man reconnect to server one with their nice 30 pings, now server one connects via relay to server two and has a ping of 80.
Thank you for some details.
What I see here is:
Ping (server1, server 2) =80ms
Ping (Bill, server 2) = 155ms
Ping (Ben, server 2) = 95 ms
Ping (FlowerPot, server 2) = 250 ms
Ping (Bill, server1) = Ping (Ben, server 1) = Ping (FlowerPot, server 1) = 30 ms
Approximating all distance as linear and applying Phytagorean theorem,
Ping (Bill, server 1)^2 + Ping (server 1, server 2)^2 = Ping (Bill, server2)^2
30ms^2 + 80ms^2 /= 155ms^2
900+6400-24025=-16725
you magically erased 129ms with relay for Bill.
similar math should/can be done for Ben and Mr. FlowerPot.
There is a timewarp in this architecture OR my rough model is very wrong.
Now Server two streams it live on the internet to their audience, all in time, but server one will have to mute server two so they don't head them back delayed.
At this point musicians at server 1 is not performing with musicians at server2. This really isn't jamming. Might as well do a virtual performance with recording magic.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub<#1031 (reply in thread)>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/AB64GYL3RGV7TB5M55CTE53TAFIJNANCNFSM4X4LAO3Q>.
|
Beta Was this translation helpful? Give feedback.
-
Server 1 won't be in sync with server 2 if server one leads. But server 2 will have all users sync'd from server 1, unless people connecting to server 1 are on pings like 30, 60, 120, 157 and so on, but they wouldn't be.
You'd have people connect to the closer server to them, so you'd say have peeps within a 40 overall ping on server 1, same on server 2, so then the audio will be as sync'd as it is played but then relayed to the server 2
as 1 packet 1 connection.
Users on server 1 if they were to connect to server 2 direct could all be in the uk and have 30ish ping to server 1 but to server 2 they could be 80, 140, 190, depending on how many hops their isp's take.
So, by relaying the combined audio using multi channel support on opus you effectively have all audio sent from one server to the other, but if also both are on a cloud server, then it will be much lower ms.
This is not to negate the time it takes to travel; this is to put all in sync as they would be local with another server remote. They ain't in sync, server 2 is hearing them delayed but the audio source has all users
in sync on server 1,, again unless someone is on a stupid ping to server one, then they'd sound out on server one but sound the same amount out on server 2 too.
In laming terms, Bill, Ben and Flower Pot Man travel to a parcel and it makes them grow in size, when they all get to the parcel, they are 30cm high. In the box they go and off they travel.
It costs 80 coins to send them to America, when they get there, the Americans open the box, what size are Bill, Ben and the Flower Pot Man?
…________________________________
From: gene96817 <[email protected]>
Sent: 21 February 2021 19:47
To: jamulussoftware/jamulus <[email protected]>
Cc: AndyMc <[email protected]>; Mention <[email protected]>
Subject: Re: [jamulussoftware/jamulus] Feature Request - Relay Server/client (#1031)
@AndyMcProducer<https://github.com/AndyMcProducer> You are not taking me seriously. Even if the routers were relatively slow and added 5ms. If you were eliminating 5 routers or 25 ms, you will have to explain how you are erasing 100+ ms. That is a lot of km to erase. It's magic for people who don't understand science. I am asking you to explain how it works. Magic is not an explanation.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub<#1031 (reply in thread)>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/AB64GYMCDBQJYDCH5N5RWBDTAFPL7ANCNFSM4X4LAO3Q>.
|
Beta Was this translation helpful? Give feedback.
-
Hiya I can't see where to put a feature request, Corrados could you move this please to the right department. :)
Would it be possible to have an option to set jamulus client or server as a relay server.
So say ya got a server in the USA and one in Europe, the relay would connect to a server then relay the audio and chat to and from another server. Only a single stream would be needed, we could still communicate for remote to lower or up their volumes.
I see the server records so gathered there is an audio stream there to be had for relaying.
They'd show as a connect in the server as say (Remote Server Us Oldies -USA) but chat could show as that person and their name somit like Us Oldies - Jackie: Hiya All.
Can you see the possibilities of this and advantages?
With it could be allowing so many slots from total for relays.
This could be done manually but added ms and complex setup for many to route a jamulus to a jamulus.
Would help also to make bigger servers with split resources and with the group, mute and solo options would be
pretty easy to handle.
Also doing it via jamulus clients wouldn't carry over the chat.
A relay server could be run also by someone who has much better pings, meaning a much shorter route for the audio combined. It would probs make more sense having it in the server, but then maybe client to so if someone doing the relay server could then adjust volumes or even int he future having a limiter on each connected in the relay server/client.
Andy.
Beta Was this translation helpful? Give feedback.
All reactions