Rowdy Rabouw

Beats in the Browser: Coding Music with JavaScript

Can your browser talk to MIDI controllers and heart rate monitors? Learn how to build a JavaScript drum machine that bridges the physical and digital worlds.

Beats in the Browser: Coding Music with JavaScript
#1about 7 minutes

The history and cultural impact of Roland drum machines

Roland's TR-808 and TR-909 drum machines were commercial failures that later became iconic in hip-hop and dance music.

#2about 3 minutes

Generating basic sounds in the browser with Web Audio API

The Web Audio API allows for sound generation in the browser using an AudioContext and an oscillator node to create simple waveforms.

#3about 3 minutes

Simplifying audio playback in the browser with Tone.js

Instead of complex synthesis, use WAV files and the Tone.js library to easily load and play audio samples with minimal code.

#4about 6 minutes

Connecting physical MIDI controllers using the Web MIDI API

The Web MIDI API enables browsers to receive messages from physical hardware like keyboards and drum pads to trigger in-browser events.

#5about 7 minutes

How to build a step sequencer in JavaScript

A step sequencer can be built using HTML checkboxes for the interface and the Tone.js scheduling feature to loop through and play selected notes.

#6about 4 minutes

Controlling music tempo with the Web Bluetooth API

The Web Bluetooth API can connect to low-energy devices like a heart rate monitor to dynamically control application parameters like music tempo.

#7about 3 minutes

A live karaoke demo and concluding thoughts

A fun demonstration combines the browser-based drum machine with karaoke, followed by a look back at early DJing experiences.

Related jobs
Jobs that call for the skills explored in this talk.

Featured Partners

From learning to earning

Jobs that call for the skills explored in this talk.

Javascript Developer

Crowmie
Municipality of Valencia, Spain

API
REST
Scrum
JavaScript
TypeScript
+1

Javascript Developer

Thegiglab
The Hague, Netherlands

Node.js
Angular
Ember.js
JavaScript
Knockout.js