MCIを使わずにMIDIを鳴らす方法を調べていたところ、
midiOutShortMsgを使わなければならないことは分かったのですが、
この関数ではドとかレとかしか鳴らせません。
曲を再生するにはどうしたらよいのでしょうか。
Note OnとNote Offを時間を計りながら送ってやればよいです。
基本的にはマルチメディアタイマを使うことになります。
# 大惨事な演奏を再現したいならWM_TIMERも可ですが……。
MCIを使えない理由って何でしょうか。
宜しければ教えて下さい。
僕でなくても使える方法があるかも知れません。
修正です。
誤 僕でなくても使える方法があるかも知れません。
正 僕でなくても使える方法を知っている方がいるかも知れません。
すみませんですm(..)m
YuOさん、アドバイスありがとうございます。
問題はNote OnとNote OffをどうやってMIDIファイルから得るかですね。
ITOさん、MCIでMIDIを扱うと初期化やループ再生にかなりの時間が
かかってしまいます。
さらに、MCI_PAUEで音を一時停止して再開すると音の音色が変化してしまうのです。
> 問題はNote OnとNote OffをどうやってMIDIファイルから得るかですね。
MIDIファイルというのがSMFであれば,
いくつかのサイトに形式が載っています。
例えば
http://www.pluto.dti.ne.jp/~daiki/Midi/Midi.html
など。それほど難しいファイル形式ではないです。
# Big Endianなのを忘れないようにすれば,ですが。
> MCIでMIDIを扱うと初期化やループ再生にかなりの時間が
> かかってしまいます。
スレッドを使うことで解消できませんか。
MIDIはどうか分りませんが通信など時間のかかる作業はスレッドを使うことで
解消されることが多いです。
DirectX で再生ってのはどうでしょう。
MCIよりかなり軽いと思いますし、自作よりは楽なのでは?
EternalWindowsというサイトでMIDIプログラムを扱っていました。
http://www7a.biglobe.ne.jp/~lshen/EternalWindows/index.html
とりあえずここで頑張ってみます。
後、自己紹介が遅れましたがリジェと申します。
これからもよろくお願いします。