Raspberry Pi is this church’s new organist
A few months ago, Eugene Olsen’s church lost its organist when they moved out of the area, but Eugene noticed that the organ happened to have a MIDI interface. He used a Raspberry Pi 4 and grabbed MIDI files of the hymns, then wrote a custom hymn player in C++.
(Video shot by Kathryn Burgess with the help of Timothy Burgess)
Hardware
- Raspberry Pi 4 Model B
- M.2 NVMe SSD (this made disk I/O “blazing fast” for Eugene)
- Argon ONE M.2 case

Software-wise, a custom-built MIDI sequencer written in C++, and based on cxxmidi library which uses rtmidi and ALSA, runs on 64-bit Raspberry Pi OS.
How does it work?
The organ player is controlled over Wi-Fi by an iPad, and Eugene made the Raspberry Pi into a Wi-Fi access point with the help of this Tom’s Hardware tutorial. A Wi-Fi dongle connects to the church’s Wi-Fi. This way you can download new hymns and updated software without removing the Raspberry Pi from the organ.
The software that allows remote control of the Raspberry Pi from a mobile device is RaspController, which is available for both Android and iOS, and in many languages.

Eugene opened up the organ at church and saw that it has a MIDI interface. He found a USB to MIDI adapter and some MIDI libraries for C++. Luckily, he has been making music with MIDI since the 1990s, so he knew what he was doing. He experimented with some off-the-shelf software MIDI sequencers, but none played the hymns just as he wanted, so, being a professional software engineer, he looked for some libraries and wrote his own sequencer. Eugene settled on the cxxmidi library because it’s written in a way that can be easily extended. He wrote a few small extensions and stitched the library routines together with C++, creating a MIDI sequencer that plays the hymns exactly the way he wants.


Sibelius music notation software takes the written music from the hymn book, then exports the hymns as MIDI files.
Why not find a new human organ player?
Every aspect of the Eugene’s church is volunteer-run, so there aren’t the funds to hire musicians and whatnot. When the organist moved away, Eugene was asked to play the organ for services. However, while he’s a software pro, he is a beginner keyboard player and he found it took him around three to five weeks to learn each hymn to his satisfaction. When he discovered that he’d need to learn three or four new hymns every week, he enlisted Raspberry Pi as the new organist.

17 comments
Baba Ganoush
Please reformulate. It reads now as they (the church) moved out of the area, which is nonesense. Did the organist move out???
Raspberry Pi Staff Helen Lynn
I’m very comfortable that a different writer or copy-editor might refer to a church as “they” rather than “it” — that’s a nice bit of flexibility English allows around referring to organisations and groups of people — but I am cut to the quick that someone would suspect me of using the possessive pronoun “its” and the subject pronoun “they” in place of the same noun in the same sentence.
John A
Yes, I had to read that sentence twice too! While using “they” to refer to a singular is sometimes correct, it would have been clearer to say “..when he (or she) moved out of the city.” Then there would be no ambiguity. But, regardless, this is a cool project.
Dave
Which moved first, the organist or the church? 😉
Raspberry Pi Staff Ashley Whittaker — post author
The egg.
Allen Coons
I didn’t know the egg knew how to play the organ?!
Jenna
Yes, the church moved out. That makes much more sense.
Brian Fitzgerald
Clever. And nice looking case. Is there a .stl file for that somewhere for 3D Printing?
Paul Smith
It’s a commercially available case used for servers and kodi installations. Argon ONE M.2 case
tlennon
That’s not 3d printed. It’s called the Argon One case for raspberry pi 4. It’s magnetically closed so no screws. It makes the top of many “best raspberry pi case” lists. Every once in a while I check for an stl hoping somebody made a copycat. No luck yet
Frank Kersh
Amazing work!
Ian
Nice article, although it does gloss over the finer points. Having scanned more than 209 hymns from a hymn book (plus other forms of liturgical music) and having worked with those in Sibelius, I can attest that there’s a little more to it than what was stated above. And in the real world of church music there are verses dropped from hymns at certain times in the church year, and there’s a need to improvise an introduction before many hymns, all of which requires more work and finesse than this simple description. Still…good work!
Eugene Olsen
Ian, you are right about the finesse, verse selection, and so forth. I left out many super-techy details and in addition, the article was edited for simplicity, and that’s fine with me. I’m sure, as you scanned and edited hymns, you noticed that patterns emerged. I have automated many of those patterns along the way in either Python or C++ and can now scan and edit a hymn usually in less than an hour.
Rodoñfo Bonnin
For a related project, you can check openpipes.org
AJ Wilcox
Very cool! Eugene, please publish your code. I’d love to try this in my ward.
Eugene Olsen
Brother Wilcox,
Currently, my code is very specific to the older Allen Protege-16 organ and is still evolving. The newer Allen organs already have the hymns you are interested in, plus a player, built in. What make and model of organ does your building have?
Philip H
Way to go. That is awesome. At my church, we have the Liahona Kiawa Organ. I use the midi ports to run to and from my laptop. But I would like to make something, that can stay with the organ in case I don’t make it to church.
Comments are closed