I'm looking for some ideas please.
Recently I have completed converting a regular upright piano in to a player piano.
It uses 88 24v solenoids that press the back of a piano key directly under the point where the mechanical action of the piano operates.
The solenoids are connected to shift registers (via a npn transistor) the shift registers are driven by an arduino that receives midi commands.
This all works ok however I find the fastest pwm frequency I can get is around 100hz. I feel this is a limitation of the arduino driving the 11 x 74HC595 .
This is not a problem if I am wanting to play full velocity notes, when I want to play softer or lower velocity notes I tend to find the solenoids will not fire or if they do they buzz loudly... too slower of a frequency I feel I need to be up around 100khz or so.
So I'm looking for some ideas to speed things up.
Ideally I'd like to continue using the shift register boards as all the transistors are soldered on to that board, quite a lot of them...
My thoughts so far are
1 Replace the arduino with something faster
2 Use a separate micro controllers for each of the shift register boards, maybe this will help dedicate more speed to each shift register board?
3 Replace the shift registers with dedicated multi channel pwm boards - last resort.
I'm sure that someone here will have a cleaver idea or two any help or tips would be great!
This is a link to the piano in action. I have since completed it but have not yet taken any video.
https://youtu.be/xp2ocvnNoJsAnd yes the piano needs tuning!