I've done a bad job logging, but it's never too late to start.
I'm breaking this project down into four components:
- Enclosure - the case.
- Face plate - the front of the visualizer, with the lights and graphics.
- Hardware - the electronics inside, and the bits that hold them in place.
- Firmware - the code that drives the visualizer.
Here's where I'm at.
I've got nothing here, and I will likely regret not thinking about this harder now. Though the original design uses a metal enclosure, I would prefer to make something nice out of wood. I'm going for vintage church-hall-bingo-board vibes. I don't think I could get it to the level of polish I'm looking for with my current skill set. I will reach out for help with this soon.
The face plate is done, save for a coat or two of clear gloss. I'm very happy with how it turned out.
I ripped the graphics by pulling some photos from this old auction and using Potrace to vectorize the black bits. I did some pre-processing in Gimp (removing background and toning down colors to assist Potrace) and some final SVG cleanup using Inkscape. They're still not perfect, but I kinda like them that way. Gives a vaguely "hand-drawn" impression.
I'll post more detailed assembly instructions when I'm finished, but at a high level, you're looking at a translucent white sheet of acrylic, stenciled and spray-painted orange, and then decorated with vinyl decals cut on a Cricut Maker.
Each key on keyboard and note on the staff will have an RGB LED mounted behind it. For each of the two sections, I will be laser-cutting a "chassis" out of clear acrylic with precisely-placed holes for each of the 5mm bulbs. I will be surrounding each bulb with a 3D printed barrel to prevent leakage. The barrels will also collectively act as a standoff between the faceplate and the chassis. By pressing the end of each barrel against the face plate, I will ensure that the light will shine through as a well-defined circle. I have not yet figured out how I will attach the chassis to the face plate. It may make more sense to attach it elsewhere in the enclosure. TBD.
Here are some photos of my chassis prototype. I have only mounted one LED so far, and I used a thin piece of cardboard in place of the acrylic:
The LEDs are driven by an ESP-32, which is acting as a BLE-MIDI peripheral to maximize compatibility with keyboards/other musical devices. And that brings us to...
I'm using the Arduino core for the ESP-32. I found some great libraries that have made my life much, much easier. The basic functionality of notes -> lights is already working well. I will get the .ino file hosted soon. Here are the libraries I am using:
- Makuna/NeoPixelBus - for driving the WS2812's from the ESP-32.
- lathoub/Arduino-BLE-MIDI - for getting the ESP-32 to act as a MIDI peripheral.
I'll be starting to push source files to the linked github repo starting today!