MIDI Step Interface

by kilo_mx in Circuits > Audio

15403 Views, 201 Favorites, 0 Comments

MIDI Step Interface

IMG-20180921-WA0051.jpg
Feetstay by Kilo

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

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

​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.

Designing and Prototyping the Structure

20180618_125450.jpg
IMG-20180615-WA0005.jpg
DSC_1176.jpg
DSC_1177.jpg
DSC_1178.jpg
1.jpg
DSC_1180.jpg
IMG-20180619-WA0000.jpg
IMG-20180619-WA0001.jpg
DSC_1185.jpg
DSC_1186.jpg
IMG-20180619-WA0005.jpg
IMG-20180619-WA0002.jpg
IMG-20180620-WA0005.jpg
DSC_1198.jpg
DSC_1193.jpg
DSC_1200.jpg
DSC_1202.jpg
DSC_1204.jpg
DSC_1205.jpg
DSC_1208.jpg
DSC_1217.jpg
DSC_1214.jpg
DSC_1228.jpg
DSC_1216.jpg
IMG-20180620-WA0003.jpg
DSC_1253.jpg
DSC_1254.jpg
DSC_1258.jpg
DSC_1259.jpg
DSC_1263.jpg

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.

Stepping Surface

DSC_1173.jpg
DSC_1231.jpg
DSC_1220.jpg
DSC_1221.jpg
DSC_1222.jpg
DSC_1223.jpg
DSC_1234.jpg
DSC_1233.jpg
IMG-20180622-WA0012.jpg
DSC_1170.jpg
IMG-20180619-WA0004.jpg
DSC_1240.jpg
IMG-20180621-WA0000.jpg
DSC_1225.jpg
DSC_1237.jpg
DSC_1238.jpg
DSC_1242.jpg
IMG-20180622-WA0013.jpg
IMG-20180622-WA0009.jpg
IMG-20180709-WA0000.jpg

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

Installing Neopixel Strips

20180608_172456.jpg
20180628_133103.jpg
IMG-20180628-WA0009.jpeg
IMG-20180806-WA0003.jpg
20180717_183708.jpg
20180724_200330.jpg
20180724_201201.jpg
DSC_1360.jpg
DSC_1361.jpg
DSC_1363.jpg
DSC_1365.jpg
DSC_1366.jpg
DSC_1367.jpg
DSC_1369.jpg
DSC_1370.jpg
DSC_1376.jpg
DSC_1377.jpg
DSC_1399.jpg
DSC_1401.jpg
DSC_1402.jpg

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.

Installing the Switch

DSC_1305.JPG
DSC_1372.jpg
DSC_1373.jpg
DSC_1374.jpg
DSC_1375.jpg
DSC_1400.jpg
DSC_1403.jpg
DSC_1397.jpg
DSC_1406.jpg
MIDI Step Interface (Probando switch con neopixeles)
MIDI Step Interface (Probando sensibilidad de switches)

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.

Soldering Connector and Cables

DSC_1411.jpg
IMG-20180806-WA0002.jpg
DSC_1416.jpg
DSC_1418.jpg
DSC_1420.jpg
DSC_1421.jpg
DSC_1422.jpg
DSC_1424.jpg
DSC_1425.jpg
DSC_1426.jpg
DSC_1429.jpg
DSC_1431.jpg
DSC_1435.jpg
20180822_232749.jpg
IMG-20180919-WA0000.jpg
IMG-20180919-WA0001.jpg

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.

Downloads

Preparing the Control Panel

20180824_135013.jpg
DSC_1447.jpg
DSC_1449.jpg

What's inside the control panel:

  • XLR female connectors
  • Power supply
  • LattePanda

Soldering Control Circuit and LattePanda Connections

DSC_1472.jpg
DSC_1474.jpg
DSC_1473.jpg
DSC_1476.jpg
DSC_1479.jpg
DSC_1481.jpg
DSC_1482.jpg
DSC_1494.jpg
DSC_1483.jpg
DSC_1486.jpg
DSC_1493.jpg
DSC_1488.jpg
DSC_1490.jpg
PCB ilustracion.png
520bd293-3839-4c9d-abe1-6a659ebbef3d.jpg
8d2c68fd-d982-42d3-af82-e201a2a153fe.jpg

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.

Downloads

Connecting Pads to the Control Panel and Power Supply

DSC_1508.JPG
20180831_211805.jpg
9943e40c-777e-4506-bd63-9c85384d2322.jpg
c80b8652-6d4f-44df-bd3b-d90e246c5fe0.jpg
d4eb9d90-fd18-4e12-80d2-ed0206ede339.jpg
dc9bc214-d066-4b41-9573-42b3e58b0d9f.jpg
DSC_1521.jpg
DSC_1522.jpg
e38d8e54-aa14-44f3-97c9-1f12e1a2f883.jpg
ff143e1d-8cf3-4121-bac1-6f3ab57afca0.jpg
799a5e5a-01de-4f4b-9015-9db76b7c4785.jpg
MIDI Step Interface (Conectándolo por primera vez!)

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

Programming

20180918_150007.jpg
IMG_20180911_100403.JPG
1c91894a-4d4a-4611-8f4d-433831420bc0.jpg
20180831_230133.jpg
76e86271-c57d-4b7f-9466-9603b67796b3.jpg
DSC_1537.JPG
MIDI Step Interface (Probando patch en Pure Data)
MIDI Step Interface (Prueba de samples)
MIDI Step Interface (Ensayando coreografía)

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

Downloads

Manufacturing a Structure That Protects the Platform

DSC_1545.JPG
DSC_1526.JPG
DSC_1529.JPG
DSC_1535.JPG
424fb9e7-c0eb-4e65-a573-259df90c736a.jpg
d400cebd-68fe-496d-a4cc-73d2b368365e.jpg
DSC_1570.JPG
IMG-20180922-WA0000.jpg
IMG-20180921-WA0052.jpg
IMG-20180921-WA0051.jpg
MIDI Step Interface (Pruebas en campo)

The main purpose of this structure is:

Keeping the hexagons united

Protecting the hexagons from weather