Utilisation d’un clavier de piano comme clavier d’ordinateur

J’ai des problèmes de RSI et j’ai essayé 30 claviers différents, ce qui m’a fait mal. Jouer du piano ne me cause pas de douleur. Je joue du piano depuis environ 20 ans sans problèmes de douleur. J’aimerais savoir s’il existe un moyen de capturer le MIDI à partir d’un clavier MIDI et de produire des frappes de clavier. Je ne sais rien du MIDI, mais j’aimerais savoir comment convertir ce signal en une frappe.

Une bonne bibliothèque dans .NET avec un support MIDI complet (BASS), visitez le site http://www.un4seen.com .

Et pour l’autre partie, en traduisant les notes midi du clavier en touches et plus, j’irais pour AutoItX, l’interface ActiveX / COM et DLL pour autoIt. Info et téléchargement, allez à http://www.autoitscript.com/site/autoit/

Pas besoin d’écrire un pilote de clavier.

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

MIDI est un stream de “événements” (ou “messages”), deux des plus fondamentaux étant “note on” et “note off” qui portent avec eux le numéro de note (0 = C cinq octaves en dessous de C moyen, par 127 = G cinq octaves au-dessus du G au-dessus du C 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é) entre 0 et 127.

Entre vélocité, accords et pédales, je pense que vous pourriez trouver une bonne interface de “frappe” pour le clavier de piano. Les accords en particulier pourraient être une technique très puissante – comme je l’ai mentionné dans les commentaires, c’est pourquoi les sténographes de base peuvent utiliser une machine à sténotypie pour restr en contact avec des gens qui parlent pendant des heures. Ne pas être capable, pour toute durée, d’utiliser des claviers de type machine à écrire. Comme avec la sténographie de la machine, vous aurez besoin d’un “dictionnaire” des significations des accords et des séquences d’accords. (Pouvez-vous dire que je travaillais dans le domaine logiciel de la sténographie de la machine?)

Pour ce faire, les pièces fondamentales sont:

  • Recevoir une entrée MIDI. N’essayez pas de le faire vous-même, utilisez une bibliothèque. Edit : Apparemment, Java Sound API supporte le MIDI , y compris la réception des événements des contrôleurs MIDI. Cool. Cette page peut également être utile.
  • Convertir ces données en séquences de touches que vous souhaitez envoyer, par exemple 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 de clavier. Ceci est un plug-in pour le système d’exploitation qui sert de source pour les événements de clavier, parlant au matériel sous-jacent (dans votre cas, le clavier de piano). Pour Windows et Linux, vous allez probablement vouloir utiliser C pour cela.

Cependant, comme vous ne faites que générer des séquences de touches (sans essayer de les intercepter, ce que je tentais de faire il y a des années), vous pouvez utiliser les fonctionnalités du système d’exploitation pour envoyer des séquences de touches artificielles. Windows a une interface pour faire cela (probablement plusieurs, celui SendInput je pense est SendInput mais je sais qu’il y a une interface “journal” qui fait quelque chose de similaire), et je suis sûr que d’autres systèmes d’exploitation le font aussi. Cela pourrait bien suffire à vos besoins – c’est là que je commencerais, car la route des pilotes de périphériques va être difficile et vous devrez probablement utiliser un langage différent de celui de Java. (Je suis un grand fan de Java, mais les interfaces que les systèmes d’exploitation utilisent pour communiquer avec les pilotes de périphériques sont plus faciles à consumr via C et similaire.)


Mise à jour : Plus sur le “dictionnaire” des accords aux frappes:

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

En sténographie sur machine, le sténographe écrit en appuyant simultanément sur plusieurs touches de la machine de sténotypie, puis en les relâchant toutes. Ils appellent cela un “coup” du clavier; c’est comme jouer un accord au piano. Les AVC correspondent fréquemment (mais pas toujours) à une syllabe de la langue parlée. Comme pour les syllabes, parfois, un seul trait (accord) a un sens tout seul, d’autres fois il n’a de sens que combiné avec les coups suivants. (Pensez “bon” vs “bon” suivi de “bye”). Bien qu’ils soient fortement influencés par l’école dans laquelle ils ont étudié, chaque sténographe aura son propre «dictionnaire» des gestes qu’ils utilisent pour désigner quoi, un dictionnaire qu’ils perfectionneront continuellement au cours de leur vie professionnelle. Le dictionnaire aura des entrées où la partie sténographique (“steno”, en abrégé) est longue d’un seul coup ou de plusieurs coups. Fréquemment, il y aura plusieurs entrées avec le même coup de départ qui se différencient par leur longueur et par les coups suivants. Par exemple (et je n’utiliserai pas de vrai sténo ici, juste 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 des marqueurs abstraits.)

Notez que A commence plusieurs entrées et notez également que la façon dont vous traduisez un C dépend de si vous avez déjà vu un A , un B ou si vous commencez à nouveau.

Notez également que (bien que cela ne soit pas illustré dans le très petit exemple ci-dessus), il peut y avoir plusieurs façons de “jouer” le même mot ou la même phrase, plutôt qu’une seule. Les sténographes le font pour faciliter le passage d’un mot précédent au suivant en fonction de la position de la main. Il y a une analogie évidente avec la musique et vous pouvez l’utiliser pour rendre votre stream de frappe plus proche de la musique, afin d’empêcher que cela n’affecte négativement votre jeu de piano et de maximiser la probabilité que cela aide réellement le RSI.

Lors de la traduction de sténo en texte standard, nous utilisons à nouveau une recherche de “correspondance avec le plus grand préfixe”: l’algorithme de traduction commence par le premier trait écrit et recherche les entrées commençant par ce trait. S’il n’y a qu’une seule entrée, et que celle-ci est longue d’un seul coup, nous pouvons dire de manière fiable que «c’est l’entrée à utiliser», afficher le texte correspondant, puis recommencer avec le coup suivant. Mais plus probablement, ce trait commence plusieurs entrées de différentes longueurs. Nous regardons donc le coup suivant et voyons s’il y a des entrées qui commencent par ces deux coups dans l’ordre; et ainsi de suite jusqu’à ce que nous obtenions un match.

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

  ACBBCABCABD 

Voici comment nous pourrions le traduire:

  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 seule entrée; sortie “air conditionné” et commencer à nouveau avec le coup suivant: B
  3. B commence deux entrées; regarde le coup suivant: B
  4. B/B ne commence rien; prendre la plus longue correspondance précédente ( B ) et sortir celle (“abeille”)
  5. Ayant la sortie B = “abeille”, nous avons toujours un coup dans notre tampon. Il commence deux entrées, alors regardez le coup suivant: C
  6. B/C correspond à une entrée; sortie “parce que” et recommence avec le coup suivant: A
  7. A commence trois entrées; regarde le coup suivant: B
  8. A/B commence deux entrées; regarde le coup suivant: C
  9. A/B/C ne correspond qu’à une entrée; sortie “alphabétique” et commencer avec le coup 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 le match précédent le plus long ( A/B ) et utilisez-le pour sortir “alphabet”. Cela nous laisse avec D toujours dans le tampon.
  13. D commence deux entrées, donc nous devrions normalement regarder le coup suivant – mais nous avons traité tous les coups, donc considérez-le isolément. Dans l’isolement, cela se traduit par “chien” afin de produire cela.

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 de traits à une seule entrée possible. A/B devrait être traduit par “alphabet”, pas “alpha” et “abeille”.
  • (Non représenté ci-dessus) Il se peut que vous ayez des séquences de traits que vous ne pouvez pas traduire, car elles ne correspondent à rien dans le dictionnaire. (Les gens de Steno utilisent le nom “untranslate” – par exemple, avec notre dictionnaire, les traits E seraient un “non-traduit”.)
  • (Non montré ci-dessus) Certaines théories du sténo permettent au même ensemble de traits de signifier plus d’une chose, basée sur 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éno en sténo, les conflits étaient corrects, car ils savaient exactement où dans la phrase, quel était le bon choix, mais avec l’augmentation En ce qui concerne la traduction automatique, des théories du sténo sans conflit sont apparues spécifiquement pour éviter de devoir passer par le texte traduit et les conflits “corrigés”.
  • Traduire en temps réel (ce que vous seriez en train de faire) signifie que si vous recevez une correspondance partielle, vous voudrez la conserver en attendant l’accord suivant – mais probablement seulement jusqu’à un délai, auquel vous auriez traduisez ce que vous avez dans le tampon du mieux que vous le pouvez. (Ou peut-être vous ne voulez pas un délai d’attente, c’est votre appel.)
  • Probablement mieux d’avoir un coup qui dit “ne pas tenir compte de la course précédente”
  • Probablement mieux d’avoir un coup qui dit “effacer complètement le tampon sans rien sortir”

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 spécifique ou d’une API de système d’exploitation spécifique. Une solution matérielle résistera à l’épreuve du temps. Ne soyez pas coincé en utilisant une ancienne API dans Windows 7 lorsque tout le monde utilise Windows 11! Arduino est assez facile à apprendre.

  • Le matériel MIDI Arduino est disponible en vente libre
  • Les Arduinos ont été utilisés pour émuler les claviers

Il y a une tonne d’informations et d’aide là-bas pour Arduino. C’est une plate-forme de piratage de matériel conçue pour les débutants. Ce ne sera que plus gros maintenant que Google pousse Arduino.

EDIT: logiciel et matériel de clavier USB virtuel

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

Coup de MIDI

Gratuit. Pour Mac OS X 10.3 et versions ultérieures . Celui-ci vient spécifiquement avec “la possibilité d’utiliser n’importe quel clavier MIDI comme un remplacement complet du clavier de l’ordinateur.”

Bome’s MIDI Translator

Free / Postcardware (c’est un peu bizarre). Pour Windows 2000 et les versions ultérieures, et Mac OS X. Au départ, il semble plus orienté vers l’utilisation du type AutoHotkey , mais en y regardant de plus près, je pense qu’il pourrait parfaitement faire ce que vous voulez.

Max et aka.keyboard

Gratuit. Pour Mac OS X. Pas exactement une solution prête à l’emploi, mais si vous êtes à l’aise avec la configuration de base des périphériques, cela ne devrait pas être trop grave.

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

Un exemple complet de code source pour créer un stream 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 aussi la version .NET)

Une façon de simuler les frappes de clavier est dans VB 5/6-Tipp 0155: Tastaturereignisse simulieren (Visual Basic 6.0, quelque part est aussi la version .NET)

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

Entrez la description de l'image ici

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

Au piano et quand vous êtes un bon joueur, vous pouvez avoir 10 doigts sur le clavier et si la masortingce est utilisable, vous pouvez être beaucoup plus rapide que n’importe quel utilisateur de clavier d’ordinateur. 🙂

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

J’ai étudié le piano au collège, puis je me suis intéressé au design d’interaction, à la programmation et à l’utilisation de Vim . J’ai donc passé beaucoup de temps à faire du prototypage.

Vous pouvez obtenir ce travail assez rapidement sous Linux en utilisant le langage de programmation graphique pour les artistes multimédia, ” Pure Data “, ainsi que le x11key external par Alex Andre .

Sur Mac, vous pouvez utiliser MidiStroke . Je crois qu’une méthode sur Windows impliquait les outils MidiOx et AutoHotKey . A un autre moment, j’ai eu une version utilisant le plugin Java pour Max / MSP . Je crois que Pasortingce Colet a également créé une fenêtre externe pour Pure Data, mais je n’arrive plus à la localiser. De plus, il existe un externe pour MaxMSP qui peut le faire sous Windows. Enfin, l’ Osculator non libre mais génial peut faire ce que vous voulez – voir la page des fonctionnalités.

Quand je l’ai fait fonctionner, je ne l’ai jamais collé, parce que je ne pouvais pas arrêter de travailler avec la mise en page. C’était cool d’avoir mon moniteur sur mon clavier élecsortingque, cependant! Bonne chance.

À propos du MIDI

Vous avez déclaré que vous “ne savez rien du MIDI”. La technologie MIDI est assez simple une fois que vous la comprenez, mais cela peut être déroutant au départ. L’une des ressources qui m’a été extrêmement utile pour comprendre les bases du MIDI (qui sont certainement nécessaires si vous voulez programmer des interactions MIDI), est un livre intitulé MIDI for the Technophobe . C’est un livre facile à lire et très utile.

Pure Data & Max

D’après mon expérience dans le développement de multimédias interactifs, j’ai rencontré deux programmes très similaires qui facilitent la connexion et le mappage de signaux / entrées à partir de n’importe quel périphérique.

Ce sont Max pour un environnement Mac et Pure Data pour un environnement PC. Tous deux ont une pléthore de documentation en ligne et de tutoriels sur YouTube. La vidéo Max / MSP Tutorial 1 – utiliser le clavier de votre ordinateur en tant que midikeyboard (style ableton) illustre un programme intégré à Max qui mappe un clavier d’ordinateur sur les entrées d’un clavier MIDI (ce qui est exactement le contraire 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 open source gratuit pour Windows qui vous permet de remapper les touches et les boutons de vos appareils sur des macros. Il prend en charge en mode natif les claviers QWERTY, les manettes de jeu et les macros de souris.

Cependant, j’ai pu trouver une implémentation prenant en charge le mappage spécifique que vous recherchez. Ces deux threads expliquent le processus:

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

  2. Bibliothèque d’entrée MIDI , la solution au problème de l’auteur et le code / patch publié à AutoHotKey qui implémente réellement le résultat souhaité.

Fondamentalement, il semble que AutoHotKey, avec le patch personnalisé de cet utilisateur, fournira exactement ce dont vous avez besoin pour créer une correspondance entre un clavier MIDI et le signal d’entrée d’un clavier QWERTY. Il ne vous rest plus qu’à installer, configurer et définir vos mappages.

Rien d’autre?

Certaines des autres réponses vous ont donné des informations beaucoup plus complètes sur la programmation MIDI et MIDI, en général, mais comme votre article le dit, cela ne semble pas être tout à fait ce que vous recherchez. 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 la manière de convertir les signaux d’entrée d’un clavier MIDI en signaux d’un clavier QWERTY , ou votre intérêt principal est-il de trouver une solution prête à l’emploi à votre problème spécifique? Qu’est-ce que vous recherchez qui n’a pas encore été abordé?

Vous pouvez pirater votre propre clavier USB assez rapidement en utilisant un micro-contrôleur Teenys.

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

Vous pouvez aborder ces deux manières:

  1. Obtenez un vieux piano et reliez-le directement au teensy

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

En fait, je travaillais là-dessus il y a quelque temps, essayant de capturer des entrées de batterie Rock Band dans mon ordinateur (en faisant un petit émulateur de batterie Java maison). De toute façon, j’ai posé une question à ce sujet: , 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 dans tous les cas.

Essayez le traducteur MIDI de Bome .

Il fonctionne sur plusieurs plates-formes, permet de convertir facilement n’importe quelle entrée MIDI en un keystoke, rapide à installer et à configurer, en plus d’être gratuit pour un usage personnel.

Il existe un tutoriel, Quick Tip: MIDI Translation – MIDI to Keystrokes , pour savoir comment l’installer facilement:

Fondamentalement, il existe des possibilités infinies de ce que vous pouvez faire, y compris les touches d’accord et de modification. Je l’utilise pour mon installation audio en direct afin de contrôler mon DAW avec mon piano et je n’ai jamais eu de problème.

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 placez le symbole / symbole fréquemment utilisé à scope de main.

L’exemple de code et l’API dans Java Sound Resources: Exemples: le traitement numérique du signal (DSP) aide à comprendre comment traiter le signal.

Quelques références supplémentaires:

  • Traitement audio avec contrôles
  • Traitement du signal audio numérique, 2e édition

Casey a la meilleure réponse. J’ai ajouté un commentaire 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ériques sont beaucoup plus complexes et ils ne sont pas portables sur d’autres systèmes d’exploitation. Pour référence, consultez les problèmes avec Winmodems sous Linux.

En plaçant votre code dans un système embarqué, vous le rendez portable sur n’importe quel périphérique MIDI doté d’un port USB et de tout ordinateur qui accepte les claviers USB.

Il existe un programme appelé GlovePIE . Vous pouvez le programmer dans un langage de script simple, et je pense qu’il supporte le MIDI. Je ne sais pas si 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 utilisant des contrôleurs PS3 . C’est très puissant.

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 les communications en port série en touches de clavier.

Girder a une fonction “mapping” qui vous permet de mapper chaque touche, une par une, sur la frappe correspondante.

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

Apprenez juste la sténographie!

C’est clair de toute la discussion de votre part. Vous ne voulez réinventer aucune roue, du sharepoint vue technique. Mais une fois que vous avez établi une connexion (ce que cette question demande) et que vous travaillez, vous avez encore le gros du travail devant vous: vous devez former votre cerveau. Vous devez également inventer la manière la plus intelligente et la plus efficace de le faire – un problème de conception totalement indépendant de la technologie informatique. Vous ou l’un d’entre nous ne répondriez pas.

Heureusement, le problème a été résolu et affiné au fil des siècles de maturation …

Apprenez la sténographie!

Oui, cela vous ramènera du jack. Mais que valent des centaines d’heures de votre temps, avec à la fin un résultat moins favorable? En outre, l’article de Wikipedia sur la sténographie dit: «ça ressemble plus à un clavier de piano».

À moins, bien sûr, que vous vouliez avoir un effet de sidehow. Je dois admettre que je n’avais jamais pensé à cette possibilité, il 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 stick de pointage serait plus ergonomique?), Utilisez Plover pour le traduire (je suis sûr qu’il peut être configuré pour permettre aux touches autres que les lettres de conserver leurs fonctionnalités). la programmation), ou suivez le fil Re: Plover keyboard pour lancer votre propre clavier de sténographie USB, ou achetez un sténotype .

Bonne chance!

Jetez un coup d’œil aux jeux d’arcade MAME . Ils ont construit des périphériques matériels pour permettre l’entrée d’un nombre quelconque d’éléments différents. L’ iPac , par exemple, convertit les signaux des périphériques d’entrée en USB que l’ordinateur peut ensuite utiliser pour émuler les clés. Vous pouvez utiliser n’importe quelle combinaison de périphériques d’entrée agencés de manière à ce que cela semble confortable, sans aucune logique de programmation délirante, car le logiciel pour interpréter les entrées est déjà fait 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!

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

Il y a des timers qui accélèrent votre travail tout au long de la journée en introduisant des micro-pauses fréquentes. Si vous avez effectué des recherches sur le RSI, je suis certain que vous avez entendu parler des 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 une disposition de clavier programmeur Dvorak . Dvorak possède les caractères les plus souvent utilisés sur la ligne d’accueil, contrairement à QWERTY. Donc, l’utilisation de Dvorak réduira la tension causée par le fait de ne pas avoir à «chercher» des lettres.

Prenez ce clavier «naturel» du placard si vous ne l’utilisez pas déjà. Tapez très légèrement. Le ssortingct minimum pour enregistrer une frappe va faire.

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 permettra d’oublier facilement votre RSI.

Une consommation excessive d’alcool perturbe le sumil nécessaire pour permettre à votre corps de se guérir. Une bonne nuit de repos est cruciale pour apprivoiser RSI.

Étirer en utilisant un étirement isolé actif. Une bonne routine est décrite dans la section Étirement des poignets, des mains et des doigts – Étirement actif isolé .

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

Utilisez une tablette à stylet comme périphérique de saisie principal. Wacom fabrique des comprimés bon marché et décents .

Bonne chance!

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

  1. Un moyen de capturer des données MIDI à partir de votre clavier. Selon l’interface: interface MIDI (classique) ou interface USB MIDI (moderne), l’interface la plus probable est celle d’un ordinateur car elle offre le plus d’options. Les microcontrôleurs hôtes USB ne sont pas aussi simples que l’utilisation d’un ordinateur.

  2. Un schéma pour convertir les données MIDI en séquences de touches. Comme un utilisateur l’a souligné, les accords sont la voie à suivre, car le nombre de touches ne dépendra 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 sous Windows 7, et cela peut être flou et dépendre du fait qu’une application est actuellement active. C’est la partie la plus difficile de l’interface. Ce qui peut fonctionner est de créer un microcontrôleur de clavier USB HID 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 produit les séquences de touches peut envoyer un message série au port série virtuel. Le microcontrôleur enverrait une frappe au clavier pour ressembler à une entrée clavier standard. Cela permettrait d’interfacer les ports MIDI et les claviers MIDI USB.

Hmmm, avec ce type d’interface, vous pouvez aussi simuler une souris et utiliser des touches de 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. Donc, vous pouvez également éliminer la souris. Un autre avantage de cette approche est que tout type de périphérique d’entrée que vous connectez peut communiquer avec le port série virtuel pour produire des événements clavier et souris. Donc, si vous voulez append d’autres matériels tels que des pédales de batterie ou un joystick, il s’agit de régler le programme qui s’adresse à l’interface série.

Une autre prise sur ce qui précède est comme certaines postées ci-dessus pour utiliser un Arduino, mais inclut également USB Host Shield de Sparkfun pour gérer les claviers musicaux basés sur USB. Cela permet à l’Arduino d’être programmé en tant que combo clavier ou souris clavier dans la puce du chargeur d’amorçage et permet à l’appareil d’agir comme hôte USB pour le clavier musical USB. Ensuite, vous êtes couvert pour les deux types. Cependant, je pense toujours que la méthode du port série virtuel est plus flexible et serait plus facile à programmer à long terme. L’appareil Arduino sera plus difficile à modifier qu’un programme ou service de bureau.

Il existe une autre possibilité: les claviers à une main avec cordes existent déjà. J’ai vu des vidéos sur eux, mais vous devrez déterminer si ceux-ci vous font mal aux mains ou non.

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

J’ai pensé une fois que j’avais le 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 la RSI, le canal carpien, le mal de dos et le SCI peuvent souvent être psychosomatiques, surtout chez les personnes stressées, la douleur a pratiquement disparu (cela a aidé à visualiser mon poignet relaxant et son sang coulant) , puisque l’article dit que la conssortingction des vaisseaux sanguins autonomes est la cause immédiate de la douleur. En fait, je souffrais beaucoup de stress à l’époque.

It should be fairly easy using something like the .NET DirectSound interface to hook into an MIDI device. You will need to identify your target MIDI device and then get the code to listen in on the incoming messages (there are articles about doing this via Google).

Since you are using the MIDI in as a keyboard there are basically only two MIDI messages that you need to detect, namely note on and note off. The MIDI message is three data bytes specifying the command, the note and the velocity. The note off is just the note number (sometimes ‘bad’ MIDI stacks send a note on with zero velocity which you also have to expect).

Once you have the messages translating them the keyboard output should be fairly simple from .NET.

There is plenty of advice in the other answers about the technicalities; I just wanted to give you an idea of the actual MIDI messages. Bonne chance!

You’ll get better and happier results (regardless what operating system and/or DAW program you like to use) by playing any external MIDI keyboard as a controller through your sound card. Then route that into your GB software (or whatever) and tone generate the many sounds they have supplied you that way in real-time.

If your sound card does not support MIDI I/O’s (ins / outs /thrus), that’s not a problem. You can consider researching and investing in an external MIDI table top converter. Many are equipped to further convert MIDI outs to USB 2.0 (by- passing an existing sound card altogether).

For example: it’s pretty tough getting “human like” grace note results via a Z and X change key option using a computer keyboard and pencil tool. When, instead, your own fingers can just play that with a MIDI keyboard from its own physical octave register ranges—immediately!

I realize budgetary constraints may be involved. But, some of these seemingly cheap “Casio” type 5 octave keyboards sold at Radio Shack for under $100.00 US Dollars (*or less) is all you would need (plus, some of their on-board sound patches and sequencer modules sound and handle amazingly well for other things too).

RadioShack MIDI keyboard options .

As for external MIDI converters for existing sound cards, I’ve run some Google searches for you as follows with Mac platforms specifically in mind:

A lot of this external MIDI conversion information may be cumbersome to you at first, so I’ve broken down things more as “user friendly” for your considerations & budget:

  • MIDI sound cards

There’s nothing wrong with facilitating virtual keyboards as VST ‘s when using DAW . They have their place.

But, you sound like an accomplished keyboardist. So, why not consider the external MIDI conversion / keyboard options I just mentioned for yourself?

Good luck and I hope this gave you some ideas that can and will work for you!

If you don’t want to do any programming yourself but just want the problem solved you can just buy a USB-MIDI-keyboard where you can re-assign any key to send a QWERTY keyboard output signal instead of a MIDI-output, for example M-Audio Axiom Pro

This method will work with any OS and any computer that supports standard USB-keyboards since the MIDI-keyboard will identify itself as a standard QWERTY keyboard.

You can use a simple AutoIt script to both read MIDI events, see MIDI Input .

You’ll also need MIDI UDF and simulate key presses .

Reading MIDI events should be easy, but different MIDI controllers (instruments) have different features. Try to find out what your MIDI piano can do first, then see how you can best map those features to simulated QWERTY -keyboard presses.

If you want, you could have something on screen or in the tray to help you see what you are doing (that is, for Shift , Ctrl and Alt simulation).

You might take a look at chorded keyboards . They have the advantage that you don’t need to write a driver for them before you can use them, and some are similar to the layout of a piano keyboard.

If you know coding in Java, you could use this way:

First, implement a javax.sound.midi.Receiver with a send(..) method that is mapping the ‘Note on’ events to keystrokes like you want.

You would need to get the MidiMessage’s content with its getMessage method and intepret it in your fashion. The meaning of the message bytes can be found in MIDI Messages .

After receiving a ‘note on’ or ‘note off’ for a certain keyboard key, you may map that to a key you like by assigning it a constant of the KeyEvent class, something like C#4 -> KeyEvent.VK_A and so on. This key code can then be used by java.awt.Robot ‘s keyPress and keyRelease methods to actually send the keystroke to the OS and thus to other applications.

I know exactly how you feel. Doing crazy keyboard coding commands all-day makes my hands hurt.

A piano won’t do the job (your better off getting a Dorvak keyboard ). The best solution would be mental telepathy or at this moment in time voice control.

I find Arthro-Aid Direct cream is good and Wild Blend works OK as well.

The other thing I’ve noticed is that the mouse is also majorly to blame, most are un-ergonomic and clicking so much cause RSI and CTS . To overcome this I occasionally use auto mouse clickers, for example Auto Mouse Clicker .

I know of patents with mouse’s as grips that you squeeze, I’m keen to buy.

PS: Get your income protection insurance before you see a doctor about your hands!

And don’t program on weekends:)

I agree with Brian O’Dell’s answer – if this were my project, I’d do it in hardware. It has the advantage of being platform and hardware independent – your box replaces the need for a MIDI-USB interface and a PC API.

mbed is a fast-prototyping platform that is very easy to learn, and has multiple advantages over Arduino IMHO (online comstackr, 512 KB flash, 96 MHz, C++ language). It has a USB keyboard interface and a USB Midi interface pre-written for you.

The community is very friendly and willing to help, and there are a lot of existing projects using both MIDI and USB hid emulation – search Youtube for “mbed MIDI” or similar.

If you use Linux have a take at Footware .

It should be exactly what you’re looking for – if you adjust the MIDI pitches to a keymapping of your liking…

I never thought this could be useful for anyone but me ;o)

To type faster maybe it’s an idea to ‘play’ the consonants on the left hand and the vowels on the right (or vice versa). You don’t need a key for every consonant, because you could combine them like:

 BCDGHJKLMNPQRSTWXYZ cc# dd# eff# g c+d ... 

You can leave two close keys out (like c# + d , this doesn’t play easily). You can even leave the black keys out.

For vowels it is easy:

AEIOUY

cdefga

However, also think about using multiple keystrokes: like c# = aa , d# = ee , etc.

You can do the same sortingck with the consonants (having combination of keys for st, sp, etc.)

You can play consonants and vowels at the same time, bind them together alternately or with priority (consonants, then vowels, etc.)

You probably will have to learn to type again, but I’m sure you can do a lot quicker than a normal typing person can.

Use another octave for digits and special characters, use a switch for shift, use an easy to play a combination of keys for space (like two cs with both left and right hand, make sure it doesn’t mean (a) character(s)).

Also think about using a pedal which can have values of 0-127. You could use it as shift or space too … or backspace/enter.

I hope this give some new ideas and good luck with your project.

The answers to your question are already on this page, but I’d like to make some additional inputs.

First, I’m not convinced typing on a piano keyboard instead will stop the pains. In this regard, I’ll suggest you look into something like Nuance Dragon – Naturally Speaking for your typing.

Secondly, if you insist on going ahead with this, you’ll probably need to go with Nasebnbaar’s (though I don’t agree it’ll be any faster) and Brian’s suggestion. This is probably something you should contact an engineer to do properly, but if you must do it yourself, you’d be better off asking for directions on Elecsortingcal Engineering – Stack Echange.

Thirdly, if you simply want to understand how MIDI files work , how to read them programmatically , and how to simulate a keyboard stroke , then good luck 😉

Lastly, I’d like to get a copy as well if you eventually decide to go with the second option 🙂