IMSLP is one of the greatest things to happen in the classical music world in recent memory. For those who don't know, IMSLP.org is an online library of any and all sheet music that is no longer under copyright protection. You can find pretty much anything written by Beethoven, Bach, et al up until early 20th century stuff. I personally have expanded my repertoire to include pretty much any common-practice period piece I could get my hands on while also creating a bit of a storage problem for all of my newly-printed scores (many of which I play once or twice and then move on to another piece). I've been scheming for some time to find a digital solution in the form of an electronic music stand. As it turns out, there are a number of ways to reach this common goal now (including several sheet music reading apps for iPad and Android), and this is but one of them.

With an extremely simple hardware setup and a few software tweaks to the pi, I've found an solution that I am very satisfied to use. Beyond the "music stand" capabilities of this setup, I have also set up (and continue to work on) a composition sketching environment. In it's most current version it's only real ability is to sketch scores by hand using a standard stylus, however I am attempting to develop handwriting recognition into it.

Current features:

  • Display sheet music using a modified version of the program Xournal, which allows for PDF annotation and drawing
  • Digital library management using Calibre
  • Composition sketchbook (also using Xournal)
  • Ability to download scores directly from IMSLP onto Raspberry Pi for immediate use

Planned features:

  • Handwriting (note) recognition, playback, and MIDI/Music-Xml export
  • On-screen metronome
  • Mounting solution for accessibility in a variety of environments
  • Big buttons in corners for page turning
  • Option for hardware device (such as a foot pedal) for page turning



  • Raspberry Pi B+
  • Dell E2014T Touch Screen Monitor (note: I chose this monitor so I could have two full-size pages up at once. There are many other suitable touch screen monitors out there, many of which are actually pretty light-weight and portable)
  • HDMI cable
  • Stylus (optional, but even the super cheap ones work great)
  • USB keyboard for initial setup


  • Raspbian OS
  • Calibre
  • Xournal (version 0.4.8 has the features needed for this to work. must be downloaded and compiled from source)
  • tightvncserver (allows remote desktop session from your computer)
  • xinput_calibrator-0.7.5
  • Other suggestions: Geany (IDE), raspberry-ui-mods (latest version of desktop UI), epiphany browser (better internet browser), some sort of on-screen keyboard

Step 1: Hardware and OS Setup

By far the easiest step. I used a Raspberry Pi B+ and a Dell E2014T monitor. At the time when I was ordering the parts, the Pi2 was not yet released, but I would imagine one could just as easily use that with the added benefit of faster document loading. Otherwise, I think it has to be the B+ because of the available connectors.

The Dell monitor seemed pretty much perfect for me. I've seen many digital music stands that only put up one page at a time, but I knew for certain I wanted to have a 2-page display. Of course, the Dell monitor is much bulkier than some other options. As a result, I feel quite comfortable using it in my home studio and even putting it on top of my piano, but I wouldn't necessarily haul it to a gig. Whichever monitor you choose, the steps to get it working should be the same.

First you need to install Raspbian. It's included in the NOOBs package. If, like me, your Pi came with a flash card that already had NOOBs on it, you can just put in the card and get going. If not, you will need to find it online and follow the instructions on getting it set up properly. You will need a USB keyboard to get things set up, which you can simply plug into one of the ports on the pi. There should also be a USB cable from the monitor you can plug into the pi. This will be necessary later for touch-screen capabilities.

I will not describe here how to set up Raspbian. If you have any trouble, there are numerous online resources on the topic. When given the option, you will want to make sure you tell it to always boot into the desktop.

Once you've successfully installed the OS, we will need to get our hands dirty with aptitude.

NOTE: At this point, you will be able to test the touch screen. Mine worked out of the box, but the calibration was way off. If yours is a little off as well, you can either plug in a mouse for the next few steps or jump to the step about xinput_calibrator-0.7.5.

<p>looking forward to making this - but are there any plans for adding a pedal for turning pages</p>
<p>Congratulations!</p><p>About blank music staves, there is a very old ticket here:</p><p><a href="https://sourceforge.net/p/xournal/feature-requests/52/" rel="nofollow">https://sourceforge.net/p/xournal/feature-requests...</a></p><p>Closing this feature request would be great!</p>
<p>Thanks for the info. Added a $6 pedal switch to wire to GPIO pins for page turning. </p><p>One question: I'm running a Pi 2, which should be faster than your Pi B+, but have major issues with PDF render speed &mdash; any IMSLP over ~1.5MB takes ages to deal with page turns. This is ameliorated a bit by unselecting the &quot;Progressive Backgrounds&quot; Xournal option, but it's still nowhere near instant. Is this an issue for you? Do you have suggestions for speeding up page load times? Thanks!</p>
<p>Great looking project! </p><p>I've had similar issues. One thing I do to make sure it's not such an issue is to avoid loading &quot;collections&quot; of sheet music. The more pages in the document, the slower it seems to react. I have noticed an improvement if I go through the document once, one page at a time, before playing. I remember reading at one point that the source code can be edited to improve page caching. I haven't tried this myself, but if you're good with code, it might be worth looking into.</p>
<p>great work</p><p>after apt-get cache glib</p><p>a list appears</p><p>which package to download????????</p>
<p>What step did you do right before this? I don't remember exactly which one to download, but if you are installing it in response to an error from one of the configuration files, look for the one closest to what is listed in the error. Usually the right library ends with '-dev'. I suspect it may be something like 'glib2-dev'.</p>
<p>quite cool :)</p>

About This Instructable




Bio: Composer, conductor, teacher and total geek.
More by afryklund:2x4 Electric Violin Digital Music Stand: Raspberry Pi + Touchscreen Modify your custom Lightsaber with lights and sound 
Add instructable to: