What linear sensor for a keyboard? [on hold]
$begingroup$
I'm trying to make a velocity-sensitive keyboard for playing music.
I have to measure the position of each key in order to know how loud the sound should be.
The volume of the sound is a function of the velocity of the keys at the end of the descent. I know the position can be recovered from the velocity by integrating it.
What would be the cheapest and easiest, yet still reasonably precise way to do it?
I don't know exactly what “reasonably precise” would mean in the context. I'll have to test it.
The length of the maximum displacement is about 2 cm.
EDIT: not as some answers seem to suggest, the loudness is NOT function of the mean velocity of the key.
EDIT2: The loudness is function of the hammer speed at the moment it hits the string, but the key isn't pushing the hammer until the end of its path. It is really like throwing a ball on a wall: the ball leaves the hand at one moment, before it hits the wall.
sensor keyboard
New contributor
$endgroup$
put on hold as too broad by Hearth, Dmitry Grigoryev, laptop2d, Brian Carlton, Dave Tweed♦ 15 mins ago
Please edit the question to limit it to a specific problem with enough detail to identify an adequate answer. Avoid asking multiple distinct questions at once. See the How to Ask page for help clarifying this question. If this question can be reworded to fit the rules in the help center, please edit the question.
|
show 7 more comments
$begingroup$
I'm trying to make a velocity-sensitive keyboard for playing music.
I have to measure the position of each key in order to know how loud the sound should be.
The volume of the sound is a function of the velocity of the keys at the end of the descent. I know the position can be recovered from the velocity by integrating it.
What would be the cheapest and easiest, yet still reasonably precise way to do it?
I don't know exactly what “reasonably precise” would mean in the context. I'll have to test it.
The length of the maximum displacement is about 2 cm.
EDIT: not as some answers seem to suggest, the loudness is NOT function of the mean velocity of the key.
EDIT2: The loudness is function of the hammer speed at the moment it hits the string, but the key isn't pushing the hammer until the end of its path. It is really like throwing a ball on a wall: the ball leaves the hand at one moment, before it hits the wall.
sensor keyboard
New contributor
$endgroup$
put on hold as too broad by Hearth, Dmitry Grigoryev, laptop2d, Brian Carlton, Dave Tweed♦ 15 mins ago
Please edit the question to limit it to a specific problem with enough detail to identify an adequate answer. Avoid asking multiple distinct questions at once. See the How to Ask page for help clarifying this question. If this question can be reworded to fit the rules in the help center, please edit the question.
4
$begingroup$
You could use an IR-diode and a photodiode next to each other below the key, the photodiode measuring the reflected light. The lower the postion of the key, the more reflected light reaches the photodiode. Then convert the photocurrent to a voltage using a transimpedance amplifier. You will have to play around to see what voltage or voltage change corresponds to which volume.
$endgroup$
– jusaca
yesterday
$begingroup$
Have you considered putting an accelerometer on each key? Integrating acceleration gives you velocity, and integrating velocity gives you position. Since you're dealing with short distances & time periods you could probably ignore the accelerometers' small offset errors.
$endgroup$
– brhans
yesterday
1
$begingroup$
@cat I'm familiar with Launchpads and I still have no idea what you are talking about. Can you be a little more helpful?
$endgroup$
– Elliot Alderson
yesterday
1
$begingroup$
Yes I believe you are wrong. Compare a $1 accelerometer to an individual mechanical sensor on each key. Think of the reliability from zero moving parts (assuming you do the interconnects properly). You would need a reasonably capable microcontroller and a little experience writing firmware to pull it off though.
$endgroup$
– brhans
yesterday
1
$begingroup$
@jusaca looks like that's already a product on the market: deskthority.net/wiki/Adomax_Flaretech :)
$endgroup$
– user60561
yesterday
|
show 7 more comments
$begingroup$
I'm trying to make a velocity-sensitive keyboard for playing music.
I have to measure the position of each key in order to know how loud the sound should be.
The volume of the sound is a function of the velocity of the keys at the end of the descent. I know the position can be recovered from the velocity by integrating it.
What would be the cheapest and easiest, yet still reasonably precise way to do it?
I don't know exactly what “reasonably precise” would mean in the context. I'll have to test it.
The length of the maximum displacement is about 2 cm.
EDIT: not as some answers seem to suggest, the loudness is NOT function of the mean velocity of the key.
EDIT2: The loudness is function of the hammer speed at the moment it hits the string, but the key isn't pushing the hammer until the end of its path. It is really like throwing a ball on a wall: the ball leaves the hand at one moment, before it hits the wall.
sensor keyboard
New contributor
$endgroup$
I'm trying to make a velocity-sensitive keyboard for playing music.
I have to measure the position of each key in order to know how loud the sound should be.
The volume of the sound is a function of the velocity of the keys at the end of the descent. I know the position can be recovered from the velocity by integrating it.
What would be the cheapest and easiest, yet still reasonably precise way to do it?
I don't know exactly what “reasonably precise” would mean in the context. I'll have to test it.
The length of the maximum displacement is about 2 cm.
EDIT: not as some answers seem to suggest, the loudness is NOT function of the mean velocity of the key.
EDIT2: The loudness is function of the hammer speed at the moment it hits the string, but the key isn't pushing the hammer until the end of its path. It is really like throwing a ball on a wall: the ball leaves the hand at one moment, before it hits the wall.
sensor keyboard
sensor keyboard
New contributor
New contributor
edited yesterday
Jonas Daverio
New contributor
asked yesterday
Jonas DaverioJonas Daverio
395
395
New contributor
New contributor
put on hold as too broad by Hearth, Dmitry Grigoryev, laptop2d, Brian Carlton, Dave Tweed♦ 15 mins ago
Please edit the question to limit it to a specific problem with enough detail to identify an adequate answer. Avoid asking multiple distinct questions at once. See the How to Ask page for help clarifying this question. If this question can be reworded to fit the rules in the help center, please edit the question.
put on hold as too broad by Hearth, Dmitry Grigoryev, laptop2d, Brian Carlton, Dave Tweed♦ 15 mins ago
Please edit the question to limit it to a specific problem with enough detail to identify an adequate answer. Avoid asking multiple distinct questions at once. See the How to Ask page for help clarifying this question. If this question can be reworded to fit the rules in the help center, please edit the question.
4
$begingroup$
You could use an IR-diode and a photodiode next to each other below the key, the photodiode measuring the reflected light. The lower the postion of the key, the more reflected light reaches the photodiode. Then convert the photocurrent to a voltage using a transimpedance amplifier. You will have to play around to see what voltage or voltage change corresponds to which volume.
$endgroup$
– jusaca
yesterday
$begingroup$
Have you considered putting an accelerometer on each key? Integrating acceleration gives you velocity, and integrating velocity gives you position. Since you're dealing with short distances & time periods you could probably ignore the accelerometers' small offset errors.
$endgroup$
– brhans
yesterday
1
$begingroup$
@cat I'm familiar with Launchpads and I still have no idea what you are talking about. Can you be a little more helpful?
$endgroup$
– Elliot Alderson
yesterday
1
$begingroup$
Yes I believe you are wrong. Compare a $1 accelerometer to an individual mechanical sensor on each key. Think of the reliability from zero moving parts (assuming you do the interconnects properly). You would need a reasonably capable microcontroller and a little experience writing firmware to pull it off though.
$endgroup$
– brhans
yesterday
1
$begingroup$
@jusaca looks like that's already a product on the market: deskthority.net/wiki/Adomax_Flaretech :)
$endgroup$
– user60561
yesterday
|
show 7 more comments
4
$begingroup$
You could use an IR-diode and a photodiode next to each other below the key, the photodiode measuring the reflected light. The lower the postion of the key, the more reflected light reaches the photodiode. Then convert the photocurrent to a voltage using a transimpedance amplifier. You will have to play around to see what voltage or voltage change corresponds to which volume.
$endgroup$
– jusaca
yesterday
$begingroup$
Have you considered putting an accelerometer on each key? Integrating acceleration gives you velocity, and integrating velocity gives you position. Since you're dealing with short distances & time periods you could probably ignore the accelerometers' small offset errors.
$endgroup$
– brhans
yesterday
1
$begingroup$
@cat I'm familiar with Launchpads and I still have no idea what you are talking about. Can you be a little more helpful?
$endgroup$
– Elliot Alderson
yesterday
1
$begingroup$
Yes I believe you are wrong. Compare a $1 accelerometer to an individual mechanical sensor on each key. Think of the reliability from zero moving parts (assuming you do the interconnects properly). You would need a reasonably capable microcontroller and a little experience writing firmware to pull it off though.
$endgroup$
– brhans
yesterday
1
$begingroup$
@jusaca looks like that's already a product on the market: deskthority.net/wiki/Adomax_Flaretech :)
$endgroup$
– user60561
yesterday
4
4
$begingroup$
You could use an IR-diode and a photodiode next to each other below the key, the photodiode measuring the reflected light. The lower the postion of the key, the more reflected light reaches the photodiode. Then convert the photocurrent to a voltage using a transimpedance amplifier. You will have to play around to see what voltage or voltage change corresponds to which volume.
$endgroup$
– jusaca
yesterday
$begingroup$
You could use an IR-diode and a photodiode next to each other below the key, the photodiode measuring the reflected light. The lower the postion of the key, the more reflected light reaches the photodiode. Then convert the photocurrent to a voltage using a transimpedance amplifier. You will have to play around to see what voltage or voltage change corresponds to which volume.
$endgroup$
– jusaca
yesterday
$begingroup$
Have you considered putting an accelerometer on each key? Integrating acceleration gives you velocity, and integrating velocity gives you position. Since you're dealing with short distances & time periods you could probably ignore the accelerometers' small offset errors.
$endgroup$
– brhans
yesterday
$begingroup$
Have you considered putting an accelerometer on each key? Integrating acceleration gives you velocity, and integrating velocity gives you position. Since you're dealing with short distances & time periods you could probably ignore the accelerometers' small offset errors.
$endgroup$
– brhans
yesterday
1
1
$begingroup$
@cat I'm familiar with Launchpads and I still have no idea what you are talking about. Can you be a little more helpful?
$endgroup$
– Elliot Alderson
yesterday
$begingroup$
@cat I'm familiar with Launchpads and I still have no idea what you are talking about. Can you be a little more helpful?
$endgroup$
– Elliot Alderson
yesterday
1
1
$begingroup$
Yes I believe you are wrong. Compare a $1 accelerometer to an individual mechanical sensor on each key. Think of the reliability from zero moving parts (assuming you do the interconnects properly). You would need a reasonably capable microcontroller and a little experience writing firmware to pull it off though.
$endgroup$
– brhans
yesterday
$begingroup$
Yes I believe you are wrong. Compare a $1 accelerometer to an individual mechanical sensor on each key. Think of the reliability from zero moving parts (assuming you do the interconnects properly). You would need a reasonably capable microcontroller and a little experience writing firmware to pull it off though.
$endgroup$
– brhans
yesterday
1
1
$begingroup$
@jusaca looks like that's already a product on the market: deskthority.net/wiki/Adomax_Flaretech :)
$endgroup$
– user60561
yesterday
$begingroup$
@jusaca looks like that's already a product on the market: deskthority.net/wiki/Adomax_Flaretech :)
$endgroup$
– user60561
yesterday
|
show 7 more comments
9 Answers
9
active
oldest
votes
$begingroup$
Most keyboards simply use two contacts per key, configured so that they close (or open) at different positions in the key's travel. They estimate velocity from the time that elapses between the two events. Even the fancy weighted "piano action" keyboards use this basic sensing method.
Trying to measure position and/or velocity directly sounds like massive overkill.
$endgroup$
3
$begingroup$
I think this method is insufficient. Here's why: if I slowly push the key down half of the path, and then quickly push it down to the end, the sound would be loud on a real piano, and this method would think the key was pushed really slowly and therefore output a really quiet sound. In addition, if I want to repeat a note, I would have to let the key completely return to its original position, which is not at all what I would do on a real piano.
$endgroup$
– Jonas Daverio
yesterday
8
$begingroup$
If one contact was at the bottom and the other contact was very near the bottom, you would not have this problem.
$endgroup$
– George White
yesterday
1
$begingroup$
Every real instrument has its nuances and limitations. Musicians develop techniques to exploit these for musical effect. The player will soon learn to carry through to the bottom of stroke to get the desired effect.
$endgroup$
– Transistor
yesterday
1
$begingroup$
@Transistor Yes, indeed, but my goal here is to try to simulate as close as possible a real piano. There are already plenty of keyboards available, but I never found one that did that. There are probably some really expensive one, though.
$endgroup$
– Jonas Daverio
yesterday
1
$begingroup$
The point would be to have a midi output and the possibility to have more keys (for microtonality) while keeping all the sensation of a real piano. I know this will never be reached anyway. And I also want to keep it relatively cheap, but if I can't, I'll stick on the regular solution.
$endgroup$
– Jonas Daverio
yesterday
|
show 8 more comments
$begingroup$
I have to measure the position of each key in order to know how loud the sound should be.
Normally key velocity is calculated by measuring the time between the normally closed up-switch breaking and the normally open down-switch making.
simulate this circuit – Schematic created using CircuitLab
Figure 1. A break-before-make keyboard contact is typically used for velocity measurement.
The volume of the sound is not only function of the velocity of the keys at the end of the descent. ...
The length of the maximum displacement is about 2 cm.
In this case you need to mechanically arrange the normally closed contact so that it breaks in the last few mm of travel.
simulate this circuit
Figure 2. The mechanical switching arrangement.
It seems to me that your best bet would be to modify an existing MIDI bass pedalboard to suit your purposes.
OP's comment to Dave Tweed:
I think this method is insufficient. Here's why: if I slowly push the key down half of the path, and then quickly push it down to the end, the sound would be loud on a real piano, and this method would think the key was pushed really slowly and therefore output a really quiet sound. In addition, if I want to repeat a note, I would have to let the key completely return to its original position, which is not at all what I would do on a real piano.
That is why I proposed activating the changeover switch in the last few mm of travel.
$endgroup$
$begingroup$
I responded back for why I think this is still insufficient.
$endgroup$
– Jonas Daverio
yesterday
$begingroup$
I think you misread what I wrote. I meant "The volume of the sound is NOT only function of the velocity of the keys at the end of the descent."
$endgroup$
– Jonas Daverio
yesterday
$begingroup$
Indeed, the energy depends on the speed over the time-length of the impact, which is a function of acceleration (and the jerk, if you don't assume constant acceleration). However, are sure that makes much of a difference? Can you characterize the specifics that you have or are looking for? I don't know what that would be. It might depend on the effect that it's supposed to have on the algorithm.
$endgroup$
– vectory
6 hours ago
$begingroup$
@JonasDaverio Are you referring to escapement? Digital pianos accomplish this with a third sensor that fires slightly above where the key bottoms out (and above the sensor that sounds the note). If the key does not go high enough to release this 3rd sensor, then bottoming out the key will not sound a second note, just like a real piano does not release the hammer unless the key is raised high enough.
$endgroup$
– Toor
5 hours ago
add a comment |
$begingroup$
If the important variable is the impact of a "hammer" that you're trying to emulate, consider piezo sensors which allow you to measure this directly. They produce a pulse whose amplitude depends on the impact impulse.
$endgroup$
add a comment |
$begingroup$
You should take a look at analog keyboards. Take a look at this video. This is just an example of concept.
Edit:
Also, if optical switches are not working for you, take a look at this:
There is a PCB printed coil under each key cap. As you press the button coil measures the inductance change caused by key spring compressing and decompressing, therefore, you can get pretty accurate reading of the switch position.
Below is static image from linked video material.
New contributor
$endgroup$
$begingroup$
Apparently, they use a pair of IR-LED and photosensor: blog.wooting.nl/flaretech-the-optical-keyboard-switch However, I'm not sure wether they measure the delay between the emission and the detection or wether they measure the intensity of the light that could make through the tunnel.
$endgroup$
– Jonas Daverio
18 hours ago
$begingroup$
I linked that just for the example of analog keyboard. You can take a look at reddit.com/r/MechanicalKeyboards/comments/9ii6gw/… and imgur.com/gallery/ImrH7nO . I'am not too familiar with the subject, just trying to help to push you into right direction :)
$endgroup$
– Matt
17 hours ago
1
$begingroup$
While this link may answer the question, it is better to include the essential parts of the answer here and provide the link for reference. Link-only answers can become invalid if the linked page changes. - From Review
$endgroup$
– Blair Fonville
17 hours ago
1
$begingroup$
@BlairFonville Fair enough. Let me summarize it. There is a PCB printed coil under each key cap. As you press the button coil measures the inductance change caused by key spring compressing and decompressing, therefore, you can get pretty accurate reading of the switch position.
$endgroup$
– Matt
16 hours ago
add a comment |
$begingroup$
You can treat this as a hybrid digital/analog instrument by placing microphones[1] inside the keyboard, tuned to the sound of striking the keys. Signals from the microphones augment the traditional switch-based input, so the switch tells you which key is pressed, and the microphones tell you how loud the most recent keypress was.
2 or more microphones along the keyboard's length would permit decoding a chord with loud/low notes and soft/high notes and vice versa.
[1]: I keep saying "microphone", but I mean "generic vibration sensing device".
$endgroup$
$begingroup$
That's pretty much how an E-Guitar works, I guess. However, the question didn't mention any acoustic parts, just keys.
$endgroup$
– vectory
6 hours ago
add a comment |
$begingroup$
One option could be Hall sensors, which sense the strength of a magnetic field. There are different types of Hall sensors for digital and analog sensing, you need one that has analog. For example SI7211 costs about 0.80 USD.
You also need a small magnet underneath each key. When the magnet gets closer to the sensor, the magnetic field increases which increases the sensor's output voltage.
$endgroup$
1
$begingroup$
Apparently, they use it on some music keyboards. I think this is a really simple and good solution. I will compare the costs with 0xDBFB7's solution.
$endgroup$
– Jonas Daverio
12 hours ago
add a comment |
$begingroup$
How about capacitive sensing? Tape some aluminum foil to the bottom of the key, ground the bottom of the keyboard, and measure the rise time through a 100k resistor.
This method can be made almost arbitrarily precise, as long as your processor is fast enough to discriminate the change in capacitance.
I didn't explain the circuit very well. You connect a digital output to the key via a high value resistor, set it low to discharge any stray charge, and then set it high. You also connect a digital input directly to the key. The capacitance will slowly charge through the resistor, and you time how long it takes before the digital input turns on. This time is equal to the RC time constant of the circuit.
$endgroup$
$begingroup$
So, I would have to pass AC in it, wouldn't I?
$endgroup$
– Jonas Daverio
yesterday
1
$begingroup$
@JonasDaverio I'm not sure what you're connecting the keys to, but one GPIO per key would suffice.
$endgroup$
– 0xDBFB7
yesterday
$begingroup$
I'm not sure how I am supposed to measure the capacitance. One plate is connected to ground and the other is connected to what? A constant voltage source?
$endgroup$
– Jonas Daverio
17 hours ago
1
$begingroup$
The Teensy LC microcontroller[1] has 11 capacitive sensing inputs and a C++ library that makes it as easy as callinganalogRead
in Arduino. [1]: pjrc.com/teensy/teensyLC.html
$endgroup$
– hoosierEE
14 hours ago
1
$begingroup$
@JonasDaverio sorry, I didn't explain the circuit very well. You connect a digital output to the key via a high value resistor, set it low to discharge any stray charge, and then set it high. You also connect a digital input directly to the key. The capacitance will slowly charge through the resistor, and you time how long it takes before the digital input turns on. This time is equal to the RC time constant of the circuit.
$endgroup$
– 0xDBFB7
14 hours ago
|
show 1 more comment
$begingroup$
You may want to research spring return variable resistors, spring return potentiometers, or linear position sensors. Here is one example:
http://ecatalog.beisensors.com/item/linear-position-sensors/linear-position-sensor-9600-series-compact-spri/9610r3-4kl2-0
Another possibility may be to use a small rotary encoder (and mechanically convert the linear key press motion to rotary motion). The encoder would output one or more sets of pulses as the shaft rotates. A higher pulse rate would indicate a higher velocity press. The encoder position could be tracked directly if the pulse groups are sent to additional digital logic. Here's an example part: https://www.mouser.com/ProductDetail/Bourns/PEC16-4220F-S0024?qs=6FD5PBp7ZtQte%252Bg7b%2FiMUw%3D%3D&gclid=EAIaIQobChMIrKbIjOSa4QIVCEsNCh3JAAKuEAQYAyABEgKM_fD_BwE
$endgroup$
add a comment |
$begingroup$
If you want super-accuracy at a reasonable price, how about using a linear encoder, attaching a Gray-coded strip (which you print yourself using a laser printer onto a transparent sheet, then cut up and attach one to each key) - more details of how they work under rotary encoders here. This way you need two (perhaps 3 so you get an accurate indication of end position) digital lines per key. This will allow you to measure velocity with very good accuracy and even position if that's relevant. The advantage of this is you could retrofit it to an old keyboard (even an acoustic keyboard).
Caution: when I was a teenager (a long while ago) I wondered for ages whether I could make a realistic keyboard more cheaply than buying them. It seemed unlikely then and it seems even less likely now. The cost effective method is therefore probably "buy a velocity sensitive keyboard and take it apart" which is no fun.
$endgroup$
1
$begingroup$
Yes, I'm not pretending this will end up cheaper than a commercial one, but I'm trying to construct a special arrangement of keys that doesn't exist on the market. For your answer, I'm not really sure what you mean. Do you mean making a linear encoder from scratch? I don't understand what's the point of the transparent strip. And 3 bits seems a bit low to encode precisely the position and to deduce the velocity from it.
$endgroup$
– Jonas Daverio
17 hours ago
$begingroup$
A linear encoder will give you velocity with 2 bits only (see links) to a great resolution (you could get position to 256ths of the travel distance very easily). By timing the period between grey code bit transitions you will get a very accurate picture of velocity at different stages of travel of the key. 3rd bit gives you accurate 'hammer hits strings' signal. I was suggesting you use a linear encoder optical reader with your own 'tape' - transparent strip.
$endgroup$
– abligh
6 hours ago
add a comment |
9 Answers
9
active
oldest
votes
9 Answers
9
active
oldest
votes
active
oldest
votes
active
oldest
votes
$begingroup$
Most keyboards simply use two contacts per key, configured so that they close (or open) at different positions in the key's travel. They estimate velocity from the time that elapses between the two events. Even the fancy weighted "piano action" keyboards use this basic sensing method.
Trying to measure position and/or velocity directly sounds like massive overkill.
$endgroup$
3
$begingroup$
I think this method is insufficient. Here's why: if I slowly push the key down half of the path, and then quickly push it down to the end, the sound would be loud on a real piano, and this method would think the key was pushed really slowly and therefore output a really quiet sound. In addition, if I want to repeat a note, I would have to let the key completely return to its original position, which is not at all what I would do on a real piano.
$endgroup$
– Jonas Daverio
yesterday
8
$begingroup$
If one contact was at the bottom and the other contact was very near the bottom, you would not have this problem.
$endgroup$
– George White
yesterday
1
$begingroup$
Every real instrument has its nuances and limitations. Musicians develop techniques to exploit these for musical effect. The player will soon learn to carry through to the bottom of stroke to get the desired effect.
$endgroup$
– Transistor
yesterday
1
$begingroup$
@Transistor Yes, indeed, but my goal here is to try to simulate as close as possible a real piano. There are already plenty of keyboards available, but I never found one that did that. There are probably some really expensive one, though.
$endgroup$
– Jonas Daverio
yesterday
1
$begingroup$
The point would be to have a midi output and the possibility to have more keys (for microtonality) while keeping all the sensation of a real piano. I know this will never be reached anyway. And I also want to keep it relatively cheap, but if I can't, I'll stick on the regular solution.
$endgroup$
– Jonas Daverio
yesterday
|
show 8 more comments
$begingroup$
Most keyboards simply use two contacts per key, configured so that they close (or open) at different positions in the key's travel. They estimate velocity from the time that elapses between the two events. Even the fancy weighted "piano action" keyboards use this basic sensing method.
Trying to measure position and/or velocity directly sounds like massive overkill.
$endgroup$
3
$begingroup$
I think this method is insufficient. Here's why: if I slowly push the key down half of the path, and then quickly push it down to the end, the sound would be loud on a real piano, and this method would think the key was pushed really slowly and therefore output a really quiet sound. In addition, if I want to repeat a note, I would have to let the key completely return to its original position, which is not at all what I would do on a real piano.
$endgroup$
– Jonas Daverio
yesterday
8
$begingroup$
If one contact was at the bottom and the other contact was very near the bottom, you would not have this problem.
$endgroup$
– George White
yesterday
1
$begingroup$
Every real instrument has its nuances and limitations. Musicians develop techniques to exploit these for musical effect. The player will soon learn to carry through to the bottom of stroke to get the desired effect.
$endgroup$
– Transistor
yesterday
1
$begingroup$
@Transistor Yes, indeed, but my goal here is to try to simulate as close as possible a real piano. There are already plenty of keyboards available, but I never found one that did that. There are probably some really expensive one, though.
$endgroup$
– Jonas Daverio
yesterday
1
$begingroup$
The point would be to have a midi output and the possibility to have more keys (for microtonality) while keeping all the sensation of a real piano. I know this will never be reached anyway. And I also want to keep it relatively cheap, but if I can't, I'll stick on the regular solution.
$endgroup$
– Jonas Daverio
yesterday
|
show 8 more comments
$begingroup$
Most keyboards simply use two contacts per key, configured so that they close (or open) at different positions in the key's travel. They estimate velocity from the time that elapses between the two events. Even the fancy weighted "piano action" keyboards use this basic sensing method.
Trying to measure position and/or velocity directly sounds like massive overkill.
$endgroup$
Most keyboards simply use two contacts per key, configured so that they close (or open) at different positions in the key's travel. They estimate velocity from the time that elapses between the two events. Even the fancy weighted "piano action" keyboards use this basic sensing method.
Trying to measure position and/or velocity directly sounds like massive overkill.
answered yesterday
Dave Tweed♦Dave Tweed
122k9152264
122k9152264
3
$begingroup$
I think this method is insufficient. Here's why: if I slowly push the key down half of the path, and then quickly push it down to the end, the sound would be loud on a real piano, and this method would think the key was pushed really slowly and therefore output a really quiet sound. In addition, if I want to repeat a note, I would have to let the key completely return to its original position, which is not at all what I would do on a real piano.
$endgroup$
– Jonas Daverio
yesterday
8
$begingroup$
If one contact was at the bottom and the other contact was very near the bottom, you would not have this problem.
$endgroup$
– George White
yesterday
1
$begingroup$
Every real instrument has its nuances and limitations. Musicians develop techniques to exploit these for musical effect. The player will soon learn to carry through to the bottom of stroke to get the desired effect.
$endgroup$
– Transistor
yesterday
1
$begingroup$
@Transistor Yes, indeed, but my goal here is to try to simulate as close as possible a real piano. There are already plenty of keyboards available, but I never found one that did that. There are probably some really expensive one, though.
$endgroup$
– Jonas Daverio
yesterday
1
$begingroup$
The point would be to have a midi output and the possibility to have more keys (for microtonality) while keeping all the sensation of a real piano. I know this will never be reached anyway. And I also want to keep it relatively cheap, but if I can't, I'll stick on the regular solution.
$endgroup$
– Jonas Daverio
yesterday
|
show 8 more comments
3
$begingroup$
I think this method is insufficient. Here's why: if I slowly push the key down half of the path, and then quickly push it down to the end, the sound would be loud on a real piano, and this method would think the key was pushed really slowly and therefore output a really quiet sound. In addition, if I want to repeat a note, I would have to let the key completely return to its original position, which is not at all what I would do on a real piano.
$endgroup$
– Jonas Daverio
yesterday
8
$begingroup$
If one contact was at the bottom and the other contact was very near the bottom, you would not have this problem.
$endgroup$
– George White
yesterday
1
$begingroup$
Every real instrument has its nuances and limitations. Musicians develop techniques to exploit these for musical effect. The player will soon learn to carry through to the bottom of stroke to get the desired effect.
$endgroup$
– Transistor
yesterday
1
$begingroup$
@Transistor Yes, indeed, but my goal here is to try to simulate as close as possible a real piano. There are already plenty of keyboards available, but I never found one that did that. There are probably some really expensive one, though.
$endgroup$
– Jonas Daverio
yesterday
1
$begingroup$
The point would be to have a midi output and the possibility to have more keys (for microtonality) while keeping all the sensation of a real piano. I know this will never be reached anyway. And I also want to keep it relatively cheap, but if I can't, I'll stick on the regular solution.
$endgroup$
– Jonas Daverio
yesterday
3
3
$begingroup$
I think this method is insufficient. Here's why: if I slowly push the key down half of the path, and then quickly push it down to the end, the sound would be loud on a real piano, and this method would think the key was pushed really slowly and therefore output a really quiet sound. In addition, if I want to repeat a note, I would have to let the key completely return to its original position, which is not at all what I would do on a real piano.
$endgroup$
– Jonas Daverio
yesterday
$begingroup$
I think this method is insufficient. Here's why: if I slowly push the key down half of the path, and then quickly push it down to the end, the sound would be loud on a real piano, and this method would think the key was pushed really slowly and therefore output a really quiet sound. In addition, if I want to repeat a note, I would have to let the key completely return to its original position, which is not at all what I would do on a real piano.
$endgroup$
– Jonas Daverio
yesterday
8
8
$begingroup$
If one contact was at the bottom and the other contact was very near the bottom, you would not have this problem.
$endgroup$
– George White
yesterday
$begingroup$
If one contact was at the bottom and the other contact was very near the bottom, you would not have this problem.
$endgroup$
– George White
yesterday
1
1
$begingroup$
Every real instrument has its nuances and limitations. Musicians develop techniques to exploit these for musical effect. The player will soon learn to carry through to the bottom of stroke to get the desired effect.
$endgroup$
– Transistor
yesterday
$begingroup$
Every real instrument has its nuances and limitations. Musicians develop techniques to exploit these for musical effect. The player will soon learn to carry through to the bottom of stroke to get the desired effect.
$endgroup$
– Transistor
yesterday
1
1
$begingroup$
@Transistor Yes, indeed, but my goal here is to try to simulate as close as possible a real piano. There are already plenty of keyboards available, but I never found one that did that. There are probably some really expensive one, though.
$endgroup$
– Jonas Daverio
yesterday
$begingroup$
@Transistor Yes, indeed, but my goal here is to try to simulate as close as possible a real piano. There are already plenty of keyboards available, but I never found one that did that. There are probably some really expensive one, though.
$endgroup$
– Jonas Daverio
yesterday
1
1
$begingroup$
The point would be to have a midi output and the possibility to have more keys (for microtonality) while keeping all the sensation of a real piano. I know this will never be reached anyway. And I also want to keep it relatively cheap, but if I can't, I'll stick on the regular solution.
$endgroup$
– Jonas Daverio
yesterday
$begingroup$
The point would be to have a midi output and the possibility to have more keys (for microtonality) while keeping all the sensation of a real piano. I know this will never be reached anyway. And I also want to keep it relatively cheap, but if I can't, I'll stick on the regular solution.
$endgroup$
– Jonas Daverio
yesterday
|
show 8 more comments
$begingroup$
I have to measure the position of each key in order to know how loud the sound should be.
Normally key velocity is calculated by measuring the time between the normally closed up-switch breaking and the normally open down-switch making.
simulate this circuit – Schematic created using CircuitLab
Figure 1. A break-before-make keyboard contact is typically used for velocity measurement.
The volume of the sound is not only function of the velocity of the keys at the end of the descent. ...
The length of the maximum displacement is about 2 cm.
In this case you need to mechanically arrange the normally closed contact so that it breaks in the last few mm of travel.
simulate this circuit
Figure 2. The mechanical switching arrangement.
It seems to me that your best bet would be to modify an existing MIDI bass pedalboard to suit your purposes.
OP's comment to Dave Tweed:
I think this method is insufficient. Here's why: if I slowly push the key down half of the path, and then quickly push it down to the end, the sound would be loud on a real piano, and this method would think the key was pushed really slowly and therefore output a really quiet sound. In addition, if I want to repeat a note, I would have to let the key completely return to its original position, which is not at all what I would do on a real piano.
That is why I proposed activating the changeover switch in the last few mm of travel.
$endgroup$
$begingroup$
I responded back for why I think this is still insufficient.
$endgroup$
– Jonas Daverio
yesterday
$begingroup$
I think you misread what I wrote. I meant "The volume of the sound is NOT only function of the velocity of the keys at the end of the descent."
$endgroup$
– Jonas Daverio
yesterday
$begingroup$
Indeed, the energy depends on the speed over the time-length of the impact, which is a function of acceleration (and the jerk, if you don't assume constant acceleration). However, are sure that makes much of a difference? Can you characterize the specifics that you have or are looking for? I don't know what that would be. It might depend on the effect that it's supposed to have on the algorithm.
$endgroup$
– vectory
6 hours ago
$begingroup$
@JonasDaverio Are you referring to escapement? Digital pianos accomplish this with a third sensor that fires slightly above where the key bottoms out (and above the sensor that sounds the note). If the key does not go high enough to release this 3rd sensor, then bottoming out the key will not sound a second note, just like a real piano does not release the hammer unless the key is raised high enough.
$endgroup$
– Toor
5 hours ago
add a comment |
$begingroup$
I have to measure the position of each key in order to know how loud the sound should be.
Normally key velocity is calculated by measuring the time between the normally closed up-switch breaking and the normally open down-switch making.
simulate this circuit – Schematic created using CircuitLab
Figure 1. A break-before-make keyboard contact is typically used for velocity measurement.
The volume of the sound is not only function of the velocity of the keys at the end of the descent. ...
The length of the maximum displacement is about 2 cm.
In this case you need to mechanically arrange the normally closed contact so that it breaks in the last few mm of travel.
simulate this circuit
Figure 2. The mechanical switching arrangement.
It seems to me that your best bet would be to modify an existing MIDI bass pedalboard to suit your purposes.
OP's comment to Dave Tweed:
I think this method is insufficient. Here's why: if I slowly push the key down half of the path, and then quickly push it down to the end, the sound would be loud on a real piano, and this method would think the key was pushed really slowly and therefore output a really quiet sound. In addition, if I want to repeat a note, I would have to let the key completely return to its original position, which is not at all what I would do on a real piano.
That is why I proposed activating the changeover switch in the last few mm of travel.
$endgroup$
$begingroup$
I responded back for why I think this is still insufficient.
$endgroup$
– Jonas Daverio
yesterday
$begingroup$
I think you misread what I wrote. I meant "The volume of the sound is NOT only function of the velocity of the keys at the end of the descent."
$endgroup$
– Jonas Daverio
yesterday
$begingroup$
Indeed, the energy depends on the speed over the time-length of the impact, which is a function of acceleration (and the jerk, if you don't assume constant acceleration). However, are sure that makes much of a difference? Can you characterize the specifics that you have or are looking for? I don't know what that would be. It might depend on the effect that it's supposed to have on the algorithm.
$endgroup$
– vectory
6 hours ago
$begingroup$
@JonasDaverio Are you referring to escapement? Digital pianos accomplish this with a third sensor that fires slightly above where the key bottoms out (and above the sensor that sounds the note). If the key does not go high enough to release this 3rd sensor, then bottoming out the key will not sound a second note, just like a real piano does not release the hammer unless the key is raised high enough.
$endgroup$
– Toor
5 hours ago
add a comment |
$begingroup$
I have to measure the position of each key in order to know how loud the sound should be.
Normally key velocity is calculated by measuring the time between the normally closed up-switch breaking and the normally open down-switch making.
simulate this circuit – Schematic created using CircuitLab
Figure 1. A break-before-make keyboard contact is typically used for velocity measurement.
The volume of the sound is not only function of the velocity of the keys at the end of the descent. ...
The length of the maximum displacement is about 2 cm.
In this case you need to mechanically arrange the normally closed contact so that it breaks in the last few mm of travel.
simulate this circuit
Figure 2. The mechanical switching arrangement.
It seems to me that your best bet would be to modify an existing MIDI bass pedalboard to suit your purposes.
OP's comment to Dave Tweed:
I think this method is insufficient. Here's why: if I slowly push the key down half of the path, and then quickly push it down to the end, the sound would be loud on a real piano, and this method would think the key was pushed really slowly and therefore output a really quiet sound. In addition, if I want to repeat a note, I would have to let the key completely return to its original position, which is not at all what I would do on a real piano.
That is why I proposed activating the changeover switch in the last few mm of travel.
$endgroup$
I have to measure the position of each key in order to know how loud the sound should be.
Normally key velocity is calculated by measuring the time between the normally closed up-switch breaking and the normally open down-switch making.
simulate this circuit – Schematic created using CircuitLab
Figure 1. A break-before-make keyboard contact is typically used for velocity measurement.
The volume of the sound is not only function of the velocity of the keys at the end of the descent. ...
The length of the maximum displacement is about 2 cm.
In this case you need to mechanically arrange the normally closed contact so that it breaks in the last few mm of travel.
simulate this circuit
Figure 2. The mechanical switching arrangement.
It seems to me that your best bet would be to modify an existing MIDI bass pedalboard to suit your purposes.
OP's comment to Dave Tweed:
I think this method is insufficient. Here's why: if I slowly push the key down half of the path, and then quickly push it down to the end, the sound would be loud on a real piano, and this method would think the key was pushed really slowly and therefore output a really quiet sound. In addition, if I want to repeat a note, I would have to let the key completely return to its original position, which is not at all what I would do on a real piano.
That is why I proposed activating the changeover switch in the last few mm of travel.
edited yesterday
answered yesterday
TransistorTransistor
87.4k785189
87.4k785189
$begingroup$
I responded back for why I think this is still insufficient.
$endgroup$
– Jonas Daverio
yesterday
$begingroup$
I think you misread what I wrote. I meant "The volume of the sound is NOT only function of the velocity of the keys at the end of the descent."
$endgroup$
– Jonas Daverio
yesterday
$begingroup$
Indeed, the energy depends on the speed over the time-length of the impact, which is a function of acceleration (and the jerk, if you don't assume constant acceleration). However, are sure that makes much of a difference? Can you characterize the specifics that you have or are looking for? I don't know what that would be. It might depend on the effect that it's supposed to have on the algorithm.
$endgroup$
– vectory
6 hours ago
$begingroup$
@JonasDaverio Are you referring to escapement? Digital pianos accomplish this with a third sensor that fires slightly above where the key bottoms out (and above the sensor that sounds the note). If the key does not go high enough to release this 3rd sensor, then bottoming out the key will not sound a second note, just like a real piano does not release the hammer unless the key is raised high enough.
$endgroup$
– Toor
5 hours ago
add a comment |
$begingroup$
I responded back for why I think this is still insufficient.
$endgroup$
– Jonas Daverio
yesterday
$begingroup$
I think you misread what I wrote. I meant "The volume of the sound is NOT only function of the velocity of the keys at the end of the descent."
$endgroup$
– Jonas Daverio
yesterday
$begingroup$
Indeed, the energy depends on the speed over the time-length of the impact, which is a function of acceleration (and the jerk, if you don't assume constant acceleration). However, are sure that makes much of a difference? Can you characterize the specifics that you have or are looking for? I don't know what that would be. It might depend on the effect that it's supposed to have on the algorithm.
$endgroup$
– vectory
6 hours ago
$begingroup$
@JonasDaverio Are you referring to escapement? Digital pianos accomplish this with a third sensor that fires slightly above where the key bottoms out (and above the sensor that sounds the note). If the key does not go high enough to release this 3rd sensor, then bottoming out the key will not sound a second note, just like a real piano does not release the hammer unless the key is raised high enough.
$endgroup$
– Toor
5 hours ago
$begingroup$
I responded back for why I think this is still insufficient.
$endgroup$
– Jonas Daverio
yesterday
$begingroup$
I responded back for why I think this is still insufficient.
$endgroup$
– Jonas Daverio
yesterday
$begingroup$
I think you misread what I wrote. I meant "The volume of the sound is NOT only function of the velocity of the keys at the end of the descent."
$endgroup$
– Jonas Daverio
yesterday
$begingroup$
I think you misread what I wrote. I meant "The volume of the sound is NOT only function of the velocity of the keys at the end of the descent."
$endgroup$
– Jonas Daverio
yesterday
$begingroup$
Indeed, the energy depends on the speed over the time-length of the impact, which is a function of acceleration (and the jerk, if you don't assume constant acceleration). However, are sure that makes much of a difference? Can you characterize the specifics that you have or are looking for? I don't know what that would be. It might depend on the effect that it's supposed to have on the algorithm.
$endgroup$
– vectory
6 hours ago
$begingroup$
Indeed, the energy depends on the speed over the time-length of the impact, which is a function of acceleration (and the jerk, if you don't assume constant acceleration). However, are sure that makes much of a difference? Can you characterize the specifics that you have or are looking for? I don't know what that would be. It might depend on the effect that it's supposed to have on the algorithm.
$endgroup$
– vectory
6 hours ago
$begingroup$
@JonasDaverio Are you referring to escapement? Digital pianos accomplish this with a third sensor that fires slightly above where the key bottoms out (and above the sensor that sounds the note). If the key does not go high enough to release this 3rd sensor, then bottoming out the key will not sound a second note, just like a real piano does not release the hammer unless the key is raised high enough.
$endgroup$
– Toor
5 hours ago
$begingroup$
@JonasDaverio Are you referring to escapement? Digital pianos accomplish this with a third sensor that fires slightly above where the key bottoms out (and above the sensor that sounds the note). If the key does not go high enough to release this 3rd sensor, then bottoming out the key will not sound a second note, just like a real piano does not release the hammer unless the key is raised high enough.
$endgroup$
– Toor
5 hours ago
add a comment |
$begingroup$
If the important variable is the impact of a "hammer" that you're trying to emulate, consider piezo sensors which allow you to measure this directly. They produce a pulse whose amplitude depends on the impact impulse.
$endgroup$
add a comment |
$begingroup$
If the important variable is the impact of a "hammer" that you're trying to emulate, consider piezo sensors which allow you to measure this directly. They produce a pulse whose amplitude depends on the impact impulse.
$endgroup$
add a comment |
$begingroup$
If the important variable is the impact of a "hammer" that you're trying to emulate, consider piezo sensors which allow you to measure this directly. They produce a pulse whose amplitude depends on the impact impulse.
$endgroup$
If the important variable is the impact of a "hammer" that you're trying to emulate, consider piezo sensors which allow you to measure this directly. They produce a pulse whose amplitude depends on the impact impulse.
answered yesterday
pjc50pjc50
34.3k34288
34.3k34288
add a comment |
add a comment |
$begingroup$
You should take a look at analog keyboards. Take a look at this video. This is just an example of concept.
Edit:
Also, if optical switches are not working for you, take a look at this:
There is a PCB printed coil under each key cap. As you press the button coil measures the inductance change caused by key spring compressing and decompressing, therefore, you can get pretty accurate reading of the switch position.
Below is static image from linked video material.
New contributor
$endgroup$
$begingroup$
Apparently, they use a pair of IR-LED and photosensor: blog.wooting.nl/flaretech-the-optical-keyboard-switch However, I'm not sure wether they measure the delay between the emission and the detection or wether they measure the intensity of the light that could make through the tunnel.
$endgroup$
– Jonas Daverio
18 hours ago
$begingroup$
I linked that just for the example of analog keyboard. You can take a look at reddit.com/r/MechanicalKeyboards/comments/9ii6gw/… and imgur.com/gallery/ImrH7nO . I'am not too familiar with the subject, just trying to help to push you into right direction :)
$endgroup$
– Matt
17 hours ago
1
$begingroup$
While this link may answer the question, it is better to include the essential parts of the answer here and provide the link for reference. Link-only answers can become invalid if the linked page changes. - From Review
$endgroup$
– Blair Fonville
17 hours ago
1
$begingroup$
@BlairFonville Fair enough. Let me summarize it. There is a PCB printed coil under each key cap. As you press the button coil measures the inductance change caused by key spring compressing and decompressing, therefore, you can get pretty accurate reading of the switch position.
$endgroup$
– Matt
16 hours ago
add a comment |
$begingroup$
You should take a look at analog keyboards. Take a look at this video. This is just an example of concept.
Edit:
Also, if optical switches are not working for you, take a look at this:
There is a PCB printed coil under each key cap. As you press the button coil measures the inductance change caused by key spring compressing and decompressing, therefore, you can get pretty accurate reading of the switch position.
Below is static image from linked video material.
New contributor
$endgroup$
$begingroup$
Apparently, they use a pair of IR-LED and photosensor: blog.wooting.nl/flaretech-the-optical-keyboard-switch However, I'm not sure wether they measure the delay between the emission and the detection or wether they measure the intensity of the light that could make through the tunnel.
$endgroup$
– Jonas Daverio
18 hours ago
$begingroup$
I linked that just for the example of analog keyboard. You can take a look at reddit.com/r/MechanicalKeyboards/comments/9ii6gw/… and imgur.com/gallery/ImrH7nO . I'am not too familiar with the subject, just trying to help to push you into right direction :)
$endgroup$
– Matt
17 hours ago
1
$begingroup$
While this link may answer the question, it is better to include the essential parts of the answer here and provide the link for reference. Link-only answers can become invalid if the linked page changes. - From Review
$endgroup$
– Blair Fonville
17 hours ago
1
$begingroup$
@BlairFonville Fair enough. Let me summarize it. There is a PCB printed coil under each key cap. As you press the button coil measures the inductance change caused by key spring compressing and decompressing, therefore, you can get pretty accurate reading of the switch position.
$endgroup$
– Matt
16 hours ago
add a comment |
$begingroup$
You should take a look at analog keyboards. Take a look at this video. This is just an example of concept.
Edit:
Also, if optical switches are not working for you, take a look at this:
There is a PCB printed coil under each key cap. As you press the button coil measures the inductance change caused by key spring compressing and decompressing, therefore, you can get pretty accurate reading of the switch position.
Below is static image from linked video material.
New contributor
$endgroup$
You should take a look at analog keyboards. Take a look at this video. This is just an example of concept.
Edit:
Also, if optical switches are not working for you, take a look at this:
There is a PCB printed coil under each key cap. As you press the button coil measures the inductance change caused by key spring compressing and decompressing, therefore, you can get pretty accurate reading of the switch position.
Below is static image from linked video material.
New contributor
edited 34 mins ago
George White
34727
34727
New contributor
answered 19 hours ago
MattMatt
1603
1603
New contributor
New contributor
$begingroup$
Apparently, they use a pair of IR-LED and photosensor: blog.wooting.nl/flaretech-the-optical-keyboard-switch However, I'm not sure wether they measure the delay between the emission and the detection or wether they measure the intensity of the light that could make through the tunnel.
$endgroup$
– Jonas Daverio
18 hours ago
$begingroup$
I linked that just for the example of analog keyboard. You can take a look at reddit.com/r/MechanicalKeyboards/comments/9ii6gw/… and imgur.com/gallery/ImrH7nO . I'am not too familiar with the subject, just trying to help to push you into right direction :)
$endgroup$
– Matt
17 hours ago
1
$begingroup$
While this link may answer the question, it is better to include the essential parts of the answer here and provide the link for reference. Link-only answers can become invalid if the linked page changes. - From Review
$endgroup$
– Blair Fonville
17 hours ago
1
$begingroup$
@BlairFonville Fair enough. Let me summarize it. There is a PCB printed coil under each key cap. As you press the button coil measures the inductance change caused by key spring compressing and decompressing, therefore, you can get pretty accurate reading of the switch position.
$endgroup$
– Matt
16 hours ago
add a comment |
$begingroup$
Apparently, they use a pair of IR-LED and photosensor: blog.wooting.nl/flaretech-the-optical-keyboard-switch However, I'm not sure wether they measure the delay between the emission and the detection or wether they measure the intensity of the light that could make through the tunnel.
$endgroup$
– Jonas Daverio
18 hours ago
$begingroup$
I linked that just for the example of analog keyboard. You can take a look at reddit.com/r/MechanicalKeyboards/comments/9ii6gw/… and imgur.com/gallery/ImrH7nO . I'am not too familiar with the subject, just trying to help to push you into right direction :)
$endgroup$
– Matt
17 hours ago
1
$begingroup$
While this link may answer the question, it is better to include the essential parts of the answer here and provide the link for reference. Link-only answers can become invalid if the linked page changes. - From Review
$endgroup$
– Blair Fonville
17 hours ago
1
$begingroup$
@BlairFonville Fair enough. Let me summarize it. There is a PCB printed coil under each key cap. As you press the button coil measures the inductance change caused by key spring compressing and decompressing, therefore, you can get pretty accurate reading of the switch position.
$endgroup$
– Matt
16 hours ago
$begingroup$
Apparently, they use a pair of IR-LED and photosensor: blog.wooting.nl/flaretech-the-optical-keyboard-switch However, I'm not sure wether they measure the delay between the emission and the detection or wether they measure the intensity of the light that could make through the tunnel.
$endgroup$
– Jonas Daverio
18 hours ago
$begingroup$
Apparently, they use a pair of IR-LED and photosensor: blog.wooting.nl/flaretech-the-optical-keyboard-switch However, I'm not sure wether they measure the delay between the emission and the detection or wether they measure the intensity of the light that could make through the tunnel.
$endgroup$
– Jonas Daverio
18 hours ago
$begingroup$
I linked that just for the example of analog keyboard. You can take a look at reddit.com/r/MechanicalKeyboards/comments/9ii6gw/… and imgur.com/gallery/ImrH7nO . I'am not too familiar with the subject, just trying to help to push you into right direction :)
$endgroup$
– Matt
17 hours ago
$begingroup$
I linked that just for the example of analog keyboard. You can take a look at reddit.com/r/MechanicalKeyboards/comments/9ii6gw/… and imgur.com/gallery/ImrH7nO . I'am not too familiar with the subject, just trying to help to push you into right direction :)
$endgroup$
– Matt
17 hours ago
1
1
$begingroup$
While this link may answer the question, it is better to include the essential parts of the answer here and provide the link for reference. Link-only answers can become invalid if the linked page changes. - From Review
$endgroup$
– Blair Fonville
17 hours ago
$begingroup$
While this link may answer the question, it is better to include the essential parts of the answer here and provide the link for reference. Link-only answers can become invalid if the linked page changes. - From Review
$endgroup$
– Blair Fonville
17 hours ago
1
1
$begingroup$
@BlairFonville Fair enough. Let me summarize it. There is a PCB printed coil under each key cap. As you press the button coil measures the inductance change caused by key spring compressing and decompressing, therefore, you can get pretty accurate reading of the switch position.
$endgroup$
– Matt
16 hours ago
$begingroup$
@BlairFonville Fair enough. Let me summarize it. There is a PCB printed coil under each key cap. As you press the button coil measures the inductance change caused by key spring compressing and decompressing, therefore, you can get pretty accurate reading of the switch position.
$endgroup$
– Matt
16 hours ago
add a comment |
$begingroup$
You can treat this as a hybrid digital/analog instrument by placing microphones[1] inside the keyboard, tuned to the sound of striking the keys. Signals from the microphones augment the traditional switch-based input, so the switch tells you which key is pressed, and the microphones tell you how loud the most recent keypress was.
2 or more microphones along the keyboard's length would permit decoding a chord with loud/low notes and soft/high notes and vice versa.
[1]: I keep saying "microphone", but I mean "generic vibration sensing device".
$endgroup$
$begingroup$
That's pretty much how an E-Guitar works, I guess. However, the question didn't mention any acoustic parts, just keys.
$endgroup$
– vectory
6 hours ago
add a comment |
$begingroup$
You can treat this as a hybrid digital/analog instrument by placing microphones[1] inside the keyboard, tuned to the sound of striking the keys. Signals from the microphones augment the traditional switch-based input, so the switch tells you which key is pressed, and the microphones tell you how loud the most recent keypress was.
2 or more microphones along the keyboard's length would permit decoding a chord with loud/low notes and soft/high notes and vice versa.
[1]: I keep saying "microphone", but I mean "generic vibration sensing device".
$endgroup$
$begingroup$
That's pretty much how an E-Guitar works, I guess. However, the question didn't mention any acoustic parts, just keys.
$endgroup$
– vectory
6 hours ago
add a comment |
$begingroup$
You can treat this as a hybrid digital/analog instrument by placing microphones[1] inside the keyboard, tuned to the sound of striking the keys. Signals from the microphones augment the traditional switch-based input, so the switch tells you which key is pressed, and the microphones tell you how loud the most recent keypress was.
2 or more microphones along the keyboard's length would permit decoding a chord with loud/low notes and soft/high notes and vice versa.
[1]: I keep saying "microphone", but I mean "generic vibration sensing device".
$endgroup$
You can treat this as a hybrid digital/analog instrument by placing microphones[1] inside the keyboard, tuned to the sound of striking the keys. Signals from the microphones augment the traditional switch-based input, so the switch tells you which key is pressed, and the microphones tell you how loud the most recent keypress was.
2 or more microphones along the keyboard's length would permit decoding a chord with loud/low notes and soft/high notes and vice versa.
[1]: I keep saying "microphone", but I mean "generic vibration sensing device".
answered yesterday
hoosierEEhoosierEE
1,120714
1,120714
$begingroup$
That's pretty much how an E-Guitar works, I guess. However, the question didn't mention any acoustic parts, just keys.
$endgroup$
– vectory
6 hours ago
add a comment |
$begingroup$
That's pretty much how an E-Guitar works, I guess. However, the question didn't mention any acoustic parts, just keys.
$endgroup$
– vectory
6 hours ago
$begingroup$
That's pretty much how an E-Guitar works, I guess. However, the question didn't mention any acoustic parts, just keys.
$endgroup$
– vectory
6 hours ago
$begingroup$
That's pretty much how an E-Guitar works, I guess. However, the question didn't mention any acoustic parts, just keys.
$endgroup$
– vectory
6 hours ago
add a comment |
$begingroup$
One option could be Hall sensors, which sense the strength of a magnetic field. There are different types of Hall sensors for digital and analog sensing, you need one that has analog. For example SI7211 costs about 0.80 USD.
You also need a small magnet underneath each key. When the magnet gets closer to the sensor, the magnetic field increases which increases the sensor's output voltage.
$endgroup$
1
$begingroup$
Apparently, they use it on some music keyboards. I think this is a really simple and good solution. I will compare the costs with 0xDBFB7's solution.
$endgroup$
– Jonas Daverio
12 hours ago
add a comment |
$begingroup$
One option could be Hall sensors, which sense the strength of a magnetic field. There are different types of Hall sensors for digital and analog sensing, you need one that has analog. For example SI7211 costs about 0.80 USD.
You also need a small magnet underneath each key. When the magnet gets closer to the sensor, the magnetic field increases which increases the sensor's output voltage.
$endgroup$
1
$begingroup$
Apparently, they use it on some music keyboards. I think this is a really simple and good solution. I will compare the costs with 0xDBFB7's solution.
$endgroup$
– Jonas Daverio
12 hours ago
add a comment |
$begingroup$
One option could be Hall sensors, which sense the strength of a magnetic field. There are different types of Hall sensors for digital and analog sensing, you need one that has analog. For example SI7211 costs about 0.80 USD.
You also need a small magnet underneath each key. When the magnet gets closer to the sensor, the magnetic field increases which increases the sensor's output voltage.
$endgroup$
One option could be Hall sensors, which sense the strength of a magnetic field. There are different types of Hall sensors for digital and analog sensing, you need one that has analog. For example SI7211 costs about 0.80 USD.
You also need a small magnet underneath each key. When the magnet gets closer to the sensor, the magnetic field increases which increases the sensor's output voltage.
answered 16 hours ago
jpajpa
1,566711
1,566711
1
$begingroup$
Apparently, they use it on some music keyboards. I think this is a really simple and good solution. I will compare the costs with 0xDBFB7's solution.
$endgroup$
– Jonas Daverio
12 hours ago
add a comment |
1
$begingroup$
Apparently, they use it on some music keyboards. I think this is a really simple and good solution. I will compare the costs with 0xDBFB7's solution.
$endgroup$
– Jonas Daverio
12 hours ago
1
1
$begingroup$
Apparently, they use it on some music keyboards. I think this is a really simple and good solution. I will compare the costs with 0xDBFB7's solution.
$endgroup$
– Jonas Daverio
12 hours ago
$begingroup$
Apparently, they use it on some music keyboards. I think this is a really simple and good solution. I will compare the costs with 0xDBFB7's solution.
$endgroup$
– Jonas Daverio
12 hours ago
add a comment |
$begingroup$
How about capacitive sensing? Tape some aluminum foil to the bottom of the key, ground the bottom of the keyboard, and measure the rise time through a 100k resistor.
This method can be made almost arbitrarily precise, as long as your processor is fast enough to discriminate the change in capacitance.
I didn't explain the circuit very well. You connect a digital output to the key via a high value resistor, set it low to discharge any stray charge, and then set it high. You also connect a digital input directly to the key. The capacitance will slowly charge through the resistor, and you time how long it takes before the digital input turns on. This time is equal to the RC time constant of the circuit.
$endgroup$
$begingroup$
So, I would have to pass AC in it, wouldn't I?
$endgroup$
– Jonas Daverio
yesterday
1
$begingroup$
@JonasDaverio I'm not sure what you're connecting the keys to, but one GPIO per key would suffice.
$endgroup$
– 0xDBFB7
yesterday
$begingroup$
I'm not sure how I am supposed to measure the capacitance. One plate is connected to ground and the other is connected to what? A constant voltage source?
$endgroup$
– Jonas Daverio
17 hours ago
1
$begingroup$
The Teensy LC microcontroller[1] has 11 capacitive sensing inputs and a C++ library that makes it as easy as callinganalogRead
in Arduino. [1]: pjrc.com/teensy/teensyLC.html
$endgroup$
– hoosierEE
14 hours ago
1
$begingroup$
@JonasDaverio sorry, I didn't explain the circuit very well. You connect a digital output to the key via a high value resistor, set it low to discharge any stray charge, and then set it high. You also connect a digital input directly to the key. The capacitance will slowly charge through the resistor, and you time how long it takes before the digital input turns on. This time is equal to the RC time constant of the circuit.
$endgroup$
– 0xDBFB7
14 hours ago
|
show 1 more comment
$begingroup$
How about capacitive sensing? Tape some aluminum foil to the bottom of the key, ground the bottom of the keyboard, and measure the rise time through a 100k resistor.
This method can be made almost arbitrarily precise, as long as your processor is fast enough to discriminate the change in capacitance.
I didn't explain the circuit very well. You connect a digital output to the key via a high value resistor, set it low to discharge any stray charge, and then set it high. You also connect a digital input directly to the key. The capacitance will slowly charge through the resistor, and you time how long it takes before the digital input turns on. This time is equal to the RC time constant of the circuit.
$endgroup$
$begingroup$
So, I would have to pass AC in it, wouldn't I?
$endgroup$
– Jonas Daverio
yesterday
1
$begingroup$
@JonasDaverio I'm not sure what you're connecting the keys to, but one GPIO per key would suffice.
$endgroup$
– 0xDBFB7
yesterday
$begingroup$
I'm not sure how I am supposed to measure the capacitance. One plate is connected to ground and the other is connected to what? A constant voltage source?
$endgroup$
– Jonas Daverio
17 hours ago
1
$begingroup$
The Teensy LC microcontroller[1] has 11 capacitive sensing inputs and a C++ library that makes it as easy as callinganalogRead
in Arduino. [1]: pjrc.com/teensy/teensyLC.html
$endgroup$
– hoosierEE
14 hours ago
1
$begingroup$
@JonasDaverio sorry, I didn't explain the circuit very well. You connect a digital output to the key via a high value resistor, set it low to discharge any stray charge, and then set it high. You also connect a digital input directly to the key. The capacitance will slowly charge through the resistor, and you time how long it takes before the digital input turns on. This time is equal to the RC time constant of the circuit.
$endgroup$
– 0xDBFB7
14 hours ago
|
show 1 more comment
$begingroup$
How about capacitive sensing? Tape some aluminum foil to the bottom of the key, ground the bottom of the keyboard, and measure the rise time through a 100k resistor.
This method can be made almost arbitrarily precise, as long as your processor is fast enough to discriminate the change in capacitance.
I didn't explain the circuit very well. You connect a digital output to the key via a high value resistor, set it low to discharge any stray charge, and then set it high. You also connect a digital input directly to the key. The capacitance will slowly charge through the resistor, and you time how long it takes before the digital input turns on. This time is equal to the RC time constant of the circuit.
$endgroup$
How about capacitive sensing? Tape some aluminum foil to the bottom of the key, ground the bottom of the keyboard, and measure the rise time through a 100k resistor.
This method can be made almost arbitrarily precise, as long as your processor is fast enough to discriminate the change in capacitance.
I didn't explain the circuit very well. You connect a digital output to the key via a high value resistor, set it low to discharge any stray charge, and then set it high. You also connect a digital input directly to the key. The capacitance will slowly charge through the resistor, and you time how long it takes before the digital input turns on. This time is equal to the RC time constant of the circuit.
edited 33 mins ago
George White
34727
34727
answered yesterday
0xDBFB70xDBFB7
551517
551517
$begingroup$
So, I would have to pass AC in it, wouldn't I?
$endgroup$
– Jonas Daverio
yesterday
1
$begingroup$
@JonasDaverio I'm not sure what you're connecting the keys to, but one GPIO per key would suffice.
$endgroup$
– 0xDBFB7
yesterday
$begingroup$
I'm not sure how I am supposed to measure the capacitance. One plate is connected to ground and the other is connected to what? A constant voltage source?
$endgroup$
– Jonas Daverio
17 hours ago
1
$begingroup$
The Teensy LC microcontroller[1] has 11 capacitive sensing inputs and a C++ library that makes it as easy as callinganalogRead
in Arduino. [1]: pjrc.com/teensy/teensyLC.html
$endgroup$
– hoosierEE
14 hours ago
1
$begingroup$
@JonasDaverio sorry, I didn't explain the circuit very well. You connect a digital output to the key via a high value resistor, set it low to discharge any stray charge, and then set it high. You also connect a digital input directly to the key. The capacitance will slowly charge through the resistor, and you time how long it takes before the digital input turns on. This time is equal to the RC time constant of the circuit.
$endgroup$
– 0xDBFB7
14 hours ago
|
show 1 more comment
$begingroup$
So, I would have to pass AC in it, wouldn't I?
$endgroup$
– Jonas Daverio
yesterday
1
$begingroup$
@JonasDaverio I'm not sure what you're connecting the keys to, but one GPIO per key would suffice.
$endgroup$
– 0xDBFB7
yesterday
$begingroup$
I'm not sure how I am supposed to measure the capacitance. One plate is connected to ground and the other is connected to what? A constant voltage source?
$endgroup$
– Jonas Daverio
17 hours ago
1
$begingroup$
The Teensy LC microcontroller[1] has 11 capacitive sensing inputs and a C++ library that makes it as easy as callinganalogRead
in Arduino. [1]: pjrc.com/teensy/teensyLC.html
$endgroup$
– hoosierEE
14 hours ago
1
$begingroup$
@JonasDaverio sorry, I didn't explain the circuit very well. You connect a digital output to the key via a high value resistor, set it low to discharge any stray charge, and then set it high. You also connect a digital input directly to the key. The capacitance will slowly charge through the resistor, and you time how long it takes before the digital input turns on. This time is equal to the RC time constant of the circuit.
$endgroup$
– 0xDBFB7
14 hours ago
$begingroup$
So, I would have to pass AC in it, wouldn't I?
$endgroup$
– Jonas Daverio
yesterday
$begingroup$
So, I would have to pass AC in it, wouldn't I?
$endgroup$
– Jonas Daverio
yesterday
1
1
$begingroup$
@JonasDaverio I'm not sure what you're connecting the keys to, but one GPIO per key would suffice.
$endgroup$
– 0xDBFB7
yesterday
$begingroup$
@JonasDaverio I'm not sure what you're connecting the keys to, but one GPIO per key would suffice.
$endgroup$
– 0xDBFB7
yesterday
$begingroup$
I'm not sure how I am supposed to measure the capacitance. One plate is connected to ground and the other is connected to what? A constant voltage source?
$endgroup$
– Jonas Daverio
17 hours ago
$begingroup$
I'm not sure how I am supposed to measure the capacitance. One plate is connected to ground and the other is connected to what? A constant voltage source?
$endgroup$
– Jonas Daverio
17 hours ago
1
1
$begingroup$
The Teensy LC microcontroller[1] has 11 capacitive sensing inputs and a C++ library that makes it as easy as calling
analogRead
in Arduino. [1]: pjrc.com/teensy/teensyLC.html$endgroup$
– hoosierEE
14 hours ago
$begingroup$
The Teensy LC microcontroller[1] has 11 capacitive sensing inputs and a C++ library that makes it as easy as calling
analogRead
in Arduino. [1]: pjrc.com/teensy/teensyLC.html$endgroup$
– hoosierEE
14 hours ago
1
1
$begingroup$
@JonasDaverio sorry, I didn't explain the circuit very well. You connect a digital output to the key via a high value resistor, set it low to discharge any stray charge, and then set it high. You also connect a digital input directly to the key. The capacitance will slowly charge through the resistor, and you time how long it takes before the digital input turns on. This time is equal to the RC time constant of the circuit.
$endgroup$
– 0xDBFB7
14 hours ago
$begingroup$
@JonasDaverio sorry, I didn't explain the circuit very well. You connect a digital output to the key via a high value resistor, set it low to discharge any stray charge, and then set it high. You also connect a digital input directly to the key. The capacitance will slowly charge through the resistor, and you time how long it takes before the digital input turns on. This time is equal to the RC time constant of the circuit.
$endgroup$
– 0xDBFB7
14 hours ago
|
show 1 more comment
$begingroup$
You may want to research spring return variable resistors, spring return potentiometers, or linear position sensors. Here is one example:
http://ecatalog.beisensors.com/item/linear-position-sensors/linear-position-sensor-9600-series-compact-spri/9610r3-4kl2-0
Another possibility may be to use a small rotary encoder (and mechanically convert the linear key press motion to rotary motion). The encoder would output one or more sets of pulses as the shaft rotates. A higher pulse rate would indicate a higher velocity press. The encoder position could be tracked directly if the pulse groups are sent to additional digital logic. Here's an example part: https://www.mouser.com/ProductDetail/Bourns/PEC16-4220F-S0024?qs=6FD5PBp7ZtQte%252Bg7b%2FiMUw%3D%3D&gclid=EAIaIQobChMIrKbIjOSa4QIVCEsNCh3JAAKuEAQYAyABEgKM_fD_BwE
$endgroup$
add a comment |
$begingroup$
You may want to research spring return variable resistors, spring return potentiometers, or linear position sensors. Here is one example:
http://ecatalog.beisensors.com/item/linear-position-sensors/linear-position-sensor-9600-series-compact-spri/9610r3-4kl2-0
Another possibility may be to use a small rotary encoder (and mechanically convert the linear key press motion to rotary motion). The encoder would output one or more sets of pulses as the shaft rotates. A higher pulse rate would indicate a higher velocity press. The encoder position could be tracked directly if the pulse groups are sent to additional digital logic. Here's an example part: https://www.mouser.com/ProductDetail/Bourns/PEC16-4220F-S0024?qs=6FD5PBp7ZtQte%252Bg7b%2FiMUw%3D%3D&gclid=EAIaIQobChMIrKbIjOSa4QIVCEsNCh3JAAKuEAQYAyABEgKM_fD_BwE
$endgroup$
add a comment |
$begingroup$
You may want to research spring return variable resistors, spring return potentiometers, or linear position sensors. Here is one example:
http://ecatalog.beisensors.com/item/linear-position-sensors/linear-position-sensor-9600-series-compact-spri/9610r3-4kl2-0
Another possibility may be to use a small rotary encoder (and mechanically convert the linear key press motion to rotary motion). The encoder would output one or more sets of pulses as the shaft rotates. A higher pulse rate would indicate a higher velocity press. The encoder position could be tracked directly if the pulse groups are sent to additional digital logic. Here's an example part: https://www.mouser.com/ProductDetail/Bourns/PEC16-4220F-S0024?qs=6FD5PBp7ZtQte%252Bg7b%2FiMUw%3D%3D&gclid=EAIaIQobChMIrKbIjOSa4QIVCEsNCh3JAAKuEAQYAyABEgKM_fD_BwE
$endgroup$
You may want to research spring return variable resistors, spring return potentiometers, or linear position sensors. Here is one example:
http://ecatalog.beisensors.com/item/linear-position-sensors/linear-position-sensor-9600-series-compact-spri/9610r3-4kl2-0
Another possibility may be to use a small rotary encoder (and mechanically convert the linear key press motion to rotary motion). The encoder would output one or more sets of pulses as the shaft rotates. A higher pulse rate would indicate a higher velocity press. The encoder position could be tracked directly if the pulse groups are sent to additional digital logic. Here's an example part: https://www.mouser.com/ProductDetail/Bourns/PEC16-4220F-S0024?qs=6FD5PBp7ZtQte%252Bg7b%2FiMUw%3D%3D&gclid=EAIaIQobChMIrKbIjOSa4QIVCEsNCh3JAAKuEAQYAyABEgKM_fD_BwE
edited yesterday
answered yesterday
NeddNedd
4,378713
4,378713
add a comment |
add a comment |
$begingroup$
If you want super-accuracy at a reasonable price, how about using a linear encoder, attaching a Gray-coded strip (which you print yourself using a laser printer onto a transparent sheet, then cut up and attach one to each key) - more details of how they work under rotary encoders here. This way you need two (perhaps 3 so you get an accurate indication of end position) digital lines per key. This will allow you to measure velocity with very good accuracy and even position if that's relevant. The advantage of this is you could retrofit it to an old keyboard (even an acoustic keyboard).
Caution: when I was a teenager (a long while ago) I wondered for ages whether I could make a realistic keyboard more cheaply than buying them. It seemed unlikely then and it seems even less likely now. The cost effective method is therefore probably "buy a velocity sensitive keyboard and take it apart" which is no fun.
$endgroup$
1
$begingroup$
Yes, I'm not pretending this will end up cheaper than a commercial one, but I'm trying to construct a special arrangement of keys that doesn't exist on the market. For your answer, I'm not really sure what you mean. Do you mean making a linear encoder from scratch? I don't understand what's the point of the transparent strip. And 3 bits seems a bit low to encode precisely the position and to deduce the velocity from it.
$endgroup$
– Jonas Daverio
17 hours ago
$begingroup$
A linear encoder will give you velocity with 2 bits only (see links) to a great resolution (you could get position to 256ths of the travel distance very easily). By timing the period between grey code bit transitions you will get a very accurate picture of velocity at different stages of travel of the key. 3rd bit gives you accurate 'hammer hits strings' signal. I was suggesting you use a linear encoder optical reader with your own 'tape' - transparent strip.
$endgroup$
– abligh
6 hours ago
add a comment |
$begingroup$
If you want super-accuracy at a reasonable price, how about using a linear encoder, attaching a Gray-coded strip (which you print yourself using a laser printer onto a transparent sheet, then cut up and attach one to each key) - more details of how they work under rotary encoders here. This way you need two (perhaps 3 so you get an accurate indication of end position) digital lines per key. This will allow you to measure velocity with very good accuracy and even position if that's relevant. The advantage of this is you could retrofit it to an old keyboard (even an acoustic keyboard).
Caution: when I was a teenager (a long while ago) I wondered for ages whether I could make a realistic keyboard more cheaply than buying them. It seemed unlikely then and it seems even less likely now. The cost effective method is therefore probably "buy a velocity sensitive keyboard and take it apart" which is no fun.
$endgroup$
1
$begingroup$
Yes, I'm not pretending this will end up cheaper than a commercial one, but I'm trying to construct a special arrangement of keys that doesn't exist on the market. For your answer, I'm not really sure what you mean. Do you mean making a linear encoder from scratch? I don't understand what's the point of the transparent strip. And 3 bits seems a bit low to encode precisely the position and to deduce the velocity from it.
$endgroup$
– Jonas Daverio
17 hours ago
$begingroup$
A linear encoder will give you velocity with 2 bits only (see links) to a great resolution (you could get position to 256ths of the travel distance very easily). By timing the period between grey code bit transitions you will get a very accurate picture of velocity at different stages of travel of the key. 3rd bit gives you accurate 'hammer hits strings' signal. I was suggesting you use a linear encoder optical reader with your own 'tape' - transparent strip.
$endgroup$
– abligh
6 hours ago
add a comment |
$begingroup$
If you want super-accuracy at a reasonable price, how about using a linear encoder, attaching a Gray-coded strip (which you print yourself using a laser printer onto a transparent sheet, then cut up and attach one to each key) - more details of how they work under rotary encoders here. This way you need two (perhaps 3 so you get an accurate indication of end position) digital lines per key. This will allow you to measure velocity with very good accuracy and even position if that's relevant. The advantage of this is you could retrofit it to an old keyboard (even an acoustic keyboard).
Caution: when I was a teenager (a long while ago) I wondered for ages whether I could make a realistic keyboard more cheaply than buying them. It seemed unlikely then and it seems even less likely now. The cost effective method is therefore probably "buy a velocity sensitive keyboard and take it apart" which is no fun.
$endgroup$
If you want super-accuracy at a reasonable price, how about using a linear encoder, attaching a Gray-coded strip (which you print yourself using a laser printer onto a transparent sheet, then cut up and attach one to each key) - more details of how they work under rotary encoders here. This way you need two (perhaps 3 so you get an accurate indication of end position) digital lines per key. This will allow you to measure velocity with very good accuracy and even position if that's relevant. The advantage of this is you could retrofit it to an old keyboard (even an acoustic keyboard).
Caution: when I was a teenager (a long while ago) I wondered for ages whether I could make a realistic keyboard more cheaply than buying them. It seemed unlikely then and it seems even less likely now. The cost effective method is therefore probably "buy a velocity sensitive keyboard and take it apart" which is no fun.
answered 22 hours ago
ablighabligh
21716
21716
1
$begingroup$
Yes, I'm not pretending this will end up cheaper than a commercial one, but I'm trying to construct a special arrangement of keys that doesn't exist on the market. For your answer, I'm not really sure what you mean. Do you mean making a linear encoder from scratch? I don't understand what's the point of the transparent strip. And 3 bits seems a bit low to encode precisely the position and to deduce the velocity from it.
$endgroup$
– Jonas Daverio
17 hours ago
$begingroup$
A linear encoder will give you velocity with 2 bits only (see links) to a great resolution (you could get position to 256ths of the travel distance very easily). By timing the period between grey code bit transitions you will get a very accurate picture of velocity at different stages of travel of the key. 3rd bit gives you accurate 'hammer hits strings' signal. I was suggesting you use a linear encoder optical reader with your own 'tape' - transparent strip.
$endgroup$
– abligh
6 hours ago
add a comment |
1
$begingroup$
Yes, I'm not pretending this will end up cheaper than a commercial one, but I'm trying to construct a special arrangement of keys that doesn't exist on the market. For your answer, I'm not really sure what you mean. Do you mean making a linear encoder from scratch? I don't understand what's the point of the transparent strip. And 3 bits seems a bit low to encode precisely the position and to deduce the velocity from it.
$endgroup$
– Jonas Daverio
17 hours ago
$begingroup$
A linear encoder will give you velocity with 2 bits only (see links) to a great resolution (you could get position to 256ths of the travel distance very easily). By timing the period between grey code bit transitions you will get a very accurate picture of velocity at different stages of travel of the key. 3rd bit gives you accurate 'hammer hits strings' signal. I was suggesting you use a linear encoder optical reader with your own 'tape' - transparent strip.
$endgroup$
– abligh
6 hours ago
1
1
$begingroup$
Yes, I'm not pretending this will end up cheaper than a commercial one, but I'm trying to construct a special arrangement of keys that doesn't exist on the market. For your answer, I'm not really sure what you mean. Do you mean making a linear encoder from scratch? I don't understand what's the point of the transparent strip. And 3 bits seems a bit low to encode precisely the position and to deduce the velocity from it.
$endgroup$
– Jonas Daverio
17 hours ago
$begingroup$
Yes, I'm not pretending this will end up cheaper than a commercial one, but I'm trying to construct a special arrangement of keys that doesn't exist on the market. For your answer, I'm not really sure what you mean. Do you mean making a linear encoder from scratch? I don't understand what's the point of the transparent strip. And 3 bits seems a bit low to encode precisely the position and to deduce the velocity from it.
$endgroup$
– Jonas Daverio
17 hours ago
$begingroup$
A linear encoder will give you velocity with 2 bits only (see links) to a great resolution (you could get position to 256ths of the travel distance very easily). By timing the period between grey code bit transitions you will get a very accurate picture of velocity at different stages of travel of the key. 3rd bit gives you accurate 'hammer hits strings' signal. I was suggesting you use a linear encoder optical reader with your own 'tape' - transparent strip.
$endgroup$
– abligh
6 hours ago
$begingroup$
A linear encoder will give you velocity with 2 bits only (see links) to a great resolution (you could get position to 256ths of the travel distance very easily). By timing the period between grey code bit transitions you will get a very accurate picture of velocity at different stages of travel of the key. 3rd bit gives you accurate 'hammer hits strings' signal. I was suggesting you use a linear encoder optical reader with your own 'tape' - transparent strip.
$endgroup$
– abligh
6 hours ago
add a comment |
4
$begingroup$
You could use an IR-diode and a photodiode next to each other below the key, the photodiode measuring the reflected light. The lower the postion of the key, the more reflected light reaches the photodiode. Then convert the photocurrent to a voltage using a transimpedance amplifier. You will have to play around to see what voltage or voltage change corresponds to which volume.
$endgroup$
– jusaca
yesterday
$begingroup$
Have you considered putting an accelerometer on each key? Integrating acceleration gives you velocity, and integrating velocity gives you position. Since you're dealing with short distances & time periods you could probably ignore the accelerometers' small offset errors.
$endgroup$
– brhans
yesterday
1
$begingroup$
@cat I'm familiar with Launchpads and I still have no idea what you are talking about. Can you be a little more helpful?
$endgroup$
– Elliot Alderson
yesterday
1
$begingroup$
Yes I believe you are wrong. Compare a $1 accelerometer to an individual mechanical sensor on each key. Think of the reliability from zero moving parts (assuming you do the interconnects properly). You would need a reasonably capable microcontroller and a little experience writing firmware to pull it off though.
$endgroup$
– brhans
yesterday
1
$begingroup$
@jusaca looks like that's already a product on the market: deskthority.net/wiki/Adomax_Flaretech :)
$endgroup$
– user60561
yesterday