web-dev-qa-db-ja.com

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

私は RSI の問題を抱えていて、30種類のコンピューターのキーボードを試してみましたが、どれも私を苦しめました。ピアノを弾いても痛みはありません。私は20年ほどピアノを弾いていますが、何の問題もありません。 MIDIキーボードからMIDIをキャプチャしてキーボードストロークを出力する方法があるかどうかを知りたいです。 MIDIについては何も知りませんが、この信号をキーストロークに変換する方法に関するガイダンスが欲しいのですが。

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

そして他の部分では、キーボードのMIDIノートをキーなどに変換するために、AutoItX、ActiveX/COM、DLLインタフェースをautoItに変換します。情報とダウンロード、 http://www.autoitscript.com/site/autoit/ にアクセスしてください。

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

16
eln

私は何年もMIDIプログラミングをしたことがありませんが、あなたの基本的な考え方は非常に健全です(駄目ではありません)。

MIDIは "イベント"(または "メッセージ")のストリームです。最も基本的な2つは "ノートオン"と "ノートオフ"で、これらにはノート番号(0 = Cから中央Cの5オクターブ下、127 =まで)が付いています。半音で、中央のCの上のGの上にG 5オクターブ。これらのイベントは、キーボード上ではベロシティセンシティブ(「タッチセンシティブ」)で、0から127の間の(あなたが推測した)力を持つ「ベロシティ」番号を持っています。

ベロシティ、コード化、そしてペダルの間で、私はあなたがピアノキーボードのためにかなり良い「タイプする」インターフェースを思い付くことができたと思います。特にコード化は非常に強力なテクニックかもしれません - 私がコメントで述べたように、それはランク付けファイルの速記者が保持するために stenotype machine を使うことができる理由ですトップフライトのタイピストでさえも、通常のタイプライタースタイルのキーボードでは何の時間もできないであろうときに、何時間も続けて話をする人々と交流してください。機械速記と同様に、コードの意味とコードのシーケンスの「辞書」が必要です。 (私はかつては機械速記術のソフトウェア面で働いていたと言うことができますか?)

これを行うための基本的な要素は次のとおりです。

  • MIDI入力を受信して​​います。自分でやろうとしないでください、ライブラリを使ってください。 編集:どうやら、Java Sound API はMIDIからイベントを受け取ることを含めてMIDI をサポートしているようです。コントローラ。クール。 このページ も役に立つかもしれません。
  • そのデータを送信したいキーストロークに変換します。上記の辞書を介して。
  • キーストロークをコンピュータに出力します。

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

しかし、あなたがたはgenerationキーストローク(私は何年も前にやろうとしていたのですが、それらを傍受しようとしていません)システムは人工的なキーストロークを送信するために持っています。 Windowsにはそれを行うためのインターフェースがあります(おそらくいくつか、私が考えているものは SendInput ですが、何かを行う「ジャーナル」インターフェースがあることを私は知っています他のオペレーティングシステムでも同じように動作します。それはあなたの目的には十分かもしれません - それは私が始めるところです、なぜならデバイスドライバのルートはぎこちなくなるでしょうし、あなたはおそらくJavaとは異なる言語を使わなければならないでしょうから。 (私はJavaの大ファンですが、オペレーティングシステムがデバイスドライバと通信するために使用するインタフェースは、Cなどを介してより簡単に利用される傾向があります。)


更新:キーストロークに対する和音の「辞書」についてもっと詳しく:

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

機械の速記術では、速記者は、型タイプの機械の複数のキーを同時に押してからそれらをすべて解放することによって書き込みます。彼らはこれをキーボードの「ストローク」と呼びます。ピアノで和音を弾くようなものです。ストロークは頻繁に(しかし必ずしもそうとは限らないが)話し言葉の音節に対応する。音節のように、1つのストローク(和音)がすべて独自の意味を持つ場合もあれば、後続のストロークと組み合わされた意味しかない場合もあります。 ( "良い"対 "良い"に続いて "バイ"と考えてください)。彼らは彼らが勉強した学校に大きく影響されるでしょうが、それぞれの速記者は彼らが何を意味するのに使うかの彼ら自身の「辞書」を持ちます。辞書には、速記部分(「steno」、略して)が1ストローク、または複数ストロークの項目があります。多くの場合、同じ開始ストロークでそれらの長さと後続のストロークによって区別されるいくつかのエントリがあります。例えば(そして私はここでは本当のstenoを使わない、ただプレースホルダーを使う)、これらのエントリーがあるかもしれない:

A =アルファ
 A/B =アルファベット
 A/B/C =アルファベット
 A/C =エアコン
 B =蜂
 B/C =という理由で
 C =海
 D =犬
 D/D =ディーディー

(これらの文字は音符ではなく、単なる抽象的なマーカーです。)

Aは複数のエントリを開始することに注意してください。また、Cストロークをどのように変換するかは、以前にABを見たことがあるか、新しく始めたかによって異なります。

また、(上記の非常に小さなサンプルには示されていませんが)同じWordやフレーズを「再生する」には、1つだけではなく複数の方法があります。速記者は、手の位置によっては、前の言葉から次の言葉への流れを簡単にするためにそうしています。そこには音楽との明らかな類似性があります。それが、ピアノの演奏に悪影響を与えないようにするためと、実際に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)を取り、それを出力する( "bee")
  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つのエントリにのみ一致します。 "alphabetic"を出力し、次のストロークで新たに始めます。A
  10. Aは3つのエントリを開始します。次のストロークを見てください:B
  11. A/Bは2つのエントリを開始します。次のストロークを見てください:D
  12. A/B/Dは何にも一致しないので、最も長い前の一致(A/B)を取り、それを使用して "alphabet"を出力します。それで、まだバッファにDが残っています。
  13. Dは2つのエントリを開始するので、通常次のストロークを見ます - しかし、すべてのストロークを処理したので、個別に検討します。単独では、それは "犬"として翻訳されるのでそれを出力します。

注意すべき上記の側面:

  • あなたはあなたが読んだがまだ翻訳していないストロークのバッファを持っています。
  • あなたは常にあなたができる単一のエントリに対して最も多くのストロークを一致させたいです。 A/Bは、 "alpha"や "bee"ではなく、 "alphabet"として翻訳されるべきです。
  • (上記には表示されていません)あなたは翻訳できないストロークのシーケンスを持っているかもしれません。それらは辞書の何にもマッチしないからです。 (Stenoの人達は名詞「未翻訳」を使用しています - 例えば、私たちの辞書では、Eは「未翻訳」となります。)
  • (上記には表示されていません)stenoの理論の中には、より広い文脈に基づいて、同じストロークのセットが複数のことを意味することを可能にするものがあります。 Stenoの人々はこれらを「衝突」と呼んでいます。おそらくあなたのプロジェクトでそれらを許可したくないでしょう、そしてstenoがstenographerによって手動で翻訳されていたとき、彼らが文のどこで正しい選択であるかを知っていたので衝突は問題ありませんでした。機械翻訳については、ステノの矛盾のない理論が、結果として生じる翻訳されたテキストをたどって矛盾を「修正」する必要性を回避するために特に発生しました。
  • (あなたがしていることになっている)リアルタイムで翻訳することは、もしあなたが部分的なマッチを受け取ったら、次のコードを待っている間それを保持したいということを意味します。できる限りバッファにあるものを翻訳してください。 (または、あなたはタイムアウトが欲しくない、それはあなたの電話です。)
  • 「前のストロークを無視する」と書かれたストロークを使用するのが最も良いでしょう。
  • 「何も出力せずにバッファを完全にクリアする」と書かれたストロークを使用するのが最も良いでしょう。
430
T.J. Crowder

USB(またはps/2?)キーボードをエミュレートするハードウェアで何かをすることを検討してください。あなたはもはや特定のOSや特定のOS APIに依存することはありません。ハードウェアソリューションは時の試練に耐えるでしょう。他の人がWindows 11を実行しているときに、Windows 7で古いAPIを使用して動けなくなってはいけません。 Arduino は習得が非常に簡単です。

Arduinoのためにたくさんの情報と手助けがあります。これは初心者向けに構築されたハードウェアハッキングプラットフォームです。 グーグルがArduinoを推し進めているのは、今や大きくなるでしょう。

編集:仮想USBキーボード ソフトウェアハードウェア

184
Brian O'Dell

自分でこれを作る方法についてのアドバイスや、欲しいものを達成するためにすでにどのリソースが存在しているかを尋ねることについて、あなたはあまり探していないようです。あなたのOSに依存して、最初からあなた自身のプログラムを書く必要なしにこれを達成する多くの方法があります:

MIDIストローク

無料です。 Mac OS X 10.3以降の場合。これは具体的には「本格的なコンピュータキーボードの代替品として、任意の MIDI キーボードを使用する機能」が付属しています。

BomeのMIDI翻訳者

フリー/ポストカードウェア(ちょっと変です) Windows 2000以降、およびMac OS Xの場合。最初は AutoHotkey タイプの使用に向けて調整されているように見えますが、さらに見ていくとあなたが望むことをうまくやれると思います。

Maxとaka.keyboard

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

111
kathryn

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

MIDI notesデータストリームを作成するためのソースコードとしての完全なワーキングサンプルはVB 5/6-Tipp 0521にあります。MIDI -Tone erzeugen(Visual Basic 6.0、どこかで.NETバージョンもあります)

キーボードストロークをシミュレートする方法はVB 5/6-Tipp 0155:Tastaturereignisse simulierenにあります(Visual Basic 6.0、どこかで.NET版もあります)

キーストロークの認識についてはTipp-Upload:VB.NET 0266:Globaler KeyHookに説明があります。

Enter image description here

それなら、ピアノ奏者のために良いワーキングマトリックスを使うだけです。 Timo Boehme www.goldengel.ch

ピアノで、そしてあなたが良いプレーヤーであるとき、あなたはキーボードの上に10本の指を持つことができます、そしてマトリックスが使用可能であるならあなたははるかに速くあなたが思うどんなコンピュータキーボードユーザーでもありえます。 :-)

その場合、私があなたの質問を正しく理解していれば、それは大きなことではないはずです。

49
Nasenbaer

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

Linuxでは、マルチメディアアーティスト向けのグラフィカルプログラミング言語「 Pure Data 」と外部のx11key を使用することで、この作業をかなり簡単に行えます。アンドレ

Macでは、 MidiStroke を使用できます。私は、Windows上のメソッドが MidiOxAutoHotKey ツールを含んでいたと思います。別の時に、私は Max/MSP のためにJavaプラグインを使うバージョンを持っていました。私は Patrice Colet がPure Data用の外部ウィンドウを同様に機能させたと信じていますが、私はもうそれを見つけることができないようです。また、 MaxMSP の外部にWindowsでこれを実行できるものがあります。最後に、フリーではないが素晴らしい Osculator はあなたが望むことをすることができます - 機能のページを見てください。

私はそれがうまくいったとき、私はそれで立ち往生することはありませんでした、私はレイアウトでツーリングを止めることができなかったので。私のモニターをエレキキーボードで操作しているだけでかっこよかったです。がんばろう。

41
P. Myer Nore

MIDIについて

あなたは「MIDIについて何も知らない」と述べました。 MIDIテクノロジーは、一度理解すれば簡単ですが、最初は混乱する可能性があります。 MIDIの基礎(MIDIの相互作用をプログラムする場合に必ず必要)の理解に非常に役立ったリソースの1つは、 MIDI for the Technophobe 。これは読みやすい本であり、非常に役立ちます。


純粋なデータと最大

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

これらは、Mac環境では Max 、PC環境では Pure Data です。両方ともオンラインドキュメントとYouTubeチュートリアルが豊富にあります。ビデオMax/MSPチュートリアル1-コンピューターのキーボードをmidikeyboard(abletonスタイル)として使用は、コンピューターのキーボードをMIDIキーボードの入力(基本的に、あなたがやろうとしていることの正反対です)。同じパターンを使用することで目的の結果を得ることができますが、シグナル/マッピングを逆にします。


AutoHotKey

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

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

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

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

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


他に何か?

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

37
smartcaveman

Teenysマイクロコントローラを使えば、あなた自身のUSBキーボードをすぐにハックすることができます。

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

これには2つの方法があります。

  1. 古いピアノを手に入れて、10代の若者に直接スイッチをつなぐ

  2. MIDIポートに接続するための追加のロジックと必要なデコードを追加します。

27
cmcginty

実際、私はしばらく前にこの作業を行いました。 Rock Band のドラム入力を自分のコンピュータに取り込もうとしました(ちょっとJavaの自家製ドラムエミュレータを作成します)それについてここで質問しました、時間遅延問題(そこにポーリングコードがあります私がやろうとしていたことで)。そして私が私のプログラムを見つけることができれば私はあなたにコードを与えることができる、それはサードパーティのAPI( JInput )を使う。

どちらかの方法で頑張ってください。

24
Brendan

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

クロスプラットフォームで動作し、任意の MIDI 入力を簡単に、簡単にセットアップおよび設定でき、さらに個人用には無料です。

チュートリアルがあります、クイックヒント:MIDI翻訳 - MIDIからキーストロークへ、簡単に設定する方法

基本的に、あなたができることには無限の可能性があります、コードと修飾キーを含みます。私は私のピアノを使用して私の DAW を制御するために私のライブオーディオリグのためにそれを使用し、問題を抱えたことは一度もありません。

23
stepheninohio

Javaでは、JMF(Java Media framework)を使用してMIDIシグナルを変換できます。キーボードデザインの基本は使いやすい、つまりユーザーインターフェイスです。頻繁に使用する文字/記号を便利な場所に置きます。

サンプルコードとJava Sound Resources:サンプル:Digital Signal Processing(DSP)のヘルプ信号を処理する方法を理解しています。

さらにいくつかの参照:

18
Kamahire

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

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

15
Michael Dillon

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

15
Fox Wilson

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

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

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

15
Scott Rippey

速記術を学ぶだけ!

あなたの側のすべての議論から明らかです。技術的な観点からは、車輪を作り直す必要はありません。しかし、いったんつながって(この質問が何を求めているのか)、そしてうまく働いても、あなたはまだあなたの前に仕事の大部分を持っています:あなたはあなたの脳を訓練しなければなりません。あなたは また これを行うための最も賢い、最も効率的な方法を考案しなければなりません - 設計技術の問題は完全にコンピュータ技術の問題からです。あなたや私たちの誰かが足りないでしょう。

幸いなことに、この問題は何世紀にもわたって成熟してきましたが、解決され磨かれてきました...

速記を学ぶ!

はい、これでジャックが戻ってきます。しかし、結局のところ、それほど有利ではない結果となる、あなた自身の時間の何百時間もの価値はありますか?そのうえ、 速記Wikipediaの記事 は、「ピアノキーボードのように見えます」と言っています。

もちろん、サイドショー効果を出したくないのであれば。私は認めざるを得ないでしょう、私はこの可能性について決して考えませんでした、それが誰かがピアノのキーボードからテキストを破裂させるのを見るのは 本当に 面白いでしょう!

タッチパッド付きの USBキーボード から始めることもできます(または ポインティングスティック はもっと人間工学的に使いますか?)、 Plover を使用します。それを翻訳するために(私はそれがプログラミングにとって重要であるので非文字キーがそれらの機能性を保持するように構成することができると確信している)、またはスレッドに従うRe:Plover keyboardあなた自身のUSB速記キーボードを転がすために、または stenotype を購入する。

がんばろう!

12
FastAl

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

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

11
bpeterson76

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

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

ブートをQWERTYして、 Dvorak を試してください。これが プログラマーのDvorakキーボードレイアウトです 。 Dvorakはホーム行で最もよく使われる文字を持っていますが、QWERTYは持っていません。そのため、Dvorakを使用すると、文字が届かなくても済むことで生じる負担を軽減できます。

まだ使用していない場合は、クローゼットからその「自然な」キーボードをつかみます。非常に軽く入力してください。キーストロークを登録するための最低限のことはするでしょう。

コーヒーを1日1〜2杯に制限してみてください。過度のカフェインはあなたが疲れを感じさせないようにし、あなたがRSIを持っているのを忘れやすくするでしょう。

過剰なアルコールはあなたの体がそれ自身を直すことを可能にするのに必要とされる睡眠を混乱させます。おやすみなさいの休息はRSIを調教するために重要です。

アクティブ孤立ステッチを使用したスト​​レッチ良いルーチンは手首、手と指のストレッチルーチン - アクティブな孤立したストレッチで説明されています。

マウスを使って両親媒性を保つ方法を学びます。マウスが両手で使用できるように設計されていて、クリックしやすいボタンが付いていることを確認してください。

メインの入力デバイスとしてペンタブレットを使用してください。 Wacomはまともな安価なタブレットを作ります

がんばろう!

10
shaunsantacruz

これを解決するには、いくつか必要なことがあります。

  1. キーボードからMIDIデータをキャプチャする方法。インタフェースに応じて、MIDI interface(classic)または USB MIDI interface(modern)最も可能性の高いインタフェースは、コンピュータに対するものです。 USBホストマイクロコントローラは、単にコンピュータを使うほど単純ではありません。

  2. MIDIデータをキーストロークに変換するためのスキーム。あるユーザーが指摘したように、コードの数はピアノのキーの数に左右されないので、和音を使う方法があります。

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

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

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

上の別の見方はArduinoを使うために上で投稿されたもののようなものですが、またUSBベースの音楽キーボードを扱うためにSparkfunからの USBホストシールド を含みます。これはArduinoがブートローダチップ内のキーボードまたはキーボードマウスコンボとしてプログラムされることを可能にし、デバイスが USB のホストとして動作することを可能にしますUSBベースの音楽キーボード。それから、あなたは両方のタイプのためにカバーされます。とはいえ、仮想シリアルポート方式のほうがより柔軟で、長期的にはプログラミングが容易であると私は思います。 Arduinoのデバイスはデスクトップのプログラムやサービスよりも変更が難しいでしょう。

もう一つの可能​​性があります:コーデッド片手キーボードがすでに存在しています。私はそれらの上でビデオを見ました、しかし、あなたはそれらがあなたの手を傷つけるかどうか決定しなければならないでしょう。

10
Demolishun

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

私はかつて、長い夜のコンピュータゲームをプレイした後、何ヶ月も手首に RSI があると思いました。理学療法は助けにはならなかった。私が医師によって書かれた記事を読んだ後、RSI、手根管、腰痛、 IBS は、特に心理的なものになることが多いと説明しています。ストレス下で、痛みは事実上消えました(自律血管の狭窄が痛みの直接的な原因であると記事が述べていたので、それは私の手首のリラックスと血の流れを視覚化するのを助けました)。私は実際に当時多くのストレスに苦しんでいました。

8
ta23232

外部のMIDIを再生することで、どのオペレーティングシステムや DAW programを使用するかにかかわらず、より良い結果を得ることができます。サウンドカードを介してコントローラとしてのキーボード。それをあなたのGBソフトウェア(あるいは何でも)にルーティングすれば、リアルタイムでそれらがあなたに供給した多くのサウンドをトーンが生成します。

あなたのサウンドカードがMIDI I/O(ins/outs/thrus)をサポートしていないなら、それは問題ではありません。あなたは外部のMIDIテーブルトップコンバーターの研究と投資を検討することができます。多くのものはMIDI outをUSB 2.0にさらに変換する機能を備えています(既存のサウンドカードを完全にバイパスすることによって)。

たとえば、コンピュータのキーボードと鉛筆ツールを使用してZとXのキーを変更することで、「人間のような」グレースノートの結果を得るのは非常に困難です。その代わりに、あなた自身の指がそれ自身の物理的なオクターブレジスタ範囲からMIDIキーボードでただそれを演奏することができるとき - すぐに!

私は予算上の制約があることを実感しています。しかし、Radio Shackで100.00米ドル以下(*以下)で販売されているこれら一見安い "Casio"タイプ5オクターブキーボードのいくつかはあなたが必要とするすべてです(さらに、それらの内蔵サウンドパッチとシーケンサーモジュールのサウンドとハンドル他のことにも驚くほどよく合います)。

RadioShack MIDIキーボードオプション

既存のサウンドカード用の外部MIDIコンバーターに関しては、私は いくつかのGoogle検索 をあなたのために特に念頭に置いてMacプラットフォームで実行します:

この外部MIDI変換情報の多くは、最初は厄介かもしれませんので、検討事項と予算の観点から、「ユーザーフレンドリー」として詳細に説明しています。

DAW を使用する場合は、 VST のように仮想キーボードを使用しても問題ありません。彼らは彼らの場所を持っています。

しかし、あなたは熟練したキーボード奏者のように聞こえます。それで、私が今あなた自身のために言及した外部のMIDI変換/キーボードオプションを考えてみませんか?

幸運を祈ります。これがあなたに役立つ可能性のあるアイデアをお届けしてくれることを願っています!

.NET DirectSoundインタフェースのようなものを使用してMIDIデバイスに接続するのは、かなり簡単なはずです。ターゲットのMIDIデバイスを識別してから、着信メッセージをリッスンするコードを取得する必要があります(これをGoogle経由で行うことに関する記事があります)。

キーボードとしてMIDIを使用しているので、検出する必要があるのは基本的に2つのMIDIメッセージのみです。つまり、ノートオンとノートオフです。 MIDIメッセージは、コマンド、ノート、ベロシティを指定する3データバイトです。ノートオフは単なるノート番号です(時には 'bad' MIDI stackがゼロベロシティでノートを送ります。

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

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

7
Simon Inns

単純な AutoIt スクリプトを使用してMIDIイベントを読み取ることができます。MIDI入力を参照してください。

MIDI UDFおよび キー操作をシミュレート も必要です。

MIDIイベントの読み取りは簡単なはずですが、MIDIコントローラ(機器)ごとに機能が異なります。あなたのMIDIピアノが最初に何をすることができるかを調べてみて、それからこれらの機能をシミュレートされた QWERTY - キーボードプレスにどのようにマッピングできるかを見てください。

必要に応じて、画面上またはトレイに何かを表示して、自分が何をしているのかを確認できます(つまり、 Shift、 Ctrl そして Alt シミュレーション)。

6
Martijn

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

MIDIキーボードは自分自身を標準のQWERTYキーボードとして識別するため、このメソッドは標準のUSBキーボードをサポートするすべてのOSおよびコンピュータで機能します。

6
Martin Odhelius

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

5
Perkins

Javaでのコーディングを知っていれば、この方法を使用することができます。

最初に、 'Note on'イベントをあなたが望むようなキーストロークにマッピングしているsend(..)メソッドでjavax.sound.midi.Receiverを実装します。

MidiMessageのコンテンツをgetMessageメソッドで取得し、それを自分のやり方で解釈する必要があります。メッセージバイトの意味は、MIDIメッセージにあります。

特定のキーボードのキーに対して 'note on'または 'note off'を受け取った後、それをKeyEventクラスの定数に割り当てることでそれを好きなキーにマッピングできます。 。このキーコードは、Java.awt.RobotのkeyPressおよびkeyReleaseメソッドで実際にキーストロークをOSに、したがって他のアプリケーションに送信するために使用できます。

5
dronus

私はBrian O'Dellの答えに同意します - これが私のプロジェクトであれば、私はハードウェアでそれをやるでしょう。プラットフォームとハードウェアに依存しないという利点があります - あなたの箱は、MIDI-USBインターフェースとPC APIの必要性を置き換えます。

mbed は非常に簡単に習得でき、Arduino IMHO(オンラインコンパイラ、512 KBフラッシュ、96 MHz、 C++言語)それは USBキーボードインターフェースUSB Midiインターフェース を事前に作成しています。あなたのために。

コミュニティはとても親切で手助けをする気があり、MIDIとUSB隠しエミュレーションの両方を使用している多くの既存のプロジェクトがあります - "mbed MIDI"または類似のYoutubeを検索してください。

4
Alex L

Linuxをお使いの場合は、Footwareをご覧ください。

MIDIピッチを好みのキーマッピングに調整すれば、それはまさにあなたが探しているものであるはずです。

私はこれが私以外の誰にとっても役に立つとは思わなかった; o)

4
FlashKorten

速くタイプするには、左手に子音を、右手に母音を(またはその逆に)「弾く」ことをお勧めします。次のように組み合わせることができるので、すべての子音にキーは必要ありません。

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

2つのクローズキーを省くことができます(のように) c# + d、これは簡単にはプレイできません。あなたも黒い鍵を省くことができます。

母音の場合は簡単です。

あなたは

c d e f g a

ただし、複数のキーストロークを使用することも検討してください。 c# = aa、 d# = eeなど.

子音についても同じことができます(st、spなどのキーの組み合わせ)。

子音と母音を同時に演奏したり、交互にまたは優先して結び付けることができます(子音、次に母音など)。

あなたはおそらく再びタイプすることを学ぶ必要があるでしょう、しかし私はあなたが普通のタイピングする人ができるよりはるかに速くすることができると確信しています。

数字と特殊文字には別のオクターブを使い、シフトにはスイッチを使い、スペースには簡単に組み合わせたキーの組み合わせを使います(左右2つのcを持つように、(a)文字を意味しないことを確認します) ))。

0-127の値を持つことができるペダルの使用についても考えてください。あなたはそれをシフトやスペースとしても使うことができます...あるいはバックスペース/エンター。

私はこれがあなたのプロジェクトにいくつかの新しいアイデアと幸運を与えることを願っています。

4
Michel Keijzers

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

ピアノはその仕事をしないでしょう( Dorvakキーボード を手に入れたほうがいいです)。最善の解決策は、精神的なテレパシーまたは現時点では音声制御です。

私はArthro-Aid Directクリームが良くて、Wild Blendでも問題ないと思います。

私が気づいた他のことはマウスも主に非難することである、ほとんどが非人間工学的でクリックしているのでそんなに多くの原因 RSI そして CTS 。これを克服するために、私は時折自動マウスクリッカー、例えば 自動マウスクリッカー を使います。

私はマウスの特許をあなたが握っているグリップとして持っていることを知っています、私は買うことに熱心です。

シモンズ:あなたがあなたの手について医者に会う前にあなたの所得保護保険に加入してください!

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

4
Jeremy Thompson

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

第一に、私はピアノのキーボードでタイプすることで痛みが止まるとは思わない。この点に関して、私はあなたがあなたのタイピングのために Nuance Dragon - 自然に話す のような何かを調べることをお勧めします。

第二に、あなたがこれを先に進めることを主張するなら、あなたはおそらく Nasebnbaar's (私はそれがもっと速くなるとは思わないが)と Brian's の提案に従う必要があるでしょう。おそらくこれはエンジニアに連絡してきちんとやるべきことですが、自分でやらなければならない場合は、 Electrical Engineering - Stack Echange。 の指示を求めることをお勧めします。

第3に、単に _ MIDIファイルの機能プログラムによる読み取り 、および キーボードストロークのシミュレート方法 を理解するだけの場合、そして頑張ってください;)

最後に、あなたが最終的に2番目のオプションを使用することにした場合も、私はコピーを取得したいと思います:)

3
Chibueze Opata

Arduino のように、マイクロコントローラベースのシステムを使ってみてください。

2
user1327203

たくさんの答えがあります、私はちょっとしたアイデアがあります。どのMIDI-to-keyboardプログラムがそれをサポートしているかどうかはわかりませんが、MIDIではsustainおよびを使用できます。/expressionpedal。

実際には、私はエクスプレッションペダルを見たことがない。期間。

しかし、すべてのMIDIキーボードにはサスティン入力スロットがあります。サステインペダルは単なるスイッチです。お金をかけたくない場合は、タトゥー(!)ペダルを使用できますが、注意してください。一部の中国のタトゥーペダルでは音質が良くありません。購入する前に試してみてください。驚いたことに、 "電子機器"は同じです:オン/オフスイッチに接続された(大きな)モノラルジャック。あなたが「快適な」スイッチ、ジャックオスプラグといくつかのワイヤーを持っているならば、あなたもあなた自身のものを作ることができます。

シフトとして使うことをお勧めします。 Commodore 16 では、ジョイスティック-2の発射ボタンはshiftと同等で、私は数日間それを使っていました。唯一の問題は、私の喜びがそれにとって不快であることでした。あなたがピアノ奏者であれば、おなじみでしょう。

1
ern0

これはそれほど難しいことではありません。

私はあなたが Windows にいると思っていますが、それについてはよくわかりません。私は MIDI sequencer、 http://pianocheetah.com 、を普通の C++で書いた。 、ピアノキーボードを使ってコマンドを実行できます。キーボード入力ストリームにキーをプッシュするのと同じことができない理由はありません。

しかし今来なさい。そもそもキーボードを最初から覚えるのにどれぐらいの時間がかかったか覚えているでしょう?あなたは再びそれを通過しても構わないと思っていますか?そして、あなたはあなたの祝福されたキーボードを、それをくまなく見ている愚かな外観の鍵のシンボルで汚染しても構わないと思いますか?

少なくとも26個の英字、10個の数字、11個の句読点、および少なくとも12個のファンクションキーとそれらのシフトされた状態を使用する必要があります。 60キーとシフト状態です。これで5オクターブの鍵が燃え尽きます。あなたはピアノを弾くことになるでしょう "ホップ" =すべて=時間。タイピングに触れるためにさよならを言いなさい。

あなたは RSI からあなた自身を救うかもしれませんが、あなたはあなた自身のために別のタイプの悪夢を作成しました。

そして、上司に職場でMIDIキーボードを購入させてください。

あなたが本当にピアノを弾くことを学んだならば、あなたはストレスフリーで弾く方法を学びました。それを QWERTY キーボードで行います。緊張はありません。ゆっくり始めてください。

1
Stephen Hazel