Introduction: MIDI Step Interface
Spanish version here.
In this instructable we'll show you how to make a light and sound interface that can be used to play "Simon Says" and as a MIDI interface. Both modes will be played with your feet.
Background
The project was born because we wanted to make an interactive installation where almost any kind of audience could make use of it no matter their age. It was developed for a mall, as one of its attractions.
The first reference that we got from the client was this version of Simon Says that could be played with people's feet. We basically had to replicate this idea.
We researched similar game/platforms, and we found a lot of dance floors, most of them work with light but not sound. We also found big pianos for feet so we thought that something interesting could come out from adding the musical instrument functionality. For the love of music!
We also considered the shape of the platform. Almost every dance floor that we found were rectangular, with square pads. There is one exception that has circular pads. We wanted to give a different feeling to our platform while keeping the modular aspect of squares, that's why we decided to use hexagons.
While searching for projects with hexagonal shapes, we found this one. The idea of making hexagonal shapes was exciting to us... we didn't had an idea of what was coming.
We had a clearer goal:
- Simon Says game
- Musical instrument
- Hexagonal pads
Step 1: Materials
For each Pad:
1.5) Meter of Neopixel strip
1) Industrial limit switch
1) Opaline Acrylique 1cm thickness
1) PVC hexagon
1) Metal profile hexagon structure
------------------------
General:
1) LattePanda
1) MUX
1) 5VDC 50A Power Source
1) Industrial Control Panel
1) Perma-Proto
1) LattePanda case
1) Power Outlet 5V @2.5a
10) Resistor 10k ohms
5) Screw terminal
1) Speaker
Plastic securing belts
Step 2: Choosing a Control Board
Arduino is the development board that we have used for a long time. It has never failed, nevertheless we need to check all the requirements for this project:
- Light: High intensity brightness and complex patterns, we are using Neopixels
- Pads: Pads should respond to the footstep of the user. We decided to go with switches.
- Game: Will be processed by a microcontroller.
- Sound: At the beginning we thought of designing our own sounds with PureData, therefore we needed a computer than could run the program.
We'll go deeper into these subjects as we go along, for now, the part that we need to solve is the sound.
We considered using PureData because even when you can generate sound with Arduino it can get complicated and limited at some point, meanwhile with PD we can make synthesis or a patch to trigger sounds via MIDI. We needed a computer to run PD and Arduino to control everything else.
We researched about the options we could get and we really liked the possibilities with the LattePanda board: a computer with Windows 10 and a integrated Arduino. Bingo!
LattePanda has a GPIO port where you can find the Arduino pins mapped, through them we could get control of the pad's switches and neopixels.
Programming the game would also take place in the Arduino board that's incorporated, that by the way, it's an Arduino Leonardo.
LattePanda has a 3.5 jack from where we'll get sound.
There are lots of boards that we could have used, maybe you're asking yourself why we didn't used a Raspberry Pi. Here is why:
- Adafruit suggest not controlling Neopixels with RaspberryPie because of clock issues. This is a problem that Arduino doesn't have.
- The programming of the GPIO pins in the RaspberryPie has to be done through Python. We aren't familiarized with the programming language.
- Even when we could combine an Arduino and a RaspberryPie, we wanted to solve everything with just one board.
- RaspberryPie runs a special version of Windows 10 (IoT Core).
LattePanda is more expensive and it has a much smaller community of developers than other boards. If you aren't sure of using a LattePanda you can also use other boards (Raspy, UDOO, BeagleBone, etc...), we'll be happy to know your results.
Step 3: Designing and Prototyping the Structure
Points that we considered to desig the structure:
- Bear the weight of an adult
- Suitable for outdoors
- Keep electronics safe
We decided to use metallic profiles because of the strength, low cost and availability of the material.
The structure consist of two hexagons joined by six short poles:
For each hexagon we cut 12 pieces of metal with a grinder same for the poles and then we welded everything.
The space that's left between the two hexagons, helps to protect from water or anything that can cause damage to the electronics and also for routing the cables.
Step 4: Stepping Surface
Once we had the metallic structure we had to cover two points:
- Surface that keeps safe the electronics
- Surface where the user will step on
For the surface that protects the electronics and is inside of the hexagon we decided to use pvc material, it's not expensive, is easy to work with and it can resist water to some degree.
For the surface that the users step on we chose acrylique opalin because of it's interaction with light and with a thickness of 1cm so that it could bear the weight of an adult.
We cut everything with a laser machine it was fast and not expensive. You can find the files attached
Step 5: Installing Neopixel Strips
We chose the waterproof strips with 96 neopixels per meter. Adafruit has a detailed guide about neopixels .
We...
- Soldered a 470 ohm resistor at the start of every strip
- Installed the strip at the inner edge of the Hexagon
- Used velcro to fix the strips in their place
- Soldered an extension to the strip that goes out from the pvc surface.
Step 6: Installing the Switch
We chose an industrial mechanical switch to activate the pads. Due to the flexibility of the acrylique and since the switch is placed in the center of the hexagon through the pvc sheet, the amount of pressure that the switch needs to be activated can be achieved when the user steps on the acrylique surface. We calibrated how high or low the switches needed to be with washers.
Step 7: Soldering Connector and Cables
Each hexagon has a switch and a LED strip with a total of 5 cables. These cables have to be connected to a control circuit where everything will be concentrated.
We used two XLR connectors; one for the neopixels (3 cables ) and the other one for the switch (2 cables). The ideal scenario would be just one connector but we couldn't afford it, in case you can, it will make things much easier.
Attachments
Step 8: Preparing the Control Panel
What's inside the control panel:
- XLR female connectors
- Power supply
- LattePanda
Step 9: Soldering Control Circuit and LattePanda Connections
The switches are connected to a 16 input multiplexer
Neopixels are connected directly to the Arduino pins.
For the LattePanda we used the case designed by the brand.
You can find the design of the circuit attached.
Step 10: Connecting Pads to the Control Panel and Power Supply
Fixing the XLR connector to the panel
- Labeling the connectors
· Soldering the XLR cables to screw connectors
· Fixing the power source, control circuit and LattePanda
· Organizing cables
· Connecting the pad's cables to the control panel
Attachments
Step 11: Programming
For controlling MIDI we found this information very useful
We used this library for Arduino
We used this patch for PureData
For music samples there are several free alternatives in the web
For the Neopixels control we used the FastLED library
For the" Simon Says" game this instructable was really useful
Step 12: Manufacturing a Structure That Protects the Platform
The main purpose of this structure is:
Keeping the hexagons united
Protecting the hexagons from weather