API関数のMIDI再生でMIDIファイルをループさせるにはどうすればよいのですか?
編集 削除midiShortOutとかmidiLongOutを使っているのであれば,
ループしたいならしたい場所から再度再生させるだけだと思いますが。
それともMCIを使ったのかな?
MIDIの再生にはいくつか方法があります。
YuOさんの言う、midiShortOutなどのAPIを使って、メッセージをひとつずつ処理していく方法。
デルタタイムの解釈など、難しいですけど、すごく柔軟な処理ができます。
midiStreamというAPIを使う方法。
上のものよりは簡単で、それなりに柔軟な処理ができるそうです。
最後に、MCIを使う方法。
簡単ですけど、ほとんど処理に加工を加えたりすることはできません。
上の二つの場合、YuOさんの言うとおり、ループした居場所から読み込みをしなおせばいいです。
MCIの場合、再生が終わると、"Status mode"に、Stoppedという文章が入ります。
タイマーで監視しつつ、そのメッセージが着たら、もう一度再生させればいいです。
MCIは、再生中の曲が終わったときに、それを知らせるようにすることもできますが、
VBの場合、サブクラス化しなければいけなかったり、かえって面倒です。
HSPのサイトですけど、ここを参考にすればいいでしょう。
http://www.bekkoame.ne.jp/i/mr.manri/hsp.html
みなさんからご意見、ありがとうございます。
初心者らしく(笑)MCIの方を使っています。紛らわしくてすいませんでした。(MCI以外に方法があることを知らなかったので。)
たかみちえさんの意見を参考にさせていただきます。解決したら報告します。
ループさせることに成功いたしました。たかみちえさん、YuOさんありがとうございました。
編集 削除