2025-10-23
TL;DR: I redesigned the mechanical supports for the system around two parallel wooden boards that run the length of the piano. This arrangement provides more stiffness in the vertical direction than my previous all-plastic solution while being cheaper and simpler than an aluminum extrusion structure.
For the solenoids to press the piano keys, they need to push against a rigid support structure. In designs that embed the solenoids in the body of the instrument, this is already mostly solved, but over-the-keyboard designs generally need to provide their own support. My approach until now had been a collection of fully 3D-printed platforms that rest on the narrow bed in front of the keys and the wall behind them, which in the case of my upright is at an angle rather than vertical. This arrangement does support the solenoids at rest, but it doesn’t constrain the dynamic forces of the solenoids and is prone to sliding and jumping. I also don’t think the design would generalize well to other pianos, for what that’s worth.
One area where the printed design did alright was rigidity. I noticed that other over-the-keyboard designs typically use aluminum extrusion, which has several advantages for this kind of project, but they tend to flex under dynamic load because they’re only supported on each of the far ends of the keyboard. It might be enough to drop a few supporting members along the keyboard in front of the keys, but this still probably wouldn’t fully address the flexing issue. This problem is more or less equivalent to building a bridge, and my small amount of mechanical engineering knowledge leads me to believe that a simple way to increase rigidity here is to increase the area moment of inertia. That’s a fancy way of stating the common intuition that, for example, a piece of cardboard is easy to fold in one axis but hard to fold in the perpendicular axis. The more material you can place far away from the center of rotation, the better. That’s why I-beams are so popular for large construction projects.
I considered using aluminum extrusion for my design as well, but after doing a little math and looking at the cost, I decided to use wood instead. I just so happened to have two eight-foot lengths of 1x4 pine in the shed, so I cut them to length and laid them parallel to each other across the keyboard. Then I designed and printed some support parts to hold it all together and raise the boards to the right height above the keys. The strength and rigidity has exceeded my expectation. I can lean on one of the boards with decent force (maybe 20 pounds?) and the entire piano creaks slightly while the support structure doesn’t budge. This should be more than enough for the task.
I went further and printed a new solenoid platform part. Since my solenoid design attaches with M3 screws, I can remove them from the old platforms and add them to these new ones easily. It’s a little cramped between the boards, but the solenoids all fit nicely, at least for the small part I printed as a test. The platform parts (and everything else that attaches to the boards) also use M3 screws, but it’s easy enough to mark and drill holes in the right spots.
Compared to my previous design, this one is much stronger while adding essentially zero cost. I already had the wood on hand, but two untreated boards of this size are easy to come by in my area and probably many others. In principle it would be possible to replace the wood with many smaller printed parts bolted together, but I think the wood adds some class and character to the project. Maybe when I’m further along I’ll try to varnish it to look like the piano.
This wooden design has the disadvantage that it’s no longer possible to fit the circuit boards to fit on the same platform as the solenoids. I haven’t worked out exactly how they’re going to fit in, but I think the best way would be to print a similar part that attaches to the top of the “bridge” and is symmetrical to the platforms below. The circuit boards would then probably rest on top, with the magnet wires running down through slots left in the “roofs” of each circuit platform. USB cables and hubs for power and data could also run along the keyboard at this level. Printing the top and bottom parts in two pieces might make it easier to remove them without having to also remove several other modules, but that raises other questions about how the magnet wires connect to the boards, which I’ve gone back and forth on for a while.
I also have a new idea for arranging the modules with respect to the keys themselves. Piano keys form a regular pattern, but there are annoying “extra” keys on both ends. I’ve struggled to come up with a pleasing way to allocate these keys into modules without introducing unnecessary complexity or waste. Ideally there would be as few unique parts as possible, and in particular it’s valuable if the circuit boards are all the same, even if a few parts of the board are unpopulated in certain cases. My attempts so far have mostly split the 88 keys into 8 or 11 modules of equal size, but this forces the platforms to have boundaries between black and white keys, which means they can’t meet at a flat interface. This complicates the CAD and printing. Recently I realized that I should leave at least three extra PWM pins for the pedals (a topic for much later), which adds more difficulty.
My new idea feels almost too boring to mention, but I’m mildly proud of it anyway. If I build a board that can support 12 keys, then each one can cover a single octave. But—and this is the “insight”—instead of starting the octaves on C, start them on F. This leaves you with six octaves from F1 to E7 covering 72 keys. The nice part is that there are exactly 8 keys remaining on both ends, which is much better in my opinion than having 7 octaves all starting on C with 3 and 1 keys remaining, respectively. Add two more modules to cover the extra groups of 8, which we can consider as special cases for printing but using the same circuit boards, and we still have four PWM drivers left over on both ends for whatever we need, like pedals. And at every step, the platform interfaces have all been between white keys only, which means easy flat edges everywhere.
Next time around I’ll try to implement this idea, cut some new circuit boards, and try to play some minimal music. I’ve been saying I’d get to that point for months now, but maybe next time it’ll actually happen. Fortunately I can “hide” the shipping times for new parts orders in the interim period and have them all ready to go when I come back to this project.