Skip to content

Cybrid - a DIY MIDI controller with grand piano action

MBiG

RIP

I see what you mean. Thank you for your detailed explanation. 👍🎹


oshogg

CyberGene For now you should either live with that or switch rich-text editor while writing posts.

Thanks for the explanation. Makes sense. I will just switch to using USD 🙂.

Osho


Nenad

CyberGene Hello!! Amazing job!! I have old yamaha c55n organ and I want to upgrade little bit with midi. I gues that this way is the best after checking lot of other options. Can you share schematic and all other stuff about project? I see that job is not easy one but I would like to try. All best, Nenad


CyberGene

Nenad Hi Nenad and welcome! 🙂 Yes, the project can be adapted for other types of instruments, not just pianos. If you don't need velocity detection (since it's an organ?), then it would be very easy indeed. My code is in GitHub:
https://github.com/ekumanov/cybrid/

Other people on this forum are working on similar solutions, and all of them are ongoing at this moment, you can take a look around, @RIP is very active, he's using more advanced design than mine which was created by @JayKominek


RIP

Hi Nenad and welcome from me too.

Depending on what you want to do, you have many more options. As @CyberGene is saying, if you do not need velocity nor aftertouch (or at least if you don't need the subtle precision of piano) you can more easily use the GPIO pins on a Raspberry Pi Pico, of which there are many more than ADC channels. That will allow to do your project with very little soldering, and perhaps no custom PCB. See https://github.com/davidedelvento/Mybrid for details.

If instead you do want high quality velocity (and perhaps precision polyphonic aftertouch), see https://github.com/jkominek/piano-conversion


JayKominek

I've been tagged, but I don't think my project would be suitable for an organ conversion. As I understand it, organs aren't velocity sensitive. So there's no reason to do all of the ADC measurement.

I'd take a look at the products from Classic MIDI Works for that. If you were near me, I'd be fascinated to take a look inside your organ and offer some suggestions on proceeding.

My system would be appropriate for a MIDI clavichord. Might be useful for harpsichords, too.


vagfilm

Nenad I have old yamaha c55n organ and I want to upgrade little bit with midi.

The 55n looks a lot like the organ of my best friends at primary school (late seventies... Fond memories of that organ).
The good thing is that you can probably use the old electric contacts of the keyboard keys and simply route each one to a arduino/teensy input as a switch...


AlexanderBunt

@CyberGene A while ago, during the search for a good way to make a DIY virtual carillon, I came across your Cybrid project. And I think what you did there, would suit my case very well (accept I only need 2 measurement points because a carillon doesn't have dampers). But, since I am software developer (I created my own samplesoftware for the project) and not very much a technican, I am wondering if somebody can help me provide information on how I can start with this project.

I would like to test hammer action first (just like this video I have linked below), but I don't know the best way to start. Maybe somebody can help me? Thank you very much.


CyberGene

AlexanderBunt welcome to the forum 🙂

I think my project (as well as similar DIY projects that are being discussed on this forum) can work for you but it's also possible that you may need much less complexity.

Can you explain what your needs are, do you need velocity detection? If so, then you can reuse the Cybrid and adapt it for only two detection points, which means you can eliminate 1/3 of the trimpots and then simplify the code.


RIP

AlexanderBunt I am wondering if somebody can help me provide information on how I can start with this project.

Welcome. You've come to the right place.

There is a whole community doing just that here. From people nitpicking on the very best option to do the very best possible in the most sophisticated ways, to people doing something "good enough" but very simple, to anything in between.

I suggest you start from https://github.com/davidedelvento/Mybrid (which might be exactly what you need, but it's not done yet!) and you follow all the suggested links back to this forum (which I should have reported here instead of linking that github, but I need to save time to work on the project). You'll be amazed by the big expertise the community has build around this. And just to be clear, I'm only the last wheel of the cart.

Welcome again!


AlexanderBunt

CyberGene Thank you! I'm very exited for this project, so let me tell you someting more.

A carillon has a keyboard (like in the picture below). And each 'key' is directly attached to a hammer that hits the bell if you press the key. Obviously, when you press the key strong, the hammer will hit the bell with a higher velocity, making a louder sound. So yes, I very much need velocity. But indeed, I figured out that I don't need 3, but only 2 different detection points. But, I am very new to all the sensor, pcb, arduino etc. stuff…

Another point is that I only need around 52 inputs, so not the whole 88 like you did with your grand piano. That will simplify a bit too, I think.

RIP

Thank you very much! I have looked at your GitHub, but I have to look a bit further into the details. Thank you for your answer, which might be very useful.


AlexanderBunt

CyberGene

For now, I try to remake your video (linked it below), but I cant't get the code right. Maybe you can help me with this? Like maybe you have that code anywhere, so you can send it me…?


CyberGene

AlexanderBunt I've forgotten almost anything about those early prototypes but from the video I could see the name of the program is "CNY70_Velocity_test_02" and so I found it on my computer.

cny70-velocity-test-02ino.zip
1kB

It uses the Teensy development board which is also Arduino-language compatible.


HZPiano

Hello,

@AlexanderBunt Lovely project!!

If your are going to use an actual 'fist-pounding' manual like in your picture, then perhaps:

  • You can have one microswitch that is depressed when the 'key' is up;
  • One more microswitch that is depressed when the 'key' is down.
  • Then, it could be measured how long it takes between 'leaving' the upper switch until 'reaching' the lower switch -- giving you the strike velocity.
  • This assumes that it is acceptable/realistic that for slower/quiet 'hits' to the 'bells' the carillonneur has to fulfill the whole up-down travel. If not, more advanced (such as optic/magnetic field) sensoring is needed.
  • With the number of inputs (keys/pedals (if any)) you mention, an Arduino Mega could handle all of this. (Edit: Well, maybe not, because you'd have to double -- times two switches. Then two megas that each handle half of the manual might do it.)

This is all just spontaneously from the top of my head, I am not yet among the microcontroller experts!

Cheers and happy pounding,

HZ


AlexanderBunt

CyberGene Thank you very much! Yes, I understand the point haha, but for me this is very helpful… ;-)


AlexanderBunt

HZPiano Hmm that is interesting. What you say is not realy what I need (because sometimes the carillonneur makes just very little movement with the key (only like 1cm up and then again press the key down to hit the bell). So de measurement of the movement has to be very small, thats why I think sensors like the CNY70 would be very suitable.

Thanks for the help and I will keep you posted!


HZPiano

AlexanderBunt only like 1cm up and then again press the key down to hit the bell

Hello,

Hmmm. Thinking about an actual carillon, I started to suspect that while writing.

Essentially, that is why in digital pianos 3 sensors instead of two, or even optical/continuous sensors are in vogue. And you'll need what is called analogue inputs on any microcontrollers you'd select for your project.

There, @CyberGene 's and @RIP 's project sure will give you lots of great clues.

Cheers and happy idea development,

HZ


AlexanderBunt

CyberGene It's a pitty, but I can't get my sensor working. When I check my serial monitor, it only puts out '1 0', which (I think) is a result of a malfunctioning ciruit, or false components. See the the two pictures below for my circuit.

I see I made a mistake with the wiring for the sensor (blue and white wire not on the same line), but I fixed that and it didn't solve the problem…



AlexanderBunt

n-player Yeah maybe, but isn't this all without velocity?


« Previous Page Next Page »