VB2005の音楽再生プログラミングについて教えてください。約0.7秒程度の音が複数あり、それを順次再生します。それぞれの再生間隔は任意を考えています。mciSendStringを使うと1つ目の音が終わる前に次の音が始まってしまうようです。5個の音を再生しても3個くらいしか聞こえてきません。


ちなみにwavファイルを利用して長さをmciSendStringで取得し、Sleepにセットしようとしましたが、音が短いためか時間が取得できませんでした。

どのようにしたらよろしいでしょか。call mciSendStringでは終わってから次のプログラムステップに行かないようです。

よろしくお願いします。
Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand
As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long

For k = 0 To i
 Call mciSendString("play """ & line(k) & ".wma" & """", "", 0, 0)
 System.Threading.Thread.Sleep(Integer.Parse(TextBox1.Text))
Next k

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2012/10/20 11:32:45
  • 終了:2012/10/27 11:35:03

回答(2件)

id:oil999 No.1

oil999回答回数1728ベストアンサー獲得回数3202012/10/20 12:08:08

ポイント100pt

下記のようにnotifyを指定してやると、演奏終了時に第4引数で指定したウィンドウハンドルにメッセージを渡すことができます。
このメッセージを受け取ったら、次のWAVファイルを再生するようにすればいいでしょう。

mciSendString(TEXT("play WAVファイル名 notify"), NULL, 0, hwnd);

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません