MIDI for Digital Organs

Turn an old organ console into a MIDI controller to use with desktop organ software like Hauptwerk or Grandorgue.

Feb 4, 2021

24770 views

8 respects

Components and supplies

1

Male Header 40 Position 1 Row (0.1")

1

Resistor 220 ohm

1

USB-A to B Cable

1

AWM Cable

1

Male/Male Jumper Wires

1

DIN Midi Plug

1

IDC Socket

1

Potentiometer, Slide

1

Arduino Mega 2560

Tools and machines

1

Solder Wire, Lead Free

1

Wire Stripper, Serrated Plier Nose

1

Plier, Side Cutting

1

Soldering iron (generic)

1

Solder Flux, Soldering

1

Plier, Flat Nose

Apps and platforms

1

Arduino IDE

Project description

Code

Bussed Keyboard Code

arduino

Code to upload to the Arduino if you are following the Bussed Keyboard Schematic.

Revised Matrixed Code

arduino

To be uploaded to the Arduino when using the Revised Matrixed Schematic.

Bussed Keyboard Code

arduino

Code to upload to the Arduino if you are following the Bussed Keyboard Schematic.

Matrixed Keyboard code

arduino

Code to upload to the Arduino when you are following Matrixed Keyboard schematic.

Revised Matrixed Code

arduino

To be uploaded to the Arduino when using the Revised Matrixed Schematic.

Downloadable files

Matrixed Schematic

Wiring diagram for 6x11 Matrix keyboards and pedalboard with potentiometer inputs

Matrixed Schematic

Bussed Schematic

Wiring diagram for Bussed keyboards with potentiometer inputs

Bussed Schematic

Updated Matrixed Schematic

Provides wiring for 2x 61 note keyboards, one 32 note pedalboard with Normally Closed contacts, and a piston matrix of 38 pistons, usable with the updated code posted with adjustable debounce and Midi Thru.

Updated Matrixed Schematic

Matrixed Schematic

Wiring diagram for 6x11 Matrix keyboards and pedalboard with potentiometer inputs

Matrixed Schematic

Bussed Schematic

Wiring diagram for Bussed keyboards with potentiometer inputs

Bussed Schematic

Updated Matrixed Schematic

Provides wiring for 2x 61 note keyboards, one 32 note pedalboard with Normally Closed contacts, and a piston matrix of 38 pistons, usable with the updated code posted with adjustable debounce and Midi Thru.

Updated Matrixed Schematic

Comments

Only logged in users can leave comments

k7kz

2 years ago

I am thinking of building an organ either from a used one or parts from Gino and using Hauptwerk software. I would really like to chat with you. de K7KZ

Larason2

2 years ago

Hi K7kz. Sorry, this page doesn't notify me for any posting. I'm happy to talk to you about your project. You can find me on the Organ Forum (Larason2) and send me a private message there. Cheers!

Anonymous user

2 years ago

Thank you so much for sharing this project! This was our first Arduino project. With a bit of help from a friend, my son (10) and I were able to adapt your code for his Baldwin 5A. It has been working great for a couple of months now! We haven't tried hooking up the swell pedals yet, but I am optimistic that we will be able to when we are ready! I really appreciate you posting this as it made our project possible and now he has a perfect practice organ.

Larason2

2 years ago

Glad it worked out for you!

Anonymous user

2 years ago

@Larason2 Thank you for your prompt reply regarding the drawing and connection of diodes/bus. Much appreciated. I understand your comments and will be happy to re-draw the diagram for you, if I can get the "bussed version" working reliably. I have mocked it up on the bench and it works to a degree but it has a massive problem in that in addition to the correct midi message, it fairly frequently (say every tenth note/message), sends an additional wrong note message and also frequently does not send the NoteOff message - or sends the NoteOff for the wrong note. This makes it unusable (sadly). The software seems OK but sometimes sending the wrong note, and NOT sending NoteOff makes it unworkable. Do you have any thoughts or suggestions ? I can send you a log file of the generated midi messages. Is there somewhere else I can contact you that will allow attachment of a file ? Generally, this is a great project, and it's very nearly there, but the spurious wrong messages are a killer. Thank you for any thoughts or insights. Best regards, Fiona (PS for testing I've tied the pot wiper inputs to GND)

Anonymous user

2 years ago

Looks like a great project and thank you for sharing your work. I'm sorry I don't understand the "Bussed keyboard" circuit diagram. It is still a matrix as far as I can see, or it may be just the way its drawn. The "bussed" keyboards I have seen actually have a solid rod - an actual bus - you can't cut this to insert diodes as your diagram suggests. To suit a keyboard with a rod-bus all switches must have one contact commoned together. You can achieve this with your diagram by changing the position of the diode. Tie one contact of each switch together and put the diode in the wire that is not commoned. Does this make sense to you ? I'm sorry, what I'm grappling with is that your drawing as shown doesn't work as the switches don't have one wire in common. It can be fixed by changing the position of the diodes. Am I on the right track here or have I missed something ? Sorry, I'm not being critical, it looks like a great project; I just can't see how the "bussed keyboard" circuit works if there is a common actual rod that each contact shares. Any light you can shed on this would be much appreciated. Thank you. Best regards.

Larason2

2 years ago

It is a bit confusing, as it is a mixture between "bussed" and a matrix design. However, that is the only way to get a whole bussed organ to work with only 1 Arduino Mega! You are right that you cannot wire a diode to the bus bar, or "rod." However, you can wire a diode to the wire that connects to the contact that touches the bus bar. That is part of the reason you have to solder the diode backwards on the wire going to the contact. You are right it is a bit unclear on the schematic, but the diode can go before the switch or after it, it doesn't matter what position it is in. I suppose I could edit the diagram to reflect this, but it would be a lot of work! I am fairly certain that the diodes are in the correct orientation in the schematic, however. Now, to help you understand how I envisioned this project, the bus bar for each manual is the "column." Given that, you wire the bus bar to the indicated pin on the arduino, and then each switch would be wired to a different "row." If you have three manuals and a pedal, then the same key on each manual would go to the same row pin. Even though many bussed organ manuals have multiple busses, you only need one for this to work (although it is generally advised to wire all your busses together, then wire all the contacts together for the same key to decrease the likelihood of intermittent contacts). Looking at the diagram, I'm pretty sure the switches all have one wire in common. Like I said, it doesn't matter if the switch is in front of the diode or after. I should also say that this same circuit would probably still work pretty well without any diodes. The only problem would be that sometimes when you press a key, you might get a ghosted note at the same pitch on one of the other keyboards, which wouldn't be terrible unless you are using one of the "keyboards" for stop control or some other function. I may have made a mistake, but I'm pretty sure this would work. As I said, I haven't been able to test it in the real world as I have for the matrixed design, but I thought it may be helpful for some. Hopefully I've shed some light on it.

Anonymous user

2 years ago

@larason2 As a PS to the previous message about wrong midi messages being sent - out of curiosity I loaded the Matrix version and it suffers the same problem. That is, sometimes sending wrong messages, extra messages that aren't needed and most worryingly not sending NoteOff messages resulting in "hung-notes". I'm testing it on the bench with nice short wires (right on the Arduino board) so I'm pretty sure it's not induced noise or stray capacitance etc. Any thoughts would be appreciated. Thanks again, for a great project - just need to iron out this little bug. Best regards, Fiona

Anonymous user

2 years ago

I just wanted to share there is absolutely nothing wrong with the Arduino Code on this project. I had a somewhat weird fault on my USB to Midi interface that was causing spurious messages. Go with this project it works well. Larason2 was really helpful assisting me to find a weird fault on my Midi to USB interface. So you can ignore the fault issues above. The Arduino Code on this project, both the Matrix and the Bussed version, work really well. Rgds, Fiona

Anonymous user

3 years ago

Thank you so much for sharing this project! This was our first Arduino project. With a bit of help from a friend, my son (10) and I were able to adapt your code for his Baldwin 5A. It has been working great for a couple of months now! We haven't tried hooking up the swell pedals yet, but I am optimistic that we will be able to when we are ready! I really appreciate you posting this as it made our project possible and now he has a perfect practice organ.

Larason2

2 years ago

Glad it worked out for you!

k7kz

3 years ago

I am thinking of building an organ either from a used one or parts from Gino and using Hauptwerk software. I would really like to chat with you. de K7KZ

Larason2

2 years ago

Hi K7kz. Sorry, this page doesn't notify me for any posting. I'm happy to talk to you about your project. You can find me on the Organ Forum (Larason2) and send me a private message there. Cheers!

fionab

4 years ago

@larason2 As a PS to the previous message about wrong midi messages being sent - out of curiosity I loaded the Matrix version and it suffers the same problem. That is, sometimes sending wrong messages, extra messages that aren't needed and most worryingly not sending NoteOff messages resulting in "hung-notes". I'm testing it on the bench with nice short wires (right on the Arduino board) so I'm pretty sure it's not induced noise or stray capacitance etc. Any thoughts would be appreciated. Thanks again, for a great project - just need to iron out this little bug. Best regards, Fiona

fionab

2 years ago

I just wanted to share there is absolutely nothing wrong with the Arduino Code on this project. I had a somewhat weird fault on my USB to Midi interface that was causing spurious messages. Go with this project it works well. Larason2 was really helpful assisting me to find a weird fault on my Midi to USB interface. So you can ignore the fault issues above. The Arduino Code on this project, both the Matrix and the Bussed version, work really well. Rgds, Fiona

fionab

4 years ago

@Larason2 Thank you for your prompt reply regarding the drawing and connection of diodes/bus. Much appreciated. I understand your comments and will be happy to re-draw the diagram for you, if I can get the "bussed version" working reliably. I have mocked it up on the bench and it works to a degree but it has a massive problem in that in addition to the correct midi message, it fairly frequently (say every tenth note/message), sends an additional wrong note message and also frequently does not send the NoteOff message - or sends the NoteOff for the wrong note. This makes it unusable (sadly). The software seems OK but sometimes sending the wrong note, and NOT sending NoteOff makes it unworkable. Do you have any thoughts or suggestions ? I can send you a log file of the generated midi messages. Is there somewhere else I can contact you that will allow attachment of a file ? Generally, this is a great project, and it's very nearly there, but the spurious wrong messages are a killer. Thank you for any thoughts or insights. Best regards, Fiona (PS for testing I've tied the pot wiper inputs to GND)

fionab

4 years ago

Looks like a great project and thank you for sharing your work. I'm sorry I don't understand the "Bussed keyboard" circuit diagram. It is still a matrix as far as I can see, or it may be just the way its drawn. The "bussed" keyboards I have seen actually have a solid rod - an actual bus - you can't cut this to insert diodes as your diagram suggests. To suit a keyboard with a rod-bus all switches must have one contact commoned together. You can achieve this with your diagram by changing the position of the diode. Tie one contact of each switch together and put the diode in the wire that is not commoned. Does this make sense to you ? I'm sorry, what I'm grappling with is that your drawing as shown doesn't work as the switches don't have one wire in common. It can be fixed by changing the position of the diodes. Am I on the right track here or have I missed something ? Sorry, I'm not being critical, it looks like a great project; I just can't see how the "bussed keyboard" circuit works if there is a common actual rod that each contact shares. Any light you can shed on this would be much appreciated. Thank you. Best regards.

Larason2

2 years ago

It is a bit confusing, as it is a mixture between "bussed" and a matrix design. However, that is the only way to get a whole bussed organ to work with only 1 Arduino Mega! You are right that you cannot wire a diode to the bus bar, or "rod." However, you can wire a diode to the wire that connects to the contact that touches the bus bar. That is part of the reason you have to solder the diode backwards on the wire going to the contact. You are right it is a bit unclear on the schematic, but the diode can go before the switch or after it, it doesn't matter what position it is in. I suppose I could edit the diagram to reflect this, but it would be a lot of work! I am fairly certain that the diodes are in the correct orientation in the schematic, however. Now, to help you understand how I envisioned this project, the bus bar for each manual is the "column." Given that, you wire the bus bar to the indicated pin on the arduino, and then each switch would be wired to a different "row." If you have three manuals and a pedal, then the same key on each manual would go to the same row pin. Even though many bussed organ manuals have multiple busses, you only need one for this to work (although it is generally advised to wire all your busses together, then wire all the contacts together for the same key to decrease the likelihood of intermittent contacts). Looking at the diagram, I'm pretty sure the switches all have one wire in common. Like I said, it doesn't matter if the switch is in front of the diode or after. I should also say that this same circuit would probably still work pretty well without any diodes. The only problem would be that sometimes when you press a key, you might get a ghosted note at the same pitch on one of the other keyboards, which wouldn't be terrible unless you are using one of the "keyboards" for stop control or some other function. I may have made a mistake, but I'm pretty sure this would work. As I said, I haven't been able to test it in the real world as I have for the matrixed design, but I thought it may be helpful for some. Hopefully I've shed some light on it.

Anonymous user

4 years ago

Great project and I plan to start an almost identical one soon. What did you do about the swell (volume) pedals? At first glance, I don't see how to incorporate that into the plan. Any help would be GREATLY appreciated.

Anonymous user

2 years ago

This is great! Is the 1 potentiometer used for both pedals or does this just control one of them. I just ordered the part, so I may be able to figure it out when I get it, but I'm having a hard time picturing how to connect it to two pedals. I'd love to follow up with you with pictures from my build. I am converting a Conn organ. Your post has been invaluable! As of today, I have 1 keyboard up and running with the second almost done. Pedals are next and lastly I want to tackle the swell pedal (s).

Larason2

2 years ago

Sorry, I didn't see this until now! (sorry, I wasn't notified there was a comment!) Initially, I didn't include code for the expression pedals, but I have just posted code to make the expression pedals work, and updated the schematic to show how to wire them up. Let me know if you have any questions about it. Note that the way I have programmed it will only work if you have a 10K linear potentiometer hooked up.

Larason2

2 years ago

Hi again, sorry, I can't figure out how to get email notifications. You would need a potentiometer for each expression pedal. I have come up with a custom bracket for holding them that works great, I will probably post details how to make it in the future. Wiring up the potentiometers is quite straight forward. First though, you have to find out what pins on the potentiometer are either end of the resistor, and what pin is the wiper. To find this out, you move the potentiometer to the middle position, and set your multimeter to resistance mode (~10k). Test all the pins. The ends of the resistor should be 10k resistance between them, and the wiper should be ~5k to either end of the resistor. Once you have figured out the potentiometer pins, you wire the 5V to one end of the resistor, the ground to the other end, and the wire going to the analog pin to the wiper. You can wire the same 5v arduino pin to each potentiometer, but it is better to use a wire all the way from the Arduino to each potentiometer, to avoid having one potentiometer interfere with the other. Edit: I added some brief details and a picture of my expression pedal potentiometer bracket design. I'll try to post back later with more precise details.