wavファイルの読み込み

タグの編集
投稿者 JF1JAPAN  (社会人) 投稿日時 2011/5/16 19:04:43
またまた失礼します。
現在製作中のプログラムで、wavファイルを再生したく、再生するコードを拾って張り付けたのはいいのですが、メモリーの方に読みこんでおいて、素早くロードするということはできますか?
できるならば、参考コードをお教えください。
今普通に使っている再生コードは、


Dim SP As Media.Soundplayer = New Media.SoundPlayer("ファイル名")
SP.Play()


です。
投稿者 (削除されました)  () 投稿日時 2011/5/16 20:37:34
(削除されました)
投稿者 よねKEN  (社会人) 投稿日時 2011/5/16 20:38:58
SoundPlayer クラスはStreamを扱えます。
ファイルをByte配列に読み込んで、このByte配列をメモリ上に保持しておきます。
音を再生するときには、このByte配列を使ってMemoryStreamクラスのインスタンスを作って、
このStreamを使って再生すればよいです。サンプルは以下のような感じ。


Imports System.IO
Imports System.Media

Public Class Form1

    Private wavData As Byte()
    Private player As SoundPlayer

    Private Sub Form1_Load(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles MyBase.Load
        wavData = File.ReadAllBytes(ファイル名)
        player = New SoundPlayer()
    End Sub

    Private Sub Button1_Click(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles Button1.Click
        player.Stream = New MemoryStream(wavData)
        player.Play()
    End Sub
End Class
投稿者 YAS  (社会人) 投稿日時 2011/5/16 20:40:27
Byte配列に読み込んでおいて再生することはできます。
が,素早く再生できているかは分かりません。
 
    Private tada As Byte()

    Private Sub Form1_Load(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles MyBase.Load
        tada = My.Computer.FileSystem.ReadAllBytes("C:\Windows\Media\tada.wav")
    End Sub

    Private Sub Button1_Click(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles Button1.Click
        My.Computer.Audio.Play(tada, AudioPlayMode.Background)
    End Sub
投稿者 YAS  (社会人) 投稿日時 2011/5/16 20:44:13
あらら,同じ様な内容でダブって投稿してしまいました。
ごめんなさい。
投稿者 JF1JAPAN  (中学生) 投稿日時 2011/5/16 21:54:25
ありがとうございました。
おかげさまで、再生までの時間も短縮されました。
これからもよろしくお願いします。