[Keyboard] ピアノのキーボードをコンピュータのキーボードとして使用する


Answers

完全なmidiサポート(BASS)を備えた.NETの優れたライブラリは、 http://www.un4seen.comにアクセスしてください

また、キーボードのMIDIノートを鍵などに変換するために、AutoItX、ActiveX / COM、およびDLLインターフェイスをautoItに追加しました。 情報とダウンロードについては、 http://www.autoitscript.com/site/autoit/http://www.autoitscript.com/site/autoit/してhttp://www.autoitscript.com/site/autoit/

キーボードドライバを書く必要はありません。

Question

私はRSI問題を抱えており、30種類のコンピュータキーボードを試してみると、痛みを感じます。 ピアノを弾いても痛みはありません。 私は痛みの問題なしに約20年間ピアノを弾いてきました。 MIDIキーボードからMIDIを取り込んでキーボードストロークを出力する方法があるかどうかを知りたいです。 私はMIDIに関して何も知りませんが、この信号をキーストロークに変換する方法についてのガイダンスが必要です。




実際にプログラムに関連するものではありませんが、 RSI管理方法に関するアドバイスを提供しています。

あなたの仕事は、頻繁にマイクロブレークを導入して一日を歩くタイマーがあります。 あなたがRSIを研究していれば、マイクロブレークについて聞いたことがあります。 再発の管理と予防には不可欠です。 無料のプログラムはWorkrave

QWERTYにブートを与え、 Dvorakを試してみてください。 ここにプログラマーのDvorakキーボードレイアウトがあります 。 ドヴォルザークは家庭の列に最も頻繁に使用される文字を持っていますが、QWERTYはそうではありません。 したがって、Dvorakを使用すると、手紙に「手を届かせる」必要がないことによって引き起こされる緊張が軽減されます。

あなたがまだそれを使用していない場合は、クローゼットから「自然な」キーボードを取り出してください。 非常に軽くタイプしてください。 キーストロークを登録するための最低限のことがあります。

コーヒーを1日に1〜2カップに制限してみてください。 過剰なカフェインはあなたが疲れていないようにし、RSIを忘れることを容易にします。

過度のアルコールは、あなたの体が自分自身を癒すために必要な睡眠を妨害します。 良い夜の休息は、RSIを長くするために重要です。

アクティブな独立したステッチングを使用してストレッチします。 良いルーチンは、 手首、手および指のストレッチルーチン - 能動隔離ストレッチングに記載されている

マウスを使って両手をする方法を学んでください。 マウスは両手で使用できるように設計されていて、クリックしやすいボタンがあることを確認してください。

メイン入力デバイスとしてペンタブレットを使用します。 ワコムは安価な錠剤を作る

がんばろう!




私は何年にもわたってMIDIプログラミングを行っていませんが、あなたの基本的な考え方はとても健全です。

MIDIは、ノートナンバー(0 = CはミドルCの下の5オクターブ、127は "0")を持つ "ノートオン"と "ノートオフ"の2つの "イベント"(または "メッセージ" Gは中間のCの上のGの上に半オレンジで5オクターブ上にある)。 これらのイベントは、ベロシティセンシティブ(「タッチセンシティブ」)で、0から127の間の(それを推測した)力で、キーボード上に「ベロシティ」ナンバーを持ちます。

ベロシティ、コーディング、ペダルの間では、ピアノのキーボードのための「タイピング」インターフェイスを思いつくことができると思います。 特に、コーディングは非常に強力なテクニックになる可能性があります。コメントで言及したように、ランク・アンド・ファイル・stenographersグラファーは、厳しいタイピング奏者でさえも、通常のタイプライタースタイルのキーボードを使用して任意の長さの時間が可能です。 マシン・ステノグラフィーの場合と同様に、コードの意味と和音のシーケンスの「辞書」が必要です。 (私は機械の狭窄のソフトウェア側で働いていたと言えますか?)

これを行うためには、基本的な部分は次のとおりです。

  • MIDI入力を受け取ります。 あなた自身でこれをやろうとせず、図書館を利用してください。 編集 :明らかに、JavaサウンドAPI 、MIDIコントローラからイベントを受信するなど、MIDIをサポートしています 。 クール。 このページは役に立つかもしれません。
  • そのデータを、あなたが送信したいキーストロークに変換します。
  • キーストロークをコンピュータに出力します。

ソフトウェアと最も広く互換性を持たせるには、これをキーボードデバイスドライバとして記述する必要があります。 これはオペレーティングシステムのプラグインで、キーボードイベントのソースとして使用され、基盤となるハードウェア(あなたのケースでは、ピアノのキーボード)と通信します。 WindowsとLinuxの場合は、おそらくCを使用したいと思うでしょう。

しかし、ちょうどキーストロークを生成しているので(私は何年も前にやろうとしていたものをインターセプトしようとしていません)、オペレーティングシステムが人工的なキーストロークを送信する機能を使用することができます。 Windowsはこれを行うためのインターフェースを持っています(おそらくいくつか、私が考えているのはSendInputが、同様のことをするいくつかの "ジャーナル"インターフェースがあることを知っています)、他のオペレーティングシステムも同様です。 それはあなたの目的には十分かもしれません。デバイスドライバのルートが厄介なので、Javaよりも別の言語を使用しなければならないので、それは私が始めるところです。 (私はJavaの大ファンだが、オペレーティング・システムがデバイス・ドライバーと話すために使用するインターフェースは、Cやそれに類するものによって消費される傾向がある)

アップデート :キーストロークの和音の「辞書」の詳細:

基本的に、この辞書は最長プレフィックスマッチングで検索するtrie (ありがとう、@Adam)です。 詳細:

機械の狭記では、このステノタイプのマシン上の複数のキーを同時に押してから、それらすべてを解放することによって、そのステノグラファーは書き込みます。 彼らはこれをキーボードの「ストローク」と呼びます。 それはピアノの和音のようなものです。 ストロークは頻繁に(常にではないが)、話し言葉の音節に対応する。 音節のように、時には1つのストローク(コード)がすべてそれ自身で意味を持ち、それ以外のときはそれに続くストロークと組み合わせた意味があります。 (「良い」と「良い」、続いて「さようなら」と考える) 彼らは彼らが学んだ学校の影響を大きく受けるだろうが、各中規模の技術者は、彼らが自分の仕事の中で何度も何を意味するのかを辞書に書いている。 ディクショナリには、中止部分(「steno」、略して)が1ストローク、または複数ストロークのエントリがあります。 しばしば、同じ開始ストロークを有するいくつかのエントリーが、それらの長さおよび後続のストロークによって区別される。 たとえば(ここでは実際のステレオは使用せず、プレースホルダだけを使用します)、次のエントリがあります。

A     = alpha
A/B   = alphabet
A/B/C = alphabetic
A/C   = air conditioning
B     = bee
B/C   = because
C     = sea
D     = dog
D/D   = Dee Dee

(これらの文字は音符ではなく、抽象的なマーカーであることを意味します)。

Aは複数のエントリを開始し、またCストロークをどのように翻訳するかは、以前にAB 、または新しく開始したかどうかによって異なります。

また、上の小さなサンプルには表示されていませんが、同じ単語やフレーズを再生する方法は複数あります。 ストノグラファーは、手の位置に応じて先行する単語から次の単語への流れを容易にするためにそれを行います。 そこには音楽との類似点があります。これを使用して、入力音をピアノ演奏に悪影響を及ぼさないようにし、RSIで実際に役立つ可能性を最大限に高めるために、演奏を楽しくすることができます。

stenoを標準テキストに翻訳するときは、「最長プレフィックス一致」検索を使用します。翻訳アルゴリズムは、最初に書き込まれたストロークから開始し、そのストロークで始まるエントリを検索します。 エントリーが1つしかなく、長さが1ストロングの場合、「使用するエントリー」と確実に言い、対応するテキストを出力し、次のストロークで新しく始めることができます。 しかし、そのストロークは様々な長さの複数のエントリを開始する可能性が高い。 そこで、次のストロークを見て、その2ストロークで始まるエントリがあるかどうかを確認します。 私たちが試合をするまで続きます。

したがって、上記の辞書では、このシーケンスを見てみましょう:

A C B B C A B C A B D

これを翻訳する方法は次のとおりです。

  1. Aは様々な長さの3つのエントリの開始点です。 次のストロークを見てください: C
  2. A/Cは1つのエントリと一致します。 「空調」を出力し、次のストロークで新しく始める: B
  3. Bは2つのエントリを開始する。 次のストロークを見てください: B
  4. B/Bは何も開始しません。 最長の前回の試合( B )を行い、それを出力する(「蜂」)
  5. B = "bee"を出力しても、バッファにはBストロークが残っています。 それは2つのエントリーを開始するので、次のストロークを見てください: C
  6. B/C 1つのエントリと一致します。 次のストロークで新しく開始します: A
  7. Aは3つのエントリを開始します。 次のストロークを見てください: B
  8. A/Bは2つのエントリを開始します。 次のストロークを見てください: C
  9. A/B/Cは1つのエントリにのみ一致します。 "アルファベット"を出力し、次のストロークで新しく開始する: A
  10. Aは3つのエントリを開始します。 次のストロークを見てください: B
  11. A/Bは2つのエントリを開始します。 次のストロークを見てください: D
  12. A/B/Dは何もマッチしませんので、最も長い前のマッチ( A/B )を取って「アルファベット」を出力してください。 それでバッファーにDまだ残っています。
  13. Dは2つのエントリーを開始するので、通常は次のストロークを見ますが、すべてのストロークを処理したので、それを孤立して考慮します。 孤立して、それは "犬"と解釈されて出力されます。

注意すべき上記の側面:

  • 読み込んだがまだ翻訳していないストロークのバッファがあります。
  • できるだけ多くのストロークを1つのエントリと照合したいと思っています。 A/Bはアルファベットではなく、アルファベットでなければなりません。
  • (上には示されていません)辞書には何もないので、翻訳できないストロークのシーケンスがあるかもしれません。 (Stenoの人々は名詞を "翻訳しません" - 例えば、私たちの辞書では、ストロークEは "非翻訳"になります。)
  • (上には示されていない)ステノのいくつかの理論は、より広い文脈に基づいて、同じストロークのセットが複数のものを意味することを可能にする。 ステノの人々はこれらの「葛藤」と呼んでいます。 あなたはおそらくあなたのプロジェクトでそれらを許可しないことを望んでいるでしょう。実際、ステノグラフによって手動で翻訳されたステノは、正しい選択肢がどこにあったのか分かりませんが、ステレオの矛盾のない理論は、結果として生じる翻訳されたテキストを通過し、矛盾を「修正する」ことを避けるために特に生じた。
  • リアルタイムで(あなたがやっている)翻訳するということは、部分的なマッチを受け取った場合、次のコードを待っている間にそれを保持することを意味します - しかしおそらくタイムアウトまでしかないでしょう。できるだけバッファ内にあるものを翻訳してください。 (あるいはタイムアウトしたくないかもしれません;それはあなたの呼び出しです。)
  • "前のストロークを無視する"というストロークを持つのが最も良いでしょう
  • "何も出力せずにバッファを完全にクリアする"と言うストロークを持つのが最良でしょう。



実際には、 ロックバンドのドラム入力をコンピュータに取り込もうとしていましたが(ちょっとジャズの手作りのドラムエミュレータを作っています)、私はここで質問しました。 時間遅れの問題 (そこにポーリングコードがあります私がしようとしていたものと一緒に)。 プログラムを見つけることができれば、コードを提供できます。サードパーティのAPI( JInput )を使用します。

いずれにせよ幸運。




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 Electrical 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 :)




これを解決するには、いくつかのことが必要です:

  1. キーボードからMIDIデータをキャプチャする方法。 インターフェース:MIDIインターフェース(クラシック)またはUSB MIDIインターフェース(現代)に応じて最も可能性の高いインターフェースは、ほとんどのオプションを提供するようにコンピューターにあります。 USBホストマイクロコントローラは、コンピュータを使用するだけでは簡単ではありません。

  2. MIDIデータをキーストロークに変換する方式。 一人のユーザーが指摘したように、鍵の数はピアノ鍵の数に依存しないため、和音が行く方法です。

  3. オペレーティングシステムにキーを注入する方法。 これには、低レベルのドライバが正確である必要があります。 私はWindows 7のアプリケーションにキーボードやマウスのデータを挿入するアプリケーションで遊んできました。これは薄れている可能性があり、アプリケーションが現在フォーカスしているかどうかによって異なります。 これはインターフェイスの最も難しい部分です。 シリアルインターフェースを備えたHID USBキーボードマイクロコントローラを作成することもできます。

シリアルインターフェイスは仮想シリアルポートを作成します。 MIDIデータを読み込んでキーストロークを生成するソフトウェアは、シリアルポートにシリアルメッセージを送信することができます。 マイクロコントローラはキーストロークを送信し、標準のキーボード入力のように見えます。 これにより、MIDIポートとUSB MIDIキーボードの両方のインターフェースが可能になります。

うーん、このタイプのインターフェイスでは、マウスをシミュレートし、マウスの軸とボタンのためにいくつかのピアノキー設定を使用することもできます。 圧力は、マウスポインタの速度を決定するために使用することができる。 だから、マウスを排除することもできます。 このアプローチのもう1つの利点は、接続した任意のタイプの入力デバイスが、仮想シリアルポートに接続してキーボードとマウスイベントを生成できることです。 そのため、ドラムペダルやジョイスティックなどの他のハードウェアを追加したい場合は、シリアルインターフェイスと通信するプログラムを調整する必要があります。

上記のもう1つはArduinoを使用するために上に掲載されたもののようですが、SparkfunのUSB Host ShieldもUSBベースの音楽キーボードを扱うことができます。 これにより、Arduinoをブートローダチップのキーボードまたはキーボードのマウスコンボとしてプログラムすることができ、デバイスがUSBベースの音楽キーボード用のUSBホストを操作できるようになります。 次に、あなたは両方のタイプのためにカバーされます。 しかし、私はまだ、仮想シリアルポート方式はより柔軟で、長期的にはプログラムするのが簡単だと考えています。 Arduinoデバイスは、デスクトッププログラムやサービスよりも変更するのが難しくなります。

もう一つの可能​​性があります。コード化された片手のキーボードがすでに存在します。 私はそれらのビデオを見たことがありますが、それらがあなたの手を傷つけるかどうかを判断する必要があります。




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)




ボームのMIDIトランスレータを試してみてください。

クロスプラットフォームで動作し、 MIDI入力をキーストックに簡単に変換し、セットアップと構成を迅速に行えます。また、個人的な使用のために無料です。

チュートリアルのクイックヒント:MIDIトランスレーション - MIDIからキーストロークまで 、簡単にセットアップする方法があります:

基本的には、コーディングやモディファイアキーなど、できることの無限の可能性があります。 ピアノを使ってDAWをコントロールするために私のライブオーディオリグに使用しています。




USB(またはps / 2?)キーボードをエミュレートするハードウェアで何かをすることを検討してください。 特定のOSまたは特定のOS APIに依存しなくなります。 ハードウェアソリューションは時間のテストに耐えられます。 他のすべてのユーザーがWindows 11を実行しているときに、Windows 7の古いAPIを使用して立ち往生しないでください! Arduinoはかなり簡単に学ぶことができます。

Arduinoには数多くの情報と助けがあります。 初心者のために作られたハードウェアハッキングプラットフォームです。 GoogleがArduinoを推進している今、それはもっと大きくなるだろう

編集:バーチャルUSBキーボードのsoftwarehardware




私は大学でピアノの演奏を学んだ後、インタラクションのデザイン、プログラミング、そしてVim使い方を学んだので、実際にこのような試作に多くの時間を費やしました。

Linuxで、マルチメディアアーティストのためのグラフィカルプログラミング言語「 Pure Data 」とAlex Andreの x11keyを使用すれば、この作業をかなり簡単に行うことができます。

Macでは、 MidiStrokeを使用できます。 Windows上のメソッドには、 MidiOxAutoHotKeyツールが関係してMidiOxAutoHotKeyます。 別の時に、 Max/MSP用のJavaプラグインを使用するバージョンがありました。 私はPatrice ColetがPure Data用に外部のウィンドウを作ったと思っていますが、もはやそれを見つけることはできません。 また、Windows上でこれを行うことができるMaxMSPための外部があります。 最後に、自由ではないが最高のOsculatorは、あなたが望むことを行うことができます - 機能ページを参照してください。

私はそれが働いたとき、私はレイアウトで工具を止めることができなかったので、私はそれに固執したことはありません。 ただ、私のモニターを私の電気キーボードにつけても涼しかったです! がんばろう。




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:

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 ...

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 trick 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.




GlovePIEと呼ばれるプログラムがあります。 あなたは簡単なスクリプト言語でプログラムすることができ、私はそれがMIDIに対応していると信じています。 これが "Java"カテゴリに当てはまるかどうかはわかりませんが、それでも素晴らしいプログラムです。 私はPS3コントローラを使ってロボットを制御するのに使ってきました。 それは非常に強力です。




あなたは、Teenysのマイクロコントローラを使ってかなり素早く自分のUSBキーボードをハックすることができます。

実際、彼らはUSBキーボード作る方法の例のコードを持っています

あなたはこの2つの方法にアプローチすることができます:

  1. 古いピアノを手に入れて十代の若者たちに直接繋げる

  2. 追加のロジックを追加してMIDIポートに接続し、必要なデコードを行います。




ケーシーは最高の答えを持っています。 私はそれにコメントを追加し、それをupvoted。 この種のソフトウェアは、デバイスドライバまたは組み込みシステムのいずれかに属します。 デバイスドライバははるかに複雑で、他のOSに移植することはできません。 参考までに、Linux上のWinmodemsの問題を参照してください。

組み込みシステムにコードを組み込むことで、USBポートを備えたMIDIデバイスやUSBキーボードを受け入れるすべてのコンピュータに移植可能になります。




多くのキーボードには、MIDI信号をコンピュータに送信するためのシリアルポート( RS-232 )コネクタがあります。 私はGirderというプログラムを使って、シリアルポート通信をキーボードストロークに変換します。

Girderには、各キーを対応するキーストロークに1つずつマップできる「マッピング」機能があります。

これはあなたが探している簡単な解決策かもしれません!




ちょうど狭窄を学ぶ!

皆さんの議論からは明らかです。 技術的な観点からホイールを再発明したくない。 しかし、いったん接続したら(この質問が何を求めているか)、働きながら、あなたはまだあなたの前で仕事の大部分を持っています。あなたの脳を鍛える必要があります。 あなたは、それを行う最も賢明で、最も効率的な方法を発明しなければなりません。これは、コンピュータ技術者の範疇から完全に外れた設計問題です。 あなたや私たちの誰かが不足するでしょう。

幸いにも、問題は解決され、成熟して何世紀にも亘って磨かれました...

細則を学ぶ!

はい、これはあなたにいくつかのジャックを戻します。 しかし、最終的にはそれほど好都合ではない結果が得られますが、あなた自身の時間価値は数百時間ありますか? さらに、 ウィキペディアの中毒に関する記事では、「ピアノのキーボードのように見えます。

ただし、もちろん、サイドウォーの効果を持たせたいのでない限り。 私は、この可能性は考えていないことを認めなければならないでしょう。誰かがピアノのキーボードからテキストを壊すのを見るの面白いでしょう!

あなたは、タッチパッド (またはポインティングスティックが人間工学的になるでしょうか?)を使用してUSBキーボードを起動することができます、それを翻訳するためにPloverを使用します(私はそれが非文字キーが、プログラミング)を実行するか、スレッドRe:Ploverのキーボードに従って、独自のUSB ステノグラフィキーボードを動かすか、または、 厳密なスタイルを購入してください

がんばろう!




MIDIについて

あなたは、あなたが「MIDIについて何も知らない」と述べました。 MIDI技術は、理解していればかなり単純ですが、最初は混乱する可能性があります。 MIDIの基礎を理解するのに大いに役立っているリソースの1つは、MIDI対話をプログラムしたい場合は確かに必要ですが、TechnophobeのためのMIDIと呼ばれる本です 。 これは簡単に読むことができ、とても役に立ちます。


純粋なデータ&最大

インタラクティブ・マルチメディアを開発している私の経験では、私が遭遇した2つの非常に似たプログラムがあり、どのデバイスからの信号/入力の接続やマッピングをも容易にしています。

Mac環境ではMax 、PC環境ではPure Dataです。 両方とも、オンラインドキュメンテーションとYouTubeチュートリアルがたくさんあります。 ビデオMax / MSPチュートリアル1 - コンピュータのキーボードをMIDIキーボードとして使用することで、コンピュータのキーボードをMIDIキーボードの入力にマッピングするプログラムがMaxで構築されていることが実証されています。 同じパターンを使用して信号/マッピングを逆にすることで、意図した結果を得ることができます。


AutoHotKey

AutoHotKeyはWindows用の無料のオープンソースユーティリティで、デバイス上のキーとボタンをマクロに再マップできます。 QWERTYキーボード、ジョイスティック、マウスマクロをネイティブにサポートしています。

しかし、私はあなたが探している特定のマッピングをサポートする実装を見つけることができました。 これらの2つのスレッドは、プロセスを説明します。

  1. AutoHotkeyのMIDI INサポート 、ユースケースの議論。 著者は、 MIDI IN入力を検出し、それをキー押下に変換するプログラムを探していました。

  2. MIDI入力ライブラリ 、著者の問題に対する解決策、実際にあなたの意図した結果を実装するAutoHotKeyへの投稿コード/パッチ。

基本的に、AutoHotKeyはこのユーザーのカスタムパッチと共に、MIDIキーボードからQWERTYキーボードの入力信号へのマッピングを作成するために必要なものを提供します。 マッピングをインストール、設定、定義するだけで済みます。


他に何か?

他の回答の中には、MIDIやMIDIプログラミングに関する情報をもっと広範囲に渡って提供しているものもありますが、探しているものとは思えない投稿状況があります。 可能であれば、より多くのお手伝いをしたいと思いますが、あなたが探している情報の種類についてより具体的であれば、より簡単になります。 たとえば、MIDIキーボードの入力信号をQWERTYキーボードの信号に変換する方法に興味があります 、または特定の問題の解決策見つけることができますか? まだ対処されていないものは何を探していますか?




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.




MAMEアーケードゲームを見てみましょう。 彼らは、任意の数の異なる項目からの入力を可能にするハードウェア装置を構築している。 例えば、 iPac 、入力デバイスからの信号をUSBに変換し、コンピュータがそのキーをエミュレートすることができます。 あなたは、入力を解釈するソフトウェアがすでに実行され十分にテストされているので、狂ったプログラミングロジックが不要で快適な方法で配置された入力デバイスの任意の組み合わせを使用できます。

私はフライトシミュレータのコックピット入力、カスタムキオスク、およびこの方法で構築された投票システムを見てきました.....そして価格は正しいです!




あなた自身が自分で構築する方法についてのアドバイスは少なく、必要なものを達成するために既にどのリソースがそこにあるのかを尋ねるような気がします。 お使いのOSによっては、独自のプログラムを最初から作成することなく、これを達成する方法はたくさんあります。

MIDIストローク

無料。 Mac OS X 10.3以上の場合 これには、「 MIDIキーボードをフルキーボードキーボードの代わりに使用する機能」が付属しています。

ボームのMIDIトランスレータ

無料/ポストカードウェア(ちょっと奇妙です)。 Windows 2000以降、およびMac OS Xの場合 当初、 AutoHotkeyタイプの使用に向いているようですが、それ以上見てみると、あなたがうまくいきたいことができると思います。

Maxとaka.keyboard

無料。 Mac OS Xの場合 「すぐに使える」ソリューションではありませんが、基本的なデバイス構成に慣れていれば、それほど悪くはありません。




あなたの痛みの症状は非常にうまく心身症である可能性があります

私は一度、コンピューターゲームをプレイして長い夜を過ごした後、何ヶ月も手首にRSIを持っていると思っていました。 理学療法は役に立たなかった。 RSI、手根管、背中の痛み、 IBSが心身の状態になることがあると説明した医師の記事を読んだ後、特にストレスを受けている人では、痛みは実質的に消えてしまいました。この記事では、自律的な血管収縮が痛みの直接的な原因であると述べているため)。 私は実際には当時の多くのストレスから苦しんでいました。




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'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:

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!




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. がんばろう!




Javaでは、JMF(Java Media framework)を使用してMIDI信号を変換できます。 キーボードの基本的な設計は使いやすい、つまりユーザーインターフェイスです。 頻繁に使用されるチャプタ/シンボルを便利な場所に配置します。

Java Sound Resources:サンプル:DSP(Digital Signal Processing)のサンプルコードとAPIは、 シグナルの処理方法を理解するのに役立ちます。

その他の参考資料:




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 Dvorak ). 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:)




.NETのDotNetでソースコードサンプルを使用してハードウェアにアクセスできます。

MIDIノートデータストリームを作成するためのソースコードとしての完全な作業サンプルは、 VB 5/6-Tipp 0521:MIDI-Tone erzeugen (Visual Basic 6.0、.NET版もあります)

キーボードストロークをシミュレートする方法はVB 5/6-Tipp 0155:Tastaturereignis simulieren (Visual Basic 6.0、.NETバージョンもあります)

そして、キーストロークを認識することはTipp-Upload:VB.NET 0266:Globaler KeyHookに記述されています。

次に、ピアノ・プレイヤーのための良い作業マトリックスを使用してください

ピアノやあなたがいいプレイヤーであれば、キーボードに10本の指を置くことができます。もしマトリックスが使えれば、私は思っているどんなコンピュータキーボードユーザーよりもずっと速くなります。 :-)

その場合、私があなたの質問を正しく理解すれば、それは大きな問題ではありません。




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 compiler, 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.