Skip to content
My project for the Element14 Music Tech Design Challenge
C++ C Objective-C Objective-C++ Java Shell
Branch: master
Clone or download

Latest commit

Fetching latest commit…
Cannot retrieve the latest commit at this time.


Type Name Latest commit message Commit time
Failed to load latest commit information.
Schematics and Design Files

Vintage Toy Synthesiser

Vintage Toy Synthesiser was the winning project of the Element14 Music Tech Design Challenge where I converted a wooden vintage toy piano into a standalone digital synthesiser. See the project blog to see the full development process of the project.

alt vintage-toy-synthesiser

Project Proposal

The original project proposal specification was as follows:

  • 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

For more info see the full project proposal.

Hardware/Software Architecture

The synthesiser uses a couple of different hardware software platforms:

  • The brain and sound engine of the synthesiser are seperate Linux applications running on a BeagleBone Black board, which communicate via software sockets. The brain application is developed in C, and the sound engine application is developed in C++ using the Maximilian Audio DSP library and RtAudio. See the BeagleBone Black directory for the code for these applications.
  • The keyboard and panel use Arduino Pro Mini boards for sensor/control scanning. The Arduinos communicate with the BeagleBone Black via serial. See the Arduino directory for the keyboard and panel code.
  • There is a Mac OS X editor application for saving and loading patches on the synth, written in C++ using the JUCE framework. See the VtsEditor directory for the code.

For more info on the software architecture see here.

You can’t perform that action at this time.