Hello, you've made it to my Github repo for "musical expression on the open web", a workshop held at the 2014 Mozilla Festival in London. Here you will find everything you need to get started on the workshop challenges, creative inspiration, and helpful tools/utilities when working with the web audio api.
Workshop audience: This workshop is targeted at beginner/intermediate coders/designers/musicians. I'm assuming participants have worked in javascript before, but not necessarily with the web audio api. It also helps to have a basic understanding of audio signal routing (inputs and outputs). If you're feeling overwhelmed but are still excited to create some novel experiences usging the web audio api, please reach out to either myself, one of the facilitators, or a buddy participant in the workshop!
Tone.js: All examples use the Tone.js audio library, by Yotam Mann. Tone is intended for musician/programmers who want to use the native fabric of the web to create music, but who also want the flexibility of working with other audio/graphics generating javascript libraries.
Shortlink to this repo: bit.ly/indefinit-mozfest2014
- About me / Studio Indefinit
- Short history and review of current inspirations using web audio
- Buffers and samples - (Instruments that sample audio)
- Spatialization and convolution - (Sounds in space)
-
Theme 1 - Buffers and samples (Example Simple) (Example Advanced)
- Create a simple sound sampler that takes in audio streams from the local filesystem or spotify 30s preview api, and plays them back in unique ways.
-
Theme 2 - Spatialization and convolution Example
- Using a balloon and your mobile phone, find a quiet space to record your own impulse response and convolve it with a sound file of your choosing.
-
Alt theme
- If you attended the web audio visualization session yesterday, expand on your work there by adding generative audio to your build.
Code examples can be found in the examples-src/
directory. To run any web audio example locally, you'll need to use a localhost server. The simplest way to open an http server on port 8080 is to navigate into the examples directory in your terminal, and then:
python -m SimpleHTTPServer 8080
Navigate your browser to http://localhost:8080/ and you should be all set!
The official documentation for Tone.js can be found HERE.
-
Media formats supported by the HTML audio and video elements (best practice: .ogg, or .mp3s have the most cross compatibility).
-
Free / Creative Commons licensed sound files
-
Spotify web api console: Helpful for accessing the 30s preview api.
-
Deep dive into the Spotify developers site.
-
What is base64 encoding used for? StackOverflow article (Advanced).
- Openairlib: Free impulse responses.
- Video: How to record your own impulse response.
- You might want to edit your impulse response before using in a Tone.Convolver object. If you don't already have an audio editor, I recommend the free and open source Audacity.
Note: This is not an exhaustive list of the interactive music experiences and production tools available on the web. If I've missed anything you think NEEDS to be here, send me a message or tweet @Studioindefinit
- Plink: A multiplayer musical experience for the web.
- ToneCraft: A web audio and WebGL sequencer (chrome experiment).
- PollySynth: a multiplayer musical game. Users can control their synthesizer/avatar with their mobile device and a websocket. Created by Secret Future.
- Over The Tiny Hills: An interactive music experience by Ultranoir
- US Open Sessions: A data sonification project by IBM and James Murphy using the web audio api.
- Web Audio Demo List: a running list of demos using the web audio api.
- Pouet.net: javascript demos (not all audio).
- Sine City: 1st place demo from this year's DemoJS in Paris. Sourcecode and info HERE.
- Floradrift:
- Soundscaper: Soundscaper is an online ambient soundscape / drone toy. (webkit only)
- Tone.js: A web audio framework for creating interactive music in the browser.
- P5.sound: The web audio api module for P5.js
- LiveCoder: A browser environment for coding live javascript. Works with web audio and graphics programming.
- Gibber: A live coding environment for web audio and GLSL. Gibber.p5.js: A Gibber plugin for P5.js
- ChucK js: A javascript port of the ChucK audio programming framework
- Wavepot: An audio programming environment for the web.
- Lissajous: A web audio library that relies heavily on sample buffers. I really love the simplicity of this library and how easy it is to build beautiful pieces of music in a short period of time. Here’s a demo video using just a web console.
- Teoria.js: A web audio library for music theory and composition.
- The convolution example uses audio from http://www.freeinfosociety.com/media.php?id=50
- All other impulse response samples are c/o Studio Indefinit and may be used in Creative Commons, share-alike, attribution.