Search - User list
Full Version: Latency?
Root » Technical support » Latency?
1
torsandell

Hello!

I discovered jammr today and I'm very excited about trying it!

I wonder how far I can jam with friends if I want maximum 20-30 ms latency. Feels like it could be annoying with more latency..

Thanks!

/Tor


stefanha
jammr solves latency by using an interval-based approach to online jamming. You can absolutely jam with people around the world without unpleasant lag. In the weekly jam session that we organize for the jammr community we've had people playing together from France, Germany, Japan, California/USA all without lag.

The way it works is that you set the Beats Per Interval (BPI) and jammr essentially buffers the audio for the duration of the interval. Other people hear what you played last interval, you hear what people played last interval.

This means jammr is not “real-time”, instead it is “live” and unaffected by lag. It doesn't matter that you aren't playing in real-time as long as you keep jamming in the same key or stick to a chord progression.

If you think about it for a second, it doesn't matter if you solo over a 4-bar progression like Am | F | G | Am that I'm playing right now or the same chords I played last interval. Your notes will still “fit” because you're playing over the same chord in either case. This is the trick to interval-based online jamming.

The only thing you need to do is set the BPI to the length of your chord progression. Playing 12-bar blues? Set BPI to 4 x 12 = 48 beats. Simple 3-bar progression? Set BPI to 4 x 3 = 12. And so on…

Hope this helps,
Stefan
torsandell

Ok, then I get it! That's a smart solution!

I'm actually mostly interrested in rehearsing with my band on a shorter distance. Do jammr delay several beats even on a short distance?

Thanks,
Tor
stefanha
jammr is always interval-based. It never uses real-time because it is unreliable (think of lag when using Skype or G+ Hangouts).

Even if the geographic distance between you and your bandmates is short, there are other factors related to your computer and network that can produce a bad experience.

If you are looking for a real-time jamming solution, try something else and be prepared to take extra steps to ensure your network connection is low-latency and stable.
Cri
stefanha
jammr solves latency by using an interval-based approach to online jamming.


Hi, from the perspective of a newcomer like me, I must admit it was not that straightforward to understand how “the interval” works, but your message is the better explanation that I found on the whole jammr webspace; I think it should be expanded to a blog post (or even a page on the website).

BTW while I was trying to figure it out how to explain all this to a friend, I drafted a small example, maybe this can be useful to some other newbies

So let's take 4 intervals: i0 to i4, and 3 users: A, B and C. “A1” is the bit of music that user A is playing during interval 1; the stuff in parentheses “A1(…)” is what user A is listening to during interval 1.

i0: A0()
i1: A1()      B1(A0)
i2: A2(B1)    B2(A1)    C2(A1B1)
i3: A3(B2C2)  B3(A2C2)  C3(A2B2)

So, to start, during interval 0 only user A is playing his stuff all alone: A0(). Then during interval 1, user B joins in; he plays B1 while listening to what user A played during the previous interval: B1(A0) (meanwhile, in the real world user A is playing A1, but B will hear that only during interval 2). During interval 2, another user, C, joins, he plays C2 while listening to what A and B just played (A1B1) and so on.

Given how “the interval” works in jammr, here you are some suggestions to have happier sessions.

  • When no one is playing and you want to suggest a chord progression, a theme, or similar, you should repeat it for at least 2 intervals (the more the better), to give users the time to listen to it and play their contribution. Don't keep changing your theme at every interval, or people won't be able to follow you. Remember they will hear what you are playing now during the next interval, and you will hear their response after 2 intervals!
  • If no one in the room is playing a drum track, enable the jammr metronome and try to stick to its tempo; if it's too slow or too fast, don't be afraid to change the BPM using the “vote” command. This should be an obvious advice for anyone trying to making music together, but it often gets underrated.
  • Besides sticking to the same tempo, your chord progression should start at the beginning of the interval and complete at the end of the interval, so that other people will get a whole copy of it during the next interval. If you start your riff at a random time in the interval, other people will get random chunks of it and will have a hard time following you (this gets even worse if you also don't follow the metronome's tempo). Again, change the BPI setting if needed.
  • Use the chat to coordinate: write down the current chord progression, tell people what instrument you are playing, don't be afraid to ask questions or give (polite) suggestions; the more information is shared, the better (and if you have a microphone, keep in mind that voice communication will be delayed by 1 interval, while the chat is really real time, so it's more effective)
  • Always keep an eye on the status of your “Send” button; remember to disable it when you need to do some private tests (try new sounds, find out how to play that damned chord, etc), so you won't disturb other people.
  • When a room has more than 5-6 members (and everyone is playing) it tends to be difficult adding more instruments, so you might suggest to split the room (use the chat for announcements).
Cri
Cri
So let's take 4 intervals: i0 to i4, and 3 users: A, B and C. “A1” is the bit of music that user A is playing during interval 1; the stuff in parentheses “A1(…)” is what user A is listening to during interval 1.

i0: A0()
i1: A1() B1(A0)
i2: A2(B1) B2(A1) C2(A1B1)
i3: A3(B2C2) B3(A2C2) C3(A2B2)


So, to start, during interval 0 only user A is playing his stuff all alone: A0(). Then during interval 1, user B joins in; he plays B1 while listening to what user A played during the previous interval: B1(A0) (meanwhile, in the real world user A is playing A1, but B will hear that only during interval 2). During interval 2, another user, C, joins, he plays C2 while listening to what A and B just played (A1B1) and so on.

Ah, and if I understood correctly, a consequence of all this is that each user has his own “view” of the overall jam session: if A, B and C would record the session on their system, we would have 3 different recordings. This can explain why, when you listen to the recorded jams available on the jammr website, you often hear “strange” things, compared to your memory of the session ("Hey, I didn't play this when they were playing that!"), but most of the times it still sounds musical and acceptable (if people were playing respecting the tempo and interval start/stop, otherwise the recordings sound lots worse than “strange”, quite chaotic).

BTW I also wonder how the recordings are generated by the system, if there is some “smart” algorithm to select different parts from each user, or if all the users parts in the same interval are simply stacked together (if this was the case, the resulting recording would be a jam session that no user has ever heard “in real time”, quite ironic )
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB