My project for the Element14 Music Tech Design Challenge
C++ C Objective-C++ Objective-C Java Other
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
Code
Documents
Other
Schematics and Design Files
.gitignore
README.md

README.md

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.