打印本文 打印本文 关闭窗口 关闭窗口
VB.NET实现DirectSound9 (6) 声音特效
作者:武汉SEO闵涛  文章来源:敏韬网  点击数4584  更新时间:2009/4/23 19:00:44  文章录入:mintao  责任编辑:mintao
' 如果需要更多的效果,设置相应的元素个数

        Dim effd(0) As EffectDescription        ''''''''描述集合

        Dim eff As New EffectsEcho              ''''''''''''结构,由于对象不能单独设置属性,只能用它间接修改

        ''''''''''''关键步骤,指定特效的类型

        effd(0).GuidEffectClass = DSoundHelper.StandardEchoGuid     ''''''''''''说明第一种效果是回声

        ''''''''''''软件,你要是用硬件,我也不反对

        effd(0).LocateInSoftware = True

        ''''''''''''直接一次性提交给Buffer,提交的是一个数组

        SB.SetEffects(effd)

        ''''''''''''声明一个特效对象,别忘了我们需要修改参数滴

        Dim echo As EchoEffect

        ''''''''''''得到当前Buffer的效果

        '''''''''''' 这个后面的0,正是你一次性传递过去的效果的index,忘了?就是刚才那个数组

        echo = SB.GetEffects(0)

        ''''''''''''对象不能直接修改,所以用它来间接改

        eff = echo.AllParameters

        eff.WetDryMix = 50

        eff.Feedback = 50

        eff.LeftDelay = 500

        eff.RightDelay = 500

        eff.PanDelay = 0

        ''''''''''''OK,就这样,你可以尝试用其他数据代替里面的数值,其中LeftDelay跟RightDelay的定义域在1~2000,

        '''''''''''' 你可以用echo的属性得到最大最小数值(方便了很多)

        echo.AllParameters = eff

 

        Me.Text = "echo ok"

    End Sub

End Class

 

好了,复制过去直接运行就可.

我用了Echo作为例子来说明问题(估计这个用的也是最多,效果最明显的)还有很多,你参照微软的例子,再改改上面的代码就能轻松实现,我就不废话了.

下一步.录音

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

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