API関数のMIDI再生でMIDIファイルをループさせるには?

解決


アラウンド  2002-09-18 17:33:15  No: 104988  IP: [192.*.*.*]

API関数のMIDI再生でMIDIファイルをループさせるにはどうすればよいのですか?

編集 削除
YuO  2002-09-18 17:55:23  No: 104989  IP: [192.*.*.*]

midiShortOutとかmidiLongOutを使っているのであれば,
ループしたいならしたい場所から再度再生させるだけだと思いますが。
それともMCIを使ったのかな?

編集 削除
たかみちえ  URL  2002-09-18 18:25:31  No: 104990  IP: [192.*.*.*]

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

編集 削除
アラウンド  2002-09-19 11:03:05  No: 104991  IP: [192.*.*.*]

みなさんからご意見、ありがとうございます。
初心者らしく(笑)MCIの方を使っています。紛らわしくてすいませんでした。(MCI以外に方法があることを知らなかったので。)
  たかみちえさんの意見を参考にさせていただきます。解決したら報告します。

編集 削除
アラウンド  2002-09-19 14:04:48  No: 104992  IP: [192.*.*.*]

ループさせることに成功いたしました。たかみちえさん、YuOさんありがとうございました。

編集 削除