Low-latency online jamming
This is the resources page for a “Coviddle Tunes 2020” wildcard workshop on getting started with JamKazam, a service which can (when everything aligns) make live jamming over the internet work. If you’ve tried doing this over Zoom or other videoconferencing service, you’ll have discovered that the latency in those systems means that having more than one person’s audio un-muted at a time is pretty much impossible. JamKazam focuses on bringing the latency as low as possible, so that people can play together without getting out of sync.
Because it wouldn’t be a Zoom presentation without some technical difficulties, during the actual workshop when I tried to switch to sharing a view of the JamKazam application instead of the presentation slides, Zoom stopped being able to share any part of my screen except the cursor. (Of course, it worked just fine in the test I’d done not an hour earlier. Ugh.) So I made a recording of the presentation with no audience later that day and am posting it here:
Official links:
- JamKazam Forums (main page)
- Help Topics index (includes links to official setup videos)
- Sign up for a JamKazam account
- GoFundMe page
Unofficial links:
- A Guide to Online Sessions using JamKazam
Probably everything I’m going to cover in the workshop is already in this document, to be frank. - JamKazam Internet jamming
A quickstart guide I started working on in April and haven’t updated since April 21, since there are more resources (both official and unofficial) available now. - JamKazam Jammers facebook group
A lot of user-to-user support happens in this group, as well as things like finding people nearby to play with. - Audio Interface Compatibility Guide
A list of audio interfaces which have been reported to work (or not) with JamKazam. - How to Improve Latency in Jamkazam – 2020 Tutorial Overview
A video overview of things you can try which may improve performance.
Alternatives:
- Soundjack.eu
Very similar to JamKazam — install a helper application on your computer to handle the audio processing and routing, and the user interface is done on a web page. Audio is peer to peer, and while there is a server you can connect to in order to find people to play with, you can also operate without the server if everyone you want to jam with is set up properly and you all know your IP addresses. - Jamulus
A somewhat different approach, in that instead of audio being routed peer to peer, it all goes to a central server and gets redistributed from there back out to all the participants. In theory, this could provide a more tightly synced experience, but in practice I haven’t found it to work as well as JamKazam or Soundjack.eu. If you try this, I’m pretty sure you’d want whoever has the best internet connection to be running the server, rather than relying on a server external to all the participants. - Anything based on NINJAM, such as jammr or JamTaba
These take a radically different approach: they are “live”, but not “real-time”. Rather than trying to decrease latency as much as possible, these take the approach of increasing latency to the length of an entire repetition through a phrase/progression/song. Someone starts a jam, and after the first time through, everyone else can hear what they did and start playing along. After they’ve played once through, what they just played starts playing for everyone else, so the first person doesn’t hear anyone playing along for the first two repetitions, and no matter what, you’re always playing at least one iteration behind what someone else is doing, live. It’s an interesting approach and I can see it working for certain types of music, but not the types I play.
Recommended Hardware:
NB: These are just things I like or have heard good things about. You should probably ask around for yourself before buying anything.
Audio interfaces:
- Focusrite Scarlett Solo
- Focusrite Scarlett Solo Studio
- Focusrite Scarlett 2i2
- Focusrite Scarlett 2i2 Recording Bundle
I’ve seen a lot of people recommending the Focusrite Scarlett interfaces on the forums and facebook group. They both support two channels of both recording and playback; the difference between the Solo and 2i2 model is that while the Solo supports one XLR microphone on one channel and one 1/4″ instrument input (such as from a guitar pickup or electric keyboard) on the other, the 2i2 has combo jacks and circuitry to support either possibility on either channel. So you could have two microphones or a guitar and a keyboard plugged into the 2i2. If you think you might want to do some home recording, I would recommend the 2i2 for its flexibility. If you’re only going to use it for jamming, the Solo ought to work fine.
If you don’t already have a decent microphone and headphones, the bundles look like a pretty good deal. - Behringer UMC202HD
Pretty much the same features as the Scarlett 2i2, but $40 cheaper.
Microphones:
- Audio-Technica AT2020
If you’re on a budget and want a solid microphone that will work well in a variety of situations, this isn’t a bad choice. I’ve seen it recommended in a bunch of “how to start recording at home” guides, and it gets good reviews. I have an AT2035, which is basically the same microphone with low-cut and 10dB pad switches, which just makes it a little more versatile, but isn’t necessary if what you’re plugging it into can perform those tasks. I like mine just fine. - Monoprice LC100
I don’t have one of these and can’t find any reviews of it, but it’s half the price of an AT2020 and probably better than half as good. I’ve bought some other audio gear from Monoprice and been pleasantly surprised that it wasn’t terrible, given its price. If you’re buying a mic just to play in acoustic jams online, you don’t need much, really, so this would be fine.
Headphones:
You almost certainly want a decent set of headphones, but I don’t have any specific recommendations for that. I’m using a pair of Audio-Technica ATH-M40x that I like a lot, but they’re probably overkill. As long as you’ve got something that is comfortable for you and you can plug it in to your computer or audio interface, you can use whatever you like. If you’re playing an electric instrument which doesn’t pick anything up acoustically, you don’t even need headphones, although I’d still recommend them. What you don’t want to do is have a microphone picking up the sound from speakers that are playing the session audio — that’s how you get feedback and echoes.
Ethernet Adapter:
If your computer doesn’t have an ethernet port, you’ll want a USB to ethernet adapter. Hopefully your computer has a USB3 or USB-C port that you can use for this. Pretty much any adapter that works at all will be fine for JamKazam, although I’d try to get one capable of gigabit speeds, rather than a 10/100 version. (10/100 is fine for JamKazam, but if you have broadband that gets you over 100Mb/s, you’ll appreciate the extra speed if you use it in other applications involving large downloads.) Here are some Amazon links: USB3 Gigabit Ethernet Adapter, USB Type-C Gigabit Ethernet Adapter. I’ve had good luck at work and at home with AmazonBasics, TrendNet, and Anker brands, but I’m sure they’re all using the same generic boards inside their cases.
Bonus nerdery:
Want to know what the theoretical best latency you could get between two places is? Ask Wolfram Alpha something like this: “distance between Seattle and San Francisco in light-seconds“
Down near the bottom of its answer, look for something like this:
Light travel time t in an optical fiber t = 1.48x/c:
| 5.4 ms (milliseconds)
5.4 ms is the amount of time it would take for a signal to get from Seattle to San Francisco if there were a single continuous fiber optic cable running in a straight line between the two. But for jamming, you need to know the round trip time, because their signal needs to get back to you as well. So double that to get 10.8ms. That is the theoretical absolute minimum total latency. In practice, it’s going to be higher than that — each of your audio interfaces adds latency, as does each step of the way along the network between you. But 10.8ms is the best you’re going to do without faster-than-light technology, and if we have that, we probably also have teleportation and can just jam with anyone in the world by popping over there for a quick visit.
How much total latency is acceptable? High Fidelity Blog says 20ms is almost undetectable and 40ms is highly undesirable. I think for an old-time jam, up around 30 to 35ms might work, but you start to have issues with a feedback loop of slowing down while everyone tries to chase the beat, unless you have one player with rock-solid timing who you can all follow and who doesn’t mind everyone sounding a little off to them. Above 40ms, I’m not sure even that would save you. JamKazam has a metronome feature which might help, but I haven’t really tried it, and I hate playing against a metronome anyway.
Which means that a jam between Seattle and New York is probably out, with a theoretical minimum latency of 38ms (and practical minimum of probably double that). But for certain types of music — ambient or experimental, for example — that’d probably be fine. So if you’ve got a friend on the other side of the country who wants to collaborate with you on spooky cave echo music, give it a try!