Thanks for listening!
On 28.03.21 11:28, Fons Adriaensen wrote:
tonight (March 26th 2021, 7pm CET) we will play a
concert with five
musicians at four different locations, using our ovbox system.
I really enjoyed the concert very much, many thanks !
Reading the ovbox documentation on Github it's not clear to me how
it really works - how the audio is routed. You mention both STUN and
TURN servers which suggest different topologies.
Actually we can mix both topologies, because STUN does not work with all
NAT routers (we didn't manage to get it working with mobile networks).
Some clients can use peer-to-peer mode with a STUN server, others can
join via a TURN server. There is a sketch on my LAC'20 presentation:
I have to admit that I am not a network expert, I just added the minimal
steps I needed to make it work.
In my days in broadcasting (long ago), a multi-location concert
would be done as
- Each participant send his contribution to a central studio.
- The studio provides a separate mix for each location (usually
just an N-1 of the master mix) and sends this back.>
So this requires a bidirectinal linkg between each participant and
the studio, and there are no direct connections between the different
The other way would be to have direct audio streams between all
participants, and each makes his own mix. This provides less latency
but doesn't scale linearly. Since you provide head-tracking, I suspect
this is how ovbox works ?
Yes, we always make the mix locally (even when the audio is routed via
the server). This creates a heavy impact on bandwidth requirements when
used with many participants, thus the ovbox works only with relatively
small ensembles. The maximum successfully tested number of participants
was 12, using a Raspberry Pi.
For the concert stream I used a desktop PC with higher performance to
create the mix. Since under the hood we use zita-njbridge (with the
network data repackaged for the distribution to other peers and/or
server), we have one instance of zita-n2j for each musician except the
local musicians, which are then fed to the local mix for streaming.
Regarding the head tracking we have also two modes: The head tracking
can not only affect the way we hear the sound, but also with directional
sound sources the ratio between direct and reverberant sound, which
could be an interesting effect for singers (right now it is more used as
a toy). In the latter case we send the orientation data to all clients
to change the rendering accordingly.