利用API播放声音文件

2016-02-19 17:53 31 1 收藏

今天给大家分享的是由图老师小编精心为您推荐的利用API播放声音文件,喜欢的朋友可以分享一下,也算是给小编一份支持,大家都不容易啊!

【 tulaoshi.com - 编程语言 】

-在某些情况下,例如程序员正在编写一个游戏,或是将要进行一项非常冗长无聊的过程,可以通过播放音乐来增加游戏的声光效果或是减少漫长的等待所带来的困倦。本文介绍如何在MicrosoftVisualBasic中对声音文件进行播放。
  
  播放声音文件
  
  ----在MicrosoftVisualBasic中进行多媒体音乐的播放是一件非常轻松的事情。在MicrosoftWindows系统中支持的声音文件有WAV文件和MIDI文件,通常使用Windows应用程序编程接口(API)函数mciExecute函数可以对MIDI文件进行播放。而使用API函数sndPlaySound则可以对WAV播放文件进行播放,当然,你也可以使用mciExecute函数来播放WAV文件。
  
  ----为了播放WAV文件,你需要在你的程序窗体的通用声明部分中,或是标准模块中添加如下的声明语句:
  
  ----PrivateDeclareFunctionsndPlaySoundLib"winmm.dll"Alias"sndPlaySoundA"(ByVallpszSoundNameAsString,ByValuFlagsAsLong)As
  Long
  
  ----以及如下的标识常量:
  
  ----PublicConstSND_SYNC=&H0
  ----PublicConstSND_ASYNC=&H1
  ----PublicConstSND_NODEFAULT=&H2
  ----PublicConstSND_MEMORY=&H4
  ----PublicConstSND_ALIAS=&H10000
  ----PublicConstSND_FILENAME=&H20000
  ----PublicConstSND_RESOURCE=&H40004
  ----PublicConstSND_ALIAS_ID=&H110000
  ----PublicConstSND_ALIAS_START=0
  ----PublicConstSND_LOOP=&H8
  ----PublicConstSND_NOSTOP=&H10
  ----PublicConstSND_VALID=&H1F
  ----PublicConstSND_NOWAIT=&H2000
  ----PublicConstSND_VALIDFLAGS=&H17201F
  ----PublicConstSND_RESERVED=&HFF000000
  ----PublicConstSND_TYPE_MASK=&H170007
  
  ----sndPlaySound函数需要两个参数,第一个参数soundfilename是要播放的WAV文件的名称。第二个参数是一个表明播放方式的标识常量,其定义的值如上所示,通常所使用的标识意义如下:
  
  ----SND_SYNC播放WAV文件,播放完毕后将控制转移回你的应用程序中。
  ----SND_ASYNC播放WAV文件,然后将控制立即转移回你的应用程序中,而不管对WAV文件的播放是否结束。
  ----SND_NODEFAULT不要播放缺省的WAV文件,以免发生某些意外的错误。
  ----SND_MEMORY播放以前已经加载到内存中的WAV文件。
  ----SND_LOOP循环播放WAV文件。
  ----SND_NOSTOP在开始播放其它的WAV文件之前,需要完成对本WAV文件的播放。
  
  ----注意:SND_LOOP标识通常需要同SND_ASYNC共同使用,也即在两个标识之间添加与播放符,以免在对WAV文件进行播放的时候将系统挂起。
  
  ----为了播放MIDI文件,你需要在你的程序窗体的通用声明部分中,或是标准模块中添加如下的声明语句:
  
  ----PrivateDeclareFunctionmciExecuteLib"winmm.dll"Alias"mciExecute"(ByVallpstrCommandAsString)AsLong
  
  ----mciExecute函数只需要一个参数,CommandString,顾名思义,它是一个命令字符串,用于表明对声音文件播放的命令,例如,希望完整播放声音文件,则该字符串就是字符串損lay"加上声音文件的路径以及文件名称,如下所示**
  
  ----DimReturnValueAsLong
  ----ReturnSoundValue=mciExecute("playC:WIN95MEDIACANYON.MID")
  
  ----如果希望对声音文件的部分进行播放,可以使用from...to...语句格式,例如若要播放CANYON.MID文件的10毫秒到100毫秒的部分,可以使用如下的语句:
  
  ----DimReturnValueAsLong
  ----ReturnSoundValue=mciExecute("playC:WIN95MEDIACANYON.MIDfrom10to100")
  ----mciExecute函数也可以用来对WAV文件进行播放,方法同播放MIDI一样。
  
  样例程序
  
  ----1.在VisualBasic中开始一个新的项目,采用缺省的方法建立Form1。
  ----2.将如下的声明语句添加到Form1的通常声明部分中(注意每个声明语句需要被书写在一行内):
  
  ----PrivateDeclareFunctionsndPlaySoundLib"winmm.dll"Alias"
  sndPlaySoundA"(ByVallpszSoundNameAsString,ByValuFlagsAsLong)As
  Long
  
  ----ConstSND_SYNC=&H0
  ----ConstSND_ASYNC=&H1
  ----ConstSND_NODEFAULT=&H2
  ----ConstSND_MEMORY=&H4
  ----ConstSND_ALIAS=&H10000
  ----ConstSND_FILENAME=&H20000
  ----ConstSND_RESOURCE=&H40004
  ----ConstSND_ALIAS_ID=&H110000
  ----ConstSND_ALIAS_START=0
  ----ConstSND_LOOP=&H8
  ----ConstSND_NOSTOP=&H10
  ----ConstSND_VALID=&H1F
  ----ConstSND_NOWAIT=&H2000
  ----ConstSND_VALIDFLAGS=&H17201F
  ----ConstSND_RESERVED=&HFF000000
  ----ConstSND_TYPE_MASK=&H170007
  
  ----PrivateDeclareFunctionmciExecuteLib"winmm.dll"Alias"mciExecute"(ByVallpstrCommandAsString)AsLong
  
  ----3.在Form1上添加一个文本框控件,采用缺省的方法建立Text1。将它的Caption属性设置为NULL。
  
  ----4.在Form1上添加一个命令按钮控件,采用缺省的方法建立Command1。将它的Caption属性设置为"使用sndPlaySound函数敗*
  
  ----5.在Form1上添加一个命令按钮控件,采用缺省的方法建立Command2。将它的Caption属性设置为"使用mciExecute函数敗*
  
  ----6.将如下的代码添加到Command1的单击事件中:
  
  
  PrivateSubCommand1_Click()
  DimReturnValueAsLong
  Text1.Text="使用sndPlaySound函数播放TADA.WAV文件。"
  ReturnValue=sndPlaySound("C:WIN95MEDIATADA.WAV",SND_SYNC)
  EndSub
  
  
  ----7.将如下的代码添加到Command2的单击事件中:
  
  
  PrivateSubCommand2_Click()
  DimReturnValueAsLong
  Text1.Text="使用mciExecute函数播放Canyon.mid文件。"
  ReturnSoundValue=mciExecute
  ("playC:WIN95MEDIACANYON.MIDfrom10to100")
  EndSub
  
  
  ----通过按下F5键来执行样例程序。单击"使用sndPlaySound函数"命令按钮则使用sndPlaySound函数来播放C:WIN95MEDIA目录下面的TADA.WAV声音文件。单击"使用mciExecute函数"则使用mciExecute函数来播放C:WIN95MEDIA目录下面的CANYON.MID文件的10毫秒到100毫秒的部分。->

来源:https://www.tulaoshi.com/n/20160219/1616276.html

延伸阅读
在多媒体作品中,有时需要同时播放多路声音,以满足作品的不同需求,这里我们以三路声音的同时播放为例,给大家介绍这一多媒体技巧。 运行Authorware 6.0,将此文件存为“同时播放多路声音.a6p”,单击Windows菜单下的Functions子菜单,弹出“Functions”对话框,选择Category下拉菜单中的“同时播放多路声音.a6p”选项,单击“Load...
PrivateDeclareFunctionCreateDirectoryLib"kernel32"Alias"CreateDirectoryA"(ByVallpPathNameAsString,lpSecurityAttributesAsSECURITY_ATTRIBUTES)AsLong PrivateTypeSECURITY_ATTRIBUTES nLengthAsLong lpSecurityDescriptorAsLong bInheritHandleAsLong EndType SubMain() '在C盘创建了"VB编程...
VB提供的方法使我们可以很容易地使用资源文件中的字符、图片等资源。我们可以用以下方法播放资源文件中的wav声音:首先,在你的资源文件的源文件(RC)文件加入下面一行: MySoundWAVEc:musicvanhalen.wav 然后将其编译为RES文件。最后使用下面的声明及代码: PrivateDeclareFunctionPlaySoundLib_"winmm.dll"Alias"PlaySoundA"(...
在某些场合,我们需要确定特定目录下特定文件是否存在。VB自带的DIR函数可以查找符合条件的文件(在VB编程乐园已经有过介绍),但用起来略显复杂。这里介绍一种较为简单的方法。 API函数的SHFileExists的功能,从其名字来看,应该是SearchFileExists,亦即查找存在的文件。用它来检测文件存在与否是很容易的。试看下面的例子。 在标...
喜马拉雅怎么上传声音文件   喜马拉雅是一款非常好用的电台类软件,你不仅可以在喜马拉雅收听自己喜欢的电台,也可以上传自己录制的电台文件,喜马拉雅怎么上传声音文件,下面小编就给大家带来喜马拉雅发表录音教程。 打开喜马拉雅app 注册账号步骤这里省去。登录后,进入我选项卡。 点击录音,进入录音界面。中...

经验教程

704

收藏

52
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部