JustUke Strummers' Facebook Live Streaming - Technical Details

The JustUke Strummers have been performing Facebook Live since August 7, 2020.

20211129 Facebook Live

There were a lot of technical challenges especially at the initial stage. After some serious research, we picked Jamulus, and we are still using it now.

We tried various hardware and configurations with Jamulus. We can proudly say our setup and sound quality is pretty decent now.

This article shares the details of our configurations and setup. However, this is NOT a step by step setup guide in order not to lose focus on the overall architecture.

The Jamulus Server

An Odroid XU4 Single Board Computer hardware running Ubuntu 20.04.3 LTS is used to host our private Jamulus server. It is compiled with "CONFIG+=nosound headless" configurations.

The step by step guide to compile Jamulus on Linux can be found online.

Other Popular Single Board Computers such as Raspberry Pi 4 may be able to do the job as way.

Of course a regular computer or laptop can do the job as well, but we prefer running the server on a dedicated hardware to minimum the possibility of resource contention on the computer.

The Jamulus Clients

There are usually 5 of us signing in from different parts of Singapore during a Facebook Live session. Everyone connects the private Jamulus server using a computer (can be either Windows or MacOS) running a Jamulus client.

After numerous trial and errors, we are finally convinced that everyone has to use an audio interface hardware to ensure audio quality.

Initially we tried using built in computer hardware (the built-in sound cards on either Windows or Mac) or USB microphones. The solution may work occasionally, but the performance and sound quality is really unpredictable. For the Windows operating system, anything that need to use ASIO4ALL driver will eventually exhibits sound problems. This include popping / cracking sound or bad delay. Sometimes, the delay observed on the Jamulus client can be so bad that a singer hears distorted music and hence sings out of tune.

In short, audio interface is a must.

Thus far, we have tried the following hardware

  • Focusrite 2i2 2nd Generation
  • Focusrite 4i4 3rd Generation
  • Behringer UMC202HD
  • Behringer UMC204HD
  • M-Audio M-Track Solo

Note that out of the 5 participants, the setup for the participant who is also in charge of broadcasting (the rightmost participant on the above diagram) the live session to Facebook is a lot more complicated than the rest. 2 computers are used here. It may be possible to squeeze everything into a single computer, but it will be really stressing the computer. The diagram below shows more details about the the setup and connections.

The computer on the left is primarily used to run a Jamulus client.

The computer on the right is used to

  • Run a Digital Audio Workstation for audio enhancement
  • Run Zoom to capture everyone's appearance on a video
  • Run OBS for broadcasting

With reference to the diagram above, audio from microphone and instruments are fed into a mixer. The audio from the mixer is then fed into the front inputs of the red Focusrite audio interface. This Focusrite audio interface is used by the Presonus Studio One Professional DAW. The DAW performs minimal processing on these audio inputs such as compression and limiting. The processed audio output is then fed into the front inputs of Behringer UMC204HD audio interface from output 1 & 2 of Focusrite audio interface.

The Behringer audio interface is used by the Jamulus client. The output from the Behringer audio interface (a.k.a Jamulus output audio with audio from all participants) is again fed back into the insert inputs at the back of Focusrite audio interface. Studio One DAW performs final processing of the audio.

The final audio output from Focursite (output 3 & 4 at the back of Focusrite) is then fed into Behringer UCA 202. OBS then captures the final audio at the Behringer UCA 202.

The diagram below is showing the same thing. But represented in logical blocks. Hopefully it is easier to understand.

Audio Processing

Presonus Studio One Professional is used for audio processing. Although this can be considered optional, but it improves the sound quality quite significantly. Sound effects sound such as Reverb, Chorus can be added to the audio before its broadcast.

One thing we find very annoying during a live session is that when one person is speaking, the volume is relatively low. But when all the singers start to play and sing together, the volume is too loud. And we do not have a sound engineer to continuously adjusting the volume throughout the live session. That is where Vocal Rider Plugin comes in very handy.

Hardware Audio Routing

The combined audio output from all participants  at Jamulus (at the broadcaster side) is routed to Presonus Studio One DAW by hardware means. In other words, a pair of physical cables are used to connect the audio output from Behringer UMC204HD to Focusrite 4i4.

The audio output from Presonus Studio One DAW will be routed to OBS for broadcasting also by hardware means too. In other words, the Presonus Studio One DAW audio output is routed from Focusrite 4i4 to OBS through Behringer UCA202.

We have tried various software routing methods including VoiceMeeter Banana, Virtual Cable, ReaPlug ReaStream. Unfortunately, all these are just adding delay and noise to the live session. And these software takes up CPU resources. At the end, they introduce a lot of unexplained popping and cracking.

 

Video from Zoom

Jamulus has only audio, we need video for broadcast as well. We picked Zoom since it is the most widely used. However, we are only using the video part of Zoom. All participants either joined the Zoom session with audio disabled or audio muted.

 

 

OBS

OBS responsible for combining the audio with the video before broadcast. OBS is also used to create multiple scenes with interesting nice visual effects. For our use case, the lyrics are also projected during the live broadcast.

Remember that in this case, the Jamulus audio and Zoom video will NOT be in sync automatically. The audio is about 250 ms ahead of the video in our case. A delay can be added to the audio to synchronize the audio with the video in OBS.

For our setup, the computer running Presonus Studio One version 5 is also running OBS. This could be stressing the computer. Thus, we avoided recording the video using OBS. Instead, we implemented a NGINX RTMP function in the our private Jamulus server. This means, OBS will stream the video + audio to our private Jamulus Server. The server will record the video stream, and push the stream to Facebook at the same time.

Brief Setup Video

Jamulus Setup Video

Battling with Popping and Cracking

Frankly, we are still battling with random noise during every live session today, although it is much more manageable today. The setup is simply too complex involving all sorts hardware and software from different participants from different locations. There are many points of failure where noise can be introduced.

In short, the delay and latency is still there. Jamulus is just doing its best to minimize it given various connection conditions.

Thus, it is important to ensure all the followings.

  • Everyone must have a compatible audio interface hardware
  • Every computer running Jamulus must be connected to the internet using LAN cable. WIFI is a bad idea.
  • Ethernet over power line adaptors is a bad idea.
  • ISP provided routers are usually bad

With the above taken care, there may still be problem. One being the computers using by the paticipants to run Jamulus may not be powerful enough or loaded with bloat wares. Non techies usually do not know what software are running in their computers.

 

Dedicated Headless Single Board Computer Running Jamulus Client

We have been toying with some Single Board Computers dedicated to run Jamulus client. There are good results in this article Jamulus Dedicated Hardware Client.