WeAreDevelopers LIVE • Dec 16, 2024

Beats in the Browser: Coding Music with JavaScript

Rowdy Rabouw

Can your heartbeat sync to a browser-based drum machine? Learn to recreate analog gear natively using JavaScript, Tone.js, and Web MIDI.

Pause
Mute Enter Fullscreen
#1 about 7 min

History of the Roland TR-808 and TR-909

How Roland's early commercial failures became foundational instruments for hip-hop and electronic sound.

#2 about 4 min

Creating synthetic tones with Web Audio API

Generating audio signals natively in the browser requires configuring contexts and specific waveform node types.

#3 about 4 min

Simplifying drum sample playback with Tone.js

Using Tone.js as an abstraction layer minimizes code complexity when loading and triggering high-quality audio files.

#4 about 7 min

Connecting physical controllers using Web MIDI API

Parsing numeric byte arrays allows direct mapping of physical hardware inputs to graphical user interfaces.

#5 about 4 min

Building an interactive drum sequencer with Tone.js

Creating a programmatic transport loop schedules repeating grid interactions to maintain consistent musical timing.

#6 about 4 min

Live performance of the browser drum machine

A real-time showcase demonstrates programming custom patterns and modulating audio parameters entirely within the browser.

#7 about 5 min

Modulating music tempo with Web Bluetooth API

Connecting a biometric sensor via Bluetooth broadcasts heart rate values to dynamically manipulate playback tempo.

#8 about 3 min

Synthesizer karaoke and final presentation wrap up

The project culminates in an interactive musical performance backed by a fully functional browser application.

Matching moments

4:24 min

Building synthesizers and music sequencers using web audio APIs

Chris Heilmann Chris Heilmann +2 · LIVE

1:48 min

Generating algorithmic music using web components and audio APIs

Chris Heilmann Chris Heilmann +2 · LIVE

2:53 min

Developing custom music applications and open source browser plugins

Chris Heilmann Chris Heilmann +2 · LIVE

1:44 min

Playing synthesized backend audio objects in browsers

Lee Boonstra · LIVE

1:20 min

Building retro console games using modern web technologies

Chris Heilmann Chris Heilmann +2 · LIVE

3:29 min

Emulating vintage computer environments using WebAssembly architectures

Chris Heilmann Chris Heilmann +4 · LIVE