Hyperedge- . IoT, Embedded Systems, Artificial Intelligence,

A xylophone is, in addition to being one of only two known English words that start with the letter X, an instrument that most of us haven’t touched since we were toddlers. But xylophones produce a very pleasing sound and their construction is about as simple as an instrument gets. That makes them perfect for DIY projects by those of us who aren’t master craftsmen, and is likely why Rachad El Moutaouaffiq chose the instrument for this Auto Xylophone project.

As the name implies, this is a xylophone that plays itself. Not only does that let it create beautiful melodies that few of us are capable of hammering out with our clumsy human hands, it can actually exceed the ability of even an accomplished xylophonist. It can strike up to four bars simultaneously, allowing for richer and more complex music than a person could play with only two hands. It works with standard MIDI files and therefore can play a huge range of existing MIDI music or anything new that a musician creates in real time or through other means — such as AI generation that El Moutaouaffiq plans to experiment with. 

Hyperedge- . IoT, Embedded Systems, Artificial Intelligence,

Of course, an Arduino is the key to the Auto Xylophone’s operation. Instead of traditional hammers or mallets, every bar is struck by its own solenoid that drives a small nail. Solenoids rely on electromagnets and El Moutaouaffiq wound all of their coils by hand. Hairless MIDI transfers MIDI signals over serial to an Arduino Mega 2560 board that activates the solenoids through TIP-120 NPN transistors. Those transistors are necessary because the current needed to drive the solenoid electromagnets is too high for the Arduino I/O pins. Power comes from a benchtop power supply and El Moutaouaffiq constructed the xylophone’s frame using MDF.

At this time, the Auto Xylophone only plays premade MIDI files, but we’re excited to see what kind of AI music generation El Moutaouaffiq comes up with. 


Read more about this on: Arduino Blog