Introduction: Makey Makey MIDI Controller

Makey makey is a microcontroller that acts as a keyboard when it's plugged into your computer. I reprogrammed it so that it sends midi notes. Why? Because when you use a keyboard to control things the window you're controlling has to be active all the time. With midi you can control multiple programs or synths at the same time. And it's widely supported.

It might be handy to check which program you want to control with you makey makey and make sure it can be controlled by midi.

!!! You'll need to have a serial to midi converter running in the background. If you don't like that stop reading. If you don't know what that means, keep on reading.

If you know a thing or two about arduino and midi you can just follow "the fastest way". Otherwise follow the easy steps.

The fastest way:

Download my code. Download arduino here and the makey makey addon for arduino here and install both. Upload the code to your makey makey. Download a serial to midi converter like hairless midi. Set up a virtual midi port (on windows you'll need a program like midi yoke). Start your serial to midi converter and select the makey makey as input and you virtual midi port as output. Start up a DAW and select your yirtual midi port as input. Done!

But we can also take things slowly.

Step 1: Arduino and the Makey Makey Library

Arduino is available here. Select the version for you operating system and download it. The installation is like any normal installation.

In order for arduino to communicate with the makey makey (which is based on the arduino leonardo) you have to install a library. The file you'll need can be downloaded here. You have to unzip this file. The folder you have now should have the name "MakeyMakey" (so if there's a date behind it rename it. This folder needs to be pasted into your sketchbook folder. This folder can be found when, in Arduino, you go to file -> preferences (on windows) or to arduino-> preferences (on mac). Go to this folder and paste the MakeyMakey folder. You've installed the library.

(want a different explanation:

Step 2: The Code

The next step is to upload new code to the makey makey.

!! Warning when you upload new code the makey makey will not funtion as a keyboard anymore, until you upload the original code again. Which can be found HERE.

Open up arduino again. Go to tools->serial port a see what's in the list. Now plug in your makey makey and look what's new in the list. On windows this should be something like "COM" with a number. On mac this should be something like "/dev/tty.usbmodem" and some numbers. Select that port.

Go to tools->board and select "makey makey". If it's not there something went wrong. (help)

Now open the code "Makey_Makey_midicontroller_explained", the one i wrote for you. Press the upload button (the second button, the one with the arrow to the right). Arduino should show "Done uploading" when it's finished.

Your makey makey is now a midi controller.

About the code:

I've tried to explain most of the code in the file. Feel free to adjust it, if you, for example, want a different range. (hexadecimal code for that)

Step 3: Virtual MIDI Port

You're makey makey is sending midi messages to your computer but they need to be send to a midi port. So we'll create one:

Creating a virtual midi port on Windows:

You'll need to install a program like LoopMIDI or MIDI Yoke. This will do the job. Follow the instructions on that link to create a virtual midi port. (I've done this a long time ago so i don't know the exact way to do it anymore)

Creating a virtual midi port on Mac;

Go to applications->utilities and open "Audio MIDI Setup". Go to window->show MIDI window. Double-click on "IAC Driver" (standard it's red). In the new window you should check the box "Device is online" and you can press the "+" to make new ports (you can also rename them, which is handy).

Step 4: Serial to MIDI

We're going to send the serial data that the makey makey is sending to our computer to the midi port we've just created. I recommend hairless midi. Just install the program and open it.

On the left side there's a dropdown menu where you can select you serial port. Select your makey makey (USB IO Board). On the right side you can select midi ports. We're only gonna select a midi out port, the one we've created.

You can now try you makey makey (like you've always used it). Normally you should see the green 'light' next to the dropdown menu light up when you press or release something. You should also see messages like

"Serial In: Ch1: Note 60 on velocity 127"

Step 5: Using It

Now you should open up the program (like a DAW probably) you were planning to use your makey makey with. Select the midi port were hairless midi is sending data to, and you're good to go! The image shows which notes the makey makey is sending. The first C is actually C3, because i didn't like to only play low notes.

I hope you enjoy your makey makey midi controller. Let me know whatever you feel like!

Mine Mooder


gside made it!(author)2017-03-07

Hi, I tried it with the Makey Makey v1.1, but it's sending MIDI-signals even if I just touch one cable. Without connecting to the other wire! It works fine when earth is connected to my body. This problem doesn't exist with the originial Makey Makey firmware.

Could you help me? I want to connect a foot switch to send a MIDI-signal, but at the moment it's not safe enough.

KishoreDa made it!(author)2016-09-07

Hello guys , great to be here ,sorry I am kinda new , I like to build my own keyboard controller by using MakeyMakey, I have no idea where to start from , any help will be greatly rewarded appreciated and if you can help me build my own controller, I will make sure to take good care of you .. $$$

I leave my email :

For you to contact me , regarding my controller ..thanks.

EyeMakeGames made it!(author)2016-08-16

Cool! Is there a way to press a "button" and cycle through different midi CC's? I am a drummer and I have the Makey Makey hooked to the rim of a tom, I trigger stuff touching the screws as I play :) I am wondering if I could cycle through different CC presets for each screw. Cheers!

TomD136 made it!(author)2016-05-03

Thanks so much for putting this kit together, I made a fruit and veg midi controller.

Screen Shot 2016-05-04 at 6.16.55 pm.png
Andr%C3%A9annaL made it!(author)2016-02-29


I bought a makey makey, 2 weeks ago. Today I had this problem : sends many keys at the same time. I don't know why. Could you help me ? Thank you !

vincent.nihouarn made it!(author)2015-06-16

Does this works with the 1.2 version from Joylabz ? Because I can't connect to any port in the Arduino software, therefore i can't run your code... I have read that this version 1.2 is not an arduino anymore, so that could be the problem. IAm I all wrong ?

softcoresoft made it!(author)2015-09-03

Hi Vincent! I had the same issue, so I contacted JoyLabz and here is what they replied: "If you have a Makey Makey V1.2, this version does not have Arduino capabilities (please see our FAQ on the website for more details). Remapping is easily done in a browser by going to" Only the MakeyMakey 1.1 works with Arduino, which JoyLabz has stopped manufacturing. You may find it at Sparkfun. Cheers!

andy.martin.98499 made it!(author)2015-04-01

Could this same process be used to recieve midi information, say to activate led lights when a midi note is hit?

bryan.dumaguina made it!(author)2015-01-19

After getting the drivers installed on Windows 7 - which was a pain (I believe there is a bug there somewhere). I was able to replicate this project, and got the Makey Makey to communicate with Live 9.

If you're using Live, have you heard of Maxuino and Max for Live? I'm looking for a way to avoid serial to midi converters, and virtual midi ports. Maxuino is a Max for Live device that helps with that. Since Makey Makey is similar to Arduino Leonardo, I was wondering what are you're thoughts on this?

If not, no problem. Thank you again good Sir!

MineMooder made it!(author)2015-01-25

I've never heard about that, but I looked it up and it looks cool. I see no problem in using this with the makey makey.

This video explains how, and here's more info. 

But i think it's more interesting to do this with a normal arduino. I don't know if you can actually use the analog pins as analog pins on the makey makey (and i can't find my makey makey to try it at the moment)

bryan.dumaguina made it!(author)2015-01-25

Thank you for the links. I have gone through those videos already. Unfortunately, Standard Firmata doesn't seem to be working with Makey Makey, despite a successful upload. During the firmata test, I get a blank screen. Any thoughts on this? Thanks again.

shorbaji made it!(author)2015-01-22

great !!!

i have a question .. how to modify it to use all the poiano notes .. i mean from left to right , because i try this but i see it only have some notes not all the piano notes !

bryan.dumaguina made it!(author)2015-01-22

The Makey Makey only has a total of 18 outputs. So you're only going to get 18 notes total. There are several ways to do this. You can assign 2 of the outputs to be octave up and octave down so you can access the full keyboard, or the 2 outputs can be MIDI CC numbers; which you can map to octave up and octave down effects in your DAW of choice - several ways really. Try and message the creator of the ible, he can probably help you out with this. :)

MineMooder made it!(author)2015-01-25

This is correct. In both cases you have to adjust the code.

Making octave up and octave down buttons:

Looks like the best option to me, but you'll notice that my code is difficult to change (badly written). You'll need to redefines the root note, and add a variable which will stand for the octave and will be multiplied by 12 and the "pitch". And this new variable will be increased or decreased by two chosen controls.

Sending MIDI CC:

This is the way to send a midi cc:

Serial.write(0xB0); //this is a midi cc

Serial.write(control); // (0-119) this is the parameter to control

Serial.write(value); // (0-127) this is the new value

bryan.dumaguina made it!(author)2015-01-02

Thanks for posting, will definitely give this a try! :)

Twinkles1986 made it!(author)2014-09-30

Hi, I've followed the instructions, reprogrammed the board and tested it out on max/msp, but now it seems that i don't need to earth the 'makey makey' to play a note is this normal?

MineMooder made it!(author)2014-11-07

This is a bit strange, i'm currently not using it anymore, so i have no idea, but if you find a solution or explanation, feel free to post it here because more people seem to have this "problem". Thanks

ivobol made it!(author)2014-10-04

Thanks for the patch, great stuff. I have noticed (as the previous person) that if you are not grounded midi data is constantly generated. This becomes a problem for me when I have a lot of things connected. Is there any way around this? Thanks!

tyoung32 made it!(author)2014-06-14

what daw software did you use and do you have any examples of the makey makey modulating sound?

cvan4 made it!(author)2014-04-10

What about latency? Is the latency better or worse than keyboard input? I'm using MAX/MSP's Midi input. I was going to just use keyboard, or joystick input to control it. It would be very nice if there was less latency for my midi controller prototype.

MineMooder made it!(author)2014-04-23

I haven't experienced any notable latency. Latency is most of the times caused by the soundcard i use.

smalltortoise made it!(author)2014-02-01

Very cool!! Thanks for posting this!

About This Instructable




More by MineMooder:Makey Makey MIDI controller
Add instructable to: