keyboard pc 鍵盤 - ピアノのキーボードをコンピュータのキーボードとして使用する



15 Answers

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

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

ベロシティ、コーディング、ペダルの間では、ピアノのキーボードのための「タイピング」インターフェイスを思いつくことができると思います。 特に、コーディングは非常に強力なテクニックになる可能性があります。コメントで言及したように、ランク・アンド・ファイル・stenographersグラファーは、 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は "非翻訳"になります。)
  • (上には示されていない)ステノのいくつかの理論は、より広い文脈に基づいて、同じストロークのセットが複数のものを意味することを可能にする。 ステノの人々はこれらの「葛藤」と呼んでいます。 あなたはおそらくあなたのプロジェクトでそれらを許可しないことを望んでいます。実際にはステノグラフによって手動で翻訳されたステノは、正しい選択肢がどこにあったのか分かりませんが、ステレオのコンフリクトのない理論は、結果として生じる翻訳されたテキストを通らず、矛盾を「修正」することを避けるために特に生じた。
  • リアルタイムで(あなたがやっている)翻訳するということは、部分的なマッチを受け取った場合、次のコードを待っている間にそれを保持することを意味します - しかしおそらくタイムアウトまでは、できるだけバッファ内にあるものを翻訳してください。 (あるいはタイムアウトしたくないかもしれません;それはあなたの呼び出しです。)
  • "前のストロークを無視する"というストロークを持つのが最も良いでしょう
  • "何も出力せずにバッファを完全にクリアする"と言うストロークを持つのが最良でしょう。
仮想鍵盤ソフト pcでピアノを弾く pcキーボード

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




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

MIDIストローク

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

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

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

Maxとaka.keyboard

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




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

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

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

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




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

実際、彼らはUSBキーボードの作り方のサンプルコードを持っています

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

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

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




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

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

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

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




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

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




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

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

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




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

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




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

  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デバイスは、デスクトッププログラムやサービスよりも変更するのが難しくなります。

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




.NET DirectSoundインターフェイスのようなものを使ってMIDIデバイスにフックするのはかなり簡単です。 ターゲットのMIDIデバイスを特定し、受信メッセージを受信するコードを取得する必要があります(Google経由でこれを行う方法に関する記事があります)。

MIDIとしてキーボードを使用しているため、基本的にはノートオンとノートオフの2つのMIDIメッセージだけを検出する必要があります。MIDIメッセージは、コマンド、音符、およびベロシティを指定する3つのデータバイトです。ノート・オフはノート・ナンバーだけです(時には「悪い」ミックス・スタックは、あなたも期待する必要のあるゼロ・ベロシティでノートを送信します)。

それらのメッセージを翻訳したら、キーボード出力は.NETからかなり単純になるはずです。

技術に関する他の回答には多くのアドバイスがあります。私はちょうどあなたに実際のMIDIメッセージのアイデアを伝えたいと思っていました。がんばろう!




プログラミングを自分でやりたいのではなく、ただ問題を解決したいのであれば、MIDI出力の代わりにQWERTYキーボード出力信号を送るために任意のキーを割り当てることができるUSB-MIDIキーボードを購入することができます例M-Audio Axiom Pro

この方法は、MIDIキーボードが標準のQWERTYキーボードであることを認識するため、標準のUSBキーボードをサポートする任意のOSやコンピュータで動作します。




コード化されたキーボードを見てください。彼らはあなたがそれらを使用する前にそれらのためのドライバを書く必要はありませんし、いくつかはピアノのキーボードのレイアウトに似ているという利点があります。




私はあなたの気持ちを正確に知っています。終日狂ったキーボードコーディングコマンドを実行すると、私の手が痛くなります。

ピアノは仕事をしないでしょう(あなたはDvorak手に入れたほうがいいです)。最善の解決策は精神的なテレパシーか、この瞬間の音声制御です。

私はArthro-Aid Directのクリームが良かったし、ワイルド・ブレンドもうまく機能していることがわかりました。

私が気付いたもう一つのことは、マウスが主に責任を負うことであり、ほとんどは非人間工学的であり、クリックするとRSICTS原因になります。これを克服するために、私は時折、たとえば、オートマウスクリッカーを使用するオートマウスクリッカー

私はあなたが絞るグリップのようなマウスの特許を知っている、私は購入したいです。

PS:あなたの手に関する医師を見る前にあなたの収入保険を取得してください!

週末にはプログラムしないでください:)




あなたがLinuxを使用している場合は、Footwareを利用してください。

それはまさにあなたが探しているものでなければなりません - 好みのキーマップにMIDIピッチを調整すれば...

私はこれが私以外の誰にとっても役立つとは決して考えなかった; o)




あなたの質問に対する回答は既にこのページにありますが、私はいくつかの追加入力をしたいと思います。

まず、私はピアノのキーボードを入力する代わりに、痛みを止めると確信していません。この点に関して、私はNuance Dragon - Naturally Speakingのようなものを見てみることをお勧めします。

第二に、これを先に進めることを主張すれば、おそらくNasebnbaar's(私はそれがもっと速くなるとは思わないが)とBrian's提案に行く必要があるだろう。これはおそらく、エンジニアに適切に連絡する必要がありますが、自分で行う必要がある場合は、電気工学の方針を尋ねる方がよいでしょう- Stack Echange。

第3に、MIDIファイルの仕組み、プログラムでの読み方、キーボードストロークをシミュレートする方法を理解したければ、幸いです。

最後に、もしもあなたが最終的に第2の選択肢に行くことを決めるならば、私はコピーも手に入れたいです:)




Related