One In-One Out: SongCraft

Our group built a midi synthesizer that, upon playing a few notes, will start to play a harmony alongside the user. This harmony can then be played over as well, to create the impression of a more complete piece of music.

Our intention was to build a kids’ toy. Children have little exposure to music and huge imaginations. Thus, the generated harmony is analogous to what kind of music the children may be hearing in their heads, and is intended to bridge the gap between their imaginations and what sounds they can actually play. This is not just applicable to children: many adults that have little or no exposure to music often find themselves confronted with a huge gap between their musical imaginations and what they are actually capable of playing. Since the harmony on this synthesizer are automatically generated based on preset chords and intervals, this is meant to both bridge the gap between imagination and execution and also show that much of music follows the same guiding principles.

The synthesizer works by detecting changes in voltage from each pressure sensor, sending a byte signal mapped to that pressure sensor, translating the byte signal into MIDI, and then playing it on Garageband. The harmony is looped, and is generated by randomly choosing intervals and chords that make sense in the current context.

This project has much that can be improved. In particular, the harmony generation is very rudimentary. Some basic key detection and machine learning could make it better.

The code simply translates and forwards the data from the keyboard into a MIDI signal, and then starts playing a looped harmony. The MIDI signal is generated using a one-to-one mapping between a MIDI note and a key. Upon a press of a key, each note plays for a set amount of time.

Here is a diagram of our hardware:

12255676_10206392893273768_179828262_o

The code can be found here:

Leave a Reply