JAM with Chrome is a collaborative live music experience in your browser, that makes use of several web technologies and Google products, to allow you and up to three of your friends to jam together in real time.

We’ve combined these technologies to bring you the complete JAM with Chrome experience. When you play the instruments, your browser will tell other users browsers which notes to play, how to play them, and how to animate the user interface.


Google Chrome

JAM with Chrome makes use of the following HTML5 features:

Web Audio API

Audio is the most important part of any musical experience. To make sure you get a high level of fidelity in JAM with Chrome, we used a technology known as Web Audio. This enabled developers to create precise combinations of sound via the browser, without the need to process individual audio streams from each band member.

Websockets

To enable real time collaboration, JAM with Chrome used Websockets technology. Websockets let users start a rapid, responsive two-way conversation with servers so we can synchronize your JAM session. Without Websockets, this interaction wouldn’t be possible.

Canvas

We brought the visual experience to life using a browser feature called Canvas, which lets us control what you see with great precision. Each vibrating string for example, is modelled in response to a combination of your strumming technique and the band’s overall harmonics.

CSS3

Much of the project’s styling and many of the visual transitions use CSS3.

Google Cloud Platform

JAM with Chrome makes use of the following Google Cloud Platform technologies:

Google App Engine

The web application component was built and hosted on App Engine, Google’s cloud computing platform for developing and hosting web applications on Google’s infrastructure.

App Engine provides the ability to easily build, maintain and dynamically scale the project; the more visitors the app receives, the more resources App Engine assigns, allowing it to dynamically scale depending on traffic.

Go Programming Language

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

Go is a new open source programming language from Google. It is a compiled, statically-typed language with the workflow of a scripting language. Its built in concurrency primitives make it easy to design and implement complex concurrent applications.


You can find out more about how we built this application by checking out: How we made the Audio Rock and Strumming and Drumming with HTML5.