web-dev-qa-db-fra.com

Utiliser un clavier de piano comme clavier d'ordinateur

J'ai RSI problèmes et j'ai essayé 30 claviers d'ordinateur différents, ce qui m'a causé beaucoup de peine. Jouer du piano ne me fait pas souffrir. Je joue du piano depuis environ 20 ans sans aucun problème de douleur. J'aimerais savoir s'il existe un moyen de capturer MIDI à partir d'un clavier MIDI et d'afficher les traits du clavier. Je ne connais absolument rien à propos de MIDI, mais j'aimerais savoir comment convertir ce signal en frappe.

Une bonne bibliothèque en .NET avec support MIDI complet (BASS), allez à http://www.un4seen.com .

Et pour l’autre partie, traduire les notes MIDI du clavier en touches et plus, je choisirais AutoItX, ActiveX/COM et DLL interface avec autoIt. Informations et téléchargement, allez à http://www.autoitscript.com/site/autoit/

Pas besoin d'écrire le pilote du clavier.

16
eln

Je n'ai pas fait de programmation MIDI depuis des années, mais votre idée fondamentale est très bonne (sans jeu de mots).

MIDI est un flux d’événements (ou "messages"), deux des plus fondamentaux étant "note sur" et "note sur" qui portent le numéro de note (0 = C cinq octaves sous le do médian, à travers 127 = G cinq octaves au-dessus du do au dessus du do moyen, en demi-tons). Ces événements portent un numéro de "vélocité" sur les claviers sensibles à la vélocité ("tactile"), avec une force de (vous l'avez deviné) comprise entre 0 et 127.

Entre la vélocité, les accords et les pédales, je pense que vous pourriez avoir une bonne interface de "frappe" pour le clavier du piano. L’accord en particulier pourrait être une technique très puissante - comme je l’ai mentionné dans les commentaires, c’est pourquoi les sténographes de base peuvent utiliser un machine à sténotype pour rester en contact avec les gens qui parlent pendant des heures, quand même les dactylographes de haut vol ne pourraient pas le faire longtemps avec un clavier classique. Comme pour la sténographie artificielle, vous aurez besoin d’un "dictionnaire" des significations des accords et des séquences d’accords. (Pouvez-vous dire que je travaillais du côté logiciel de la sténographie en machine?)

Pour ce faire, les pièces fondamentales sont:

  • Réception de l’entrée MIDI. N'essayez pas de le faire vous-même, utilisez une bibliothèque. Edit : Apparemment, l’API sonique Java prend en charge MIDI , y compris la réception des événements à partir de MIDI contrôleurs. Cool. Cette page peut également être utile.
  • Conversion de ces données en séquences de touches à envoyer, par ex. via le dictionnaire que j'ai mentionné ci-dessus.
  • Sortie des frappes sur l'ordinateur.

Pour être le plus largement compatible avec les logiciels, vous devez écrire ceci en tant que pilote de périphérique clavier. Il s’agit d’un plug-in du système d’exploitation qui sert de source aux événements de clavier et qui s’adresse au matériel sous-jacent (dans votre cas, le clavier du piano). Pour Windows et Linux, vous allez probablement vouloir utiliser le C pour cela.

Cependant, étant donné que vous générez des frappes (sans essayer de les intercepter, ce que j'essayais de faire il y a des années), vous pourrez peut-être utiliser les fonctionnalités du système d'exploitation. pour l'envoi de frappes artificielles. Windows a une interface pour le faire (probablement plusieurs, celle à laquelle je pense est SendInput mais je sais qu'il existe une interface "journal" qui fait quelque chose de similaire), et je suis sûr que d'autres systèmes d'exploitation fais aussi bien. Cela pourrait suffire à vos besoins - c'est là que je commencerais, car la route du pilote de périphérique va être gênante et vous devrez probablement utiliser un langage différent de celui de Java. (Je suis un grand fan de Java, mais les interfaces utilisées par les systèmes d'exploitation pour dialoguer avec les pilotes de périphérique ont tendance à être plus facilement consommées via C et similaire.)


Mise à jour : Plus d'informations sur le "dictionnaire" des accords en frappes:

Fondamentalement, le dictionnaire est un trie (merci, @Adam) que nous recherchons avec la correspondance du préfixe le plus long. Détails:

En sténographie machine, le sténographe écrit en appuyant simultanément sur plusieurs touches de la machine sténotypique, puis les relâche toutes. Ils appellent cela un "trait" du clavier; c'est comme jouer un accord au piano. Les traits correspondent fréquemment (mais pas toujours) à une syllabe du langage parlé. Comme les syllabes, parfois un trait (accord) a une signification propre, d'autres fois, il n'a qu'une signification combinée avec les traits suivants. (Pensez "bien" vs "bien" suivi de "au revoir"). Bien qu'ils soient fortement influencés par l'école dans laquelle ils ont étudié, chaque sténographe aura son propre "dictionnaire" de ce qu'ils utilisent pour signifier quoi, un dictionnaire qu'ils perfectionneront en permanence au cours de leur vie professionnelle. Le dictionnaire comportera des entrées dans lesquelles la partie sténographique ("steno", en abrégé), est longue ou longue. Fréquemment, il y aura plusieurs entrées avec le même trait de départ qui se différencient par leur longueur et par les traits suivants. Par exemple (et je n'utiliserai pas de vrai sténo ici, mais seulement des espaces réservés), il peut y avoir ces entrées:

A = alpha 
 A/B = alphabet 
 A/B/C = alphabétique 
 A/C = climatisation 
 B = abeille 
 B/C = parce que 
 C = mer 
 D = chien 
 D/D = Dee Dee

(Ces lettres ne sont pas censées être des notes de musique, mais simplement des marqueurs abstraits.)

Notez que A commence plusieurs entrées et que la traduction d'un trait C dépend du fait que vous ayez déjà vu un A, un B ou que vous commenciez à zéro.

Notez également que (bien que cela ne soit pas illustré dans le très petit exemple ci-dessus), il peut exister de nombreuses manières de "jouer" le même mot ou la même phrase, au lieu d'un seul. Les sténographes le font pour faciliter le passage du mot précédent au suivant en fonction de la position de la main. Il existe une analogie évidente avec la musique, et vous pouvez l'utiliser pour rendre votre flux de frappe plus proche de la musique, afin d'éviter à la fois que cela affecte votre jeu au piano et d'optimiser les chances que cela aide réellement avec le RSI.

Lors de la traduction de sténo en texte standard, nous utilisons à nouveau une recherche "correspondance du préfixe le plus long": l'algorithme de traduction commence par le premier trait jamais écrit et recherche les entrées commençant par ce trait. S'il n'y a qu'une seule entrée et qu'elle dure un trait, on peut dire de manière fiable "c'est l'entrée à utiliser", sortir le texte correspondant, puis recommencer à zéro avec le trait suivant. Mais plus probablement, ce trait commence plusieurs entrées de différentes longueurs. Nous examinons donc le prochain trait pour voir s’il existe des entrées qui commencent par ces deux contours dans l’ordre; et ainsi de suite jusqu'à l'obtention d'un match.

Donc, avec le dictionnaire ci-dessus, supposons que nous ayons vu cette séquence:

A C B B C A B C A B D

Voici comment nous le traduirions:

  1. A est le début de trois entrées de différentes longueurs; regarde le coup suivant: C
  2. A/C ne correspond qu'à une entrée; sortie "air conditionné" et recommencer à zéro avec le coup suivant: B
  3. B commence deux entrées; regarde le coup suivant: B
  4. B/B ne démarre rien; prend la correspondance la plus longue précédente (B) et affiche le résultat ("abeille")
  5. Ayant la sortie B = "bee", nous avons toujours un trait B dans notre tampon. Il commence deux entrées, alors regardez le trait suivant: C
  6. B/C correspond à une entrée; sortie "parce que" et recommencer à zéro avec le trait suivant: A
  7. A commence trois entrées; regardez le coup suivant: B
  8. A/B commence deux entrées; regardez le coup suivant: C
  9. A/B/C ne correspond qu'à une entrée; sortie "alphabétique" et recommencer à zéro avec le trait suivant: A
  10. A commence trois entrées; regarde le coup suivant: B
  11. A/B commence deux entrées; regarde le coup suivant: D
  12. A/B/D ne correspond à rien, donc prenez la correspondance la plus longue précédente (A/B) et utilisez-la pour afficher "alphabet". Cela nous laisse avec D toujours dans le tampon.
  13. D commence deux entrées, nous examinons donc normalement le trait suivant - mais nous avons traité tous les contours, considérez-le donc séparément. Pris isolément, il se traduit par "chien", donc sortie.

Aspects de ce qui précède à noter:

  • Vous avez un tampon de traits que vous avez lu mais que vous n'avez pas encore traduit.
  • Vous voulez toujours faire correspondre le plus grand nombre de traits à une seule entrée possible. A/B devrait être traduit par "alphabet", et non par "alpha" et "abeille".
  • (Non illustré ci-dessus) Il se peut que vous ayez des séquences de traits que vous ne pouvez pas traduire, car ils ne correspondent à rien du dictionnaire. (Les personnes sténotypiques utilisent le nom "untranslate" - par exemple, dans notre dictionnaire, les traits E seraient des "non traduits".)
  • (Non illustré ci-dessus) Certaines théories sur le sténo permettent à un même ensemble de traits de signifier plus d'une chose, en fonction d'un contexte plus large. Les gens de Steno appellent ces "conflits". Vous voulez probablement les interdire dans votre projet, et en fait, lorsque le sténographe traduisait manuellement le sténographe, les conflits allaient bien, car ils savaient exactement où dans la phrase ils étaient le bon choix, mais avec la montée de la traduction automatique, des théories de Steno sans conflit sont apparues spécifiquement pour éviter de devoir passer par le texte traduit résultant et les conflits de "réparation".
  • Traduire en temps réel (ce que vous feriez) signifie que si vous recevez une correspondance partielle, vous voudrez vous en tenir à celle-ci en attendant le prochain accord - mais probablement seulement jusqu’à un délai, traduisez au mieux ce que vous avez dans le tampon. (Ou peut-être que vous ne voulez pas un délai d'attente, c'est votre appel.)
  • Il est probablement préférable d'avoir un accident vasculaire cérébral qui dit "ne tient pas compte de l'AVC précédent"
  • Il est probablement préférable d’avoir un trait qui dit "efface complètement le tampon sans rien sortir"
430
T.J. Crowder

Pensez à faire quelque chose dans le matériel qui émule un clavier USB (ou ps/2?). Vous ne serez plus dépendant d'un système d'exploitation ou d'une API de système d'exploitation spécifique. Une solution matérielle résistera à l'épreuve du temps. Ne soyez pas bloqué avec une ancienne API de Windows 7 alors que tout le monde exécute Windows 11! Arduino est assez facile à apprendre.

Il y a une tonne d'informations et d'aide pour Arduino. Il s’agit d’une plate-forme de piratage informatique conçue pour les débutants. Il ne fera que grandir maintenant que Google pousse Arduino.

EDIT: Clavier USB virtuel logiciel et matériel

184
Brian O'Dell

Il me semble que vous cherchez moins de conseils sur la façon de le construire vous-même et davantage en demandant quelles ressources sont déjà disponibles pour accomplir ce que vous voulez. Selon votre système d'exploitation, il existe de nombreuses façons de le faire sans avoir à écrire votre propre programme à partir de rien:

MIDI Stroke

Libre. Pour Mac OS X 10.3 et ultérieur . Celui-ci vient spécifiquement avec "la possibilité d'utiliser n'importe quel clavier MIDI en remplacement du clavier d'un ordinateur complet".

Traducteur de Bome's MIDI

Free/Postcardware (c'est un peu étrange). Pour Windows 2000 et supérieur et Mac OS X . Au début, il semble être plus orienté vers l'utilisation de type AutoHotkey -, mais si on regarde plus loin, je pense que cela pourrait faire ce que vous voulez.

Max et aka.keyboard

Libre. Pour Mac OS X . Ce n'est pas vraiment une solution "prête à l'emploi", mais si vous êtes à l'aise avec la configuration de base d'un appareil, cela ne devrait pas être trop grave.

111
kathryn

Vous pouvez accéder au matériel avec des exemples de code source dans .NET dans MIDI DotNet.

Un exemple complet de travail en tant que code source pour créer le flux de données de notes MIDI se trouve dans VB 5/6-Tipp 0521: MIDI-Töne erzeugen (Visual Basic 6.0, quelque part est la version .NET aussi)

Un moyen de simuler les frappes au clavier est dans VB 5/6-Tipp 0155: Tastaturereignisse simulieren (Visual Basic 6.0, quelque part est Version .NET aussi)

Et reconnaître les frappes est décrit dans Tipp-Upload: VB.NET 0266: Globaler KeyHook.

Enter image description here

Ensuite, utilisez simplement une bonne matrice de travail pour un pianiste Timo Boehme www.goldengel.ch

Au piano et lorsque vous êtes un bon joueur, vous pouvez avoir 10 doigts sur le clavier et si la matrice est utilisable, vous pouvez être beaucoup plus rapide que n’importe quel utilisateur de clavier d’ordinateur, je pense. :-)

Dans ce cas, si je comprends bien votre question, cela ne devrait pas être une grosse affaire.

49
Nasenbaer

J'ai étudié la performance de piano à l'université, puis je me suis lancé dans la conception d'interactions, la programmation et l'utilisation de Vim . J'ai donc passé beaucoup de temps à créer des prototypes de ce genre.

Cela peut fonctionner assez rapidement sous Linux en utilisant le langage de programmation graphique pour artistes multimédias, " Pure Data ", ainsi que le x11key external de Alex Andre .

Sur Mac, vous pouvez utiliser MidiStroke . Je crois qu'une méthode sur Windows impliquait les outils MidiOx et AutoHotKey . À un autre moment, une version utilisant le plug-in Java pour Max/MSP . Je crois que Patrice Colet a créé une fenêtre externe pour Pure Data qui fonctionnait aussi bien, mais je n'arrive plus à le localiser. En outre, il existe n externe pour MaxMSP qui peut le faire sous Windows. Enfin, le non-libre mais génial Osculator peut faire ce que vous voulez - voir la page des fonctionnalités.

Quand je l'ai fait fonctionner, je ne me suis jamais accroché à ça, car je ne pouvais pas m'arrêter de travailler avec la mise en page. C'était cool d'avoir mon moniteur sur mon clavier électrique, cependant! Bonne chance.

41
P. Myer Nore

À propos du MIDI

Vous avez déclaré que vous "ne saviez rien du MIDI". La technologie MIDI est assez simple une fois que vous l'avez saisie, mais elle peut prêter à confusion au début. L'une des ressources qui m'a été extrêmement utile pour comprendre les fondements de MIDI (qui sont certainement nécessaires si vous souhaitez programmer MIDI interactions) est un livre intitulé MIDI pour le technophobe . C'est un livre facile à lire et très utile.


Pure Data & Max

Au cours de mon expérience en développement de multimédia interactif, j'ai rencontré deux programmes très similaires qui facilitent la connexion et la cartographie des signaux/entrées à partir de n'importe quel appareil.

Ce sont Max pour un environnement Mac et Pure Data pour un environnement PC. Tous deux disposent d'une pléthore de documentation en ligne et de didacticiels YouTube. La vidéo Tutoriel Max/MSP 1 - Utilisation du clavier de votre ordinateur comme midikeyboard (style ableton) illustre un programme intégré à Max qui associe un clavier d'ordinateur à un MIDI les entrées du clavier (ce qui est fondamentalement l'opposé de ce que vous essayez de faire). Vous pouvez obtenir les résultats escomptés en utilisant le même modèle, mais en inversant les signaux/mappages.


AutoHotKey

AutoHotKey est un utilitaire gratuit et à code source ouvert pour Windows qui vous permet de remapper les touches et les boutons de vos appareils en macros. Il supporte nativement QWERTY claviers, manettes de jeu et macros de souris.

Cependant, j'ai pu trouver une implémentation prenant en charge la cartographie spécifique que vous recherchez. Ces deux discussions expliquent le processus:

  1. prise en charge de MIDI IN dans AutoHotkey, discussion du cas d'utilisation. L’auteur recherchait un programme capable de détecter l’entrée MIDI IN et de le traduire en touches .

  2. bibliothèque d'entrées MIDI, la solution au problème de l'auteur et le code/patch envoyé à AutoHotKey qui implémente réellement le résultat souhaité.

Fondamentalement, il semble qu'AutoHotKey, avec le correctif personnalisé de cet utilisateur, fournira exactement ce dont vous avez besoin pour créer un mappage d'un clavier MIDI sur un signal d'entrée du clavier QWERTY. Tout ce que vous avez à faire est d'installer, de configurer et de définir vos mappages.


Rien d'autre?

Certaines des autres réponses vous ont donné des informations beaucoup plus détaillées sur la programmation MIDI et MIDI, en général, mais comme votre message l'indique, cela ne semble pas être tout à fait ce que vous recherchez. pour. Je voudrais vous aider davantage si possible, mais ce serait plus facile si vous pouviez être plus précis sur le type d'informations que vous recherchez. Par exemple, êtes-vous plus intéressé par comment convertir les signaux d'entrée d'un clavier MIDI en un signaux de clavier QWERTY , ou Votre intérêt principal consiste-t-il à trouver une solution prête à l'emploi à votre problème spécifique? Que recherchez-vous qui n’a pas encore été abordé?

37
smartcaveman

Vous pouvez pirater votre propre clavier USB assez rapidement à l'aide d'un micro-contrôleur Teenys.

En fait, ils ont un exemple de code pour savoir comment créer un clavier USB .

Vous pouvez aborder cela de deux manières:

  1. Procurez-vous un vieux piano et branchez des interrupteurs directement sur l'adolescence

  2. Ajoutez la logique supplémentaire à connecter au port MIDI et au décodage nécessaire.

27
cmcginty

En fait, j’y ai travaillé il ya quelque temps, essayant de capturer Rock Band des entrées de batterie dans mon ordinateur (ce qui donne un petit Java émulateur de batterie fait maison). Quoi qu’il en soit, j’ai posé une question ici à ce sujet, problème de délai (il y a un code d'interrogation à l'intérieur, avec ce que je tentais de faire.). Et si je peux trouver mon programme, je peux vous donner le code, il utilise une API tierce ( JInput ).

Bonne chance de toute façon.

24
Brendan

Essayez traducteur de MIDI de Bome .

Cela fonctionne sur plusieurs plates-formes, peut convertir n'importe quelle entrée MIDI en une frappe de touche facilement, rapide à installer et à configurer, plus il est gratuit pour un usage personnel.

Il existe un didacticiel astuce: MIDI traduction - MIDI en séquences de touches, de la façon de le configurer facilement:

Fondamentalement, il existe une infinité de possibilités, y compris les touches d’accord et de modification. Je l'utilise pour mon installation audio en direct pour contrôler mon DAW en utilisant mon piano et je n'ai jamais eu de problème.

23
stepheninohio

En Java, vous pouvez utiliser JMF (Java Media Framework) pour convertir les signaux MIDI. La conception de base du clavier est facile à utiliser, c’est-à-dire l’interface utilisateur; et mettez à portée de la main le caractère/symbole fréquemment utilisé.

L'exemple de code et l'API dans Ressources sonores Java: exemples: traitement du signal numérique (DSP) aident à comprendre comment traiter le signal.

Quelques autres références:

18
Kamahire

Casey a la meilleure réponse. J'ai ajouté un commentaire à celui-ci et l'ai voté. Ce type de logiciel appartient à un pilote de périphérique ou à un système intégré. Les pilotes de périphérique sont beaucoup plus complexes et ne sont pas portables vers d'autres systèmes d'exploitation. Pour référence, voir les problèmes avec Winmodems sur Linux.

En plaçant votre code dans un système intégré, vous le rendez portable sur n'importe quel périphérique MIDI doté d'un port USB et sur tout ordinateur acceptant les claviers USB.

15
Michael Dillon

Il existe un programme appelé GlovePIE . Vous pouvez le programmer dans un langage de script simple, et je pense qu’il prend en charge le MIDI. Je ne suis pas sûr que cela rentre dans la catégorie "Java", mais c'est quand même un excellent programme. Je l'ai utilisé pour contrôler des robots à l'aide de contrôleurs PS . C'est très puissant.

15
Fox Wilson

De nombreux claviers ont un connecteur de port série ( RS-232 ) pour envoyer des signaux MIDI à l'ordinateur. J'utilise un programme appelé Girder pour convertir la communication du port série en touches du clavier.

La poutre a une fonctionnalité de "cartographie" qui vous permet de mapper chaque clé, une par une, à la frappe correspondante.

C'est peut-être la solution simple que vous recherchez!

15
Scott Rippey

Juste apprendre la sténographie!

Cela ressort clairement de toute la discussion de votre part. Vous ne voulez pas réinventer de roues, d'un point de vue technique. Mais une fois que vous avez établi une connexion (ce que cette question vous demande) et que vous êtes opérationnel, vous avez encore l'essentiel du travail devant vous: vous devez entraîner votre cerveau. Vous devez également inventer le moyen le plus intelligent et le plus efficace de le faire - un problème de conception totalement hors du commun des techniciens en informatique. Vous ou l'un de nous tomberions à court.

Heureusement, le problème a été résolu et résolu malgré des siècles de maturation ...

Apprenez la sténographie!

Oui, cela vous coûtera du cric. Mais que valent des centaines d’heures de votre temps avec, au final, un résultat moins favorable? En outre, l'article sur la sténographie dans Wikipedia dit: "Cela ressemble plus à un clavier de piano".

À moins, bien sûr, que vous souhaitiez un effet secondaire. Je dois admettre que je n’avais jamais pensé à cette possibilité, ce serait vraiment amusant de voir quelqu'un sortir un texte d’un clavier de piano!

Vous pourriez commencer avec un clavier USB avec pavé tactile (ou un manette de pointage serait plus ergonomique?), Utilisez Plover pour le traduire (I ' Je suis sûr qu’il peut être configuré pour laisser les touches sans lettre conserver leur fonctionnalité car elles sont essentielles à la programmation), ou suivre le fil Re: Clavier Plover pour faire rouler votre propre clavier de sténographie USB ou acheter n sténotype .

Bonne chance!

12
FastAl

Jetez un oeil à MAME jeux d'arcade. Ils ont construit des dispositifs matériels pour permettre la saisie de nombreux éléments différents. iPac , par exemple, convertit les signaux des périphériques d’entrée en données USB que l’ordinateur peut ensuite utiliser pour émuler des clés. Vous pouvez utiliser n’importe quelle combinaison de périphériques d’entrée agencée de la manière qui vous semble la plus confortable sans qu'aucune logique de programmation délirante ne soit nécessaire, car le logiciel permettant d’interpréter les entrées est déjà prêt et bien testé.

J'ai vu des entrées de cockpit de simulateur de vol, des kiosques personnalisés et des systèmes de vote intégrés à cette méthode ..... et le prix est correct!

11
bpeterson76

Pas vraiment lié au programme, mais je peux donner quelques conseils sur la façon de gérer RSI .

Il y a des minuteries qui rythment votre travail toute la journée en introduisant des micro-pauses fréquentes. Si vous avez recherché RSI, je suis sûr que vous avez entendu parler de micro-pauses. Ils sont essentiels pour gérer et prévenir les récidives. Un programme gratuit est Workrave

Donnez à QWERTY le démarrage et essayez Dvorak . Voici un configuration du clavier du programmeur Dvorak . Dvorak a les caractères les plus souvent utilisés sur la ligne de départ alors que QWERTY n'en a pas. Donc, utiliser Dvorak réduira la tension causée par le fait de ne pas avoir à "atteindre" les lettres.

Prenez ce clavier "naturel" dans le placard si vous ne l'utilisez pas déjà. Tapez très légèrement. Le strict minimum pour enregistrer une frappe suffira.

Essayez de limiter le café à une ou deux tasses par jour. Une consommation excessive de caféine vous évitera de vous sentir fatigué et vous aidera à oublier que vous êtes atteint de RSI.

L'alcool excessif perturbe le sommeil nécessaire pour permettre à votre corps de se guérir. Une bonne nuit de repos est cruciale pour apprivoiser RSI.

Étirez-vous en utilisant l'étirement isolé actif. Une bonne routine est décrite dans Routine d’étirement du poignet, de la main et des doigts - Étirement actif isolé.

Apprenez à être ambidextre avec la souris. Assurez-vous que la souris est conçue pour être utilisée à deux mains et que ses boutons sont faciles à cliquer.

Utilisez une tablette à stylet comme périphérique de saisie principal. Wacom fabrique des tablettes peu coûteuses et décentes .

Bonne chance!

10
shaunsantacruz

Pour résoudre ce problème, vous aurez besoin de quelques choses:

  1. Une façon de capturer les données MIDI à partir de votre clavier. Selon l'interface: MIDI interface (classique) ou USB MIDI interface (moderne), l'interface la plus plausible est celle d'un ordinateur car elle fournit les la plupart des options. Les microcontrôleurs hôtes USB ne sont pas aussi simples que d'utiliser simplement un ordinateur.

  2. Un schéma pour convertir les données MIDI en séquences de touches. Comme un utilisateur l’a fait remarquer, les accords sont la voie à suivre car le nombre de touches ne dépend pas du nombre de touches du piano.

  3. Un moyen d'injecter une clé dans le système d'exploitation. Cela nécessitera un pilote de bas niveau pour être précis. J'ai joué avec des applications qui injectent des données de clavier et de souris dans des applications de Windows 7, et cela peut être aléatoire et dépendre du fait qu'une application soit ou non active. C'est la partie la plus difficile de l'interface. Ce qui peut fonctionner, c’est de créer un microcontrôleur à clavier USB CACHÉ qui possède également une interface série.

L'interface série créerait un port série virtuel. Le logiciel qui lit les données MIDI et génère les frappes au clavier peut envoyer un message série au port série virtuel. Le microcontrôleur envoie une frappe afin qu’elle ressemble à une entrée de clavier standard. Cela permettrait d’interfacer les deux ports MIDI et les claviers USB MIDI.

Hmmm, avec ce type d'interface, vous pouvez également simuler une souris et utiliser certaines configurations de touches du piano pour l'axe et les boutons de la souris. La pression pourrait être utilisée pour déterminer la vitesse du pointeur de la souris. Ainsi, vous pouvez également éliminer la souris. Un autre avantage de cette approche est que tout type de périphérique d'entrée connecté peut communiquer avec le port série virtuel pour générer des événements de clavier et de souris. Donc, si vous souhaitez ajouter un autre matériel, tel qu'une pédale de batterie ou une manette de jeu, il vous suffit de régler le programme qui communique avec l'interface série.

Une autre prise sur ce qui précède est comme certains postés ci-dessus pour utiliser un Arduino, mais incluent également Bouclier d’hôte USB de Sparkfun pour gérer les claviers musicaux basés sur USB. Cela permet à l'Arduino d'être programmé comme un clavier ou une combinaison clavier-souris dans la puce du chargeur de démarrage et permet à l'appareil d'agir comme hôte USB pour le clavier musical USB. Ensuite, vous êtes couvert pour les deux types. Bien que, je pense toujours que la méthode du port série virtuel est plus flexible et serait plus facile à programmer à long terme. Le périphérique Arduino sera plus difficile à changer qu’un programme ou un service de bureau.

Il existe une autre possibilité: il existe déjà des claviers à une corde. J'ai vu des vidéos dessus, mais il vous faudrait déterminer si elles vous blessent ou non.

10
Demolishun

Vos symptômes de douleur pourraient très bien être psychosomatique .

Une fois, je pensais avoir RSI dans mon poignet pendant plusieurs mois après une longue nuit de jeux sur ordinateur. La thérapie physique n'a pas aidé. Après avoir lu un article écrit par un médecin expliquant que le RSI, le canal carpien, les maux de dos et IBS peuvent souvent être psychosomatiques, en particulier chez les personnes stressées, la douleur a pratiquement disparu visualisez mon poignet en train de se détendre et le sang coulant, puisque l'article disait que la constriction des vaisseaux sanguins autonomes est la cause immédiate de la douleur). En fait, je souffrais beaucoup de stress à l'époque.

8
ta23232

Vous obtiendrez des résultats meilleurs et plus heureux (quel que soit le système d'exploitation et/ou le programme DAW que vous préférez utiliser) en jouant sur n'importe quel clavier MIDI externe en tant que contrôleur via votre son. carte. Puis acheminez-le dans votre logiciel GB (ou autre) et créez les nombreux sons qu’ils vous ont fournis de cette manière en temps réel.

Si votre carte son ne supporte pas MIDI I/O (ins/outs/thrus), ce n'est pas un problème. Vous pouvez envisager de rechercher et d’investir dans un convertisseur de table MIDI externe. Beaucoup sont équipés pour convertir davantage MIDI en USB 2.0 (en contournant totalement une carte son existante).

Par exemple: il est assez difficile d'obtenir des résultats de type "human like" via une option de changement de touche Z et X à l'aide d'un clavier d'ordinateur et d'un outil au crayon. Lorsque, au lieu de cela, vos propres doigts peuvent simplement jouer cela avec un clavier MIDI à partir de ses propres plages de registres d'octave physiques, immédiatement!

Je réalise que des contraintes budgétaires peuvent être impliquées. Certains de ces claviers apparemment peu coûteux de type "Casio" vendus à Radio Shack pour moins de 100,00 $ US (* ou moins) sont tout ce dont vous auriez besoin (plus, certains de leurs correctifs de sons et modules de séquenceur intégrés incroyablement bien pour d'autres choses aussi).

RadioShack MIDI options du clavier .

En ce qui concerne les convertisseurs externes MIDI pour les cartes son existantes, j’ai exécuté quelques recherches sur Google comme suit avec les plates-formes Mac spécifiquement à l’esprit:

Une grande partie de ces informations de conversion externes MIDI peut vous sembler fastidieuse au début. Je vous ai donc donné une image plus "conviviale" de votre budget et de vos considérations:

Il n'y a rien de mal à faciliter les claviers virtuels comme VST lors de l'utilisation de DAW . Ils ont leur place.

Mais vous parlez comme un clavieriste accompli. Alors, pourquoi ne pas considérer les options de conversion/clavier externes MIDI que je viens de mentionner pour vous-même?

Bonne chance et j'espère que cela vous a donné des idées qui peuvent et vont fonctionner pour vous!

Il devrait être assez facile d'utiliser quelque chose comme l'interface .NET DirectSound pour se connecter à un périphérique MIDI. Vous devrez identifier votre périphérique MIDI cible, puis obtenir le code pour écouter les messages entrants (il existe des articles sur le faire via Google).

Puisque vous utilisez le MIDI en tant que clavier, vous ne devez détecter que deux messages MIDI, à savoir note et note. Le message MIDI consiste en trois octets de données spécifiant la commande, la note et la vélocité. La note désactivée n'est que le numéro de note (parfois 'mauvais' MIDI piles empilent une note avec une vélocité nulle, ce à quoi vous devez vous attendre).

Une fois que vous avez traduit les messages, la sortie du clavier devrait être assez simple à partir de .NET.

Les autres réponses contiennent de nombreux conseils sur les détails techniques. Je voulais juste vous donner une idée des messages MIDI actuels. Bonne chance!

7
Simon Inns

Vous pouvez utiliser un simple script AutoIt pour lire les événements MIDI, voir entrée MIDI.

Vous aurez également besoin de MIDI UDF et simuler des appuis sur les touches .

La lecture des événements MIDI devrait être facile, mais différents contrôleurs MIDI ont des fonctionnalités différentes. Essayez de savoir ce que votre piano MIDI peut faire en premier, puis voyez comment vous pouvez mieux mapper ces fonctions sur des pressions simulées QWERTY -.

Si vous le souhaitez, vous pouvez avoir quelque chose à l'écran ou dans le bac pour vous aider à voir ce que vous faites (c'est-à-dire ShiftCtrl et Alt simulation).

6
Martijn

Si vous ne souhaitez pas programmer vous-même mais que vous voulez simplement résoudre le problème, vous pouvez simplement acheter un clavier MIDI USB sur lequel vous pouvez réaffecter n'importe quelle touche pour envoyer un signal de sortie du clavier QWERTY au lieu de une sortie MIDI, par exemple Axiom Pro de M-Audio

Cette méthode fonctionnera avec tout système d'exploitation et tout ordinateur prenant en charge les claviers USB standard, car le clavier MIDI s'identifiera comme un clavier QWERTY standard.

6
Martin Odhelius

Vous pouvez jeter un oeil à claviers à cordes . Ils ont l’avantage de ne pas avoir besoin d’écrire un pilote avant de pouvoir les utiliser, et certains sont similaires à la disposition d’un clavier de piano.

5
Perkins

Si vous connaissez le codage en Java, vous pouvez utiliser cette méthode:

Commencez par implémenter un javax.sound.midi.Receiver avec une méthode send(..) qui mappe les événements 'Note on' sur des séquences de touches comme vous le souhaitez.

Vous devez obtenir le contenu de MidiMessage avec sa méthode getMessage et l'intégrer à votre façon. La signification des octets de message se trouve dans messages MIDI.

Après avoir reçu une "note" ou une "note désactivée" pour une certaine touche du clavier, vous pouvez l'associer à une touche de votre choix en lui attribuant une constante de la classe KeyEvent, quelque chose comme C # 4 -> KeyEvent.VK_A, etc. . Ce code de clé peut ensuite être utilisé par les méthodes keyPress et keyRelease de Java.awt.Robot pour envoyer la frappe au système d'exploitation, et donc à d'autres applications.

5
dronus

Je suis d'accord avec Brian O'Dell - si c'était mon projet, je le ferais en matériel. Il présente l’avantage d’être indépendant de la plate-forme et du matériel - votre boîtier remplace le besoin d’une interface MIDI-USB et d’une API PC.

mbed est une plate-forme de prototypage rapide très facile à apprendre et qui présente de nombreux avantages par rapport à Arduino IMHO (compilateur en ligne, mémoire Flash de 512 Ko, 96 MHz, C++). Il a un interface clavier USB et un interface Midi USB pré-écrit pour vous.

La communauté est très sympathique et prête à aider. Il existe de nombreux projets existants qui utilisent à la fois MIDI et l'émulation masquée USB - recherchez sur Youtube "mbed MIDI" ou similaire.

4
Alex L

Si vous utilisez Linux, prenez Footware.

Cela devrait correspondre exactement à ce que vous recherchez - si vous ajustez les hauteurs MIDI en fonction de la topographie de votre choix ...

Je n'ai jamais pensé que cela pourrait être utile pour quelqu'un d'autre que moi; o)

4
FlashKorten

Taper plus vite est peut-être une idée pour "jouer" les consonnes de la main gauche et les voyelles de la droite (ou vice versa). Vous n'avez pas besoin d'une clé pour chaque consonne, car vous pouvez les combiner comme suit:

B    C    D    G    H    J    K    L    M    N    P    Q    R    S     T     W    X    Y    Z

c    c#   d    d#   e    f    f#   g    c+d ...

Vous pouvez laisser deux touches fermées (comme c# + d, cela ne joue pas facilement). Vous pouvez même laisser les touches noires.

Pour les voyelles c'est facile:

A E I O U Y

c d e f g a

Cependant, pensez aussi à utiliser plusieurs frappes: comme c# = aad# = ee, etc.

Vous pouvez faire la même chose avec les consonnes (combinaison des touches st, sp, etc.)

Vous pouvez jouer des consonnes et des voyelles en même temps, les lier ensemble alternativement ou en priorité (consonnes, puis voyelles, etc.)

Vous devrez probablement réapprendre à taper, mais je suis sûr que vous pouvez faire beaucoup plus rapidement qu’une personne qui tape normalement.

Utilisez une autre octave pour les chiffres et les caractères spéciaux, utilisez un commutateur pour le décalage, utilisez une combinaison facile de touches pour l'espace (comme deux cs avec les mains gauche et droite, assurez-vous que cela ne signifie pas un (des) caractère (s) )).

Pensez également à utiliser une pédale qui peut avoir une valeur comprise entre 0 et 127. Vous pouvez aussi l'utiliser comme shift ou espace ... ou backspace/enter.

J'espère que cela vous donnera de nouvelles idées et bonne chance dans votre projet.

4
Michel Keijzers

Je sais exactement ce que vous ressentez. Faire des commandes de codage de clavier délirantes toute la journée me fait mal aux mains.

Un piano ne fera pas le travail (votre mieux obtenir un clavier Dorvak ). La meilleure solution serait la télépathie mentale ou, à ce moment précis, le contrôle de la voix.

Je trouve que la crème Arthro-Aid Direct est bonne et Mélange sauvage fonctionne également bien.

L'autre chose que j'ai remarquée, c'est que la souris est aussi à blâmer, la plupart sont peu ergonomiques et cliquent tellement sur la cause RSI et CTS . Pour surmonter ce problème, j'utilise parfois des sélecteurs de souris automatiques, par exemple Clickeur de souris automatique .

Je connais des brevets dont la souris est la griffe, je tiens à en acheter.

PS: souscrivez votre assurance protection du revenu avant de consulter un médecin!

Et ne programme pas le week-end :)

4
Jeremy Thompson

Les réponses à votre question se trouvent déjà sur cette page, mais j'aimerais apporter quelques éléments supplémentaires.

Premièrement, je ne suis pas convaincu que taper sur un clavier de piano arrêtera la douleur. À cet égard, je vous suggérerais d’examiner quelque chose comme Nuance Dragon - Naturally Speaking pour votre frappe.

Deuxièmement, si vous insistez pour aller de l'avant avec ceci, vous aurez probablement besoin d'aller avec Nasebnbaar's (même si je ne suis pas d'accord, ce sera plus rapide) et Brian's suggestion. C’est probablement quelque chose que vous devriez contacter un ingénieur pour le faire correctement, mais si vous devez le faire vous-même, vous feriez mieux de demander des instructions sur Génie électrique - Échange de piles.

Troisièmement, si vous voulez simplement comprendre comment fonctionnent les fichiers MIDI , comment les lire par programmation , et comment simuler un trait de clavier , alors bonne chance;)

Enfin, j'aimerais également obtenir une copie si vous décidez éventuellement de choisir la deuxième option :)

3
Chibueze Opata

Essayez d’utiliser un système basé sur un microcontrôleur, tel que Arduino .

2
user1327203

Il y a beaucoup de réponses, j'ai juste une petite idée. Je ne sais pas si un programme MIDI-à-clavier le prend en charge, mais en MIDI, vous pouvez utiliser sustain et expression pédale.

En fait, je n'ai jamais vu de pédale d'expression. Période.

Mais tous les MIDI claviers ont un emplacement d’entrée de maintien. Une pédale de sustain n'est qu'un interrupteur. Si vous ne voulez pas dépenser d’argent dessus, vous pouvez utiliser une pédale tatoo (!), Mais attention, certaines pédales de tatoo chinois sont de mauvaise qualité. Essayez-le avant de l'acheter. Étonnamment, "l'électronique" est la même: un (gros) jack mono connecté à un interrupteur marche/arrêt. Si vous avez un interrupteur "confortable", une fiche jack mâle et des fils, vous pouvez même en fabriquer un.

Je recommande de l'utiliser comme quart de travail. Sur Commodore 16 , le bouton de déclenchement du joystick-2 était équivalent à un changement de vitesse, et je l’utilisais depuis quelques jours. Le seul problème était que ma joie était si inconfortable. Si vous êtes un pianiste, vous le trouverez peut-être familier.

1
ern0

Ce ne serait pas trop difficile.

Je suppose que vous êtes sur Windows , mais vous n'en êtes pas sûr. J'ai écrit un séquenceur MIDI , http://pianocheetah.com , en clair vieux C++ , et il vous permet d'utiliser le clavier de piano pour exécuter des commandes. Il n'y a aucune raison pour que vous ne puissiez pas faire la même chose pour insérer des touches dans le flux d'entrée du clavier.

Mais viens maintenant. Vous vous rappelez combien de temps il vous a fallu pour apprendre le clavier, non? Êtes-vous prêt à revivre cela? Et êtes-vous prêt à polluer votre clavier béni avec un tas de symboles clés stupides à la recherche partout dessus?

Vous devez utiliser au moins 26 caractères alpha, 10 numériques, 11 signes de ponctuation et au moins 12 touches de fonction ET leurs états décalés. Soit 60 touches plus les états décalés. Cela brûlera 5 octaves de clés. Vous allez faire du piano "Hops" = all = the time. Dites au revoir toucher la dactylographie.

Vous pouvez vous sauver de RSI , mais vous avez créé un autre type de cauchemar pour vous-même.

Et bonne chance pour que votre patron vous achète un clavier MIDI au travail.

Si vous avez vraiment appris à jouer du piano, vous avez appris à jouer sans stress. Faites cela sur le clavier QWERTY . Pas de tension. Commencez lentement.

1
Stephen Hazel