Skip to content

Cybrid - a DIY MIDI controller with grand piano action

Johnstaf

Pete14 Kudos to CG, and yes, I forgot to mention (earlier) that other than talkin’ pivots, samples, and actions, we have a few geniuses ‘round here that are worth their weight in gold.

Keep in mind that by ‘few’ I mean two: CG & Del Vento!

Yep. 👍


Taushi

This is so impressive, but so totally out of my wheelhouse. I’d really love to build my own to my specifications, as I think the end result would probably better than what Kawai and Yamaha are doing.

I feel like I might be comfortable with the physical part, but the coding part is where my brain refuses to take part in things. 😂

Kudos to you all for accomplishing it. This may open a lot of doors, and may even get some competition that pushes the big brands to do better.


gzpiano

QuasiUnaFantasia

thanks for linking

present work is improving note-to-note consistency. Remaking all 176 sensors to get full 3.3v range. And, thinking about mechanical changes to better align sensors.

Also considering design improvements so anyone finding the open source repo would have as good chance as possible at successfully making their own hybrid piano. Or silent piano.



gzpiano

Yes that is a nice design.

For mine, flexibility was a primary goal. Resulted in one sensor per PCB so anyone can use for any key spacing. And each sensor contains all circuitry needed for independent operation.

Does make them more expensive.

I will research modifying my mainboard so it can support your sensor design too.


Mindbullets

This is amazing. What a cool bunch of projects! Thanks for sharing so much detail.


CyberGene

I’m wondering if a huge chunk of this discussion can actually be served better in its own discussion 🙂 There’s a lot of useful research and info exchanged which doesn’t actually have a lot in common with the original and shamefully primitive Cybrid of mine 😀 @RIP , as a DIY mod, feel free to use the move functionality to extract most of the recent posts in a new discussion if you think it’s worth it.


Dean

Hi Cybrid,

I saw your work on YouTube, and it's pretty awesome!

I'm curious about how the touch of a DIY MIDI controller compares to existing hybrid solutions like the Kawai NV10S or Casio GP500. I've played the Casio GP500 before, but I think it falls short of simulating a real grand piano in terms of touch and sound.

Is it possible to get a grand piano keybed and install a silence system on it? I think this might be the quickest way to build a hybrid piano MIDI controller.


CyberGene

Dean Hi Dean, welcome to PianoClack. Cybrid is the project name which is derived from my forum alias CyberGene.

The touch is as good as the keyboard action that you use. In my case there are no alterations to the original piano action besides adding a stop rail, so the hammers hit it instead of strings. But that doesn’t affect the touch since the hammers in a piano are detached from the keyboard (and action) right before they hit the string, so you don’t feel the actual strike, regardless of whether there are strings or anything else.

And you’re correct in your observation about the Casio. Although it’s a fine digital piano action, it doesn’t function in the same way as a real piano action since it doesn’t have a real escapement which is a big part of why a real piano feels the way it feels. That’s been a heated debate on digital piano forums and some people love the Casio. Again, it’s a very fine digital piano, one of the best there but it’s not as good as a real piano action IMO.

As to feasibility of my project. It was one of the first ones, and since I’m an amateur in this field, some of the design decisions I made are not good. Nevertheless, it’s a very fine feeling controller and I have compared it against my Yamaha AvantGrand N1X. It would be a stretch to say it’s worse. I think a good DIY controller is not such a rocket-science and even a suboptimal design would work fine. The most important part is the action itself, whereas electronics and velocity scanning are rather secondary but others might disagree.

In any case, here on this forum you’ll find other people’s DIY projects that are much better than mine but what’s more important, they are made to be reproducible, so you may want to take a look at the following starting page where there are links to useful info and projects, maintained by @RIP who is a great source of information for these things, he’s also the DIY mod of the forum:

https://pianoclack.com/forum/d/745-summary-of-digitalhybrid-piano-diy-projects

Regarding how easy it is to find a keyboard with an action. I hear it depends on where you are. There are many old grands on sale in the US, as far as I understand. However, I live in Bulgaria and it was very difficult to find one.


RIP

Hi Dean and welcome.
I agree with everything that @CyberGene wrote. And to be clear, I am a steal-tinkerer, not a real designer myself. I am also a nudger of people to make them work on the project, get results and share them (somebody would say nagger rather than nudger 🤣). So I suggest you that you also "follow" the real desingers, i.e. Greg aka stem_piano and Jay both here but mostly on github which is where the big part of the movement happens these days see https://github.com/stem-piano and https://github.com/jkominek/piano-conversion

If you look in this forum towards the beginning of my posts (will need to scroll quite a bit), you'll find description/suggestions on how to find a decent or even good action for a cheap. Jay also commented/discussed the issue.

Moreover, in the next week or two, I will be placing an order for some electronics, so if you think you are too and you let me know privately, we may both take advantage of volume discount (obviously this information is valid for other too). FWIW, when I will be just ready to place the order with exact costs etc, I will post it on the forum in case someone else would like to jump on the bandwagon....


CyberGene

sawyer bergeron I haven’t experimented with different materials and approaches, so I can’t say if there are quieter or louder solutions, however Cybrid ended up being only slightly louder than the N1X. I have a huge horizontal bar with a square section and there’s thick and rather heavy felt glued to the underside. And it’s the shanks that are stopped by it, not hammers. I think it should ideally be the hammers because the shanks experience a lot of stress in my case. But if I had gone for the hammers, I should have also made a two level stop rail because in a grand the strings are crossed and at two different heights, so hammers are calculated and mounted in that way too. In my case the entire stop rail tends to vibrate like a string which BTW by a lucky coincidence resembles a string 😀 But on the other hand, that was audible and if I’m gonna work more on that project (which I’m not), I’d definitely install middle support mounts to eliminate vibrations.

https://m.youtube.com/watch?v=ob_vb_UJhfY


RIP

To avoid making this conversation a monster impossible to read with irrelevant (to the "Cybrid" subject) discussion, I am moving the new discussion to https://pianoclack.com/forum/d/1501-another-diy-hybrid/4
Please subscribe to that conversation if you care about that part and reply there for non-Cybrid related talk.
Thanks!


TimBooo1989

Hello CyberGene,

I'm currently building your project, in the Github folder I saw calibration values ​​for the sensors, are these guide values ​​in volts that I can preset using a voltmeter or how should I understand that? The rest seems plausible.


CyberGene

TimBooo1989 I've not been using the project for a long time now, my memories are fading already, can you point to the exact lines you mean?


CyberGene

If you mean the Calibrate_Sensor_1/2/3 programs in the utils folder, those are actually temporary programs meant to assist in calibrating the sensors. Let me do some explanations first:

Not sure why I used the confusing word "sensor" but I actually meant sensor "point". Each optical sensor is used to detect three predefined distances of each hammer:

  • Point 3: Hammer at half the distance between rest point and stop rail. When the hammer is above that point, I consider this as the damper being lifted, so once I detect a hit and send a Note ON event, then I will wait for the hammer to drop below this point and is when I will send Note OFF.
  • Point 2: Hammer at 1mm from the stop rail (this is where hammer is released from the jack, i.e. the escapement), we start measuring duration from this point
  • Point 1: Hammer at (or very close to) the stop-rail, this is where we stop measuring duration and derive velocity from it

Now, through the trimpots you set where those three distances for each sensor (hence hammer) are. In order to quickly do that, I created the three helper programs for each sensor point.

Here's the procedure:

  • Upload the corresponding program for the corresponding "sensor" point (1, 2, 3).
  • The program is a very simple logic that detects if any sensor (for any hammer) is at a distance equal or closer to the corresponding point and if true, will lit the Teensy LED

To facilitate the initial rough calibration I use:

  • A simple wooden block that has such dimensions that when I put it at the stop-rail and lift the hammer, so that the hammer touches the block, then hammer is at exactly half the blow-distance (point 3).

  • I use a thin plastic strip with 1mm thickness for point 2.

  • For point 1 I just lift the hammer until it touches the stop-rail.

  • So, depending on which of these three utility programs are loaded, I use the corresponding wooden block, or strip, or the stop rail itself, and I lift each hammer one by one until it touches the wooden block, the strip or the stop-rail. And I observe the LED and turn the corresponding trimpot until the LED is lit.

Once I am ready, I then upload the main program loop and surprisingly the above calibration is already pretty close to the final result and the piano is pretty playable at this point. It takes less than 10 minutes to do the above and I doubt you have to do it often once performed for the very first time.

I then perform a finer manual adjustment without any tools, only playing the keys one by one and I devised the following procedure:

  • I play staccato notes with a high velocity and adjust the first position so that the corresponding key stops being detected. That means that I set the point way too high and the hammer cannot reach it because it's stopped by the rail before it. Then I begin to slowly back off until the hammer "appears" again. If you stop at that point, you will notice that very low velocity might still be missed because the stop-rail cushioning is not compressed enough to trigger it. Or, very high velocity strikes get missed because they are so quick, and the point is set so high, that the scanning doesn't have enough time to detect the hammer while at the point 1. That's why we need to give it some leeway and back off enough the trimpot, so that the hammer is always detected in the peak point, regardless of velocity. Once there, we have the top point set at a good enough distance
  • We then proceed to fine-setting the second point. Because adjusting the first point effectively changes the distance between it and the second point, it effectively changes the loudness of that hammer. So, I proceed fine-tuning the second point by ear, choosing a realistic velocity response of the key. This might sound like a very demanding task but surprisingly for me, it is a satisfying thing to do, since I felt like a real piano master who fine-tunes his piano. And actually it's very easy to feel where the good position is.
  • I will optionally fine-tune the third point to be where I need the note OFF to happen. My experience is it's not very important.

People often comment on how the above procedure is the main reason they didn't like that solution and how tedious it is, but in fact it's a pretty quick procedure that takes no more than 20-30 minutes in total and is required only the very first time. From there on, only an occasional touch-up is needed and I understand some people might dislike it but I felt like a big boss with a little screwdriver next to my piano to do the occasional touch-up because it made it feel closer to a real acoustic piano, rather than a digital piano because I had active involvement in how the piano feels 🙂


CyberGene

Seems I have forgotten the drill layers on GitHub. Here’s a zip with all the layers:

065212007.zip
13kB

TimBooo1989

CyberGene

this only the Sensor PCB-ZIP :-)

The Note and Teensy PCB are not in this Zip file 😉


« Previous Page