10 SJ-Commandments
1.) Distributed music is not a plug-and-play principle. It exhibits a significant amount of complexity – so you need to investigate and learn (often by trial-and-error).
2.) The service is free of charge but don’t take our support for granted – be nice and the probability to be helped will increase – otherwise it decreases significantly and in worst-case you risk to be thrown out.
3.) In case of reporting issues be as precise as possible and do not compare with other platforms you might have played on.
4.) Windows users: Make sure to use ASIO devices and note that we do not support the ASIO4ALL driver although it might possibly work.
5.) Always use a wired ethernet connection (no WIFI) and avoid additional traffic within your own network including smartphones etc.
6.) First check your local soundcard settings by establishing connections to localhost in the “public p2p” group. Figure your lowest possible latency by adjusting the sample-, network and jitterbuffer. Then check your network conditions by establishing connections to the mirrors in the “public servers” group. Also here figure the lowest possible latency.
7.) If connections to other persons fail SJ says “trying” and/or “one-way” instead of plotting the latency.
8.) If (7) applies connect to an “SJC server” in the “public servers” group. If this works you know that you have to apply port forwarding for p2p connections (see FAQ with the keyword “port forwarding”).
9.) Instead of p2p you can use public and/or private mix servers (see “server” tab). This increases connectivity and the maximum amount of players, however, in most cases it introduces additional latency.
10.) Latency acceptance thresholds vary depending on the style of music, the speed of the performance and the individual musicians – there is no fixed value. Therefore, you need to have an awareness of how much latency your ensemble can handle. More details to be found below, the FAQ and the “user docs” tab – it’s worth investigating and learning.
For a complete description of distributed music we recommend reading at least chapter four of the author’s Ph.D. thesis. Regarding artistic challenges and the effect of latency please read chapter five. With respect to the current state of the art and Soundjack in particular please read our IEEE-Access publication (mainly Section IV). Alternatively read this tutorial below as a “quick start”.
Take a look at the videos below – they show you all the details of how to adjust the relevant parameters.
Installation guide
- Register on soundjack.eu
- Once registered log in and click on Download tab
- Download either Mac OSX, Linux or Windows depending on your system. Win users will need an ASIO sound device (typically external USB device). If not existing you will very likely not have a satisfying experience in terms of dropouts and or latency. You might want to try the ASIO4ALL driver but functionality is not granted and therefore we do not provide support for it: http://www.asio4all.com
- Extract and open the downloaded file.
- OSX / Windows: Run the soundjack application by doubleclicking on the binary file (Win: soundjack.exe / OSX: soundjack.app)
- Linux: In a terminal window cd to the extracted directory. You will find script files (.sh) files there, corresponding to different versions of Soundjack. Run one of them – ideally the latest. (You will need to terminate this using ctrl-c once you have finished the Soundjack session.)
- Important: A small XLR Icon in your dock will show up. This confirms the soundjack engine is running and working fine. On Windows you will see an additional DOS-type console.
- Once the plugin is running on your machine return to the sound jack website and click the stage tab
Interface layout description
Soundjack is a browser-based low-latency communication system available at the stage tab. The left of the interface shows the local engine specific parameters, which determine the stream settings and in turn the bandwidth capacity of the outgoing stream. The right shows the user list which is to be understood as a mixing console in horizontal layout. Each user corresponds to a channel strip. Enable the “play” button at the very right of the channel strip in order to connect with the specific user.
Configuration
- Once you have successfully ran the application you will need to set your drivers/settings within the web browser. This may take some tweaking.
- Select your the desired input and output interface of the existing ones
- Select the sample buffer (if you’re experiencing audio issues try raising the sample size to the next higher)
- Select send channels. These should correlate to the inputs of your interface. Example inputs 1+2 would use 2 send channels. If you had a mic on in1 and a guitar on in3 you’d most likely need to select 4 channels here.
- Lastly choose your network buffer and OPUS bit rate. The higher the OPUS bit rate the higher the quality but subsequently the more data will be transmitted which could cause issues with slower Internet connections.
- Establish a test connection with the existing audio mirrors within the user list. You will see the jitter buffer turning green and/or red depending on the stability of the connection. Adjust this value according to your needs.
Lower network buffers will lower latency but could also create issues with streaming quality. Network buffers will correspond to peers’ sample buffer. For example, if they have a higher sample buffer (512 for instance) you may not need as large of a network buffer your end (perhaps 128). The opposite would also be true if the sender is sending smaller packets (say 128) the network buffer may need to be increased. Unfortunately, due to the nature of the internet and individual hardware setups, there is no straight forward way to determine the optimal settings for everyone so you are encouraged to tweak these settings to find out what works best for your session. OPUS bit rate in short the higher the bit rate the better quality the audio. Linear is uncompressed. 96 kbps is compressed by a factor of 8, 48 kbps by a factor of 16 etc. One thing to keep in mind is that this is the quality of each individual track so the more tracks you have sending the greater the speed requirements. Example one track at 96 kbps will be sending as much information as 4 tracks at 24 kbps.
video 1 – basic introduction and getting started
0:00 Introduction
0:45 Register – in order to be able to download and use Soundjack
1:30 Log-in – enabling access to additional pages of the web site
2:00 Download the Soundjack app
2:45 Launch soundjack
3:20 An overview of the Stage
notes & updates
1:10 Alex’s email address is Alexander@Carot.de
2:35 The app has an icon now
3:45 The logging window has been removed
video 2 – Soundjack engine tutorial
0:00 Introduction and review
1:00 The User List
1:20 The “i” status icon
3:30 Soundjack settings:
4:30 Soundcard
6:00 Sample buffer
6:45 Audio loopback fader
9:00 Send channels
9:50 Channel-selection
11:00 Delayed-feedback
13:00 Network buffer
13:40 Finding optimal settings
15:00 Compression
16:30 Manage calls
notes & updates
7:40 A sample-rate control has been added, but 48k is still the only available option
8:36 The logging window has been removed
video 3 – how to connect
0:00 Introduction and review
1:20 The User List
2:00 Localhost user-entry (local loopback – connect to yourself, within your computer)
3:00 How to connect
3:50 Latency display
4:20 Displaying a partner’s settings
4:25 Your partner’s audio compression setting
4:50 Your partner’s channel-count setting
4:54 Your partner’s network-buffer setting
5:30 Jitter-buffer setting
6:40 Finding optimal settings – using the local loopback connection
10:15 The audio-mirror user-entry (loopback, but through a distant server)
11:00 Demonstration of too-aggressive jitter-buffering (connection flickering red)
12:10 Finding optimal settings – using the wide-area network connection
13:50 Your own user-entry (network loopback – connect to yourself either over the LAN or WAN)
notes & updates
0:25 The logging window has been removed
1:25 The number and type of permanent entries varies
13:05 The logging window has been removed
video 4 – NAT-Router Connection and Port Forwarding
0:00 Introduction and review
1:50 Network-loopback – connect to yourself through you router – either over the LAN or WAN
2:00 The “TRYING” error message
3:35 UDP-Port2 router-status messages – most open: (111) most restrictive: (388)
5:00 Determine the IP address of your router, log on and locate the “port forwarding” function
5:55 Example of the UDP port forwarding rule (note, the port has changed from 50000 to 50050)
6:05 Determine the IP address of your computer and use it for the port-forwarding rule
6:45 Reenter Stage and test the configuration
8:00 The impact of a wireless (WIFI) connection on performance
9:30 Proof of concept: observing the result after disabling port-forwarding
notes & updates
3:50 The “4” value in router-status msg has been removed (see FAQ)
5:55 Soundjack now uses UDP port 50050, rather than port 50000 as shown in the video
7:13 Soundjack now provides two connection/testing options – “via WAN IP” (more rigorous) and “via LAN IP” (less rigorous)
video 5 – adjusting latency after connection (audio, network, jitter-buffer)
0:00 Introduction (note: Alex is only on the left channel)
0:33 SJC software starter-script (now depreciated)
1:00 Logging into the Stage and getting the session set up
2:30 Sample buffer settings
3:00 Connecting to a remote peer/partner
4:00 Reviewing remote-peer seetings, and impact of the jitter-buffer
7:20 Aggressive jitter buffer settings – example of audio-dropouts
8:45 Interaction of sample-buffer, network-buffer and jitter buffer – balancing stability and latency
notes & updates
0:00 Alex’s voice is only on the left channel in this video
0:33 Soundjack starter-script has been depreciated
7:13 sorry about the very-harsh edit!
video 6 Sample buffer adjustment, real connection between partners
0:00 Introduction and review
2:35 Determine optimal settings for your local soundcard
4:40 Select the number of audio channels (includes comparison of mono, dual-mono and stereo settings)
6:10 Connecting to remote peer and negotiating settings
7:20 User-list information
9:15 The impact of the jitter-buffer on sound quality and latency
10:00 The essential counting test – showing why latency is so important to musicians
notes & updates
0:50 The app is now named ” SJCnnnnn.app ” (where nnnnn is the version number) rather than ” soundjack.app ”
0:55 Soundjack starter-script has been depreciated
2:00 Sliders only change parameters when they are released, not while sliding