C# MCIでMIDIコマンドを直接送信したい
1
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-07-16 09:00
質問1
C#からMCIでMIDIコマンドをMIDIファイルを経由せず直接送信する方法を教えてください。 質問2(.NETについての質問で無くて恐縮ですが) MIDIコマンドについて解説されている書籍、サイト等を教えてください。 質問の背景 C#からMCIでMIDIファイルを再生する方法が分かりました。(下記参照) しかし、この方法では再生する音楽を一旦ファイルに保存する必要があります。 MIDIファイルを介在せずメモリ上から直接送信する方法を教えてください。 また、MIDIコマンドについての知識が不十分なので、解説サイトや書籍を ご紹介いただけたらありがたいです。 // MIDIファイルを再生する [DllImport("winmm.dll", CharSet = CharSet.Auto)] private static extern int mciSendString(string text, StringBuilder buff, int buffSize, IntPtr wndCallback); ... private void button1_Click(object sender, EventArgs e) { string file = "C:\\sample.mid"; string alias = "dummy"; string text = String.Format("open \"{0}\" alias {1}", file, alias); if (mciSendString(text, null, 0, IntPtr.Zero) != 0) return; text = String.Format("play {0}", alias); mciSendString(text, null, 0, IntPtr.Zero); } | ||||||||||||
|
投稿日時: 2007-07-16 11:13
1次情報(Microsoftの大元の情報)では確認できていないのですが、 http://www13.plala.or.jp/kymats/study/MULTIMEDIA/mciCommand_play.html このサイトの情報によれば、ファイル以外からは演奏できないようです。
http://hp.vector.co.jp/authors/VA022217/tips/api/mci.html http://www13.plala.or.jp/kymats/study/MULTIMEDIA/mciCommand_play.html など、その他「MCIコマンド」で検索すると大量に情報がありますが、 どういった内容を必要とされているのでしょうか?
前提がよくわからないのですが、元々midiファイルはないのですか? どういう形式で情報を持っているのでしょうか? #それとも1度だけファイルを読み込んでおいて、 #後はキャッシュしておきたいということですかね。 ファイルに存在するのではなく、例えば、画面上にキーボードを表示して、 そこで押された音階を鳴らすとかそういうのが目的なら、 mci系のAPIではなくmidiOut系のAPIではどうでしょうか? http://www.codeproject.com/cs/media/MIDIToolkit.asp?df=100&forumid=34097&exp=0&select=2118481 | ||||||||||||
|
投稿日時: 2007-07-16 23:00
ご回答ありがとうございます。
直接MIDIデバイスにコマンドを送信するには、ご指摘の通りmidiOut系を使うのが適切 なようですね。 MIDIについて理解不足なこともあって悪戦苦闘しています。 |
1