Ich habe RSI- Probleme und habe 30 verschiedene Computertastaturen ausprobiert, die mir alle Schmerzen bereiteten. Klavier spielen macht mir keine Schmerzen. Ich spiele seit ungefähr 20 Jahren Klavier ohne Schmerzen. Ich würde gerne wissen, ob es eine Möglichkeit gibt, MIDI von einem MIDI-Keyboard aufzunehmen und Keyboard-Striche auszugeben. Ich weiß überhaupt nichts über MIDI, aber ich möchte eine Anleitung, wie man dieses Signal in einen Tastenanschlag umwandelt.
727
Antworten:
Eine gute Bibliothek in .NET mit vollständiger Midi-Unterstützung (BASS) finden Sie unter http://www.un4seen.com .
Und für den anderen Teil, wenn ich Tastatur-MIDI-Noten in Tasten und mehr übersetze, würde ich mich für AutoItX, die ActiveX / COM- und DLL-Schnittstelle für AutoIt entscheiden. Informationen und Download finden Sie unter http://www.autoitscript.com/site/autoit/
Tastaturtreiber muss nicht geschrieben werden.
quelle
Ich habe seit Jahren keine MIDI-Programmierung mehr gemacht, aber Ihre Grundidee ist sehr solide (kein Wortspiel).
MIDI ist ein Strom von "Events" (oder "Messages"), wobei zwei der grundlegendsten "Note On" und "Note Off" sind, die die Notennummer mit sich führen (0 = C, fünf Oktaven unter dem mittleren C, bis 127 = G fünf Oktaven über dem G über dem mittleren C (in Halbtönen). Diese Ereignisse tragen eine "Geschwindigkeits" -Nummer auf Tastaturen, die geschwindigkeitsabhängig ("berührungsempfindlich") sind, mit einer Kraft von (Sie haben es erraten) zwischen 0 und 127.
Ich würde denken, dass Sie zwischen Velocity, Chording und Pedalen eine recht gute "Tipp" -Schnittstelle für die Klaviertastatur finden könnten. Insbesondere das Aufzeichnen könnte eine sehr leistungsfähige Technik sein - wie ich in den Kommentaren erwähnt habe, können einfache Stenographen eine Stenotyp-Maschine verwenden , um stundenlang hintereinander mit den Leuten Schritt zu halten, wenn selbst hochkarätige Schreibkräfte dies nicht tun würden. über normale Tastaturen im Schreibmaschinenstil für längere Zeit nicht möglich sein. Wie bei der Maschinenstenographie benötigen Sie ein "Wörterbuch" der Bedeutungen von Akkorden und Folgen von Akkorden. (Können Sie mir sagen, dass ich früher auf der Softwareseite der Maschinenstenographie gearbeitet habe?)
Dazu sind die grundlegenden Teile:
Um mit Software bestmöglich kompatibel zu sein, müssen Sie dies als Tastaturgerätetreiber schreiben. Dies ist ein Plug-In für das Betriebssystem, das als Quelle für Tastaturereignisse dient und mit der zugrunde liegenden Hardware (in Ihrem Fall der Klaviertastatur) kommuniziert. Für Windows und Linux möchten Sie wahrscheinlich C dafür verwenden.
Da Sie jedoch nur Tastenanschläge generieren (und nicht versuchen, sie abzufangen, was ich vor Jahren versucht habe), können Sie möglicherweise alle Funktionen des Betriebssystems zum Senden künstlicher Tastenanschläge verwenden. Windows hat eine Schnittstelle dafür (wahrscheinlich mehrere, an die ich denke,
SendInput
aber ich weiß, dass es eine "Journal" -Schnittstelle gibt, die etwas Ähnliches tut), und ich bin sicher, dass andere Betriebssysteme dies auch tun. Das könnte für Ihre Zwecke ausreichend sein - hier würde ich anfangen, da die Route des Gerätetreibers umständlich sein wird und Sie wahrscheinlich eine andere Sprache als Java verwenden müssten. (Ich bin ein großer Fan von Java, aber die Schnittstellen, über die Betriebssysteme mit Gerätetreibern kommunizieren, werden in der Regel leichter über C und ähnliches verwendet.)Update : Mehr zum "Wörterbuch" von Akkorden zu Tastenanschlägen:
Grundsätzlich ist das Wörterbuch ein Versuch (danke, @Adam), den wir mit dem längsten Präfix suchen. Einzelheiten:
Bei der Maschinenstenographie schreibt der Stenograph, indem er mehrere Tasten gleichzeitig auf der Stenotypmaschine drückt und dann alle loslässt. Sie nennen dies einen "Strich" der Tastatur; Es ist, als würde man einen Akkord auf dem Klavier spielen. Striche entsprechen häufig (aber nicht immer) einer Silbe der gesprochenen Sprache. Wie bei Silben hat manchmal ein Strich (Akkord) eine eigene Bedeutung, manchmal hat er nur eine Bedeutung in Kombination mit folgenden Strichen. (Denken Sie "gut" gegen "gut", gefolgt von "tschüss"). Obwohl sie stark von der Schule beeinflusst werden, an der sie studiert haben, hat jeder Stenograph sein eigenes "Wörterbuch" darüber, mit welchen Strichen sie was meinen, ein Wörterbuch, das sie im Laufe ihres Arbeitslebens kontinuierlich verbessern werden. Das Wörterbuch enthält Einträge, bei denen der stenografische Teil (kurz "Steno") einen Strich lang oder mehrere Striche lang ist. Häufig gibt es mehrere Einträge mit demselben Starthub, die sich durch ihre Länge und die nachfolgenden Striche unterscheiden. Zum Beispiel (und ich werde hier kein echtes Steno verwenden, sondern nur Platzhalter) können folgende Einträge vorhanden sein:
(Diese Buchstaben sind nicht als Noten gedacht, sondern nur als abstrakte Markierungen.)
Beachten Sie, dass
A
mehrere Einträge gestartet werden und dass die Art und Weise, wie Sie einenC
Strich übersetzen, davon abhängt, ob Sie zuvor einenA
, einenB
oder einen neuen gesehen haben.Beachten Sie auch, dass es (obwohl in dem sehr kleinen Beispiel oben nicht gezeigt) mehrere Möglichkeiten gibt, dasselbe Wort oder dieselbe Phrase zu "spielen" und nicht nur eine. Stenographen tun dies, um je nach Handposition den Übergang von einem vorhergehenden Wort zum nächsten zu erleichtern. Es gibt dort eine offensichtliche Analogie zur Musik, und Sie könnten diese verwenden, um Ihren Schreibfluss dem Abspielen von Musik ähnlicher zu machen, um zu verhindern, dass sich dies negativ auf Ihr Klavierspiel auswirkt, und um die Wahrscheinlichkeit zu maximieren, dass dies tatsächlich beim RSI hilft.
Bei der Übersetzung von Steno in Standardtext verwenden wir erneut eine Suche nach "Übereinstimmungen mit dem längsten Präfix": Der Übersetzungsalgorithmus beginnt mit dem ersten jemals geschriebenen Strich und sucht nach Einträgen, die mit diesem Strich beginnen. Wenn es nur einen Eintrag gibt und dieser einen Strich lang ist, können wir zuverlässig sagen "das ist der zu verwendende Eintrag", den entsprechenden Text ausgeben und dann mit dem nächsten Strich neu beginnen. Wahrscheinlicher ist jedoch, dass dieser Strich mehrere Einträge unterschiedlicher Länge startet. Wir schauen uns also den nächsten Strich an und sehen, ob es Einträge gibt, die mit diesen beiden Strichen der Reihe nach beginnen. und so weiter, bis wir ein Match bekommen.
Nehmen wir also mit dem obigen Wörterbuch an, wir hätten diese Sequenz gesehen:
So würden wir es übersetzen:
A
ist der Beginn von drei Einträgen unterschiedlicher Länge; schau auf den nächsten Schlag:C
A/C
stimmt nur mit einem Eintrag überein; "Klimaanlage" ausgeben und mit dem nächsten Hub neu beginnen:B
B
startet zwei Einträge; schau auf den nächsten Schlag:B
B/B
fängt nichts an; nimm das längste vorherige Match (B
) und gib das aus ("Biene")B
= "bee" haben wir immer noch einenB
Strich in unserem Puffer. Es werden zwei Einträge gestartet. Schauen Sie sich also den nächsten Strich an:C
B/C
entspricht einem Eintrag; "weil" ausgeben und mit dem nächsten Strich neu beginnen:A
A
startet drei Einträge; schau dir den nächsten Strich an:B
A/B
startet zwei Einträge; schau dir den nächsten Strich an:C
A/B/C
stimmt nur mit einem Eintrag überein; Geben Sie "alphabetisch" aus und beginnen Sie neu mit dem nächsten Strich:A
A
startet drei Einträge; schau auf den nächsten Schlag:B
A/B
startet zwei Einträge; schau auf den nächsten Schlag:D
A/B/D
passt zu nichts, also nimm die längste vorherige Übereinstimmung (A/B
) und verwende sie, um "Alphabet" auszugeben. Das lässt unsD
noch im Puffer.D
Startet zwei Einträge, sodass wir normalerweise den nächsten Strich betrachten würden - aber wir haben alle Striche verarbeitet, betrachten Sie ihn also isoliert. Für sich bedeutet es "Hund", also geben Sie das aus.Aspekte der oben genannten zu beachten:
A/B
sollte als "Alphabet" übersetzt werden, nicht als "Alpha" und "Biene".E
wären bei unserem Wörterbuch die Striche "untranslate".)quelle
Erwägen Sie, etwas in Hardware zu tun, das eine USB-Tastatur (oder PS / 2-Tastatur?) Emuliert. Sie sind nicht länger von einem bestimmten Betriebssystem oder einer bestimmten Betriebssystem-API abhängig. Eine Hardwarelösung wird den Test der Zeit bestehen. Verwenden Sie keine alte API in Windows 7, wenn alle anderen Windows 11 ausführen! Arduino ist ziemlich einfach zu lernen.
Es gibt eine Menge Informationen und Hilfe für Arduino. Es ist eine Hardware-Hacking-Plattform für Neulinge. Es wird erst größer, wenn Google Arduino vorantreibt.
BEARBEITEN: Software und Hardware für virtuelle USB-Tastaturen
quelle
Für mich klingt es so, als würden Sie weniger nach Ratschlägen suchen, wie Sie dies selbst erstellen können, als vielmehr zu fragen, welche Ressourcen bereits vorhanden sind, um das zu erreichen, was Sie wollen. Abhängig von Ihrem Betriebssystem gibt es viele Möglichkeiten, dies zu erreichen, ohne dass Sie Ihr eigenes Programm von Grund auf neu schreiben müssen:
MIDI Stroke
Kostenlos. Für Mac OS X 10.3 und höher . Dieser ist speziell mit "der Möglichkeit ausgestattet, jedes MIDI- Keyboard als vollständigen Ersatz für die Computertastatur zu verwenden".
Bome's MIDI Übersetzer
Free / Postcardware (es ist ein bisschen seltsam). Für Windows 2000 und höher, und Mac OS X . Es scheint zunächst eher auf die Verwendung vom AutoHotkey- Typ ausgerichtet zu sein , aber bei näherer Betrachtung denke ich, dass es das tun könnte, was Sie wollen.
Max und aka.keyboard
Kostenlos. Für Mac OS X . Nicht gerade eine "sofort einsatzbereite" Lösung, aber wenn Sie mit der grundlegenden Gerätekonfiguration vertraut sind, sollte es nicht so schlimm sein.
quelle
Sie können mit Quellcodebeispielen in .NET in MIDI DotNet auf die Hardware zugreifen .
Ein vollständiges Arbeitsbeispiel als Quellcode zum Erstellen eines MIDI-Noten-Datenstroms finden Sie in VB 5/6-Tipp 0521: MIDI-Töne-Funktionen (Visual Basic 6.0, irgendwo ist auch die .NET-Version)
Eine Möglichkeit, Tastaturanschläge zu simulieren, bietet VB 5/6-Tipp 0155: Tastaturereignisse simulieren (Visual Basic 6.0, irgendwo auch .NET-Version)
Das Erkennen von Tastenanschlägen wird unter Tipp-Upload: VB.NET 0266: Globaler KeyHook beschrieben .
Verwenden Sie dann einfach eine gute Arbeitsmatrix für einen Klavierspieler
Auf dem Klavier und wenn Sie ein guter Spieler sind, können Sie 10 Finger auf der Tastatur haben, und wenn die Matrix verwendbar ist, können Sie viel schneller sein als jeder Computer-Tastaturbenutzer, den ich denke. :-)
In diesem Fall sollte es keine große Sache sein, wenn ich Ihre Frage richtig verstehe.
quelle
Ich habe am College Klavierperformance studiert und mich dann mit Interaktionsdesign, Programmierung und der Verwendung von Vim befasst. Daher habe ich viel Zeit damit verbracht, solche Dinge als Prototyp zu entwickeln.
Sie können dies unter Linux ziemlich schnell zum Laufen bringen, indem Sie die grafische Programmiersprache für Multimedia-Künstler " Pure Data " zusammen mit dem externen x11key von Alex Andre verwenden .
Auf einem Mac können Sie MidiStroke verwenden . Ich glaube, eine Methode unter Windows umfasste die Tools MidiOx und AutoHotKey . Zu einer anderen Zeit hatte ich eine Version, die das Java-Plugin für Max / MSP verwendete . Ich glaube, Patrice Colet hat ein externes Fenster für Pure Data erstellt, das ebenfalls funktioniert hat, aber ich kann es anscheinend nicht mehr finden. Es gibt auch ein externes für MaxMSP , das dies unter Windows tun kann. Schließlich kann der nicht kostenlose, aber großartige Oszillator tun, was Sie wollen - siehe die Funktionsseite.
Als ich es zum Laufen brachte, blieb ich nie dabei, weil ich nicht aufhören konnte, mit dem Layout zu arbeiten. Es war cool, nur meinen Monitor auf meiner elektrischen Tastatur zu haben! Viel Glück.
quelle
Über MIDI
Sie sagten, dass Sie "überhaupt nichts über MIDI wissen". Die MIDI-Technologie ist ziemlich einfach, wenn Sie sie erst einmal verstanden haben, aber sie kann am Anfang verwirrend sein. Eine der Ressourcen, die mir beim Verständnis der Grundlagen für MIDI (die sicherlich notwendig sind, wenn Sie MIDI-Interaktionen programmieren möchten) sehr hilfreich waren, ist ein Buch namens MIDI for the Technophobe . Es ist ein leicht zu lesendes Buch und sehr hilfreich.
Reine Daten & max
Nach meiner Erfahrung bei der Entwicklung interaktiver Multimedia-Programme sind mir zwei sehr ähnliche Programme begegnet, die das Verbinden und Zuordnen von Signalen / Eingängen von jedem Gerät aus erleichtern.
Dies sind Max für eine Mac-Umgebung und Pure Data für eine PC-Umgebung. Beide haben eine Vielzahl von Online-Dokumentationen und YouTube-Tutorials. Das Video Max / MSP Tutorial 1 - Verwenden Ihrer Computertastatur als Midikeyboard (Ableton-Stil) zeigt ein in Max integriertes Programm, das eine Computertastatur den Eingängen eines MIDI-Keyboards zuordnet (was im Grunde das genaue Gegenteil von dem ist, was Sie versuchen). Sie können Ihre beabsichtigten Ergebnisse erzielen, indem Sie dasselbe Muster verwenden, aber die Signale / Zuordnungen umkehren.
AutoHotKey
AutoHotKey ist ein kostenloses Open Source-Dienstprogramm für Windows, mit dem Sie Tasten und Schaltflächen auf Ihren Geräten Makros zuordnen können. Es unterstützt nativ QWERTZ-Tastaturen, Joysticks und Mausmakros.
Ich konnte jedoch eine Implementierung finden, die das von Ihnen gesuchte spezifische Mapping unterstützt. Diese beiden Themen erklären den Prozess:
MIDI IN-Unterstützung in AutoHotkey , die Diskussion des Anwendungsfalls. Der Autor suchte nach einem Programm, das MIDI IN-Eingaben erkennen und in Tastendrücke übersetzen konnte .
MIDI-Eingangsbibliothek , die Lösung für das Problem des Autors und der auf AutoHotKey veröffentlichte Code / Patch, der Ihr beabsichtigtes Ergebnis tatsächlich implementiert.
Grundsätzlich sieht es so aus, als ob AutoHotKey zusammen mit dem benutzerdefinierten Patch dieses Benutzers genau das bietet, was Sie benötigen, um eine Zuordnung von einem MIDI-Keyboard zum Eingangssignal eines QWERTZ-Keyboards zu erstellen. Sie müssten lediglich Ihre Zuordnungen installieren, konfigurieren und definieren.
Noch etwas?
Einige der anderen Antworten haben Ihnen viel umfassendere Informationen zur MIDI- und MIDI-Programmierung im Allgemeinen gegeben, aber wie in Ihrem Beitrag angegeben, scheint dies nicht ganz das zu sein, wonach Sie suchen. Ich würde Ihnen gerne mehr helfen, wenn möglich, aber es wäre einfacher, wenn Sie die Art der gesuchten Informationen genauer beschreiben könnten. Interessieren Sie sich beispielsweise mehr dafür, wie Sie die Eingangssignale eines MIDI-Keyboards in die Signale eines QWERTZ- Keyboards umwandeln können , oder suchen Sie in erster Linie nach einer sofort einsatzbereiten Lösung für Ihr spezifisches Problem? Was suchen Sie, das noch nicht angesprochen wurde?
quelle
Mit einem Teenys-Mikrocontroller können Sie Ihre eigene USB-Tastatur ziemlich schnell hacken.
Tatsächlich haben sie Beispielcode für die Herstellung einer USB-Tastatur .
Sie können dies auf zwei Arten angehen:
Holen Sie sich ein altes Klavier und verdrahten Sie die Schalter direkt mit dem Teenager
Fügen Sie die zusätzliche Logik hinzu, um eine Verbindung zum MIDI-Port herzustellen, und fügen Sie die erforderliche Decodierung hinzu.
quelle
Eigentlich habe ich vor einiger Zeit daran gearbeitet und versucht, Rockband- Drum-Eingaben in meinen Computer zu erfassen (wodurch ein kleiner Java-Drum-Emulator erstellt wurde). Wie auch immer, ich habe hier eine Frage zu diesem Problem gestellt: Zeitverzögerungsproblem (dort ist Polling-Code zusammen mit dem, was ich versucht habe zu tun.). Und wenn ich mein Programm finde, kann ich Ihnen den Code geben, es verwendet eine Drittanbieter-API ( JInput ).
Viel Glück so oder so.
quelle
Probieren Sie den MIDI-Übersetzer von Bome aus .
Es funktioniert plattformübergreifend, kann jeden MIDI- Eingang einfach in einen Keystoke umwandeln, lässt sich schnell einrichten und konfigurieren und ist für den persönlichen Gebrauch kostenlos.
Es gibt ein Tutorial, Kurztipp: MIDI-Übersetzung - MIDI zu Tastenanschlägen , wie Sie es einfach einrichten können:
Grundsätzlich gibt es unendlich viele Möglichkeiten, einschließlich Chording- und Modifier-Tasten. Ich verwende es für mein Live-Audio-Rig, um meine DAW mit meinem Klavier zu steuern, und hatte noch nie ein Problem.
quelle
In Java können Sie JMF (Java Media Framework) verwenden, um MIDI-Signale zu konvertieren. Die Grundlagen des Tastaturdesigns sind einfach zu bedienen, dh die Benutzeroberfläche. und häufig verwendete Zeichen / Symbole griffbereit stellen.
Der Beispielcode und die API in Java Sound Resources: Beispiele: Digitale Signalverarbeitung (DSP) helfen zu verstehen, wie das Signal verarbeitet wird.
Einige weitere Referenzen:
quelle
Es gibt ein Programm namens GlovePIE . Sie können es in einer einfachen Skriptsprache programmieren, und ich glaube, es unterstützt MIDI. Ich bin mir nicht sicher, ob dies in die Kategorie "Java" passt, aber es ist trotzdem ein großartiges Programm. Ich habe es verwendet, um Roboter mit PS3- Controllern zu steuern. Es ist sehr mächtig.
quelle
Viele Keyboards verfügen über einen RS-232- Anschluss (Serial Port ), über den MIDI-Signale an den Computer gesendet werden können. Ich verwende ein Programm namens Girder , um die Kommunikation über die serielle Schnittstelle in Tastaturanschläge umzuwandeln.
Girder verfügt über eine Zuordnungsfunktion, mit der Sie jede Taste einzeln dem entsprechenden Tastenanschlag zuordnen können.
Dies könnte die einfache Lösung sein, nach der Sie suchen!
quelle
Lerne einfach Stenographie!
Das geht aus allen Diskussionen von Ihrer Seite hervor. Aus technischer Sicht möchten Sie keine Räder neu erfinden. Aber sobald Sie eine Verbindung hergestellt haben (was diese Frage stellt) und arbeiten, haben Sie immer noch den größten Teil der Arbeit vor sich: Sie müssen Ihr Gehirn trainieren. Sie müssen auch den klügsten und effizientesten Weg finden, um dies zu erreichen - ein Designproblem, das völlig aus dem Rhythmus der Computertechniker heraus entstanden ist. Sie oder einer von uns würde zu kurz kommen.
Glücklicherweise wurde das Problem durch Jahrhunderte der Reifung gelöst und verbessert ...
Lerne Stenographie!
Ja, das bringt dich zurück. Aber was sind Hunderte von Stunden Ihrer eigenen Zeit wert, mit am Ende einem weniger günstigen Ergebnis? Außerdem heißt es in dem Wikipedia-Artikel zur Stenografie : "Es sieht eher aus wie eine Klaviertastatur."
Es sei denn, Sie möchten natürlich einen Sideshow-Effekt erzielen. Ich würde zugeben müssen, ich hätte nie an diese Möglichkeit gedacht, es wäre wirklich unterhaltsam zu sehen, wie jemand einen Text von einer Klaviertastatur heraussprengt!
Sie könnten mit einer USB-Tastatur mit Touchpad beginnen (oder ein Zeigestab wäre ergonomischer?) Und Plover verwenden , um sie zu übersetzen (ich bin sicher, dass sie so konfiguriert werden kann, dass die Nicht-Buchstaben-Tasten ihre Funktionalität behalten, für die sie wichtig sind Programmieren), oder folgen Sie dem Thread Re: Plover-Tastatur, um Ihre eigene USB-Stenografietastatur zu rollen, oder kaufen Sie einen Stenotyp .
Viel Glück!
quelle
pthread
?Schauen Sie sich MAME Arcade-Spiele an. Sie haben Hardwaregeräte gebaut, um Eingaben von einer beliebigen Anzahl verschiedener Elemente zu ermöglichen. Der iPac konvertiert beispielsweise Signale von Eingabegeräten in USB, mit denen der Computer Schlüssel emulieren kann. Sie können eine beliebige Kombination von Eingabegeräten verwenden, die so angeordnet ist, dass sie ohne verrückte Programmierlogik bequem erscheint - da die Software zur Interpretation der Eingabe bereits fertig und gut getestet ist.
Ich habe Flugsimulator-Cockpit-Eingaben, benutzerdefinierte Kioske und Abstimmungssysteme gesehen, die in dieser Methode gebaut wurden ... und der Preis stimmt!
quelle
Um dies zu lösen, benötigen Sie einige Dinge:
Eine Möglichkeit, MIDI-Daten von Ihrem Keyboard zu erfassen. Abhängig von der Schnittstelle: MIDI-Schnittstelle (klassisch) oder USB- MIDI-Schnittstelle (modern) ist die wahrscheinlichste Schnittstelle zu einem Computer, da sie die meisten Optionen bietet. USB-Host-Mikrocontroller sind nicht so einfach wie die Verwendung eines Computers.
Ein Schema zum Konvertieren von MIDI-Daten in Tastenanschläge. Wie ein Benutzer betonte, sind Akkorde der richtige Weg, da die Anzahl der Tasten nicht von der Anzahl der Klaviertasten abhängt.
Eine Möglichkeit, einen Schlüssel in das Betriebssystem einzufügen. Dies erfordert einen Low-Level-Treiber, um genau zu sein. Ich habe mit Anwendungen herumgespielt, die Tastatur- und Mausdaten in Anwendungen in Windows 7 einfügen. Dies kann unzuverlässig sein und davon abhängen, ob eine Anwendung derzeit im Fokus steht. Dies ist der schwierigste Teil der Schnittstelle. Möglicherweise wird ein HID- USB-Tastatur-Mikrocontroller erstellt, der auch über eine serielle Schnittstelle verfügt.
Die serielle Schnittstelle würde eine virtuelle serielle Schnittstelle erstellen. Die Software, die die MIDI-Daten liest und die Tastenanschläge erzeugt, kann eine serielle Nachricht an die virtuelle serielle Schnittstelle senden. Der Mikrocontroller sendet einen Tastendruck, sodass er wie eine Standardtastatur aussieht. Dies würde die Verbindung von MIDI-Ports und USB-MIDI-Keyboards ermöglichen.
Hmmm, mit dieser Art von Schnittstelle können Sie auch eine Maus simulieren und einige Klaviertasten für die Mausachse und die Tasten verwenden. Der Druck könnte verwendet werden, um die Geschwindigkeit des Mauszeigers zu bestimmen. Sie können also auch die Maus entfernen. Ein weiterer Vorteil dieses Ansatzes besteht darin, dass jede Art von Eingabegerät, das Sie verbinden, mit der virtuellen seriellen Schnittstelle kommunizieren kann, um Tastatur- und Mausereignisse zu erzeugen. Wenn Sie also andere Hardware wie Drum-Pedale oder einen Joystick hinzufügen möchten, müssen Sie das Programm anpassen, das mit der seriellen Schnittstelle kommuniziert.
Eine andere Sichtweise ist wie die oben beschriebenen, um ein Arduino zu verwenden, enthält aber auch USB Host Shield von Sparkfun für die Handhabung von USB-basierten Musiktastaturen. Dadurch kann der Arduino als Tastatur- oder Tastaturmauskombination im Bootloader-Chip programmiert werden und das Gerät kann als USB- Host für die USB-basierte Musiktastatur fungieren . Dann sind Sie für beide Typen abgesichert. Ich denke jedoch immer noch, dass die Methode der virtuellen seriellen Schnittstelle flexibler ist und auf lange Sicht einfacher zu programmieren wäre. Das Arduino-Gerät ist schwieriger zu ändern als ein Desktop-Programm oder -Dienst.
Es gibt noch eine andere Möglichkeit: Akkordierte Einhandtastaturen gibt es bereits. Ich habe Videos auf ihnen gesehen, aber Sie müssten feststellen, ob diese Ihre Hände verletzen oder nicht.
quelle
Es sollte ziemlich einfach sein, mit etwas wie der .NET DirectSound-Schnittstelle ein MIDI-Gerät anzuschließen. Sie müssen Ihr Ziel-MIDI-Gerät identifizieren und dann den Code erhalten, um die eingehenden Nachrichten abzuhören (es gibt Artikel dazu über Google).
Da Sie den MIDI-Eingang als Keyboard verwenden, müssen Sie grundsätzlich nur zwei MIDI-Meldungen erkennen, nämlich Note On und Note Off. Die MIDI-Nachricht besteht aus drei Datenbytes, die den Befehl, die Note und die Velocity angeben. Die Note aus ist nur die Notennummer (manchmal senden 'schlechte' MIDI-Stacks eine Note mit einer Geschwindigkeit von Null weiter, die Sie ebenfalls erwarten müssen).
Sobald Sie die Nachrichten haben, die sie übersetzen, sollte die Tastaturausgabe von .NET ziemlich einfach sein.
In den anderen Antworten gibt es viele Ratschläge zu den technischen Details. Ich wollte Ihnen nur eine Vorstellung von den tatsächlichen MIDI-Nachrichten geben. Viel Glück!
quelle
Sie erhalten bessere und zufriedenere Ergebnisse (unabhängig davon, welches Betriebssystem und / oder DAW- Programm Sie verwenden möchten), wenn Sie ein externes MIDI-Keyboard als Controller über Ihre Soundkarte spielen. Leiten Sie das dann in Ihre GB-Software (oder was auch immer) und erzeugen Sie in Echtzeit die vielen Sounds, die sie Ihnen auf diese Weise geliefert haben.
Wenn Ihre Soundkarte keine MIDI-E / A (Ins / Outs / Thrus) unterstützt, ist dies kein Problem. Sie können einen externen MIDI-Tischkonverter suchen und in diesen investieren. Viele sind für die weitere Konvertierung von MIDI-Ausgängen in USB 2.0 ausgestattet (unter Umgehung einer vorhandenen Soundkarte insgesamt).
Zum Beispiel: Es ist ziemlich schwierig, über eine Z- und X-Änderungstastenoption mit einer Computertastatur und einem Bleistiftwerkzeug "menschenähnliche" Gnadennotizergebnisse zu erhalten. Wenn stattdessen Ihre eigenen Finger dies einfach mit einem MIDI-Keyboard aus den eigenen physischen Oktavregisterbereichen spielen können - sofort!
Mir ist klar, dass dies mit Budgetbeschränkungen verbunden sein kann. Einige dieser scheinbar billigen "Casio" -Typ-5-Oktav-Keyboards, die bei Radio Shack für unter 100 US-Dollar (* oder weniger) verkauft werden, sind jedoch alles, was Sie benötigen (plus einige der integrierten Sound-Patches und Sequenzer-Module klingen und handhaben erstaunlich gut auch für andere Dinge).
RadioShack MIDI-Keyboard-Optionen .
In Bezug auf externe MIDI-Konverter für vorhandene Soundkarten habe ich einige Google-Suchanfragen für Sie wie folgt durchgeführt, wobei speziell auf Mac-Plattformen eingegangen wurde:
Viele dieser externen MIDI-Konvertierungsinformationen sind für Sie zunächst möglicherweise umständlich, daher habe ich die Dinge für Ihre Überlegungen und Ihr Budget eher als "benutzerfreundlich" eingestuft:
Es ist nichts Falsches daran, virtuelle Tastaturen als VSTs zu verwenden , wenn DAW verwendet wird . Sie haben ihren Platz.
Aber Sie klingen wie ein versierter Keyboarder. Warum also nicht die externen MIDI-Konvertierungs- / Keyboard-Optionen in Betracht ziehen, die ich gerade für Sie erwähnt habe?
Viel Glück und ich hoffe, das hat Ihnen einige Ideen gegeben, die für Sie funktionieren können und werden!
quelle
Wenn Sie nicht selbst programmieren möchten, sondern nur das Problem lösen möchten, können Sie einfach ein USB-MIDI-Keyboard kaufen, bei dem Sie eine beliebige Taste neu zuweisen können, um ein QWERTZ-Tastaturausgangssignal anstelle eines MIDI-Ausgangs zu senden Beispiel M-Audio Axiom Pro
Diese Methode funktioniert mit jedem Betriebssystem und jedem Computer, der Standard-USB-Keyboards unterstützt, da sich das MIDI-Keyboard als Standard-QWERTZ-Keyboard identifiziert.
quelle
Sie können ein einfaches AutoIt- Skript verwenden, um beide MIDI-Events zu lesen (siehe MIDI-Eingang) .
Sie benötigen außerdem MIDI UDF und simulieren Tastendrücke .
Das Lesen von MIDI-Events sollte einfach sein, aber verschiedene MIDI-Controller (Instrumente) haben unterschiedliche Funktionen. Versuchen Sie zuerst herauszufinden, was Ihr MIDI-Piano kann, und sehen Sie dann, wie Sie diese Funktionen am besten simulierten QWERTZ- Tastenpressen zuordnen können.
Wenn Sie möchten, können Sie etwas auf dem Bildschirm oder in dem Fach haben, damit Sie sehen , was Sie tun (das heißt, für Shift, Ctrlund AltSimulation).
quelle
Sie können sich auch akkordierte Tastaturen ansehen . Sie haben den Vorteil, dass Sie keinen Treiber für sie schreiben müssen, bevor Sie sie verwenden können, und einige ähneln dem Layout einer Klaviertastatur.
quelle
Wenn Sie mit Codierung in Java vertraut sind, können Sie Folgendes verwenden:
Implementieren Sie zunächst a
javax.sound.midi.Receiver
mit einersend(..)
Methode, die die "Hinweis zu" -Ereignisse den gewünschten Tastenanschlägen zuordnet.Sie müssten den Inhalt der MidiMessage mit ihrer
getMessage
Methode abrufen und auf Ihre Weise interpretieren. Die Bedeutung der Nachrichtenbytes finden Sie in MIDI-Nachrichten .Nachdem Sie für eine bestimmte Tastaturtaste eine Notiz zum Ein- oder Ausschalten erhalten haben, können Sie diese einer beliebigen Taste zuordnen, indem Sie ihr eine Konstante der KeyEvent-Klasse zuweisen, z. B. C # 4 -> KeyEvent.VK_A usw. . Dieser Schlüsselcode kann dann von
java.awt.Robot
den Methoden keyPress und keyRelease verwendet werden, um den Tastenanschlag tatsächlich an das Betriebssystem und damit an andere Anwendungen zu senden.quelle
Ich stimme der Antwort von Brian O'Dell zu - wenn dies mein Projekt wäre, würde ich es in Hardware tun. Es hat den Vorteil, dass es plattform- und hardwareunabhängig ist - Ihre Box ersetzt eine MIDI-USB-Schnittstelle und eine PC-API.
mbed ist eine Plattform für schnelles Prototyping, die sehr einfach zu erlernen ist und gegenüber Arduino IMHO (Online-Compiler, 512 KB Flash, 96 MHz, C ++) mehrere Vorteile bietet. Es verfügt über eine USB-Tastaturschnittstelle und eine für Sie vorab geschriebene USB-Midi-Schnittstelle .
Die Community ist sehr freundlich und hilfsbereit, und es gibt viele bestehende Projekte, die sowohl MIDI- als auch USB-Hid-Emulation verwenden. Suchen Sie auf Youtube nach "mbed MIDI" oder ähnlichem.
quelle
Wenn Sie Linux verwenden, probieren Sie Footware aus .
Es sollte genau das sein, wonach Sie suchen - wenn Sie die MIDI-Tonhöhen auf ein Keymapping nach Ihren Wünschen einstellen ...
Ich hätte nie gedacht, dass dies für irgendjemanden außer mir nützlich sein könnte; o)
quelle
Versuchen Sie es mit einem Mikrocontroller-basierten System wie Arduino .
quelle
Das wäre nicht zu schwer.
Ich gehe davon aus, dass Sie unter Windows arbeiten , bin mir aber nicht sicher. Ich habe einen MIDI- Sequenzer, http://pianocheetah.com , in einfachem altem C ++ geschrieben , mit dem Sie Befehle über die Klaviertastatur ausführen können. Es gibt keinen Grund, warum Sie nicht dasselbe tun könnten, um Tasten in den Tastatureingabestream zu drücken.
Aber komm schon. Sie erinnern sich, wie lange Sie überhaupt gebraucht haben, um die Tastatur zu lernen, oder? Bist du bereit, das noch einmal durchzugehen? Und sind Sie bereit, Ihre gesegnete Tastatur mit einer Menge dumm aussehender Schlüsselsymbole zu verschmutzen?
Sie müssen mindestens 26 Alpha-, 10 numerische, 11 Interpunktions- und mindestens 12 Funktionstasten UND deren verschobene Zustände verwenden. Das sind also 60 Tasten plus verschobene Zustände. Das verbrennt volle 5 Oktaven Tasten. Sie werden Klavier "Hopfen" = die ganze Zeit machen. Verabschieden Sie sich vom Tippen.
Sie können sich vor RSI retten , aber Sie haben sich eine andere Art von Albtraum geschaffen.
Und viel Glück, dass Ihr Chef Ihnen bei der Arbeit ein MIDI-Keyboard kauft.
Wenn Sie gelernt haben, wirklich Klavier zu spielen, haben Sie gelernt, stressfrei zu spielen. Tun Sie das auf der QWERTZ- Tastatur. Keine Spannung. Fangen Sie langsam an.
quelle