求教各位大神,VB有多声卡酷狗音频设置播放音频

& & 作者:刘明 现在使用 VB 编程的朋友越来越多了.但是如何使用VB来编写播放多媒体文件的播放器呢?本篇将详细的介绍如何利用高级音频函数编写媒体播放器! 内容提要: 了解高级音频函数各参数的意思; 提供一些高级音频函数的命令集; 编写一个简单的多……
声明:该文章系网友上传分享,此内容仅代表网友个人经验或观点,不代表本网站立场和观点;若未进行原创声明,则表明该文章系转载自互联网;若该文章内容涉嫌侵权,请及时向
论文写作技巧
上一篇:下一篇:
相关经验教程利用VB测声卡_Visual Basic教程_动态网站制作指南
利用VB测声卡
来源:人气:6604
在一个多媒体应用程序中,如果涉及对声音的播放与操作,那么我们就有必要先对用户系统中的声卡及真功能进行一下测试。幸好有VB,所以我们要实现这些功能并不用费多大力气(也就是吃顿饭的力气),在下面的程序中我们将利用VB调用两个windowsApi函数--Waveoutgetnumdevs()和Waveoutgetdev-capS()来访问设备驱动程序,获取有关信息,实现上述目的。OK,Let'sGo!一、我们先要捡测一下声卡是否存在1.新建一工程并添加模块Module1.bas,在其声明部分加入如下代码:DeclareFunctionWaveoutgetnumdevsLib&Winmm.Dll&()asLongPublicConstMb_ok=&H402.在窗体上添加一个命令按钮cmdtest,设置Caption的属性为“测试声卡”3.在窗体的通用声明部分加入一函数testcard,代码如下:PublicFunctionTestcard()AsBooleanDimYAslongDimFindAsStringFind=“FiedSoundBlasterCard&Y=Waveoutgetnumdevs()IfY&0ThenTestcard=TrueMsgbox&啥啥,我找到你了--声卡!&,Mb_ok,FindElseTestcard=FalscMsgbox&未发现设备&,Mb_ok,FindEndifEndFunction4.在命令按钮的单击事件中加入代码:ivatesubCmdtest_Click()DimExistentAsBooleanExistent=TestcardEndsub现在你可以运行这个程序试试看了,它会检测你的系统中是否有声卡的存在。二、测试声卡的功能既然已经发现了声卡的存在,接下来就要测试一下它的功能。为什么?举个例子来说,老式声卡支持的采样率和位分辨率是远不及现在声卡的,如果你试图用只有8位分辨率和22.05KHz采样率的声卡来播放44.1KHz、16位立体声的声音文件,嘿嘿……有你好看(其实也没啥大不了的)。好,你大胆的往下看。1.在窗体上加入picturebox控件picture1。2.在Module1.bass的声名节中加入代码:DeclareFunctionWaveoutgetdevcapsLib&Winmm.dll&Alias&Waveoutgetdevcapsa&(ByvaIUdcviceidAsLong,LpcapsAsWaveOutcaps,ByvaIUsizeAsLong)AsLong'参数1指定被测设备。由于一台PC上装有几个音频设备是完全可能的,所以Windows自动给每个设备编号,第一个可用设备号为0。'参数2是一个Waveoutcaps结构的指针。'多数3是第二个参数的大小。PublicConstMaxpnamelen=32PublicConstWave_Format_1m08=&H1PublicConstWavp_Format_1ml6=&H4PublicConstWave_Format_1s08=&H2PublicConstWave_Format_1sl6=&H8PublicConstWavc_Format_2m0B=&H1OPublicConstWave_Format_2m16=&H40PublicConstWave_Format_2s08=&H20PublicConstWave_Format_2s16=&H80PublicConstWave_Format_4m08=&H100PublicConstWave_Format_4ml6=&H400PublicConstWave_Format_4s08=&H200PublicConstWave_Format_4s16=&H800PublicConstWavecaps_Lrvolume=&H8PublicConstWavecaps_Pitch=&H1PublicConstWavecaps_Playbackrate=&H2PublicConstWavecaps_Sync=&H10PublicConstWavecaps_Volume=&H4TypeWaveoutCapsWmidAsInteger'设备驱动程序厂商标识WpidAsInteger'声卡厂商标识VdriverversionAsLong'驱动程序版本号,高字节为主版本号,低字节为次版本号SzpnameAsString*Maxpnamelen'产品名称DwformatsAsLong'支持的wave格式,每一位代表一种格式WchannelsAsInteger'返回整型值1(单声道)或2(立体声)DwsupportAsLong'设备支持的扩展输出功能EndType3.在窗体的声明节内增加两个函数:'函数listwaveformat检测波形音频支持的格式PublicFunctionListwaveformat(AboutwaveAslong)AsStringDimWaveformatAsStringSelectCaseAboutwaveCaseWave_Format_1m08Waveformat=&11.025khz,Mono,8bit,11kb/Ps&CaseWave_Format_1m16Waveformat=&11.025khz,Mono,16bit,22kb/Ps&CaseWave_Format_1s08Waveformat=&11.025khz,Stereo,8bit,22kb/Ps&CaseWave_Format_1s16Waveformat=&11.025khz,Stereo,16bit,43kb/Ps&Casewave_Format_2m08Waveformat=&22.05khz,Mono,8bit,22kb/Ps&CaseWavc_Format_2m16Waveformat=&22.05khz.Mono,16bit,43kb/Ps&CaseWave_Format_2s16Waveformat=&22.05khz,Stereo,8bit,43kb/Ps&CaseWave_Format_2s16Waveformat=&22.05khz,Stereo,16bit,86kb/Ps&CaseWave_Format_4m08Waveformat=&44.1khz,Mono,8bit,43kb/Ps&CaseWave_Format_4m16Wavcformat=&44.lkhz,Mono,16bit,86KB/Ps&CaseWave_Format_4s08Waveformat=&44.lkhz,Stereo,8bit,86kb/Ps&CaseWavc_Format_4s16Waveformat=&44.lkhz.Stereo,16bit,172kb/Ps&EndSelectListwaveformat=WaveformatEndFunction'函数Listwavesupport检测设备支持的扩展输出功能PublicFunctionListwavesupport(AboutwaveAslong)AsStringDimWavefunAsStringSclectCaseAboutwaveCaseWavecaps_PitchWavefun=&SupportPitch&CascWavecaps_PlaybackrateWavefun=&SupportPlayback&CaseWavecaps_VolumeWavefun=&SupportVolumeControl&CsaeWavecaps_LrvolumeWavefun=&SupportLeft-RightChannals&CsaeWavecaps_syncWavcfun=&SupportSynchronization&EndSelectListwavesupport=WavefunEndFunction4.修改cmdtest_Click事件的代码为:PrivateSubCmdtest_Click()DimExistentAsBooleanDimConsequenceAslongDimReturncapsAsWaveoutcapsDimRainverAsLongDimLesservcrAslongDimPnameAsString*32DimAboutwaveAslongDimChannelAsString*2DimIAslntegerExistent=TestcardIfExistentThenConsequence=Waveoutgetdevcaps(0,Returncaps,Len(Returncaps))IfConsequence=0ThenMainver=Returncaps.Vdriverversion\256Lesserver=Returncaps.VdriverversionMod256'因为API在返回Returncaps.szpname时在返回值与空格之间会插入一个空的终止符,用Rtrim$会返回一个0终止字符串,所以我们采用Instr Left$的方法.Pname=Left$(Returncaps.Szpname,Instr(Returncaps.Szpname,Chrr$(0))-1)Channe1=Str$(Returncaps.Wchannels)Picture1.Print&产品名称:&;PnamePicture1.Print&产品Id:&;Returncaps.WpidPicture1.Print&驱动程序Id:&;Returncaps.WrmidPicture1.Print&驱动程序版本:&;M&.&;LesserverPicture1.Print&输出声道:&;ChannelPicture1.Print&支持格式列表:&ForI=0TO11IfReturncaps.DwformatsAnd(2^I)ThenPicture1.PrintListwaveformat(2^I)EndifNextIPicture1.Print&扩展输出功能列表:&Forl=0To4IfReturncaps.DwsupportAnd(2^I)ThenPicture1.PrintListwavesupport(2^I)EndifNextIEndifElseEndEndifEndSub5.为Form_load事件加入代码:PrivateSubForm_Load()Picture1.ClsEndSub本程序在Win95(osr2)、VB5企业版下调试通过,在win3.2下仅仅两个API函数略有改变,照猫画虎即可。好了,工作已经全部做完了。现在你要做的只是按下F5,我也要随风而去了,各位看官后会有期,隐也。->
优质网站模板请指教,如何获取声卡声音音频?
请指教,如何获取声卡声音音频?
发布时间: 10:50:31
编辑:www.fx114.net
本篇文章主要介绍了"请指教,如何获取声卡声音音频?
0",主要涉及到请指教,如何获取声卡声音音频?
0方面的内容,对于请指教,如何获取声卡声音音频?
0感兴趣的同学可以参考一下。
使用vb如何才能使外来音源通过声卡的音频输入口接入电脑后通过可视化效果的方式将声音音频表现出来?谢谢各位高手指教!你是指波形的方式吗??这是多媒体编程呀,能是数值方式吗?调有api为什么老是有人&调用这个&&调用哪个的&&&而不把过程写出来呢?&&是高手的不屑一故么同意&ygrlovezqj(光光)!
一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!
二、互相尊重,对自己的言论和行为负责。
本文标题:
本页链接:参考文献:
上篇论文: 下篇论文: 没有了
400-675-1600

我要回帖

更多关于 音频驱动和声卡驱动 的文章

 

随机推荐