Skip to content
Live coding for Web
Pull request Compare This branch is 35 commits behind automata:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Live coding is an alternative way to compose and play music (or other media) in real-time. The performer/composer plays on a computer device and shows your screen to the public, making them part of the performance and at the same time demystifying what the musician is really doing to generate that weird sounds. Live coders commonly use general domain languages or create their own computer music languages.

Vivace is a live coding language that runs on Web using the Web Audio API for process audio and the HTML5 video tag to play videos. The language parser is built using the awesome Jison.

For now, just Chrome and Safari implements Web Audio API, so you have to run vivace on it.

Try vivace right now clicking here!. You can even play together with others, just share this URL with them and try typing and evaluating (ctrl+x).

The language

The language is not complete. We have a draft specification here. Feel free to suggest your own commands/syntax/grammar to us!

For now you can basically use vivace as a "sampler language". You can specify which audio or video file you want to play and hack some of its parameters on-the-fly.

Running your own vivace

You can use vivace just loading this demo app. But if you want to run your own vivace on your computer/server, follow these next steps.

Clone this repos:

$ git clone git://

Download nodejs and install it:

$ wget -c
$ tar -xvzf node-v0.8.9.tar.gz
$ cd node-v0.8.9/
$ ./configure
$ make
$ sudo make install

Install vivace dependencies:

$ cd vivace/
$ npm install


$ node server.js

Open http://localhost:5000 on your Chrome or Safari browser. You can even share this URL with others and live code together.

Using your own audio/video files

Copy some audio (wav, mp3, ogg) or video (mp4, webm, ogv) to media/:

$ cp *.wav vivace/media/

And edit file vivace_exec.js, to map variable names to your files:

var files = [{name: 'a', fileName: 'kick.wav', type: 'audio'},
             {name: 'b', fileName: 'foo.mp4', type: 'video'}]
Something went wrong with that request. Please try again.