打印本文 打印本文 关闭窗口 关闭窗口
VB.NET 实现DirectSound9 (5) DS3D2
作者:武汉SEO闵涛  文章来源:敏韬网  点击数2929  更新时间:2009/4/23 19:00:43  文章录入:mintao  责任编辑:mintao
0~100"
        ''''
        ''''TextBox1
        ''''
        Me.TextBox1.Location = New System.Drawing.Point(24, 128)
        Me.TextBox1.Name = "TextBox1"
        Me.TextBox1.TabIndex = 7
        Me.TextBox1.Text = "0.0"
        ''''
        ''''TextBox2
        ''''
        Me.TextBox2.Location = New System.Drawing.Point(24, 184)
        Me.TextBox2.Name = "TextBox2"
        Me.TextBox2.TabIndex = 8
        Me.TextBox2.Text = "0.0"
        ''''
        ''''TextBox3
        ''''
        Me.TextBox3.Location = New System.Drawing.Point(24, 240)
        Me.TextBox3.Name = "TextBox3"
        Me.TextBox3.TabIndex = 9
        Me.TextBox3.Text = "0.9"
        ''''
        ''''TextBox4
        ''''
        Me.TextBox4.Location = New System.Drawing.Point(24, 296)
        Me.TextBox4.Name = "TextBox4"
        Me.TextBox4.TabIndex = 10
        Me.TextBox4.Text = "20.0"
        ''''
        ''''Label5
        ''''
        Me.Label5.Location = New System.Drawing.Point(8, 328)
        Me.Label5.Name = "Label5"
        Me.Label5.TabIndex = 11
        Me.Label5.Text = "Y轴"
        ''''
        ''''TextBox5
        ''''
        Me.TextBox5.Location = New System.Drawing.Point(24, 352)
        Me.TextBox5.Name = "TextBox5"
        Me.TextBox5.TabIndex = 12
        Me.TextBox5.Text = "0.0"
        ''''
        ''''Label6
        ''''
        Me.Label6.Location = New System.Drawing.Point(152, 16)
        Me.Label6.Name = "Label6"
        Me.Label6.Size = New System.Drawing.Size(424, 24)
        Me.Label6.TabIndex = 13
        Me.Label6.Text = "Label6"
        ''''
        ''''Form1
        ''''
        Me.AutoScaleBaseSize = New System.Drawing.Size(6, 14)
        Me.ClientSize = New System.Drawing.Size(720, 501)
        Me.Controls.Add(Me.Label6)
        Me.Controls.Add(Me.TextBox5)
        Me.Controls.Add(Me.Label5)
        Me.Controls.Add(Me.TextBox4)
        Me.Controls.Add(Me.TextBox3)
        Me.Controls.Add(Me.TextBox2)
        Me.Controls.Add(Me.TextBox1)
        Me.Controls.Add(Me.Label4)
        Me.Controls.Add(Me.Label3)
        Me.Controls.Add(Me.Label2)
        Me.Controls.Add(Me.Label1)
        Me.Controls.Add(Me.PictureBox1)
        Me.Controls.Add(Me.Button2)
        Me.Controls.Add(Me.Button1)
        Me.Name = "Form1"
        Me.Text = "Form1"
        Me.ResumeLayout(False)

    End Sub

#End Region

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        ''''''''''''加载的时候初始化一下PictureBox,把它变成黑色(没有颜色)
        PictureBox1_DoubleClick(0, Nothing)
    End Sub

    Sub initDirectSound()
        ''''''''加载DirectSound设备以及读取wav文件
        ''''设置3D模式
        Dim DSMode As Guid
        DSMode = DSoundHelper.Guid3DAlgorithmHrtfFull       ''''由于为了演示3D效果,所以用最高模式
        ''''关联窗体
        Dev = New Device
        Dev.SetCooperativeLevel(Me.Handle, CooperativeLevel.Priority)
        ''''''''加载wav ''''''''''''注释掉了,原来测试用的
        ''''Dim TmpDesc As New BufferDescription
        ''''TmpDesc.Guid3DAlgorithm = DSMode
        ''''TmpDesc.Control3D = True
        ''''SBuff = New SecondaryBuffer(FN, TmpDesc, Dev)

        ''''格式有比较严格的限制
        Dim fmt As New WaveFormat
        fmt.FormatTag = WaveFormatTag.Pcm
        fmt.Channels = 2
        fmt.SamplesPerSecond = 22050
        fmt.BitsPerSample = 16
        fmt.BlockAlign = CShort(fmt.BitsPerSample / 8 * fmt.Channels)
        fmt.AverageBytesPerSecond = fmt.SamplesPerSecond * fmt.BlockAlign
        ''''创建描述
        descBuff = New BufferDescription
        ''''descBuff.ControlVolume = True
        descBuff.Control3D = True
        ''''descBuff.GlobalFocus = True
        ''''descBuff.StaticBuffer = True
        ''''descBuff.LocateInHardware = True
        descBuff.PrimaryBuffer = True
        descBuff.Format = fmt
        ''''descBuff.Guid3DAlgorithm = DSMode
        ''''''''''''以上可以自己去掉注释尝试一下,某些时候当Primary打开的时候,其他的不能用,有冲突,尤其是后面几个
        ''''创建主缓冲
        Try
            ''''''''''''捕获一下,防止descript的描述不正确(就是参数设置的不对)
            Buff = New Buffer(descBuff, Dev)
        Catch ex As Exception
            MsgBox(ex.Message)
            End   ''''不对的话,就没有必要继续了
        End Try
        ''''创建听众
        Listenner = New Listener3D(Buff)
        ListennerSet = Listenner.AllParameters   ''''使用主缓冲听众的设置

        ''''''''WAV
        Dim tmpDesc2 As New BufferDescription
        tmpDesc2.Guid3DAlgorithm = DSMode
        tmpDesc2.Control3D = True
        '''''''''''' 这里必须借助辅助缓冲给主缓冲提供实例,不知道微软怎么想的,也可能是我学艺不精,怎么尝试都要这样用
        Buff = New SecondaryBuffer(FN, tmpDesc2, Dev)

        ''''创建3D缓冲区
        Buff3D = New Buffer3D(Buff)
        Buff3DSet = Buff3D.AllParameters        ''''使用默认的设置
        Buff3DSet.Mode = Mode3D.HeadRelative    ''''改变一个参数
        Buff3D.AllParameters = Buff3DSet        ''''应用新的设置

        MsgBox("已经读取" + FN)
      &

上一页  [1] [2] [3]  下一页

打印本文 打印本文 关闭窗口 关闭窗口