Transcribing Piano Rolls with Python

Piano Roll


Perforated rolls of paper, called piano rolls, are used to input songs into player pianos. The image above was taken from a YouTube video showing a player piano playing a Gershwin tune called Limehouse Nights. There’s no published sheet music for the song, so [Zulko] decided to use Python to transcribe it.

First off the video was downloaded from YouTube. This video was processed with MoviePy library to create a single image plotting the notes. Using a Fourier Transform, the horizontal spacing between notes was found. This allowed the image to be reduced so that one pixel corresponded with one key.

With that done, each column could be assigned to a specific note on the piano. That takes care of the pitches, but the note duration requires more processing. The Fourier Transform is applied again to determine the length of a quarter note. With this known, the notes can be quantized, and a note duration can be applied to each.

Once the duration and notes are known, it’s time to export sheet music. LilyPond, an open source language for music notation, was used. This converts ASCII text into a sheet music PDF. The final result is a playable score of the piece, which you can watch after the break.

Continue reading “Transcribing Piano Rolls with Python”

Piano Repurposed as a Resonant Synth Speaker


[Richard] recently rediscovered some files from a hack he did back in 2004. He was experimenting with exciting piano strings via electromagnetic fields. The idea shares some elements with the self tuning piano we saw back in 2012. Piano strings, much like guitar strings, are made of steel alloys. This means they create electricity when vibrated in a magnetic field. This is the basic principle upon which electric guitar pickups are built. The idea also works in reverse. The strings will vibrate in response to a modulated electromagnetic field. Anyone who has seen an E-bow knows how this can be applied to the guitar. What about the piano?

[Richard] started with the Casio CZ-101, a classic synth in its own right. The Casio’s output was run through a Peavy 100 watt amplifier. The amplified output was then used to drive custom coils mounted on a piano. The coils had to be custom wound to ensure they would be compatible with the 4 – 8 ohm impedance expected by the amplifier. [Richard] ended up winding the coils to 28 ohms. Six of these coils in parallel put him just over the 4 ohm mark. The coils effectively turned the piano into a giant speaker for the synth. In [Richard’s] write-up (word doc link) he mentions that the strings basically act as a giant comb filter, each resonating strongly in response to frequencies in its harmonic series.

The results are rather interesting. The slow attack of the magnetic fields coupled with the synth’s patch results in a surprising variety of sound. The three examples on [Richard’s] blog vary from sounding like a power chord on a guitar to something we’d expect to find in an early horror movie. We would love to see this idea expanded upon. More efficient coils, and more coils in general would add to the effect. The coils on various string groups could also be switched in and out of the system using MIDI control, allowing for even more flexibility. Continue reading “Piano Repurposed as a Resonant Synth Speaker”

LED-Guided Piano Instruction


[Kay Choe] can’t play the piano. Rather, he couldn’t, until he converted his keyboard to include LED-guided instruction. [Kay] is a microbial engineering graduate student, and the last thing a grad student can afford is private music lessons. With $70 in components and a cell phone, however, he may have found a temporary alternative.

The build works like a slimmed-down, real-world Guitar Hero, lighting up each note in turn. We’ve seen a project like this before, with the LEDs mounted above the keys. [Kay]’s design, however, is much easier to interpret. He embedded the LEDs directly into the keys, including ones above each black key to indicate the sharps/flats. An Android app takes a MIDI file of your choice and parses the data, sending the resulting bits into an IOIO board via USB OTG. A collection of shift registers then drives the LEDs.

For a complete novice, [Kay] seems to benefit from these lights. We are unsure whether the LEDs give any indication of which note to anticipate, however, as it seems he is pressing the keys after each one lights up. Take a look at his video demonstration below and help us speculate as to what the red lights signify. If you’re an electronics savant who wants to make music without practicing a day in your life, we recommend that you check out [Vladimir’s] Robot Guitar.

Continue reading “LED-Guided Piano Instruction”

Hackaday Links: September 22, 2013


First we start with some protection… for your USB charged devices. Here’s a USB Condom which acts as a pass-through for the power rails but not the data lines. This prevents untrusted charger security exploits. [Thanks Markus]

[OutKastz] seems to think he’s uncovered a price matching conspiracy at Best Buy. His post references an HDTV video wall he has built. But he also discovered that there are two different version of the same television sold as the same SKU. His theory is that this prevents the big box from matching prices on half of their inventory.

When you’re in need of some breadboarding action with your Raspberry Pi and want to make it as painless as possible you need to build your own Pi Cobbler. This is the diy version of an Adafruit product, built using a couple of pin headers, stripboard, and an IDE cable.

Speaking of Adafruit, did you see Ladyada’s teardown of an ICEdot crash sensor?

[Phineas] is showing off a really really small hexacopter. Check out the maiden flight, as well as first indoor and first outdoor tests.

Perhaps this coded entry system will inspire a future project for you. It uses piezo elements to enter a code which unlocks the back door to the company. The glass door already had a series of large dots painted on it. This turns out to be a nice interface for a four button code system.

Many projects use a Raspberry Pi as a web server. But there is more than just one flavor available. [Jeremy Morgan] performed a variety of Pi server benchmarks using Nginx, Monkey, Lighttpd, and Apache. [Thanks Walter]

Can an old TV antenna reflector be used to boost the range of a WiFi dongle? We’re a bit skeptical. Let us know what you think in the comments.

And finally, we do wish there was more information on this upright piano used to play Doom [Thanks Itay].


Touch control for every key on the keyboard


Of all the musical instruments out there, the keyboard is among the worst for changing the pitch and timbre of individual notes. Wind and stringed instruments can do this easily in the hands of a skilled player, but outside the wheel and joystick controls of a few electronic keyboards, tickling the ivories means the only thing you can really change about how something sounds is the volume.

TouchKeys wants to put an end to this severe lack of dynamics available on keyboard instruments. Basically, it turns every single key on a keyboard into a multi-touch sensor, allowing any keyboardist to change the pitch, filter, timbre, or any other parameter of their instrument simply by moving their finger around on a key.

TouchKeys works by overlaying all the keys on a keyboard with circuit boards that plug into a module hidden under the hood. These boards are studded with capacitive sensing points, allowing a computer to recognize where the player is touching each key, and modifying filters or volume for each key independently.

The TouchKeys Kickstarter is offering a kit to equip a 25-key keyboard with these sensors for about $550. A hefty price tag, but hopefully we’ll see this tech in real production keyboards in the future.

Quick and dirty touch-sensitive keyboard project


You don’t have to have high-quality parts to play around with electronics and here’s a great example. [Vishal] used junk to play around with CapSense, the touch sensitive Arduino library. What he ended up with is this touch-based piano keyboard.

We’ve featured the CapSense library in the past, but even that example uses a very meticulously crafted test rig of foil tape, protoboard, and some resistors. If you still haven’t given it a try follow this example of using aluminum foil, electrical tape, and a cardboard box.

[Vishal] just sandwiched the end of jumper wire between two pieces of foil to make each ‘key’. We believe the other end of the wire is soldered to the bias resistors where they connect to a couple of pin headers. The headers were hot-glued in place through holes in the bottom of the box, making the entire rig simple to plug into the Arduino board driving it. After adding in a small speaker and flashing the code he’s finished. It certainly makes for a short afternoon project which you won’t feel bad about taking apart later since you didn’t sink a ton of time or resources into the build.

Camera-based touchscreen input via an FPGA


[Chonggang Li] wrote in to share a link to the final project he and [Ran Hu] built for their embedded systems class. It’s called Piano Hero and uses an FPGA to implement a camera-based touch screen system.

All of the hardware used in the project is shown above. The monitor acts as the keyboard, using an image produced by the FPGA board to mark the locations of each virtual key. It uses a regular VGA monitor so they needed to find some way to monitor touch inputs. The solution uses a camera mounted above the screen at an obtuse angle. That is to say, the screen is tilted back just a bit which allows the images on it to be seen by the camera. The FPGA board processes the incoming image, registering a key press when your finger passes between the monitor and the camera. This technique limits the input to just a single row of keys.

This should be much simpler than using a CCD scanner sensor, but that one can track two-dimensions of touch input.

Continue reading “Camera-based touchscreen input via an FPGA”