This is our entry to hackfest.lol. We are Nevyn Bengtsson, Mai-Li Hammargren & Emma Koszinowski.
Our dance floor has six tiles. When you step on a tile, it lights up and sends a MIDI signal to a connected computer, which can then play music based on the MIDI signal. Here's our demo from the hackathon, which gave us first place (click to play):
The base is a wooden structure. Under each tile, ten AdaFruit NeoPixel LEDs are mounted. They're all connected up in series, for a total of 60 leds. The signal pin of the LEDs is connected to pin 6 on an Arduino.
Then, six transparent plastic boxes are mounted upside-down on top of the LED strips. Simple push buttons are hot-glued onto the middle of the underside of the boxes, facing up. Two cables go from each button: black to ground, and each box to Arduino pin 8-12, which become input pins.
The boxes' lids are then mounted on top of the underside of the boxes, resting on the buttons without pressing them. The whole thing is taped down with gaffa.
Stepping on the box lid thus depresses the buttons, sending a signal to the Arduino, which activates the corresponding LEDs and sending the correct MIDI signal.
First, connect the Arduino to your computer. Then, enable MIDI:
- Open Audio MIDI Setup.app
- From the Window menu, select "Show MIDI Studio"
- Double click IAC Driver
- Click "Device is online"
- Make sure it has a Bus
- Download and install The Hairless MIDI to Serial Bridge
- Under Serial Port, Select the Arduino
- Under MIDI Out, select "IAC Driver Bus 1"
- Click "Serial<> MIDI Bridge On"
- Open Garage Band, and setup an instrument of your choice
- If you're lucky, when you step on a tile, MUSIC COMES OUT!!!
- 1x base structure, like a pallet or something.
- 1x Arduino. I used a Mega, but a Uno probably works as well.
- 1x USB-B cable, to wire Arduino to your Mac. Pretty long.
- 60x AdaFruit NeoPixel, or clone. RGB, pretty close together.
- 6x push buttons.
- 6x transparent lunch boxes, pretty big and sturdy.
- Lotsa wires in different colors
- Gaffer tape or something
- Hot glue :D
- Soldering iron
eh. maybe some day :)
You could probably figure it out based on the source code. The variables at the top makes it very configurable based on your build, if you do it your own way.