Miniature, portable build of Wurlitzer's elusive keyboard teaching tool.
To make the experience fit your profile, pick a username and tell us what interests you.
We found and based on your interests.
The face plate, chassis, and firmware are just about done. Here's what that looks like:
(All photos taken with the original face plate, and before finishing the wood)
I have learned a ton since my last update, but things are moving in the right direction. Here's what's happened:
In my previous log, I mentioned that I'd be laser cutting a chassis for my hardware. However, COVID-19 has temporarily eliminated my laser access, so I am going to trying to make do with the 3D Printer I have at home (an Ender 3 Pro). Rather than cut holes into a sheet of acrylic, I'm going to print flat slabs of ABS with holes baked in. And since I'm using OpenSCAD, I can programmatically add standoffs and such at no cost. This will save me some glue/screws later on, hopefully. Worst case, if the prints don't work for some reason, I can generate 2D projections of my files and quickly revert to the laser-based plan.
Using the vector graphics that I produced for the face plate, I derived a master DXF file with 5mm circles at all of the locations that I would need LEDs to sit and shine behind it. I added accompanying 3mm circles for M3 screw holes. The screws would be used to keep the light "barrels" attached to the chassis, and also hold a thin back plate parallel to the chassis. This would keep all of the LEDs locked in place.
I broke the master DXF file into 5 segments, so that each could fit on my printer's bed. There are 2 segments for the clef side of the visualizer (top and bottom), and 3 for the keyboard side (left, center, and right). I created 2 SCAD files for each segment: one for the main chassis piece, and one for the back plate. Though I need one SCAD file per printable piece (10 total), I was able to consolidate much of the common code between them. Each file essentially only contains a pointer to the corresponding DXF file with the holes in it, and a list of (X, Y) coordinates for standoffs. This way, if I want to change any parameters of the total build (platform height, standoff circumference, etc), I would only have to change the code in one common file. I also added a master "assembly" SCAD file that dynamically loads all of the individual pieces into one view. This is the only file I kept open with the OpenSCAD GUI, as it would show how any individual change would impact the whole system. The way it's set up, any change to any DXF file automatically propagates all the way down the final assembly. Parameterized CAD FTW. You can see the structure, along with a bit more detail, here. As of the time of this post, the only files included are for the clef side of the visualizer.
Here are some renders (again, clef side only):
The yellow and blue pieces represent the top and bottom of the chassis, respectively. The green and red represent the accompanying back plates. The slits are to allow the leads of the LEDs to poke through. The lip of the bulbs get sandwiched between the front and back chassis pieces (between yellow and green for example. The orange piece is the "barrel".
Here are some shots of a small test print with bulbs and screws in place:
I've done a bad job logging, but it's never too late to start.
I'm breaking this project down into four components:
Here's where I'm at.
Enclosure
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.
Face plate
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.
Hardware
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...
Firmware
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:
I'll be starting to push source files to the linked github repo starting today!
Create an account to leave a comment. Already have an account? Log In.
Hi Mike! Thanks for reaching out. I added a first build log that should hopefully answer your question. I'm running an ESP-32 as a BLE-MIDI peripheral. For the microphone example, I could totally do the pitch detection on a laptop, and pipe the MIDI wirelessly to the display : ).
I'm debating whether or not to add USB-MIDI (or even plain old 5-pin MIDI) to increase compatibility. Scope creep!
Become a member to follow this project and never miss any updates
This is awesome! How are you planning to get data to the display? I could see it being a MIDI device with the added option of recognizing pitches from a microphone (although to me that one seems like a difficult coding problem).