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)