1

C++ プログラムから MIDI メッセージを送信して、General MIDI バンクからサウンドを再生するにはどうすればよいですか?

いろいろ調べてみたのですが、簡単な答えはないようで、CoreMIDI などの長いマニュアルを読んだ後、私の脳は溶け始めました。

私は単純な C++ ゲーム/シンセサイザー プロジェクトを持っています。たとえば、このボールが床に当たったときにグランド ピアノ バンクから C4 をトリガーしたいだけです。プログラムの大部分については問題ありませんが、統合された MIDI 部分については、これまでのところ完全に理解できませんでした。

CoreMIDI を使用したいのですが、それが最も単純なように思えますが、マルチプラットフォームがボーナスになるでしょう。

助けてくれてありがとう!

4

2 に答える 2

2

別のオプションはrtmidi です

シンプルでクロスプラットフォームであることを目指しています

リアルタイム オーディオ I/O には同様の rtaudio を使用しましたが、比較的使いやすかったです。

サンプル コードを使用してすべての MIDI デバイスを一覧表示し、GM バンクを選択して、プログラム チェンジ メッセージでピアノを選択した後、適切な MIDI メッセージ (ノート オン/オフ メッセージ) を送信できるはずです。ウィキペディアには、始めるのに役立つページがあります

于 2010-02-19T23:53:19.290 に答える
0

CoreMIDI を使用して同じ問題に遭遇した人を助けるかもしれないチュートリアルを書きました。MIDI ファイルを読み込んで、サウンド フォント ファイルの効果音を使用して AUGraph を介して出力する方法について説明します。また、仮想エンドポイントを使用して MIDI メッセージにリアルタイムでアクセスする方法についても説明します。ここに。

やりたいことを実行するには、私が提供するサンプル プロジェクトを次のように変更できます。

result = MusicDeviceMIDIEvent ([AUSampler], midiStatus, note, velocity, 0);

AUSampler は AUSampler へのポインタ、つまり AUGraph の開始点です。ファイルから読み取るのではなく、次のコマンドを使用して、再生する 1 つの MIDI ノートを送信できます。

于 2012-03-22T21:05:58.533 に答える