Introduction: MIDI-Controlled 88 Key Reed Organ With MIDI-Over-Bluetooth

First off, here's a playlist of videos of it in action. Have a song or MIDI file you want to see in that playlist? Suggest a song or upload your own MIDI file here:


For my high-school senior project, I was going to convert an upright piano to be a MIDI-controlled player piano. However, I by chance ran across a reed organ, and knowing nothing about them became very interested in their sound and history. So I instead converted an Estey Reed organ to be MIDI operated.

First I will explain what a reed organ is and how it works as well as how we will mechanically actuate the keys. Then I will explain the electronics that drive it, and finally I will cover the software that decodes MIDI and triggers the keys accordingly.

Step 1: What's a Reed Organ?

Picture of What's a Reed Organ?

A reed organ, also known as a pump organ, melodeon, or harmonium, is an instrument that uses vibrating brass reeds to produce a sound. It works the exact same way that accordions and harmonicas work, and therefore sounds very much like them.

Like a large pipe organ in a church, most reed organs have a number of stops that change the tone of the sound. Just like a pipe organ has sets of pipes, known as ranks, most reed organs has ranks of reeds that can be turned on and off by changing which stops are turned out. Each rank has a distinctive tone, and so the overall tone and volume of the instrument can be mixed by choosing which ranks are activated.

If you try to convert your own reed organ like I have done here you will probably want to figure out a way for the computer to pull and push each stop. Otherwise you will either have to manually do this during the song, or be stuck with the same tone throughout.

However, the reed organ I have acquired is very distinctive: it has 88 keys, like a modern piano. It is also in an upright piano case, and unless you play it you can't tell it apart visually from an upright piano.

My reed organ has a knob slider on either cheekblock that engages a secondary set of reeds internally. These are the only "stops" of any kind that my organ has. The left slider turns on and off the secondary set of reeds for the lower half of the keyboard's range, and the right slider does the same for the upper half of the keyboard's range. By changing these stops, you can change the way it sounds because the second set of reeds is different from the first: in the bass, they are an octave higher, and in the treble, they are purposely tuned slightly out. Engaging the second sets of reeds makes my reed organ sound very much like an accordion!

Additionally, there are swell flaps (not pictured). These are basically large flaps that can cover or uncover the reeds a varying amount. When the reeds are uncovered, the instrument has a much brighter and louder tone as compared to when the swells are closed. By controlling the air pressure the instrument is running on and the position of the swell flaps, you can change the sound and volume of the instrument quite substantially. My organ has something called an automatic swell, which means that the swell opens automatically as the air pressure being fed to the instrument increases.

Step 2: Overview

Picture of Overview

This is a huge, complex project. Before I get into specifics, I think I should give a general overview of the components that will go into it and what they will do. Each piece will have a dedicated step or steps later on for greater detail.

Look at the above block diagram showing all the components in the control system.

('ll say this many times throughout this instructable: look at the photos/diagrams. They describe things better than words, like below.)

Let's work backwards. The reed organ keys need to physically move. I used solenoids mounted on rails on the front of the organ's action to pull on the keys from below. We're going to use Arduinos to turn on and off all these solenoids, and in order to control solenoids with Arduinos you need a simple MOSFET circuit that turns on and off the high-current/voltage solenoid from the Arduino's low-current/voltage I/O pins. I designed custom PCBs to do this. Each one can control 16 solenoids. The Arduinos will all be running software that decodes the MIDI data (being sent to them via bluetooth) and they will turn on and off the solenoids, and therefore the keys, accordingly.

So to follow the flow of MIDI data, it will go via Bluetooth to the Bluetooth COM port, and then on to the three key-controlling Arduinos, that will turn on and off the correct solenoids which pull on the keys.

Step 3: Bill-of-materials and Cost of This Project

Picture of Bill-of-materials and Cost of This Project

Overall this project turned out costing about as much as I thought it would. Here's a list of everything you will need for this project:

  • Reed organ! I got mine free on Craigslist, as mentioned earlier.
  • Solenoids (ZYE1-0530Z): 95x @ $2.33 = $220
  • 1N4001 Diode: 100x = $15.84
  • IRLZ44N MOSFET 100x = $49.75
  • Arduino Mega 2560 Clone: 3x @ $9.99 = $29.97
  • HC-06 Bluetooth COM port
  • 12V 40A PSU: 2x @ $22.35 = $44.70
  • Custom Solenoid Driver PCB x15 = $
  • 220 Ohm Resistor 100x = $4.79
  • 10K Ohm SIP Resistor 15x = $6.56
  • Aluminium Rail 8' (Home Depot) = $13.50
  • Terminal Block 2-pole 3.5mm 100x = $30.10
  • Dupont wires and connectors (don't feel like listing out every little piece): $18.90

TOTAL COST: $494.30

There are a couple additional costs. First of all, this assumes you already have basic things for prototyping like breadboards, etc. I am also going to add servo control of the stops as well as adding a vacuum motor with an Arduino-controlled speed controller as well as Arduino control of the swell flaps. I'm predicting that this is going to add around $100 in cost to the project. You might also want a hardware MIDI input: I'm using a Bluetooth serial reciever and software called Hairless MIDI which sends MIDI data to a standard serial port. If you opt to add a hardware MIDI port then its probably going to cost either around $15 for a MIDI Arduino shield or similar to build your own.

Step 4: Introduction to the Reed Organ Action

Picture of Introduction to the Reed Organ Action

When you press a key on a reed organ, it lets air move through a specific brass reed that produces the correct note corresponding to that key.

Look at the above image. When the key is pressed, it pushes the dowel in the center down which in turn pushes the pallet (a fancy name for a valve) on the bottom open (the bottom block in the above illustration). Below the action is a partial vacuum produced by the foot bellows, and when this valve is opened air enters from the atmosphere, passes by the reeds that sits flush on the base of the action (the flat piece of wood in the illustration) and exits into the bellows.

Step 5: Remove the Action

The "action" of the reed organ is the keys, reeds, and everything in between, as well as the base that it sits on (which is really a soundboard of sorts). In order to do any work involving the action, we have to remove it.

Typically I wouldn't give you detailed instructions on how to do something like this, because, frankly, if you're attempting this project you should figure out yourself how to simply take the action out. But there are some clever ways that everything goes together to hide screws as much as possible, so I'll give you general directions.

First, take off the back paneling. This lets us access where the front panel is attached to the case. Remove the front panel and the fall board. Now remove the felt-covered key return bumper bar that goes across the front of the keys. Next, remove the two cheek blocks. They are held on by a single screw combined with a peg and hole. This is a tricky setup, and after removing the single screw you can simply pull the cheek blocks straight up.

Now you can detach the various pedals connected to the action, unscrew all the screws mounting it to its base, and remove it. Take care to set it on a flat, empty surface.

Step 6: Mechanical Modifications Part I: Intro to Solenoids!

Picture of Mechanical Modifications Part I: Intro to Solenoids!

We are going to use electromagnetic devices called solenoids to pull on the keys. While solenoids can be a topic in of their own, they are at their core very simple devices. A solenoid consists of a metal bar inside of a coil. When the coil is connected to an electrical source, the metal bar, called the plunger, moves linearly.

Looking at the illustration above will probably illustrate how the solenoids pull on the keys it better than I can in words. One thing to point out is that this illustration is only for the white keys. The black keys are more complicated as they don't extend all the way to the front of the keyboard; we'll get to them later.

I used ZYE1-530Z solenoids, which are 1A@12VDC solenoids. These are very good solenoids in general for this application, and they are very cheap (~$2.15-$2.60 each depending on where you look and the quantity you buy) and readily available online. I ordered a quantity of 95 for $220 and free shipping from an Chinese eBay vendor. This comes out to $2.31 each - not the cheapest, but pretty cheap.

If you don't end up using the ZYE1-530Z solenoids then I've outlined below the process of choosing one.

When choosing a solenoid to use, there are a few things to consider:

  • Type: There are push, pull, and push/pull type solenoid. This simply refers to which end(s) of the solenoid other parts can be attached to. A push type solenoid will have a threaded shaft on the pushing end, a pull type solenoid will have a clevis on the pulling end, and a push/pull type solenoid will have both. For this application, you will want a pull type or push/pull type solenoid as we will be pulling on the keys from below.
  • AC or DC: For this application, we want to use small DC solenoids. AC solenoids are generally used in much larger scale industrial applications.
  • Voltage: For this application, you will probably want to use a solenoid rated at 12V or possibly 24V. Lower voltage solenoids will draw more current and/or not be powerful enough to pull on the keys.
  • Current Draw: You will want to check the datasheet on the solenoid to check for its current rating. The higher current, the more powerful the solenoid will probably be, but the more power it will draw, requiring bigger power supplies. Due to Ohm's law, if you feed the solenoid with a high voltage, it will draw more current; if you feed it with a lower voltage it will draw less current. Without getting too technical, the resistance of the solenoid will stay the same, and when this is the case voltage and current are directly proportional.
  • Actuation Force: This is one of the most important considerations. Generally a solenoid's datasheet will give its force, expressed in Newtons (N) at various strokes, which is the distance to the solenoid's neutral position, often at different power levels. A solenoid datasheet (and often title) will also give you a holding force, also expressed in Newtons. This number is essential to choosing the right solenoid for the application. Below I will show how you can calculate whether a specific solenoid will be able to press the keys on your organ.

Calculating how much force you need to press your organ's keys:

  1. First you will need to measure how much mass is needed to press the keys reasonably quickly on your organ. I used coins to do this - it's an easy, fast, and fairly accurate way of measuring smaller amounts of weight.
  2. Once you have this mass measured, convert it to kilograms (kg).
  3. The solenoids have a force expressed in Newtons, and from the previous step we have a mass in kg that presses the key at a satisfactory level in earth's gravity. Therefore, we can multiply our mass in kg times earth's gravitational constant to get the amount of force that mass is exerting in earth's gravity onto the key: (force in N) = (mass in kilograms needed to press key)(9.8m/s)

Now you know how much force is needed to hold the keys! Go find solenoids that have a holding force greater than the force you calculated. Ideally get them several times the force needed for quick, precise key actuations.

Step 7: Mechanical Modifications Part II: Solenoid Modifications

Picture of Mechanical Modifications Part II: Solenoid Modifications

Solenoids are very loud clicky devices. Of course this isn't going to work for our application. So we're going to modify them so they aren't so loud.

There are two main places in the solenoid that cause the clickiness. You can see these two spots circled in red in the above illustration.

The nut (left red circle in the illustration) clicks against the base of the solenoid upon disengaging. We can easily fix this by removing the nut from the pushing end of the solenoid. It isn't needed as the solenoid plunger is attached to the key which has the fallboard resting across it. This means that the plunger can't go up further anyway.

The solenoid plunger clicks against the base of the solenoid internally upon engaging (right red circle in illustration). We need to put something in between these two parts so that there isn't metal-to-metal contact upon engaging. I used very small pieces of heat shrink tubing on the solenoid shaft. Its tricky to see, but look at the above photo.

With the nuts removed and heat shrink tubing put on, the solenoids just have a gentle thud sound when engaging and no sound when disengaging. Before they had a harsh metallic click that was made worse by the aluminium they were mounted to.

Step 8: Mechanical Modifications Part III: Black Keys!

Picture of Mechanical Modifications Part III: Black Keys!

Unlike the white keys where we can pull on the keys directly from the front, the front of the black keys is (obviously if you've ever seen a piano keyboard) set back from the front of the white keys. Because of this we can't pull on the black keys in the same way we can with the white keys.

My solution was to effectively extend the black keys to the front underneath the white keys. This involves heavy modifications to the organ's keyboard, but once fully assembled again you can't tell that its any different because the extensions are completely hidden underneath the white keys.

I extended the black keys by:

  1. Routing a channel out of the side of each black key. I made a jig to do this quickly and efficiently; it only took around an hour to do all the black keys.
  2. Placing popsicle sticks in the channel I routed out. This popsicle stick has to be positioned so it extends over the front of the key support frame, but not long enough to
  3. Carving material out of each black key's neighboring white keys such that the popsicle stick extensions can fit and move freely between white keys

You can see in the above photo showing a portion of the action that the solenoids are connected to the black keys in much the same way they are to the white keys, just with longer wires. This is because the solenoids are too wide to be placed in a single row. Instead, the black keys have their own row of solenoids underneath the white row key.

Step 9: Mounting the Solenoids

Picture of Mounting the Solenoids

Once you've got the action going with the black key extension modifications, and the solenoids modified so they're not as clicky, you can actually mount them to the action. The keyboard in my case was exactly 48" wide so I used an 8' aluminium L-bracket from Home Depot, cut exactly in half to get two 48" pieces.

One of them was used for the white keys, and one for the black keys. The white key solenoid bar was attached to the underside of the key frame, and the other was attached to the bottom of the base of the action (again, look at the photos - they illustrate these things better than I possibly could using words).

The solenoid have M3 mounting holes, so I bought 200x M3 3mm bolts off eBay for $8. Compared to the $47c each that Aubuchon's wanted, it's a pretty good deal!

I used a jig of sorts on the drill press so that all the holes were the same distance from the edge of the L bracket. I used a drill bit that was a little too big so that I could move around my solenoids a spec after the fact, and to make the tolerances larger.

Step 10: Attaching Solenoids to Keys

Picture of Attaching Solenoids to Keys

Now that the solenoids are mounted to the action, it's time to actually attach them to the keys.

Sounds simple? Well it really isn't... we have to attach the solenoids to the keys so there isn't any play between the keys and the solenoid. Any play will result in noise from metal clinking on metal, as well as inconsistency between keys in terms of how them feel when manually played. Remember, we want to reduce our impact on the action as much as possible.

I devised a good way of attaching the keys. Look at the pictures; they will describe how I did this better than I can with words.

White Keys:

First, you drill two holes in each key: one up around halfway into the key, and another from the left side of the key around halfway into the key. These two holes result in an internal L shape inside the key. See above image.

Now you can bend pieces of wire into an L to attach to the keys. Just bend an L and stick it in! Note that you may have to widen the holes to get the wire in place.

Next you cut a short piece of wire (around 1/2") for each solenoid and insert it through the clevis as a pin. Then wrap it around to make an L, and you now have a pin in that solenoid's clevis.

Now put the key back on the key frame, and line it up so the wire is where it should be (going straight down to the solenoid with the pin through it). Mark where the wire coming down from the solenoid passes by the pin. Bend the wire just slightly below that point so it points out from the front of the keyboard.

Now place it so the wire is in the solenoid's clevis and its bend is directly under the "pin" we made with the piece of wire. Pull the key off again. While holding the solenoid plunger so it points around 30º back from straight down, bend the solenoid wire down over the front of the loop of wire we made that goes through the solenoid's clevis.

Pull the solenoid forward so it faces straight down. If you pull it too far, though, you will create play in this mechanism. This is something we want to avoid. If you don't pull it far enough, the solenoid plunger will have too much friction inside the solenoid and that key will get stuck. We also want to avoid this. So you need to bend the solenoid plunger such that it is in this sweet spot.

Black Keys

The process is essentially the same for the black keys, except the piece of wire is longer and attaches to the popsicle stick different than to the white keys. Look at the photos above to see how it is attached to the popsicle sticks. They are very self-explanatory.

One thing to point out for the black keys is that you can adjust how tight the solenoid plunger fits by bending the key pulling wire forward or back. This is nice because you can do this without taking the plunger out, unlike the white keys.

Step 11: Control Electronics Part I: Intro to MOSFETs

Picture of Control Electronics Part I: Intro to MOSFETs

So now we have solenoids that can pull on the keys. Yay!

But there's still no way to control those solenoids with an Arduino to make meaningful music. This is where MOSFETS come in. To overly simplify, MOSFETS are a special type of transistor that can turn on and off large voltages and currents. As it pertains to our application, they are effectively switches that can be controlled by another piece of electronic equipment, in this case an Arduino.

A MOSFET has three pins: Source, Drain, and Gate (abbreviated S, D, G). When you give the gate a voltage above a certain threshold, it "turns on" and conducts electricity from the Source (-) to Drain (+).

The attached image shows the simple circuit we will be using on each solenoid. As you can see, it also incorporates several other components. Here's what each of those do:

To over simplify (again), the diode is to protect the MOSFET from the voltage spikes produced by an inductive load such as a solenoid. R2 is a pull-down resistor to ensure that the solenoid is off if it gets disconnected from the Arduino for any reason. R1, while not really necessary, is a current-limiting resistor to ensure that the MOSFETs don't draw too much power off the Arduino and fry its pins.

So now we just have to make 88 of these circuits!

Step 12: Control Electronics Part II: MOSFET Driver Boards

Picture of Control Electronics Part II: MOSFET Driver Boards

Breadboarding or even perf boarding 88 of the circuits in the last step would be impractical, not professional, and would not be a good long-term solution. Because of this, I designed a PCB that can switch on and off 16 solenoids.

Additionally, this PCB has two extra MOSFETs - each one controls the overall power to half of the 16 channels. This was going to be for a PWM power control mechanism that never got implemented because it wasn't needed. So the gates on these MOSFETs are now just pulled up. Or, you could save a few MOSFETs and wires by soldering a jumper between the source and drain holes (the bottom two) where these two MOSFETS go. If you were to do this then you would not need

The first image above is the schematic for half of the PCB. Both halves are the same. The second image shows the PCB design itself, and the third is test-fitting components on a print out of the design to ensure that everything is spaced properly.

If you want to make these yourself, the Fritzing design file is attached. Please note that I didn't actually solder in the MOSFETs: they are push-fit; the holes in the file are slightly too small to allow the leads to go through. You can change this easily if you want to solder the MOSFETs.

I had mine manufactured by They did an excellent job, and the price was very good: $50 shipped to my door with 2-day airmail (which turned into a week because of customs...)

If you get these manufactured yourself you need to order them with thicker-than-default copper. I chose 2oz copper, and this should be the least you should use. If all the keys were to be turned on on a driver board then the traces really could get burnt up fairly fast as each solenoid draws 1.3A. I've mitigated this as much as I could by dividing the driver board into two sections and making the traces as wide as I could, but the problem is still there. Read: don't try playing a MIDI file that puts down all the keys at once. You may burn out your driver boards.

See the attached image for the rest of the manufacturing settings that I used (screenshotted directly from my order

Step 13: Control Electronics Part III: Soldering MOSFET Driver Boards

Picture of Control Electronics Part III: Soldering MOSFET Driver Boards

I developed quite an efficient process for soldering up the driver boards: I got it to the point where I was doing around 2 solder joints a second or so. Even so it took me a few hours to solder up 6 of these.

The trick to soldering them quickly is to first solder the shortest components, and solder the tallest components last. I also soldered them assembly-line style: I soldered all the resistors across all 6 driver boards first, etc, as opposed to completely assembling one before moving on to the next.

The order I soldered components was this:

  1. 220-ohm resistors and single 10K resistors
  2. Diodes
  3. SIP resistors
  4. Screw terminals
  5. Headers

Then you can put in the MOSFETs. I didn't solder them as the holes weren't big enough; I just jammed them in. This way I can replace MOSFETs with ease, as they are the most likely component to randomly die.

A note: Instead of the two vertically-oriented MOSFETs, you can solder a jumper between the two bottom pins, as I discussed in the previous step. If you do this then when you're wiring you don't have to run the dupont wires connected to the "5V" pins (as labelled on the driver board), and you don't have to put MOSFETs where you put the jumpers.

Step 14: Wiring Part I: Mounting

Picture of Wiring Part I: Mounting

Now that we have all the components, its time to assemble them and wire everything!

I mounted all the control electronics (Arduinos and driver boards) to a ~4" wide board that runs the length of the action. For now, it gives us easy access to the control electronics (while the action is out of the case).

This will eventually get mounted up under the bottom of the organ case (where the player's knees would go). This results in relatively easy access to service the control electronics, as well as a (sort of) easy way of still taking the action out.

There are still two massive power supplies that need to go somewhere. I just had them on either side of the action when it was out of the case. Once the action was back inside the case, they got mounted underneath as well (see photos, especially in next step)

All the Arduinos and control boards can be mounted with wood screws and nylon standoffs.

Step 15: Wiring Part II: Solenoid Wires, Power Wires, and Power Supplies

Picture of Wiring Part II: Solenoid Wires, Power Wires, and Power Supplies

First, you're going to have to connect all 88 pairs of wires from the solenoids to their respective screw terminals. Solenoids don't have polarity, so it doesn't matter which solenoid wire you connect to the positive side and negative side. Also, make sure that you skip the power input connections when hooking up the solenoids (look at the driver board pinout above to see what I'm talking about).

Next you should run the power wires from the power supplies to the driver boards. I placed these power supplies on either end of the control electronics. The left three driver boards get power from the left power supply, and the right three driver boards get power from the right power supply. The driver boards get power separately to each half, in an attempt to increase their current capability. Make sure that the power wires are decently organized, as well as a decent gauge. Each wire is driving up to 8 solenoids, and 8 x 1.3A = 10.4A. This a lot of power, so don't skimp here. I used 14-gauge automotive wire, which is probably overkill but it was laying around.

As the power supplies are AC hardwired, you will need to wire up the AC. I ran both of them through a light switch that I mounted underneath the keyboard at one side (see photo; ignore the USB port - that's from before I added Bluetooth), and from this switch box I ran a standard 3-prong appliance cord. This results in a nice professional-seeming cord to it, and the switch allows you to turn the instrument on/off easily.

Step 16: Wiring Part III: Dupont Connectors!

Picture of Wiring Part III: Dupont Connectors!

Now you have to connect up the control boards to the Arduinos. We will use something called Dupont cables to do this. These are small crimp connectors that can fit inside housings of various numbers of pins. Each Arduino uses pins 22-53 as outputs (except for the last one; it only uses 22-37). These pins are on the bottom header of the Arduino, which is a 2x18 header. Unfortunately, 2x18 headers are a little bit hard to find, so you can instead use 2x20 dupont connector housings as I have done. On the driver boards, you will need 2x10 Dupont connector housings. Look at the driver board pinout to see which outputs correspond to which inputs, and start plugging in the cables. The cables simply click into the housings.

In addition to the driver board cables, we need to run our midi lines as well as power to all the Arduinos. I used some old telephone cabling (4 wires) for this. The red wire inside the telephone cable was connected to +12V on the power supply, and this was fed into each Arduino's VIN pin. The blue wire was connected to the PSU's ground and the Arduino's ground pins. The yellow wire was used for MIDI data transfer, and was attached to the TX pin on the Bluetooth receiver and the RX1 pins on the Arduinos.

Once you have everything hooked up you're ready to start on the software!

Step 17: Arduino Code

The code that runs the reed organ is quite simple. It decodes the MIDI data using code found here: (thanks to Arduino Forums user leKuk) and turns on and off digital pins accordingly.

The only thing that is different between the code the three Arduino are running is the "offset" between their pin numbers and the MIDI note numbers they respond to.

Look at the second half of the function playNote function on Arduino 1:

if (note > 20 && note < 55) {
digitalWrite((note + 1), value);


Here, the "offset" is one: the solenoid that is attached to the key that is MIDI note 21 is connected to pin 22 on the Arduino. Therefore, given the MIDI note, we have to add one to get the correct Arduino output pin.

By changing these offsets we change what MIDI range the Arduino is programmed to respond to. The three Arduinos therefore have different offsets since they control different sections of the organ.

Step 18: Programming the Bluetooth Module

Now the three Arduinos are running the software, but they have no way of receiving the MIDI data as the Bluetooth module has not been set up.

By default the HC-06 runs at 9600 baud. This is too slow for MIDI. I've been using 38400 as my baud rate, and this is the speed that's closest to actual MIDI baud (31250).

To change the speed that the HC-06 runs at we have to put it in AT-mode. Its a somewhat finicky process, especially if you don't have a USB to TTL converter/cable (if you don't then you can use an Arduino). Instead of explaining how to do it, I'll point you here to follow the instructions for the HC-06:

Remember, we want to set the baud to 38400, and (optionally) the name to what you want.

Step 19: Software and How to Send MIDI to It

In order to actually play anything to it, you need to install a piece of software called "Hairless MIDI Bridge". This software pulls MIDI off of a system bus or the output from a program and sends it over a serial port that you select.

I'm using a Mac, and as soon as you pair with the Bluetooth module (key is 1234), it shows up as a standard hardware serial port (I don't know if this works on Windows or Linux; I haven't tested it). Then we open Hairless MIDI bridge, select that serial port (it generally shows up as "/dev/name-DevB" where name is the name you've assigned the Bluetooth module in the previous step), select a system bus for input ("IAC System Bus" on Mac), and enable the bridge. Be sure to set the baud to 38400 in Hairless-MIDI's preferences menu.

Now you can use any piece of MIDI-playing software, and for the output choose the system bus that Hairless-MIDI is bridged to. I use either Aria Maestoso or Rondo to play MIDI files. Rondo is officially discontinued, but if you email you the developer and explain your project he may still give you a license key. I'd like to give a shout out to the developer; he's a really nice guy and gave me a license for free.

Step 20: Going Further

Picture of Going Further

Currently I'm working on a pressure regulator/controller that will allow me to use a vacuum cleaner to run it. The instrument will be presented at a Maker Faire in September 23-24, and I really want it done before then so I don't have to foot pump it 5 hours a day for two days.

A vacuum cleaner typically will pull about 60 inches of water (a pressure measurement). The reed organ needs around 2-5 inches of water pressure to run, depending on the desired volume. So clearly we need to reduce the vacuum cleaner's pressure significantly. During testing, I took off one of the leather straps on the front of the bellows and stuck the vacuum's hose in the top hole. I then used duct tape to cover and uncover the remaining holes to achieve the correct pressure. This "controlled" leak system worked so well that it is what I am going to use to control the pressure going to the organ.

I've built a box with vacuum-tube sized holes at either end, a slot at the top, and a cover that can slide open and close via a servo (see images above). One hole is hooked to the vacuum, and the other to the reed organ. When the slider on the top opens, more air comes in through the slit in the top instead of through the reed organ, reducing the pressure going to the reed organ. If the slider closes, then the opposite happens, and the pressure to the organ increases. Basically, I can control the loudness of the entire instrument via MIDI as well. I have yet to actually hook this system up, but I will in the next week in anticipation of the Maker Faire.

The other thing I plan to do at some point is implement a stop changing mechanism so that the two stops can be controlled via MIDI. They change the sound significantly, and once I have control of them, the entire instrument is MIDI-fied.

I actually got one stop servo-actuated a long time ago, but didn't end up actually installing them permanently as I was in a rush to get just the keys working.

Have a great day, and thanks for the (long) read! If you have any questions or build something using this Instructable please message me.


pwdavo (author)2017-09-22

Great project. Still trying to figure it out. Pity you found
a rare organ with 88 keys as most have only 61.

ДмитрийШ31 (author)2017-09-21

good afternoon! how to do it without bluetooth? Thank you


You can also use one of the Arduino's USB ports, in which case the two other MIDI-decoding Arduinos would have their RX1 ports connected to that Arduino's TX0 port. On the Arduino who's USB port you're using, you would change the code to read MIDI data on Serial instead of Serial1.

marc.deloor.5 (author)2017-09-21

I haven't been on this site so often anymore, but this is such a wonderful project you made! I have an electronic Elka organ, 2 keyboards, which I want to use in the other way: sending the keystrokes to a midi- pc, and get the sound from the pc. However... I need to study MIDI interfacing for that...

bpark1000 (author)2017-09-19

This is an awesome project! I know as I overhauled a player piano made in the 1920's. If I were designing this, I would "steal" ideas from player piano design, and use pneumatics to activate the keys. (Each pneumatic is a bellows about 1 x 3 inches with 1/2 inch movement. You stagger them in 3 rows to get them close enough for the keys.) You eliminate the noise problem. So now the solenoids can be tiny things that open small valves. You can drive them from multi-channel driver chips. You will not blow anything up if you accidentally activate all keys at once.

If you study a piano action, great lengths are gone to, to get rid of noise. Every bearing is lined with felt, and everywhere 2 things contact, there is also felt.

Regarding providing suction: you need to slow vacuum cleaner down. You can use variac, or put inductors in series with it, or use a DC supply. That lowers power and wear & tear on vacuum (they are not made to run continuously!) to almost nothing, and gets rid of most noise so a padded box can do the rest. You will most likely need 30-40 volts on the vacuum to get the vacuum you need. Rather then tape hose in, make another flap-valve assembly on chest and connect vacuum to that with a more permanent connection. The organ will be able to be either manually pumped, or run on power, without needing to change connections. I did this for a war veteran (who lost one leg) so he could run his Story & Clark player piano (which I overhauled).

Another thing to look at is the effect of the flyback diodes in the solenoids. They slow the release. One trick is to allow the flyback voltage to be higher (but still not high enough to damage FETS). Easiest way to do this is to put resistor in series with diode. For 1A solenoid current, this current will instantaneously flow in diode circuit. So each ohm you put in, is another reverse volt is allowed. 10 ohms added would allow 11 reverse volts, halving release time, while subjecting FETs to 23 volts at the instant switching off.

Another thing I would do differently is to have the solenoids (or whatever other mover used) directly actuate the reed valves. That's the way player pianos work, and for best operation the keys are locked up to eliminate their inertia.

​Thanks for your comment.

Concerning running it off a vacuum, I actually have that fully working now - I'll publish an Instructable on that system shortly. I used a very quiet vacuum cleaner that also has built-in speed control, and put it on the slowest setting. I then built a box that bleeds off the excess pressure - effectively a controlled air leak. A servo can control how much pressure it bleeds off. I think there may be photos in the last step of this project of this box. I have a short hose running from this box into the back of the bellows.

Because of how the bellows work, the entire back of them moves forward as the pressure increases, and I'm measuring this displacement with a sonar sensor, and I have an Arduino-based controller that runs a PID loop to maintain the pressure inside the bellows by opening and closing the servo on pressure regulation box. The whole system works beautifully. The pressure inside the bellows directly affects the volume produced, especially as the swell flaps are also hooked up such that they automatically open as the pressure increases.

By changing the setpoint in the PID algorithm (basically what value it is trying to maintain), I can adjust the volume of the instrument. Currently I just have a potentiometer setting that value, but I plan on implementing MIDI control over it so I can achieve computer-controlled dynamics.

I have a video (here) showing the whole system working from its prototyping stage about a week ago. I've since permanently set it up, with proper hosing, mounting, etc.

I am aware of the effects of the throwback diodes on the solenoid release time. It wasn't significant enough to bother doing anything about, at least for this project. My player system has both faster attack and release than the instrument its installed in, especially in the bass notes! They take a solid 1/10 of a second or so to start making sound at all.

Regarding your piano player conversion, I want to do this same project to a player piano as well, with small solenoids that cover and uncover the holes on the tracker bar. My idea is to have a "universal" digital roll that can go in any player piano and play it like a roll. Everything is so small though!


Regarding your comment on regulating the amount of vacuum: in player pianos they have a bellows held open with a spring, as you have. Inside the bellows is a knife valve connecting to vacuum source. As the bellows closes (vacuum increasing inside), the knife valve chokes off the vacuum, providing regulation.

Sonar beware! If air temperature changes, you will get shift. (Expect change of 1 part in 30 for 20 degrees F change. How much this effects your setup is determined by ratio of change in distance due to vacuum to total distance measured. Most sonars have minimum distance which I assume is about 1 foot. How that compares to amount of movement you have I do not know.) Safest thing to do is have a fixed target also "looked at" by the sonar. You regulate the RATIO of the 2 times measured, rather then compare one time against a constant. Humidity also has a lesser effect.

You could also have dump valve mechanically linked to bellows. This is the ultimate in simplicity!

Some info about player piano standards: roll 11 1/2" wide. 88 holes, spaced 9 to the inch. How do I know this? I built a roll puncher! Player piano response speed: 10 "hits" per second on a given note.

Thanks for the info on how player pianos regulate their air pressure.

My sonar is actually an HC-SR04, which is ultra-short range. It can measure from 2-400cm. I have it mounted so the bellows fully open (no pressure) it is 2.5cm from the back of the bellows. It works beautifully for measuring the pressure inside. I do agree that my PID system is overly complicated, especially compared to a mechanical pressure regulator system like those in player pianos. But by doing it this way I'm able to control the velocity with MIDI (once I implement it).

Thanks for the info on player piano roll standards. Out of curiosity, was your roll puncher MIDI-driven? So you could re-punch old rolls from scanned MIDIs?

Certainly not!!! I built the puncher in 1965! It was totally manually operated. It required hours to punch a roll. The most important roll I made was a "test roll" for debugging the action. At that time, I DID have a SINGLE transistor that I scrounged from a discarded "transistor radio" in the optical sensor on a robot designed to follow a line painted on the floor. I also built a "computer" regulating trains in an S-gauge layout, consisting of about 20 relays. The system was able to regulate the motion of 5 trains at once by controlling "blocks" and 2 switches (to route faster trains around slower ones).

Hah! I totally misunderstood that!

People have been building roll punchers more recently to re-punch old rolls since 100 y/o paper is quickly disintegrating.

I looked at your vacuum regulator video. It has a severe case of the "jimmies". This is because your "D" term is not enough, or noisy. (The problem with the "D" calculator is that it is a "vacuum cleaner for noise". What is the sample rate for your PID loop? How many bits is the pressure signal (or if you are you measuring the time delay directly in Arduino, what is resolution?) Another thing is that the servo/link is non-linear as you use almost all the 180 degree arc. You can linear-ize that with different linkage or "weird" valve opening shape (I would use rotary, rather then linear, valve).

Another problem you probably have is stiction because the air force against the valve vane. Rotary valve or 2 opposed vanes can cancel most of this out, and make servo's job easier.

Another thing: how much transport delay is the Arduino imposing? I suspect this because Arduino is notorious for "bloatware lag", when you use standard libraries. (For example, to write a port bit requires only 2 clock cycles in the hardware, but if you use port write library, it requires over 100 cycles!) I assume you are writing to PWM register to drive servo. Servos don't really have the resolution to deal with this type of task. They have deadband and jitter even "when perfectly driven". Also check CAREFULLY the voltage regulation of the power the servo gets. Best is to have a local regulator on EACH servo.

You could let the servo drive a mechanism that controls the setpoint of a valve linked to the bellows. Thus the servo rule: use local feedback when possible.

Is the bellows hinged on one side? If not, the bellows could be rocking, causing changed signal from sonar (unless sonar is "looking" at bellows center).

ДмитрийШ31 (author)2017-09-20

good afternoon! how to do it without bluetooth? Thank you

LesB (author)2017-09-19

Great project!

To save space and maybe money too, in lieu of discrete FETs on can use an ICs with multiple FETs in the package. Example:

Hillier Productions (author)LesB2017-09-20

Thanks for your comment!
I looked into this when I was designing my driver boards. but my solenoids draw 1.3A@12V each, and as far as I know there aren't any ICs that are rated for that much current.

MoogTheremin (author)2017-09-19

Do you know the make and model of the organ?

I do! It is an Estey, and based on their catalog it appears to be a Model XL10. Based on the serial number it was made in late 1916.

I actually visited the Estey Organ Museum, which is only a couple hours away from me. I got to talk to a guy who restores these organs professionally. He gave me tips and advice on the project - sadly I only got in touch with him after the project was mostly finished.

jackemled (author)2017-09-20

This is a great idea!

I have a question though. Would it be possible to make the Solenoids behave differently depending on the type or data of a MIDI message, such as tapping for a "Start" & holding for a short amount of time for a "Stop", or adjusting the force applied depending on Note Velocity?

The first idea you have is certainly possible - its just a matter of changing the software. Instead of having the Arduino keep a solenoid on until it gets a "note off" message, as I have done for this instrument, you would have a set amount of time that the Arduino holds the solenoid in for before releasing it.

Velocity/speed control using solenoids is very tricky. Changing the voltage going to a solenoid does almost nothing to change the speed at which it fires. I've experimented with trying to control the velocity, and the best way I found was to fire the solenoid with two close together pulses. The first pulse breaks inertia, and the second one, depending on its length, will make the solenoid fire faster or slower. It works, but it is very hard to control well - the difference between firing at full strength and not firing at all, especially with a load, is very small.

I hope this helps.

hugheswg (author)2017-09-19

Fantastic work.

But I have a sort of reverse problem. I am a pipe organist.

Many organists have to play on inferior specified instruments although mechanically sound. Real organists do not play electric, pneumatic or electronically controlled pipe organs.

I have looked for a portable cover for an organ keyboard such than the notes on and off can be sent to my own (portable) organ midi sounds to supplement those of the inadequate pipe organ.[ There are many midi units arround that will produce true recorded pipe organ tones].

This obviously cannot be wired in but must be a minimal attachement or cover that will still allow the organist to play the keys but send each notes on and off to the midi generator.

I already have all the equipment required to get midi from wired in contacts as well as the midi organ sound generator. How can we do this ? I have thought of optical contacts as these can be very small but are very sensitive to outside light, maybe magnetic contacts, but these are subject to interference. Ideally the cover would be flexible rubber, very think but rigid enough to remain on the keys during virtuoso passages.

Many pipe organs have at least 2 and up to 5 manuals stacked one on top of the other. Then there is the pedal board of at least 30 notes or 32 if you are lucky.

Suggestions please? There seems to be nothing commercially available.

It would be nice if this were easily attachable at short notice as we have to play at many different churches and concert halls.

ajoyraman (author)2017-09-19

Very well executed project!

WimV7 (author)2017-09-19

This is soooo cool!!!

I want to do the same with my old piano but not automate it, do you know a good solution what i can use beneath the keys to create velocity? I just want to convert it into a midi keyboard and hook it up to ableton..

What you want to build is called a "key scanning mechanism". Check out what this guy did:

He built both a player system and a key scanner, but if you just wanted to do the key scanner it wouldn't really be too hard to set up. He has complete direction, source code, and hardware lists.

Tx for your answer! I think the hard part would be the velocity mechanism, hitting a key and getting a note would be easy but how hard you press it would be something else.. I'll look around the interwebz for that. Great project again!

flaj65 (author)2017-09-19

Awesome. I'm so impressed with your inginuity. You can start a business with your skills. Excellent

andrew.mead.1253 (author)2017-09-19

I've been in the pipe organ business for 33 fact, I'm writing this comment from inside a pipe organ chamber. Your system could be more easily connected to an electro pneumatic action pipe organ. EP pipe organs have "exhaust magnets" that respond to electric impulse from a pipe organ keyboard. If you bypass the keyboard and connect your system to the key action circuit the pipe organ will play without the keys moving. Also, there was an electronic and pipe organ builder in Canada who built electronic organs using reed organ reeds and wood reed cells with a small silent built in vacuum unit. Each reed cell was covered with its own action magnet and leather lined pallet ( of plastic) that would open and allow atmosphere to enter the the reed cell and cause the reed to vibrate upon registration of the corresponding key. You would get far better response using this method than using linear action solenoids to move the keys. I have quite a bit of experience with reed organs and they're notorious for their relatively slow response, which is inherent to the design. The largest most protracted pipe organ will have a faster response than a reed organ. The organ builder retired about 1972. He built about about 50 pipe organs but he built about 5,000 electronic organs using a readapted version of the reed organ design. He didn't amplify the sound produced by the reeds, instead he picked up the beats of the reed to provide the frequency of the note played and then somehow added tonal colouring to it to simulate pipe organ tone. People collect these organs. The organ builders name is Hallman ( I've forgotten his first name but he invented a number of items; he died in the 1990s and lived/,worked in Kitchener and/ or Waterloo, Ontario, Canada). By chance I actually have some "guts" from a hybrid pipe organ/electronic organ he built for a church that includes the wooden reed cells and mass produced magnets and pallets I referrred to earlier. I'm working out of town all week but this approaching weekend I could take some photos of the parts and forward them to you. You would instantly recognize what he did and how it could or would apply to your admirable organ operating electronics system. All the best to you and congratulations are in order for the completion of a project that reflects most favourably on your ingenuity, tenacity and character. You have a promising future in store.

mrdovie (author)2017-09-19

Hi, This looks great! A pet idea of mine is to modify a harmonica with pressure switches (at least 20) and a pressure sensor, for volume, to make a harmonica interface to a midi. Then anyone who could play a harmonica, such as me, could play the piano, harpsichord, etc. I you like the idea go for it, I'M 70 years old & past my prime on new electronics.

Bonzadog (author)2017-09-19

A very interesting and well planned project.

I will have a really close look at this but since I am no fan of Bluetooth and would much prefer to see if WLAN/LAN could be implemented.

Oggar2 (author)2017-09-16

wOw! Play some Black MIDIs on this!

Sure! Got any particular ones you want to hear? Submit them here:

the_3d6 (author)2017-09-12

Awesome work! It's a completely different level, one of the most complicated DIY projects I've ever seen - and I mean it, 88 keys fully reworked and calibrated so they work flawlessly, that's something!
You can somewhat simplify electronics by using shift registers - 11 of them will be enough to control the whole range, in this case a single Arduino will handle everything. But that's a minor thing, not sure if it's worth working on it.

Thank you! When I was researching/designing the control electronics, I did consider shift registers. But its hard to beat $9.99 Arduino Megas and $10 of cable. The code gets much simpler not using shift registers, and instead writing the values directly to the pins. Basically I didn't use shift registers because I'm lazy, and because I wanted my driver boards to be capable of being used for other projects :)

DIY Hacks and How Tos (author)2017-09-09

Wow. This is a really impressive project. I have often seen old organs at the thrift store and thought about restoring them. But you have taken it to the next level. You definitely have my vote.

Thank you!

Please spread the news and get as many people to vote for it as possible!

Thanks again,


About This Instructable



Bio: Electronics hobbyist, Arduino enthusiast, and music maker.
More by Hillier Productions:MIDI-Controlled 88 Key Reed Organ With MIDI-Over-Bluetooth
Add instructable to: