(Note: This is a slightly edited version of a mail message sent to the TAVIP discussion list in late January 2021 and last edited on February 1st).
Since the first lock-down, I’ve been trying out various online jamming options, which eventually whittled themselves down to two products, JamKazam, and Jamulus.
The first of these, JamKazam (hereinafter referred to as JK (for brevity)), is a great package if you ignore it’s appalling (January 2021) accessibility. The other option, Jamulus, is an open-source project, free for anyone to use, or indeed to develop their own version. The architecture of these two products is very different. JK is developing a peer-to-peer solution to cut down on the delay, whereas Jamulus is a one-server-to-many-clients arrangement.
As an experiment, I’ve just finished setting up a cloud based Jamulus server on a virtual Linux machine (with a lot of guidance from experts, and from various online resources which I can pass on to people if interested).
Jamulus is a very much simpler product than JK. It doesn’t offer a video option, and has much reduced functionality, but is currently (January 2021) much more accessible. Its purpose is to allow musicians and singers to play and sing together in real time over the internet.
To use it, you need a PC (Windows, Mac or Linux), and ideally a USB audio device into which you can plug a microphone, or instrument, and some headphones. I use a Behringer UMC 404 which is a 4-channel device.
You also need the Jamulus client software appropriate for your type of computer. I have only tried the Windows client so can’t comment on the accessibility of the other options, though I know of VI people who are successfully using the Mac version. It is also really important that you use a direct Ethernet connection between your computer and your router. Wi-Fi connections do not work well for high-performance and low-delay audio (or video).
You can download the “official” version of Jamulus by following the links at jamulus.io.
Although the accessibility of Jamulus to VI people is far greater than that of JK, it is still not perfect, and an effort to address some of the issues has been made by Chi Kim, who has produced a slightly amended version of the Jamulus client, which is the one I’m currently using.
It has to be borne in mind, that Jamulus is open-source software, and comes with no kind of warrantee or formalised support. I’m still on the foot-hills of the learning curve, but would be interested if anyone would like to give my server a bit of a stress test. It is currently set up to support up to 10 concurrent connections, though I don’t know if the capacity of the virtual machine will handle this number or indeed more. I have read claims that 40 or more concurrent connections can be successfully handled by some configurations.
The “Accessible Jamulus Build” is available at https://chigkim.github.io/jamulus/ where you will find a download option. I couldn’t find any information about how to install this software, but was assisted in this by Andre Louis on the Vibe list. I simply copied the contents of the compressed download into a folder in my ‘Documents’ folder, and clicked on the executable ‘Jamulus’ file within the downloaded folder. I had formerly tried the standard version of the Windows client, and am not completely sure that you don’t need to install this before the accessible version will run correctly. The current version of this build was released on December 12th 2020.
All my testing of Jamulus has been done with JAWS version 2021, though I’d expect it to work with NVDA, and possibly with Narrator.
Once you’ve opened the client application, you are presented with a screen which includes a number of boxes which display status information about various audio and networking features of the software. I haven’t yet found a way of reading the status boxes, but haven’t found this to be a problem.
The opening screen also includes checkboxes which allow you to open and close the Settings and Chat windows respectively. Settings allows you to set things up correctly for your Sound Card, and Chat allows you to send messages to other people connected to the server. The Settings window includes a setting which allows you to choose mono or stereo operation. I use the option labelled Mono In/Stereo Out. This appears to be a sensible option unless you are able to feed a signal into Jamulus from a mixer which controls the stereo pan. Switching to Stereo without the use of a mixer means that your signal will only appear at the server, on one side or the other with no option to pan. (The pan fader which appears on connection to the server only affects the pan in your headphones, and not that which is sent to the server.)
Consult the Jamulus Wiki at https://jamulus.io/wiki/Getting-Started for details.
The main button on the opening screen is labelled Connect/Disconnect. Once you get to this stage, it is important to understand that the servers accessed by Jamulus are not part of an integrated offering of any kind. They are based in locations around the world, and one of the fields in the table containing this list of servers (not accessible to JAWS if you’re not using the accessibility build), shows you the ping time relative to this server. If this shows more than about 20 milliseconds, the delay caused by the distance between you and it will probably be too great to be acceptable. The one I’ve set up is on a server in London and should be OK for most people in the UK.
Anyone can set up a server, and can either register it as Public, (in which case it appears on the lists), or can maintain it as private. There are many servers in both of these categories, but the private servers don’t appear in the server lists available here, and to access them you need to know the IP address. For anyone wishing to try mine please drop me an email to email@example.com, and I’ll let you have the IP address. This will also give me an idea of demand (if there is any), and the musical ambitions of people wanting to have a go. You can imagine a Jamulus server a bit like a music room, where anyone can simply wander in to see what’s going on, or join in. This can be great if you’re planning a session like an open mic event, or a folk music open session, but can be annoying if you’re trying to practice with a band. There is no access management on the standard version of Jamulus even for private servers, so currently, anyone who knows the IP address can access the server whenever it is running, though there is a version of the software which is under development which implements some password protection which I still have to investigate.
There are currently a lot of public servers, many of which are hardly ever used, but their usefulness depends on how close they are to you, and it is not possible to book access.
Although anyone can enter these virtual “music rooms”, recently added functionality does allow you to choose which of the other current Occupants you can hear, and which of them can hear you. When you connect to a server, and assuming you are using the accessible version of the Jamulus client, you will hear a sound effect which sounds like someone knocking on a door. This is to alert you to the arrival of other participants, though you will usually hear it for your own arrival as well. you will then find that the screen of the Accessible version of Jamulus includes a number of extra buttons associated with each user. These include a Mute, and a Solo button. The Mute button removes the associated person from the selection of people you can hear, and the Solo button can be used to build a select group, and exclude everyone else. Simply click the Solo button of each person you wish to be in your subgroup. The downside of this option is that there is an overall limit of the people who can be connected to the server, which includes everyone no matter whether they can hear each other or not. There is also a Group button for each current occupant of the music room, which allows you to control the volume of a group of participants with a single adjustment of a fader.
There is a bit of a trade-off between the standard version of Jamulus and the accessibility build. The advantages of the Accessibility Build, are that it allows you to read the table of servers which can be accessed, including the ping-time between you and each of the available options. However, if choosing a public server, hitting the Enter key once the server is selected doesn’t reliably open the server. If this happens try ALT-C. Other beneficial features of the accessibility build include the alert of other people entering your music room (the knocking sound mentioned above), and the accessibility of the name of each of your fellow occupants of the room.
Unfortunately, this appears to be at the cost of a useful feature of the standard version in which reading the list of public servers, also shows you who is currently connected to each session, and there seems to be a fairly major issue with the Accessibility build, not present with the standard build which is that you can’t access the field where you type in the IP address of a private server such as the one I’ve set up. I’ve found that I can work around this, by initially starting the standard version, pressing the Connect/Disconnect button, and accessing the address field where you can type in the address. Then hit the Connect button which should then set up the connection. At this point, the address you’ve typed in is stored within the Jamulus.ini file deep within your application settings folder tree. To avail yourself of the functionality of the accessible version, you can then close Jamulus and re-open using the Accessibility version as described earlier.
The documentation available from the jamulus.io website explains the use of the various faders available during a session, but I found these explanations a bit confusing, so at the risk of increasing the confusion, here is what I believe to be the function of these controls
On connecting to a server, you are initially placed in the Chat window. Some sessions I have joined can flash up information including the titles and even the music for songs they intend to play, but I haven’t found this a very accessible experience even when using the accessible build. You can close the Chat window with the standard ALT+F4 keystroke. This will land you back in the Jamulus window, probably focussing on the Connect/Disconnect button. Use the tab key to navigate the other available controls on the screen. In order these are:
- Mute Myself. This means that others cannot hear you though you can still hear them. It allows you to test out your set-up.
- Described above.
- Described above.
- The next button is labelled “Local Audio Input Fader. I was initially confused by the purpose of this fader which is set to 50% by default. I believe what it does is to adjust the mix of the source sound with no delay direct from your mic/instrument, with the signal coming back from Jamulus. Many of the USB sound card audio devices themselves include the option to adjust this mix and I don’t entirely understand why this has been included. It’s quite possible that its usefulness goes beyond my current understanding of its purpose.
- Reverb Level Setting. Jamulus includes the option to add reverb to your outgoing signal. This functionality can be adjusted using this and the following button.
- Left Channel Selection for Reverb. Using this and the previous button, you can adjust the properties of the reverb applied to your outgoing signal.
- Tabbing again will land your focus on a field which tells you the address or name of the server, and whether or not recording is in progress.
- Local Mix Level Setting of the current audio channel at the server. This together with the following button allows you to set the volume of your signal relative to the rest of your personal mix, and the position of your signal within the stereo pan.
- This is the button which adjusts the Pan, and isn’t independently labelled.
- The remaining buttons allow you to mute, solo, or group the current occupants of the virtual music room as discussed earlier.
I’m using a Behringer UMC 404 audio device, and a Lenovo Laptop running Windows10. I have experimented with various settings for the audio configuration, and although I haven’t so far achieved perfect glitch-free connection, the quality of sound achieved by Jamulus makes it quite possible to enjoy playing together in a virtual music room. I hope that others will find that online musical collaboration will prove to be a valuable option for countering the potential isolating effects of the COVID situation. Please feel free to drop me a line to firstname.lastname@example.org with questions, though I can’t promise I’ll know the answers.
(Tim Pennick February 2021)