KeyPadBoard by Oscar Morrison

14th February 2015

  • Create a musical instrument.

I wasn’t really sure where to start with this project so I went back to basics. I originally started with a single button and a piezo buzzer (later replaced by a 8Ω speaker). I learnt about MIDI and keytones, which led me to the idea of an alternative style keyboard.

But first I grew on my initial design, I added the additional speaker for more crisp sound, then added 2 x LED’s for user feedback, and an additional push button (totalling 2). Finally as an add on, I got a SPDT relay, and in my earlier two prototypes (Part 1 and Part 2) I used the relay clicking as a back beat. I found that it really wasn’t loud enough and it was removed from the final design.

Prototype

Original Schematics

I decided that 2 buttons was not enough input. I experimented using both buttons at once as a third input, however in practice this was ineffective and annoying. I opted to go for a key pad as it is immediately familiar and highly customisable.

I finished with using 2 x LED, 1 x Speaker and 1 x (4x4) number/letter keypad.

I spent a fair amount of trial and error working out how to input the keyboard into the arduino, as it did not come with any instructions. After this I came up with some standard and common musical notes/tones, and programmed them to each of the keys in a logical fashion. In the same fashion I paired up the LED to represent Flat and Sharp notes. Red being Sharp and Yellow Flat.

Final Circuit

The final product was boxed up, hiding all internals leaving only the keypad, 2 x LED’s, 1 power cable, and onboard instructions. Part 3 video illustrates the 2 functions: (1) Normal playing, the key purpose of the instrument, and
(2)demo songs, “Baa Baa Black Sheep” and “Frere Jacques”. I am not very musically inclined myself, so I used the demos to encourage me to copy the songs.
Finished Product

  • Describe how your design follows Crawford’s model of interaction, including an explanation of how both parties in the interaction (the person and the instrument) listen, think, and speak.

Crawford’s Model of interaction primarily focuses on how the parties (person and instrument) listen, think, and speak.

With my instrument:

  • The person listens by audible feedback from the instrument, listening to the current tone, as well as using the LED for feedback. They then think, by processing the sound in their brain. Then they speak by pressing a particular key on the KeyPadBoard. This is a cyclic process, that integrates directly with that of the instrument.

  • The instrument listens by seeing which of the 16 keys on numberpad is pressed. It then thinks by processing this request in the Arduino. It then speaks by playing the requested note on the speaker, and using the LED’s.

Furthermore, the demo songs, encourages increased engagement for a beginner, exemplifying the possibilities of the machine, and creating intrigue for the user.
The LED’s although simple, are there for two main purposes: to acknowledge a keystroke, and to indicate whether the key pressed is a Flat or a Sharp note.

The simple design, and clear instructions support the user in using the instrument, a crucial part of interactive design.

Be critical of your own design, and give at least 2 ideas for how the interactiveness and expressiveness of your instrument could be improved.

  • The keypad tactility. The keypad is a low profile keypad, with a splash resistant coating. In certain situations this is useful, but in regards to an instrument it is not the ideal touch feel. If I could get a mechanical style keyboard, and have the notes directly printed on the keypad it would greatly improve the experience.

  • Sound authenticity. The midi style tones can become annoying, and do not encourage the user to play with the KeyPadBoard for an extended amount of time. Perhaps a more lifelike piano or organ sound would encourage better interactivity.

Create a video of a performance on your instrument… make it convincing.

Part 1

Part 2

Part 3
(Final Product)

Appendix

The source code for the program.

[gist url="https://gist.github.com/oscarmorrison/04b5cc66fef88b433b47"]