Making musical hardware

January 10th, 2018  |  Published in hardware

I’ve been interested in sound engineering with synthesizers, mixing desks and effects units since I was at school. A couple of years ago, I discovered Eurorack modular synths and started to combine these interests with my more recently-obtained skills in amateur hardware hacking. The Eurorack scene that’s been developing over the last 20 years is a fascinating one, attracting all sizes of makers from synth manufacturing giants to one-person DIY operations. Because it’s based on a simple analog standard of 3.5mm jacks and control voltages, it’s trivial to combine hardware from all over the world into a rack of modules that’s entirely your own design. Creating your own modules is also within the reach of a reasonably experienced Arduino hacker.

After buying some Eurorack modules in October 2015, I quickly decided that I wanted to integrate my laptop into the setup. Unfortunately most computers aren’t capable of generating the full range of positive and negative voltages (ideally from +/-5V or +/-10V) required to connect to Eurorack. There are a small number of external audio interfaces that are “DC Coupled” which allows a full range of voltages to pass. I was lucky enough to find one such interface on my local Craigslist for $75: a MOTU 828 Firewire unit from 2001 that is still perfectly compatible with modern Macs after adding a Firewire to Thunderbolt dongle.

Using the Expert Sleepers Silent Way plugin, I was able to generate waveforms through the MOTU to control my synth hardware. This was only a partial success, however: measuring the output signals on my oscilloscope I discovered that the minimum and maximum voltages at full gain were about +/-2.88 volts. I decided to dive into the analog electronics domain and fix this problem.

The Swiss Army knife of analog electronics is the op-amp. This incredibly flexible part can be used to construct signal amplifiers, adders, inverters, filters and all sorts of other circuits. It’s essentially an analog computer, performing realtime arithmetic on continuously-varying voltages. After years of only tinkering with Arduinos in the digital domain, this was a revelation to me. There is a world of signal between the binary zero and one.

Using a handy op amp gain calculator I calculated the correct values of resistors that could be used to create a signal gain of around 1.77 without inverting or offsetting. This would result in my +/-2.88 volt signal being boosted to around +/-5V, good for most Eurorack hardware. Packaged ICs containing multiple op-amps are cheap and easily available, so I picked the TL074 quad op-amp package in order to give me four parallel channels of gain. The TL07x family are very common in the DIY synth community and are generally liked for their low levels of noise and distortion in musical applications. I wired the 3.5mm jacks, op-amp and resistors up on a breadboard and was thrilled that it worked first time: my oscilloscope was now measuring a full range of +/-5V for my output signals.

Next, it was time to learn Eagle and create some circuitboards. Here’s the schematic that I came up with:

At the time, the free version of Eagle was limited to a small size of circuit board. Luckily this was a close fit with the Eurorack size constraints, so I was able to lay out my schematic as a PCB with appropriate dimensions and send it off to OSH Park for fabbing. The boards arrived two weeks later and I soldered everything together:

The final step was to create a front panel for my 3U rack so that the PCB could sit with my other modules. I downloaded a laser-cutting template from Ponoko and designed a simple faceplate in Illustrator, using a PDF of the PCB from Eagle as a transparent layer to ensure that the holes for screws and audio jacks would line up. I uploaded this order for production, choosing bamboo wood in the mistaken impression that it would make an interesting alternative to the usual acrylic or metal Eurorack faceplates. Unfortunately it’s not the strongest material for a faceplate, and the laser engraving burns look pretty ugly, but it worked out OK in the end:

This was a pretty involved process for such a simple outcome, but it was immensely satisfying and I learnt a lot of new skills. All the Eagle and Illustrator files are in this Github repository in case you’re interested.

ApacheCon Europe 2007 keynote

May 7th, 2007  |  Published in hardware

Last Friday I had the great privilege of giving a keynote talk at the ApacheCon Europe conference in Amsterdam. My topic was the new possibilities for software hackers coming from cheap, scriptable hardware prototyping. I illustrated the path from the desktop via my work in Second Life, and showed how it translates into physical computing.

Read the rest of this entry »

Connecting First and Second Life

January 11th, 2007  |  Published in hardware

I’ve been interested for some time in the possibilities offered by bringing external data into virtual environments like Second Life. This data might come from the web, but it could also come from the real world – from physical sensors and interfaces.

Over the last couple of weeks I’ve enjoyed playing with the Arduino hardware prototyping board. This week’s open-sourcing of the Second Life client came at exactly the right time for a new experiment.

Here’s a video demonstration (people reading the feed, start your web browsers). On the left you’ll see an Arduino reading analogue values from a potentiometer and feeding the results in via the USB-serial interface to my Mac. On the right, you’ll see a modified version of Second Life that is feeding those values in via my avatar’s chat channel. An object in the Second Life world is reacting, with perhaps a half-second lag.

Read the rest of this entry »

More notes on installing Debian on a Dell Latitude X200

April 1st, 2004  |  Published in hardware

Last year I bought a Dell Latitude X200 laptop, which was a wonderful machine. In October it was stolen from my flat in a break-in. I made do with a refurbished HP Omnibook 500 but I wasn’t happy with it. When a 2nd-hand X200 came up on ebay last week at a good price, I couldn’t resist snapping it up. In the time since I last installed linux on one of these machines, there have been a few developments and new releases that make installation and configuration easier.

Read the rest of this entry »

The PL2303 serial-USB adapter and Linux

September 21st, 2003  |  Published in hardware, linux

A short note to fill in for something I couldn’t find via google on getting a PL2303-based serial-USB adapter to work with linux…

Read the rest of this entry »

Ericsson Bluetooth phone as remote control

August 3rd, 2003  |  Published in hardware, python

After seeing Richard Clamp’s excellent talk at a london.pm techmeet on using Ericsson phones as remote controls I went away to code something similar (but less fully-functioned) in python for my own use. My code plugs into the Twisted framework and listens for phone keypress events. It uses the AT commands defined in an Ericsson PDF for the R320 phone, and it works with my T610.

Read the rest of this entry »

Installing Debian on a Dell Latitude X200

March 9th, 2003  |  Published in hardware, linux

UPDATE: more notes written recently

My new laptop arrived this week – a Dell Latitude x200. And it’s marvellous. Wonderfully lightweight, good battery life for such a small box, good keyboard and a really clear bright screen. After a quick look at Windows XP, which I’d never seen properly before, I set about installing Linux on it. The Linux on Laptops Dell page has links to some useful bootstrapping information, but there were a few things I found pretty hard to work out. Here are my notes on those things.

Read the rest of this entry »

Cron is my TiVo

January 20th, 2003  |  Published in hardware, linux

One thing I’d like to do with a silent PC is make a homebrew TiVo-alike. Well, I would if I watched any TV. Which I don’t. But still, the idea interests me beyond any use I’d actually make of it. Anyway…

In the past, this idea has been beyond my means since recording analogue TV to MPEG on a hard disk in realtime requires a great deal of CPU (or dedicated encoder hardware). The general availability of digital TV in the UK now means that the MPEG encoding is already done for you by the broadcasters; you just need a way to get it out of the airwaves or cables and into a PC. Happily, there’s now a range of cheap digital WinTV cards for cable, terrestrial and satellite. I’ve been checking out a NOVA-t (terrestrial) card on a linux box this week.

Read the rest of this entry »

Making a silent, tiny, diskless PC

January 7th, 2003  |  Published in hardware, linux

For a while I’ve wanted a home PC that I can leave on all the time without the noise bugging me – I’ve become quite sensitive to machine noise over years of working with computers. I’d use it to play MP3s off my network, then I’d think up other projects. It wouldn’t need a monitor or a keyboard. It would just sit attached to the network, appliance-style, in the manner of a slimp3 but with the flexibility of a full linux system. Now the off-the-shelf hardware I need to make such a thing is available.

Read the rest of this entry »

MAC-address logging/blocking for linux iptables

January 2nd, 2003  |  Published in hardware, linux, wireless

Here’s a little script I wrote that checks incoming wireless requests for a known MAC address. I’ve been using it on my Linux gateway/router/wireless-bridge.

If it doesn’t know you, it transparent-proxies all your outgoing port 80 traffic to the local webserver’s port 81, where you could put a redirect to a polite message or something.

Read the rest of this entry »