I made this neat demo of how an organ transfers input from the keys to opening the pallet. (The pallet is like a valve that lets in air to the pipes to make sound.)
It functions using the NickPatella piano system. The keys are made using hinges acting as servos, which set TargetAngle to 3 and then to 0 shortly after, with ball constraints making connecting joints with the vertical rods. I’ve encountered a few issues with it and I’m not sure what it could be since I’ve tweaked everything quite a bit. Everything’s set to CanCollide false (have also tried canColliding some things and not others to no avail). See the video! (pls don’t mind the bad audio, its temporary)
Yikes, don’t use Hinges as it’s both physics based (we know roblox physics are not the best) and overloads the system with unecessary physics calculation, since you can just use Motor6Ds and tween their C0 property on a key press.
A good plugin I recommend for creating these is RigEdit by Archmage.
If you’re not confortable changing your whole rig system to Motor6Ds, I would recommend setting Network Ownership of all physical keys to the server by running Part:SetNetworkOwner(nil) and Part:SetNetworkOwnershipAuto(nil), because it seems like when getting close and the client gains control over the key physics, they all start going crazy…!
As @Jexemie said, this many Constraints in such a small area are going to cause some issues.
Constraints are tough to use WITH Motor6Ds though. The movement caused by a Motor6D tends to have a delayed affect on Constraints attached to it.
Kind of off topic, but if you have HingeConstraints with very high rotational force Properties they’ll jitter when they are supposed to be stationary.
Also make sure that Parts with Constraints joining them should be close to the same Density.
I’d be tempted to use Motors (you can adust the movement speed) or tween welds for the key movement and the same for the valve movement at the same time.