Converting Piano Toy to MIDI Keyboard.

Dependencies:   mbed mbed-STM32F103C8T6 USBDevice_STM32F103

How to turn kids' old piano toy to a MIDI keyboard

Inspired by http://www.codetinkerhack.com/2012/11/how-to-turn-piano-toy-into-midi.html I did the same with a Blue Pill module using Mbed.

The old toy was capable to play only one tone at a time:
Zoom in
https://os.mbed.com/media/uploads/hudakz/minikeyboardtoy01.jpg



A bit of reverse-engineering was needed to re-use the original printed boards. The results are below.

Original PCBs with switches traced to the connector pins:

Zoom in
https://os.mbed.com/media/uploads/hudakz/keys.jpg Zoom in
https://os.mbed.com/media/uploads/hudakz/buttons.jpg

Schematic:

Zoom in
https://os.mbed.com/media/uploads/hudakz/schematic.png

Wiring:

https://os.mbed.com/media/uploads/hudakz/wiring.png



Then I replaced the original chip with a Blue Pill module and added a USB connector:
Zoom in
https://os.mbed.com/media/uploads/hudakz/minikeyboardtoy02.jpg

Works great when connected over an USB cable to a Linux Ubuntu 18.04 machine

Installed software:

  • Yoshimi: An excellent MIDI software synthesizer for Linux.
    Zoom in
    https://os.mbed.com/media/uploads/hudakz/yoshimi.png
  • Patchage: Provides a graphical interface to connect jack and midi inputs and outputs.
    Zoom in
    https://os.mbed.com/media/uploads/hudakz/patchage.png

How to use it:

  • Connect the Keyboard to the PC over an USB cable.
  • Run Yoshimi.
  • Run Patchage and connect the Mbed USB Audio MIDI 1 output to Yoshimi's input (drag Mbed Audio MIDI 1 over yoshimi input and drop)

https://os.mbed.com/media/uploads/hudakz/connection.png

  • To apply the changes close the Patchage!
  • On Yoshimi's toolbar click on Instruments and select Show Stored ...
  • Select a bank and click on the instrument you'd like to play.
    https://os.mbed.com/media/uploads/hudakz/instruments.png

Have fun :-)

Files at this revision

API Documentation at this revision

Comitter:
hudakz
Date:
Thu Apr 09 08:23:32 2020 +0000
Parent:
0:75d307e38488
Commit message:
Converting Piano Toy to MIDI Keyboard.

Changed in this revision

MidiKey.cpp Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
diff -r 75d307e38488 -r 41d2a3984dd7 MidiKey.cpp
--- a/MidiKey.cpp	Wed Apr 08 17:47:23 2020 +0000
+++ b/MidiKey.cpp	Thu Apr 09 08:23:32 2020 +0000
@@ -18,6 +18,4 @@
         _position == 1 ? _midi.write(MIDIMessage::NoteOn(_note)) : _midi.write(MIDIMessage::NoteOff(_note));
         _lastPos = _position;
     }
-
-    wait_ms(2);
 }
diff -r 75d307e38488 -r 41d2a3984dd7 main.cpp
--- a/main.cpp	Wed Apr 08 17:47:23 2020 +0000
+++ b/main.cpp	Thu Apr 09 08:23:32 2020 +0000
@@ -67,6 +67,7 @@
     while (1) {
         for (uint8_t i = 0; i < keyLen; i++) {
             key[i].scan();
+            wait_ms(2);
         }
     }
 }