J'essaie de créer un clavier sensible à la vélocité pour jouer de la musique.
Je dois mesurer la position de chaque touche afin de savoir à quel point le son doit être fort.
Le volume du son est fonction de la vélocité des touches en fin de descente. Je sais que la position peut être récupérée de la vitesse en l'intégrant.
Quelle serait la façon la moins chère et la plus simple, mais encore assez précise de le faire?
Je ne sais pas exactement ce que «raisonnablement précis» signifierait dans le contexte. Je vais devoir le tester.
La longueur du déplacement maximum est d'environ 2 cm.
EDIT: pas comme certaines réponses semblent le suggérer, le volume n'est PAS fonction de la vitesse moyenne de la touche.
EDIT2: Le volume est fonction de la vitesse du marteau au moment où il frappe la corde, mais la touche ne pousse le marteau qu'à la fin de sa trajectoire. C'est vraiment comme lancer une balle sur un mur: la balle quitte la main à un moment, avant de heurter le mur.
Réponses:
Et la détection capacitive? Collez du papier d'aluminium au bas de la touche, reliez le bas du clavier à la terre et mesurez le temps de montée à travers une résistance de 100k.
Cette méthode peut être rendue presque arbitrairement précise, tant que votre processeur est suffisamment rapide pour discriminer le changement de capacité.
Je n'ai pas très bien expliqué le circuit. Vous connectez une sortie numérique à la clé via une résistance de valeur élevée, la réglez à un niveau bas pour décharger toute charge parasite, puis la réglez à un niveau élevé. Vous connectez également une entrée numérique directement à la clé. La capacité se chargera lentement à travers la résistance, et vous chronométrez le temps qu'il faut avant que l'entrée numérique ne s'allume. Ce temps est égal à la constante de temps RC du circuit.
la source
analogRead
en Arduino. [1]: pjrc.com/teensy/teensyLC.htmlLa plupart des claviers utilisent simplement deux contacts par clé, configurés de manière à ce qu'ils se ferment (ou s'ouvrent) à différentes positions dans le parcours de la clé. Ils estiment la vitesse à partir du temps qui s'écoule entre les deux événements. Même les claviers "piano action" pondérés de fantaisie utilisent cette méthode de détection de base.
Essayer de mesurer directement la position et / ou la vitesse sonne comme une surpuissance massive.
la source
Normalement, la vitesse des touches est calculée en mesurant le temps entre la rupture de l'interrupteur de montée normalement fermé et la fermeture de l'interrupteur de descente normalement ouvert.
simuler ce circuit - Schéma créé à l'aide de CircuitLab
Figure 1. Un contact clavier de rupture avant création est généralement utilisé pour la mesure de la vitesse.
Dans ce cas, vous devez arranger mécaniquement le contact normalement fermé pour qu'il se casse dans les derniers mm de course.
simuler ce circuit
Figure 2. La disposition de commutation mécanique.
Il me semble que votre meilleur pari serait de modifier un pédalier de basse MIDI existant pour l'adapter à vos besoins.
Commentaire de l'OP à Dave Tweed:
C'est pourquoi j'ai proposé d'activer le commutateur dans les derniers mm de course.
la source
Vous devriez jeter un œil aux claviers analogiques. Jetez un œil à cette vidéo . Ceci est juste un exemple de concept.
Edit: De plus, si les commutateurs optiques ne fonctionnent pas pour vous, jetez un œil à ceci:
Il y a une bobine imprimée PCB sous chaque capuchon de clé. Lorsque vous appuyez sur le bouton, la bobine mesure le changement d'inductance provoqué par la compression et la décompression des ressorts, vous pouvez donc obtenir une lecture assez précise de la position du commutateur.
Source:
Reddit
Imgur
la source
Si la variable importante est l'impact d'un "marteau" que vous essayez d'émuler, pensez aux capteurs piézoélectriques qui vous permettent de mesurer directement. Ils produisent une impulsion dont l'amplitude dépend de l'impulsion d'impact.
la source
Une option pourrait être des capteurs à effet Hall, qui détectent la force d'un champ magnétique. Il existe différents types de capteurs Hall pour la détection numérique et analogique, vous avez besoin d'un capteur analogique. Par exemple, SI7211 coûte environ 0,80 USD.
Vous avez également besoin d'un petit aimant sous chaque clé. Lorsque l'aimant se rapproche du capteur, le champ magnétique augmente, ce qui augmente la tension de sortie du capteur.
la source
Vous pouvez le traiter comme un instrument hybride numérique / analogique en plaçant des microphones [1] à l'intérieur du clavier, accordés au son de la frappe des touches. Les signaux provenant des microphones augmentent l'entrée traditionnelle basée sur le commutateur, de sorte que le commutateur vous indique quelle touche est enfoncée et les microphones vous indiquent le niveau de bruit de la touche la plus récente.
2 microphones ou plus sur toute la longueur du clavier permettraient de décoder un accord avec des notes fortes / basses et des notes douces / aiguës et vice versa.
[1]: Je continue de dire "microphone", mais je veux dire "dispositif générique de détection des vibrations".
la source
Vous pouvez rechercher des résistances variables à rappel par ressort, des potentiomètres à rappel par ressort ou des capteurs de position linéaire. Voici un exemple: http://ecatalog.beisensors.com/item/linear-position-sensors/linear-position-sensor-9600-series-compact-spri/9610r3-4kl2-0
Une autre possibilité peut être d'utiliser un petit encodeur rotatif (et de convertir mécaniquement le mouvement de pression linéaire des touches en mouvement rotatif). L'encodeur produirait un ou plusieurs jeux d'impulsions lorsque l'arbre tourne. Une fréquence d'impulsion plus élevée indiquerait une presse à vitesse plus élevée. La position du codeur pourrait être suivie directement si les groupes d'impulsions sont envoyés à une logique numérique supplémentaire. Voici un exemple de partie: https://www.mouser.com/ProductDetail/Bourns/PEC16-4220F-S0024?qs=6FD5PBp7ZtQte%252Bg7b%2FiMUw%3D%3D&gclid=EAIaIQobChMIrKbIjOSA4QIVA_EK
la source
Si vous voulez une super précision à un prix raisonnable, que diriez-vous d'utiliser un encodeur linéaire , de fixer une bande codée en gris (que vous imprimez vous-même à l'aide d'une imprimante laser sur une feuille transparente, puis de la découper et de l'attacher à chaque touche) - plus détails sur la façon dont ils fonctionnent sous les encodeurs rotatifs ici . De cette façon, vous avez besoin de deux (peut-être 3 pour obtenir une indication précise de la position finale) des lignes numériques par touche. Cela vous permettra de mesurer la vitesse avec une très bonne précision et même une position si cela est pertinent. L'avantage de cela est que vous pouvez le transformer en un ancien clavier (même un clavier acoustique).
Attention: quand j'étais adolescent (il y a longtemps) je me demandais depuis longtemps si je pouvais faire un clavier réaliste moins cher que de les acheter. Cela semblait peu probable à l'époque et cela semble encore moins probable maintenant. La méthode rentable est donc probablement "acheter un clavier sensible à la vélocité et le démonter", ce qui n'est pas amusant.
la source