BBC R&D

Posted by Chris Lowis on , last updated

In previous posts on this blog Olivier described our work with the Web Audio API. We wanted to work with the Web Audio API, to discover its capabilities and limitations, and to contribute learning materials to the community and feedback to the W3C working group. We decided to do this by recreating, in JavaScript, some classic early Radiophonic Workshop techniques: the Wobbulator, the Gunfire Effects Generator, the Tape Loop and the Ring Modulator.

Read the rest of this article to find out how we recreated these sounds, and to try them out yourself.

We're now ready to share that work with you. We've created a site which, while we wait for the Web Audio API to gain wider adoption, works best in Google Chrome. You can play with the four machine simulations, learn more about how they were used at the Workshop and then study the code to find out how they were built. Let's take a brief look at each of the machines in turn:

Wobbulator

The Wobbulator, a sine-wave generator with a controllable modulation frequency, was used in the workshop to create a variety of space-y sounds. The device itself wasn't intended for musical use, it was a piece of salvaged equipment designed to make acoustic measurements.

In our simulation of the device, we've paid visual reference to some archive photography by retaining the large central frequency control knob. We've taken a couple of liberties with the other controls on the device, including adding a waveshape switch (to allow Sine, Square or Sawtooth waves to be produced). This switch was certainly not present on the original. In our original prototype of the wobbulator we used custom Javascript code to create the signals, but with the addition of the OscillatorNode to the Web Audio API the implementation is now much more simple.

Ring Modulator

Ring Modulation is an effect achieved by multiplying two signals together. In our simulation of the effect we wanted to show how this effect was used in the early days of the Radiophonics Workshop to create the voices of the Cybermen and Daleks in Dr. Who.

The Radiophonic Workshop provided the TV studio with a Ring Modulator and a tape machine with a recording of a 30Hz sine wave on it. This provided one signal while a microphone provided the other. The Ring Modulator box contained an analogue circuit which multiplied the two signals.

Our implementation captures some of the characteristics of the orignal device by modelling the diodes with a WaveShaperNode. The bias of the diodes can be adjusted with the "distortion" control - a feature not present on the original ring modulators. You can also adjust the speed of the simulated tape machine to change the pitch of the modulation frequency.

If you're running Google Chrome Canary see if you can discover how to use the microphone in your computer to create your own Dalek voices! Taking a look at the code behind the demo might help you to figure it out.

Gunfire Effects Generator

The gunfire effects generator was a piece of equipment that pre-dates the Radiophonic Workshop, but since it appears in the BBC Engineering Monograph "Radiophonics in the BBC" and it's a fun piece of kit we thought we'd include it in our work. The device was designed to replace the use of real guns in recording studios as these guns "occasionally 'misfired' (disastrous in a tense situation) … scared the performers, and required a special licence … to comply with Home Office regulations".

We based our demo on the block diagram given in the Engineering Monograph. We decided to use a buffer containing a burst of white noise in this demo, but also show how you can use the ScriptProcessorNode to create a custom white noise generator. This noise is gated and filtered as described in the monograph. We also add a little reverberation to simulate the sound the device would make in a small room.

Tape Loops

Longer compositions at the Radiophonic Workshop were created by manually splicing tapes together and combining multiple tape machine tracks. Delia Derbyshire explains the process in an interview. Our demo recreates the experience of combining multiple tape loops in time to create a piece of music. You can adjust the playback speed of the tapes, either by a fixed amount (halving the speed) or by a small percentage. The small percentage change is useful to "beat match" the loops.

This demo is quite simple but illustrates how to playback sounds and load data into audio buffers using the Web Audio API.

Summary

We hope you enjoy playing with the demos we've created and learning more about the capabilities of the Web Audio API. If you're a developer, or have an interest in the future of audio on the web, we encourage you to get involved with the W3C working group, or to build, and share with us in the comments, some exciting audio applications yourselves: hopefully our code will provide you with a good starting point.