top | item 4757332

Jam With Chrome

220 points| robin_reala | 13 years ago |jamwithchrome.com | reply

78 comments

order
[+] krosaen|13 years ago|reply
According to http://www.jamwithchrome.com/technology

"The real time websocket relay system used to make collaboration with JAM possible was developed using the Go programming language."

And the web app is hosted on app engine. AFAIK though, you couldn't host the Go websocket component on app engine (even though GAE supports Go as a runtime) since GAE doesn't support persistent connections directly.

In any case, very very cool!

[+] grayprog|13 years ago|reply
Lots of fun. Always wanted a live Internet jamming solution for a band. Now, if only it could work with real instruments plugged to the computer. But the network delays make it impossible. Waiting for the day when bits from Europe to the US won't take 100-150ms to travel. Not sure it's going to happen anytime soon, though.

Any 2 sounds played above 30ms apart start to be distinct to the human ears.

[+] thewarrior|13 years ago|reply
The speed of light is always going to be a limitation for these kinds of applications . I dont see how the latency can be reduced enough to make this close enough to a live jamming session . Considering your 30 ms threshold it takes light that much time to travel 10,000 kilometers . Could we perhaps use some of the predictive techniques that games like Counter strike use ?
[+] unfletch|13 years ago|reply

  Now, if only it could work with real instruments plugged to the computer.
I haven't seen this in action, but isn't that what these guys do? http://ejamming.com

Just a few weeks ago an extended family member mentioned them to me. He'd been using their software to play with his old bandmates, who are now scattered around the country.

Edit: Here's a link to their "learn more" page, which is hard to find: http://ejamming.com/learn-more/

[+] paupino_masano|13 years ago|reply
I'm old school - when improvising on the guitar I like to be able to read the drum/guitar/bass player etc based on looks, nods and general "intuition" (being person to person that is). Don't think an internet connection is going to be able to do that quite as well!

But, perhaps I'm being nostalgic :)

[+] alexanderh|13 years ago|reply
Cute, novel, technically impressive from a web design perspective.

But does it have AISO low latency audio driver support? Lets not even get into the latencies websockets are going to create. Even if you set something like this up on a LAN, the latencies would still be too high for any truly professional musician.

Dont expect anything like this being used by any real musicians anytime soon, even minus the websockets collaborative part.

Still very cool though. But I still wait for a day when something like Rock Band or Guitar Hero actually has professional low latency audio that could seriously be used live on stage by a band with sub 10ms audio latencies.

If rockband and guitar hero cant even do that, I'm not holding my breath for chrome anytime soon, especially in a networked situation.

[+] noiv|13 years ago|reply
It appears to me you've excluded some cognitive capabilities of musicians. Music is all about timing and anticipation. Let's say you have an instrument e.g. drums which actually emits its sound a little time/milliseconds after the hit. That doesn't stop you to perform accurately with a band, and only little adaption is required. I'm strongly looking forward 'World Music' gets redefined.
[+] gamegod|13 years ago|reply
Does anyone know if they stream audio or just events to peers over Web Sockets?

Some tech notes from a pro-audio software developer:

- All the samples are OGG ( http://chrome-jam-static.commondatastorage.googleapis.com/xm... )

- They're using some "DMAF" engine for the audio, though I can't figure out who made it: http://www.jamwithchrome.com/js/compiled/dmaf_all.js

It's pretty serious stuff from the looks of it - It's got a node graph with different DSP modules (envelope follower, delay, ADSR, distortion, LFO, chorus, compressor, phaser, equalizer, biquad filters), it plays MIDI files, and more.

It's all written in JavaScript too, and there's no way you'd write this just for one Chrome experiment. I don't see any outside party acknowledged on the website, but I'd guess that this DMAF JS audio engine is licensed from someone.

It's interesting to see what they've been able to do with the Web Audio API and JavaScript, but I think the Web Audio API is going to be forever limited to toys like this unfortunately. You just can't do real-time audio with a garbage collector waiting to pounce.

I developed a similar application for Chrome (which coincidentally had the codename "Jam"), but instead, it uses Native Client for audio instead of the Web Audio API. It's called SongStarter, and you can jam with it here: https://chrome.google.com/webstore/detail/jbkilbgofafobojkif...

(NaCl apps must be installed from the Chrome Web Store for the time being, otherwise they won't work. Google's choice...)

[+] gamegod|13 years ago|reply
And as a side note, if you're interested in seriously jamming over the internet, I think NINJAM is the best tool by far: http://www.cockos.com/ninjam/

It deals with latency by ensuring that it's rounded to measures, so in a free form jam, everyone always stays in sync. It's an ingenious solution and it really works. Being in a jam where real musicians with different instruments just join in and play together is incredibly cool. (That's the achilles heel of these web experiments unfortunately - Cool tech demo aside, they're not really aimed at musicians...)

[+] Theodeus|13 years ago|reply
DMAF is our framework at www.dinahmoe.com. It stands for DinahMoe Audio Framework. I'm the one who's been doing the grunt work of the framework, so I'm quite familiar with it ;) We've decided to release the effects as open source at https://github.com/Dinahmoe/tuna , though it's not complete yet with all the effects.
[+] borplk|13 years ago|reply
I haven't looked into it but I am almost sure it will not be streaming audio. It's most probably events.
[+] md224|13 years ago|reply
I've said it before and I'll say it again: someone really needs to build the "Google Web Fonts" of Web Audio API instruments/effects. If developers were able to include sampled/synthesized sounds as easily as dropping in a script tag, it would open up a whole world of possibilities for interactive music on the web.
[+] jdherman|13 years ago|reply
I was just thinking this the other day. What form do you think this would take?

I have only a fuzzy understanding of how this works, but I was thinking you could run a bunch of .wav samples through Web Audio to get their wave shapes ... save them as arrays, and then synthesize sounds from a single js file? (Rather than lugging around the .wav files themselves).

If this is possible, it would be awesome.

[+] hayksaakian|13 years ago|reply
... as long as you're not on chrome mobile, which is 4 versions behind.
[+] mtgx|13 years ago|reply
Make that 5. Desktop Chrome is v23 now. This would be great as an app for Android tablets, though - something like an alternative to Apple's Garage Band.

It seems yo can add this as an extension to Chrome, too:

https://chrome.google.com/webstore/detail/jam-with-chrome/bg...

It seems to say that I can use the QWERTY keys to play the guitar, and while the buttons are moving on the screen, the chords aren't. Is that a bug or am I doing something wrong? The sounds seem to work only when I used the auto mode.

[+] aed|13 years ago|reply
So this is kind of odd... Nothing loaded when I first opened the page. I opened developer tools and had a javascript error "Failed to load resource http://connect.facebook.net/en_US/all.js . Well, I keep all facebook widgets blocked with Ghostery and disabling it allowed the website to load.

Seems kind of strange. I mean if FB goes down or moves the location of that js file or something, the whole jamwithchrome site won't work?

[+] joelthelion|13 years ago|reply
What is missing from firefox that makes it incompatible with this?
[+] shardling|13 years ago|reply
I think Firefox and Chrome have different (experimental, advanced) audio interfaces right now.

I'm not really sure about the differing capabilities, or what standardization of either looks like right now. But I think Mozilla's api is more low level, so it might be possible to create a compatibility shim on top of it?

[+] jdherman|13 years ago|reply
This is really cool. Nice going. I'm amazed to see how many people have been working on similar things. I took a shot at this a while ago (http://soundtype.com) but I was stuck using Java for MIDI. Really looking forward to the MIDI spec for the Web Audio API.

Being that this is HN many of you might have seen this already, but there's an exciting Google IO talk from Chris Wilson about Web Audio: http://www.youtube.com/watch?v=hFsCG7v9Y4c

And see the corresponding slide deck for code: http://webaudio-io2012.appspot.com/#1

[+] manish_gill|13 years ago|reply
Online music players like this are pretty cool, but I find it really hard to actually produce a meaningful tune while holding down keyboard and dragging mouse around.

Oh well, maybe I just need to practice more!

[+] kinlan|13 years ago|reply
You can use your keyboard too.
[+] malkomalko|13 years ago|reply
Also check out http://www.instajams.com

My best friend and I built this in a few months and we're really proud of it. It's still very early but we're adding new features all the time.

It doesn't have the graphic design and branding of jamwithchrome, but you can start creating music really quickly.

Also, if you sign up for free, you can create and loop clips and jam with yourself if you like.

Give it a try and let us know what you think.

Best

[+] schnaars|13 years ago|reply
This is very cool, but would love to see an easier way to strum the string instruments. It is hard to get a good rhythm going while holding the button down and fighting cursor drift.
[+] Rayne|13 years ago|reply
"There is something wrong with the plumbing. Check network connections."

Not sure where to go from here, since I certainly have a connection.

[+] EwanG|13 years ago|reply
You are probably blocking some ports it expects to communicate on. WiFi or Ethernet?
[+] vanhalt|13 years ago|reply
Just finished my jam session... was awesome. Crashed my chrome but I think that must be something about the memory in my mac. But amazing app... have a lot of fun :)
[+] anykey|13 years ago|reply
Think of it like smashing your guitar or something else equally rock 'n roll :)
[+] owad|13 years ago|reply
Crashes under Chrome 23.0.1271.64 (xubuntu 12.10). :/
[+] sparky|13 years ago|reply
23.0.1271.64 on 64-bit Kubuntu 12.04 works fine, fwiw.
[+] jfoster|13 years ago|reply
Would be interesting to know what it is about the page that is causing Chrome v23 on Ubuntu to "Aw, Snap!" so reliably.
[+] thechut|13 years ago|reply
Not working for me on Version 23.0.1271.64 on Ubuntu. I get an Aw, Snap after I select my instrument.