Building a USB MIDI controller

Figure 1: A basic 6-button footswitch USB MIDI controller. LEDs show button state.
I’m working on some pieces at the moment that require some electronics to be triggered via footpedals in performance. The problem is that I don’t have any MIDI foot pedals, and those that exist are expensive or overkill or both. All I need is a simple, passive MIDI pedal, connectable via USB that can give me a bunch of footswitch triggers (and maybe more features down the road). So, I decided that I’d build my own, and thought that if I documented the (surprisingly easy) process, others might see how easy it is to get custom hardware controllers…

There are a few simple options out there. In the first instance, an Arduino would probably cut it. I could use the serial port, or run a MIDI library to get what I need. Arduino is simple to learn, but I didn’t really need all the extras (or the board size). A Teensy is a smaller, equally affordable, and in some cases, a more versatile microcontroller that gets used a lot in USB MIDI and Music Tech related projects. And there’s a handy MIDI library already out there. So I opted for a Teensy (v3.2).

I sourced a cheap aluminium box here (a nice diecast Hammond box would have been lovely and heavier duty, but they’re expensive. This (Takachi Electric Industrial, MB-14) was 5 quid). For my current purposes, I only need 4 switches, but I got carried away and cut holes for 6 — not realising that this narrows the footprint considerably, making this a tricky thing to trigger with shoes on. It’s also a real mess of wiring inside as a result. If I’d thought about it before, I would have limited the switches to 4. As they say: measure twice, cut once. Lesson learned.

Switches are simple momentary (not-latching) switches, with some LEDs for visual confirmation. Below is a quick breadboard mock-up of the setup:
Figure 2: A breadboard mock-up of the circuit (in the finished product, I skipped the breadboard and chained the ground on each component) [made with Fritzing]
Figure 3: I took the strain off of the Teensy’s USB port by adding a panel-mount USB cable. It also allows me to use a slightly heavier-duty USB-B-type connector, as opposed to the Teensy’s micro port.
The code for the Teensy is simple given Josh Nishikawa’s MIDI controller library available here (Note, that I’m interested in MIDI controller numbers/values, not MIDI notes, Teensy can handle regular notes without a library). I’m only using the Pushbutton, assigned as MIDI control numbers (20-25) as they’re typically unassigned. This could also be serial, or MIDI note numbers rather than controller number. The code is simple: when a footswitch is pushed, fire off a MIDI control value of 127, otherwise it’s zero. When the pedal goes down, the LED pin is also lit up. In Max, all I need to read this is a [ctlin], [pak] and a [route 20 21 22 23 24 25] and I’ve got my pedal triggers into Max (see .maxpat in my git below). Easy.

In the Arduino IDE (Teensy uses the Arduino IDE, just with an additional library. There’s a guide to getting started with it here), I wanted the MIDI device to show up with it’s own name, so use the {name.c} file to set that. Set your USB Type to ‘MIDI’ in the Tools menu, and set your Board to ‘Teensy 3.2’, upload all that to the board and you’re done! A cheap, custom MIDI controller…

Improvements:

  • We’re gonna need a bigger boat. The initial plan was to include jack sockets and a stereo TRS jack so that I could plug in keyboard sustain pedals and an expression pedal to read as MIDI controllers. The code is simple, but since I didn’t leave myself enough space in the box, they won’t fit now.
  • Push-and-hold. My Max patch takes care of held buttons for flexibility, but this could easily be programmed in at the MIDI device level. Currently, if a button is held for x seconds or more, it clears a buffer.
    • Writing in at the Teensy level would let me have LED feedback too (light flashes after x seconds). I suppose I could set this anyway, but without it linking directly to the Max value (via serial?) there’s little point.

Files:

Kranichsteiner Musikpreis, Darmstadt Summer Course 2018

I am delighted to have received the Kranichsteiner Music Prize at this year’s Darmstadt International Summer Course. While I’m currently still a bit overwhelmed, this is a real honour and I’m truly thankful to the jury for their support. I’d like to also congratulate the other prize winners Sara Glojnarić, Martin Hirsti-Kvam, and Carlo Siega.

I want to make particular special thanks to the people who brought my music to life in the festival: Rahel Schweizer who played o horizon, gloa on the forest floor for solo harp, and Nate Chivers and Thilo Ruck who both worked on my guitar etude polynya, or ever less. Without their hard work and trust none of this would have happened, and I can’t overstate how much of a privilege it was to work with them throughout the festival. I also want to thank Yaron Deutsch, Gunnhildur Einarsdóttir, Martin Iddon and everyone in the Harp workshops for their amazing support.

Rahel Schweizer premiering o horizon, gloa on the forest floor. 📷: Aaron Holloway-Nahum (@aaronhnahum)

You can read more about the prize here, and yes, there’s a reason why I’m not in the picture. I’ll tell you about it at Darmstadt 2020.

Is This Thing Still On?

After an absence of over two years I’m brushing the dust off. I’m powering machines back up, replacing snapped strings, retuning and broadcasting once more from West Yorkshire.

A lot has changed since the last transmission: I completed my PhD in Composition and have taken up a teaching fellowship at the University of Leeds. I also stopped making music for nearly two years (PhD burnout is real and unpleasant), which was difficult. But after some time away, some self-care/discipline, and good conversations/ttrpgs with friends, 2018 has seen the wheels begin to turn again. It hasn’t been pretty, but it’s getting there. I know you didn’t ask, but here’s a run-down of what has been happening recently:

PERFORMANCES

Seth Parker Woods (USA), a supremely brilliant cellist and a very dear friend, commissioned khepri for Cluster festival in Winnipeg, CA. khepri for solo cello focuses on the tiny noises of the cello as Seth performs some fiercely quiet bow taps and finger strikes. Premiered 2nd March 2018, Winnipeg, CA. There is no recording of the premiere, so instead check out Seth performing Iced Bodies here with Spencer Topel. An intense re-imagining of Jim McWilliams’ Ice Music (1972).

abate ablaze abrade was commission by London’s Plus-Minus ensemble and premiered 27th March 2018 at City University, London. Other new works by Ben Jameson; Alice Jeffreys; Lawrence Dunn; Caitlin Rowley ; and Monika Dalach. It’s a slow, tangling trio for bass clarinet, piano and cello. Due to noisy lights (a sure sign that your music is quiet), the performance took place in the dark which was wonderfully evocative and testament to how brilliant these musicians are. Bass clarinet—Vicky Wright; piano—Mark Knoop; cello—Alice Purton.

In July, I’ll be at the 49th Darmstadt Ferienkurse Internationales Musikinstitut. I’ll have two new pieces being performed and workshopped:

polynya, or ever less is an etude for electric guitar, written for Yaron Deutsch’s concert and guitar studio. The piece uses a glass test tube to bow the strings, while the free hand plays soft hammer-ons. It’s quiet in spite of the amplifier. Glacial shredding.

o horizon, gloa on the forest floor was written for harp and a hand full of metal, and will be workshopped by Gunnhildur Einarsdóttir’s Harp studio. The piece builds up a number of tectonic hums and scrapes, as the player slides along the string with a hand of metal. Sensual scratching.

Further ahead, Ensemble Nikel (who, I suspect, a couple of you will have seen at last year’s hcmf//) will be ensemble in residence at Gaudeamus festival in Utrecht, NLD. If you’re there, they’ll be playing my whose veil remains inscrutable on 6th September 2018.

RECORDS

At the start of 2016, before everything went dark, I released something without fanfare. Listening back I still quite like it, so for your consideration: larynx, closing

In 2017 Ensemble Nikel released their retrospective 4CD+DVD+BOOK box-set A DECADE. It features their recording of my whose veil remains inscrutable that we made in Bern in 2015. It’s an exceptional performance and a wonderful album that I’m delighted to feature on. Audio excerpt here.

WRITING

If you read my 2015 article Disappearing Sounds: Fragility in the Music of Jakob Ullmann in TEMPO (Vol 69, Issue 274, Cambridge University Press), I’ve written a sequel. Rebuilding Babel: On Fragility And The Palimpsest In Jakob Ullmann’s voice, books and FIRE (Vol 71Issue 282, Cambridge University Press) was published in October 2017. It focuses on Ullmann’s huge cycle voice, books and FIRE and is similarly unwieldly.

I also reviewed Apartment House’s premiere of a new Christian Wolff piece, performed alongside Cage’s Concert for Piano and Orchestra(1957–58) for TEMPO’s January 2018 issue. It was good.

 

That’s it for now. I’m going to try to make an effort to post more as I make more work, so, err… consider yourself warned?

Until next time,

Oliver.

Twitter | Instagram | Bandcamp | Soundcloud


Addendum:

In the last month or so, I’ve been reading a lot of Jeff VanderMeer and Cixin Liu. I’ve been listening to Taku Sugimoto’s h from Another Timbre and I’ve been watching the university of Leeds’ newly hatched peregrines. [If you made it this far, you owe it to yourself to watch cute baby chicks eating other birds]

larynx, closing

last week, I released a new album of solo material. larynx, closing is a collection of two, or maybe three, or maybe four pieces across one hour and twenty minutes. it is very quiet.

SIDE A

1 – grid of four: first, across (16:07)

2 – against the grain, larynx (24:45)

SIDE B

3 – against the grain, larynx (continued, end) (16:34)

4 – grid of four: first (alternate take) and second, across (23:40)