MaKey MaKey Monome

25K24818

Intro: MaKey MaKey Monome

Objective: build a monome - a complex electronic music instrument - using easy-to-learn, inexpensive components and a process that's so easy a kid could do it.

Gist: This touchscreen music instrument is essentially 4 parts:

  1. MaKey MaKey (or Arduino)
  2. Neopixels
  3. copper tape
  4. cardboard

Sound is produced in either Scratch (visual programming language for kids) or Processing (visual programming language for artists). Additional info on my website: jdeboi.com.

-------------

Materials

  1. MaKey MaKey (or Arduino)
  2. about 20 alligator clips
  3. 64 Neopixels
  4. copper tape (double-sided conductive - 6mm x 30m)
  5. stranded 22 gauge wire
  6. 5V power supply
  7. power adapter
  8. 300 to 500 Ω resistor
  9. capacitor (1000 µF, 6.3V or higher)
  10. jumpers
  11. 22 square inch glass
  12. lots of cardboard (at least 26 inches long)
  13. thin, semi-transparent white paper

Tools

  1. soldering iron+solder
  2. wire strippers
  3. wire cutters
  4. scissors
  5. measuring tape
  6. straight-edge
  7. box cutter
  8. small philips head

STEP 1: Neopixels


Neopixels are individually addressable, RGB LEDs. Adafruit sells them in long strips.

Soldering Neopixels

  1. Cut the Neopixels into 64 pieces, cutting along the line marked by the scissor icon.
  2. Tin all of the copper pads on the Neopixels to make it easier to solder on wires.
  3. Space out the neopixels by 2.5 inches so that each square on the lattice contains a single LED.
  4. Cut lots approximately 2 inch strips of 22 gauge, stranded wire.
  5. Strip the plastic off the tips and tin the wires so that it’ll be easier to solder onto the Neopixel’s copper pads.
  6. I recommend using 3 different colored wires for GND, 5V, and Data. Check the label on each Neopixel to make sure you’re always soldering the right wire to the right pad.
  7. Solder together 8 sets of 8 Neopixels.
  8. We’re going to zizag the Neopixels over the array- each row is 2.5 inches above the subsequent row.
  9. Always make sure that the LEDs arrows point in a continuous direction as you zig zag from one row to the next, and that you’re soldering 5V to 5V, Ground to Ground, Data to Data.

Adding Power Adapter

  1. Between the 4th and 5th row of Neopixels, we’re going to splice in the power supply. c
  2. In addition to the ground and 5V wires, insert a 1000 µF capacitor across the + and – power adapter terminals. The longer leg of an electrolytic capacitor is the positive leed.
  3. The data wire from the end of the 4th row wraps around to the beginning of the 5th neopixel row, as usual.
  4. Finish connecting all of the rows of Neopixels together to form the zigzagged array.

Neopixel Strip to MaKey MaKey

  1. Ground pin on strip to ground on the Makey Makey.
  2. Data pin on strip to the MaKey MaKey's D0 pin through a 300 ohm resistor.
  3. Install Arduino IDE.
  4. Install MaKey MaKey Arduino addon (unless you're just using an Arduino)
  5. Install Adafruit Neopixel library.
  6. Plug 5V power supply into power adapter.
  7. Upload a Neopixel sketch (in the example folder of the Adafruit Library) to test the Neopixels!

STEP 2: Cardboard Lattice

The cardboard lattice is made up of 18 strips of cardboard.

  1. cut 9 row and 9 column strips. The dimensions of each are illustrated in the diagram. I used a box cutter and a piece of glass as a straight edge.
  2. Slot the pieces together. If the lattice is right side up, there should be a 22inch by 22 inch divit in the middle that holds the glass in place.
  3. Hot glue the Neopixels to a poster beneath the lattice to keep them from sliding.
  4. I used clay to fill the gaps between the cardboard squares. The clay also holds the cardboard in place. if you don’t have clay, tape or glue should work just as well.

STEP 3: Touchscreen


We want to build an 8x8 monome that has 64 buttons, but the Makey Makey only has about 20 inputs. How can we create 64 separate keyboard triggers with only 20 Makey Makey inputs?

The solution is to multiplex the rows and columns. We create 8 rows and 8 columns of copper tape - each line connected to its own alligator clip - and by grounding the intersection of a row and a column, we trigger a unique key. There are 64 intersection points that can be triggered using just 16 Makey Makey inputs.

Steps

  1. Tape paper on glass
    Tape a piece of semi-transparent white paper to the back of a 22 square inch piece of glass. The paper will diffuse the light from the LEDs and fill up the square lattice.
  2. Lay the columns
    Start laying copper tape columns on the surface of the glass. It’s helpful to have the LEDs turned on so that we can align the tape with the cardboard.
  3. Non-conductive tape
    This step is very important: place a piece of clear, non-conductive tape on top of the columns everywhere that they will intersect with rows -- i.e. the copper columns must be electrically isolated from the rows. This step is important because we only want a row and a column to connect when we touch the surface to trigger a button.
  4. Lay the rows
  5. Copper tape buttons
    I attached a diagonal strip of copper tape to the row, and a diagonal strip to the column, so that I can easily touch both strips with my fingers to turn the button on or off.
  6. Alligator clips
    Each column and each row is attached to the MaKey MaKey using through an alligator clip. It doesn’t matter which alligator clip is attached to which Makey Makey pin so long as the Arduino code is updated and accurately maps the rows and columns to the appropriate pin. You can download and check out the code from my Github profile.
  7. Connecting to ground
    In order to trigger a key, you'll have to be touching ground. Attach one alligator clip to the ground pins on the MaKey MaKey and make sure to touch the the other end of the alligator clip to your skin.
  8. Code
    Install the MaKey MaKey Arduino addon from Sparkfun.
    Upload the "complete" Arduino code to the board.
    Make sure you installed the Adafruit Neopixel library.
    To generate sound, you'll need the Processing code. All the files you need are on my GitHub repo.

STEP 4: Music Sketch


Processing Sketch

  1. Begin by installing Processing from their website.
  2. Download all of the code in the Processing folder in the Makey Makey Monome Github repository
  3. Open monome.pde, and click the arrow to run the sketch.

Serial/No Serial

  • To use this sketch as a standalone program to generate music, click “no serial.”
  • If the reprogrammed MaKey MaKey is plugged into your computer, the Processing sketch can send and receive serial data to the board so that when you click a button on the Processing sketch, it changes the button on the MaKey MaKey Monome and vice versa. Click the button corresponding to the serial port on which the MaKey Makey is running.

18 Comments

I keep trying to upload the code onto the makey makey and it highlights this -

float thresholdPerc = SWITCH_THRESHOLD_OFFSET_PERC;

and says this in the error box at bottom,

Art_sketch.ino:21:22: error: settings.h: No such file or directory

Art_sketch.ino: In function 'void initializeInputs()':

Art_sketch:191: error: 'SWITCH_THRESHOLD_OFFSET_PERC' was not declared in this scope

Art_sketch:192: error: 'SWITCH_THRESHOLD_CENTER_BIAS' was not declared in this scope

Art_sketch:205: error: 'keyCodes' was not declared in this scope

Please Help!

Awesome. I'm a beginner and have been trying to understand the concept of multiplexing and the capacitive touch matrix. I stumbled across your tutorial and everything finally clicked for me. Very nice presentational style. Thank you

Hello! Any updates on getting Makey Makey working with Max/MSP? :) I've tried it with Maxuino, but hit a brickwall with uploading Standard Firmata. Since Makey is similar to Arduino Leonardo, I was hoping this route is possible. (minimal coding really, am not much of a programmer). You can find more about it here. http://www.maxuino.org/video

Hi! how easy would it be to change the sounds that are played? for example,would I be able to use a software instrument with this?
Thanks!
super easy! just change the audio files in the audio folder.

my next project is making this instrument compatible with Max/MSP
perfect,thanks so much! And sorry for what may seem an obvious question (I'm new to all this) but how much harder would it be to use an arduino?

I've made a 4x4 monome using an Arduino (code is on Github in the same repository). I haven't tried the code with an 8x8 monome, but I think it should work. :)

Hi Jenna! What do we need to change in the current setup in order to make it work with an actual Arduino Uno board? We got the Neo-pixels to work with the Adafruit script. But nothing works when using your MakeyMakey script on Arduino, even after addressing the pin numbers to the columns and raws. Let us know if you can help… Cheers

actually working on this right now! (and discovered it doesn't work by merely changing the pin numbers). Send me a message if I forget to reply by the end of the week!

Hi! Yep, we're stuck there too as we are still trying to get the codes to talk to our Arduino board... I understand that it is just a matter of defining and integrating the parameters for pin controls, while getting rid of the MakeyMakey ones. (Btw, could you receive the email I sent you through your website?)

Hi! This is really cool, and I wanted to see if I could try to make this so I tried to run the monomeVisual.pde in Processing but it doesn't seem to be working no matter what I try.... Is there something I might've done wrong? I couldn't download any of the audio files on your GitHub for some reason, and I wonder if I'm supposed to?

i think I may have accidentally committed a bug. lemme check it out when I get home :)

ah! great news. understand re: blip. and actually, comparing against your git code + monome tech pages, i think it'd be complicated and an unnecessary step in making that connection. looking forward to arduino stuff! i might spin my mind around the rest a bit later.

so, so cool and so many possibilities. thanks jenna!

:) I know! So excited to see how people iterate on this idea! I'm thinking conductive paints, fabrics, different programs... so many possibilities!

agree - exactly what i was thinking! ok. question for ya. i briefly glanced at the code, and i think, as a novice, i could do this, but iyo: how complicated would it be to port it to arduino generally? then: mmm for 1/10 the cost. simple or 4 weeks of tearing hair out or between? ALSO... tho your code is more extendable into other uncharted realms, and i really like this, i wonder about the possibility of an iteration that heads even further into monome territory and gets married to the bliptronome: http://wiki.straytechnologies.com/doku.php/bliptronome. thoughts! thoughts.