Prelude
Piano keyboard interfaces on synthesisers are great. A familiar interface for playing music, they can be used to trigger any type of synthesised sound or audio sample, but sometimes these often-plastic devices can take away some of the fun and satisfying-feel of playing sounds that resemble that of an acoustic piano or traditional instrument. Playing an instrument is about a lot more than just the sound you create - the way you play it; the physical feedback; and the overall feel and aesthetics of the instrument also play a big role in the overall experience, with these elements also helping to nurture inspiration, and can even affect your perception of the sound created. This is something I really believe in, and why I’ve spent the last few years working on instruments such as the AlphaSphere, been a keen attender of the NIME conference, and why every now and then I end up doing music tech hacks and projects like this one.
An ongoing interest and project of mine has been modifying and ‘hacking’ vintage wooden toy pianos. These instruments have such a unique sound character, so the first project I did was a collaboration with my brother where we spent a day recording/sampling a toy piano in both conventional and unusual ways; the recordings which later became the Curio Kontakt library released by Impact Soundworks. However these instruments also have such a uniquely enjoyable feel and aesthetic, with their clunky wooden keys and their charming miniature form, so the next project I did was turning one into a MIDI controller, giving a more vintage, traditional-instrument and unique feel to playing computer based music; a project that I wrote about here. Though now I want to take this MIDI toy piano to next level by turning it into a standalone electronic instrument, and that is what I want to do for this music tech design challenge.
Project Proposal
In a nutshell, for this design challenge I want to turn a vintage wooden toy piano into a standalone digital hardware synthesiser, keeping the existing key mechanism and enclosure. This will involve the following tasks:
- Develop a digital synthesis engine that can generate and modify synthesised sounds
- Modify the existing key mechanism so that it can trigger sounds and control velocity modulation on the synthesis engine
- Add a set of potentiometers, switches and other controls to the existing piano enclosure for controlling the synthesis engine
- Add an audio output for connecting the instrument to external speakers and recording equipment
- Add MIDI I/O so that the instrument can be integrated into existing music production systems
- Keep the existing aesthetic character of the vintage toy piano.
Digital synthesis engine
This will be developed and run on the BeagleBone Black board. I will develop a standalone Linux application most likely using C/C++ to do this, probably using the open-source audio DSP and synthesis library Maximilian and/or the open-source library JUCE. The synthesis engine will be a simple engine using additive/subtractive synthesis techniques, comprising of all the basic building blocks of audio synthesis (oscillators, filter, envelopes, LFOs, effects, etc…) with fully controllable parameters.
Key mechanism modifications
For the MIDI toy piano hack I used piezo sensors to detect when and how hard keys were being pressed, however this implementation proved to be fairly unreliable (piezos didn’t always get struck, multiple piezos would trigger on single key presses, key velocity didn’t always create a matching velocity value). However a new implementation I want to start working on involves turning each key into a simple pair of on/off switches. It would work as follows:
- When a key is initially pressed it opens a circuit, triggering a timer to start.
- When the key is fully pressed it closes a second circuit, triggering the timer to stop. The value of the timer is used to work out a velocity value, with the specific key number creating a note number. These values are sent to the synthesis engine.
- When the key is fully released it closes the first circuit again, triggering a note off message to the synthesis engine.
The key mechanism will require 2 digital inputs on a microcontroller for each key for translating the key presses and releases into digital messages. The keys will either be connected directly to the BBB, or to a second microcontroller (such as an Arduino) used just for scanning the state of keys with the messages being sent to the BBB over serial or SPI, depending on the whether the BBB can handle processing a synthesis engine and key scanning at the same time.
Controls
A set of potentiometers, switches, and potentially other controls (e.g. ribbon sensors, FSRs) will be attached to the top of the existing enclosure of the toy piano, and offer controls for all of the parameters of the synthesis engine, e.g. oscillator pitch, filter cutoff frequency, LFO depth. Like with the key mechanism, the controls will either be connected directly to the BBB through analogue/digital inputs, or via a second microcontroller used just for scanning the state of these controls.
Audio output
This will most probably be a mono 1/4” jack connector, connected to the side of the piano enclosure, attached to the BBB via an audio DAC.
MIDI I/O
This will use a pair of 5-pin DIN connectors attached to the side of the piano enclosure, connected to the BBB via serial. This will allow MIDI messages from external hardware and software to control the instruments synthesis engine, as well as allow the instrument to control external music production hardware and software.
Keeping the pianos existing character
A big part of this project is the aesthetic design of the instrument, making sure the toy piano doesn’t loose it’s unique, hand-made look and character. Therefore I will carefully chose the knob caps, switches, and other controls to keep inline with the existing pianos design, using controls that look vintage/old and miniature. Also all control labels will be etched into the existing paint work, keeping the hand-made feel of the instrument.
Here is a set of images of the toy piano I will be working with, showing its design, its keyboard mechanism, as well as the original sounds rods that have since been removed:
About me
My Interest in this Design Challenge
When it comes to music technology I enjoy creating, building, and hacking almost anything. MIDI controllers, synthesisers, hyperinstruments, audio plugins, generative music applications, music interaction devices, circuit bending - these are just a few of the topics of projects I have undertaken both professionally and personally over the last few years. A couple of reasons why this particular design challenged interests me:
- As a software developer by day, I'm always looking for opportunities to help develop my interest and skills in other areas such as electronics and hardware.
- As a Linux developer in my day job, working with an embedded system such as the BBB gives me some familiarity within this project however it also allows me to explore the embedded Linux world from new angles.
Reasons for my Particular Project
- My interest in hacking vintage toy pianos, as outlined in the prelude.
- I work on the development of hardware synthesisers for a living, however I am not involved in the hardware, electronics, or synthesis engine side of the instruments, so undertaking this particular project will allow me to improve my skills and knowledge in other areas of the instruments I work closely on.
- I'm yet to see an example of this particular project being done before.
My Professional Biography
I am the lead software developer at Modal Electronics, the company behind the 001, 002, 002R and 008 hardware synthesisers, as well as being a freelance writer for AskAudio Magazine, specialising in music tech hacking and DIY content. I was previously the lead software developer at nu desine, the developers of the AlphaSphere MIDI controllers, as well as being an Associate Lecturer at The University of the West of England, Bristol, UK where I graduated in 2010 with a First Class Honours BSc degree in Audio and Music Technology.
So far over my career I have been involved in the development of nine consumer music technology products, both hardware and software, which have been used by the likes of Gary Barlow, Eric Prydz, Enter Shikari and Talvin Singh. I also attend many computer and music-based conferences, in which I have presented a couple of papers at the annual NIME conference. Professionally I mainly specialise in Linux and Mac OS-level application development using C/C++ and JUCE, primarily in the fields of audio and MIDI. I've designed and developed software modules for new products, often from concept through to production, within teams and as an independent developer.
Outside of my day job I take part in many music tech hackathons around the world, in which I dabble in electronics using the Arduino platform, often exploring fields such as audio processing, music interaction, instrument design, and generative music. I am also a guitarist, musician, composer and producer, having recently licensed some of my music to Microsoft. See more of my work at http://liamtmlacey.tumblr.com.