利用函数来控制声音midi文件
??声音midi格式与wav相比占有的空间比较小,在authorware里用midi做背景音乐,
?是比较理想的选择。有的朋友会说,我用wav做背景不是一样吗?当然可以了,但
?是如果你的课件做的内容比较详细,动画、讲解也比较多的时候,你就可以比较出
?来还是用midi音乐做背景好。而authorware6本身不能直接插入midi音乐,我们可
?以借助midiloop.u32来完成authorware里midi的播放和停止。下面来看一下具体的
?操作步骤:
一.midiloop.u32函数的导入
1. 打开authorware6可执行文件,新建一个文件命名为:播放midi
2. 导入midiloop.u32【实现的途径:Windon-->functions-->(在Category
??的下来菜单里选播放midi)-->load-->选中midiloop.u32文件夹(找到你下载的?????midiloop.u32)-->打开-->出现图1界面-->
??选中Loopmidi和stopmidi-->load-->出现图2界面(点击loopmidi
??在图2下面的descreption里可以看到具体的函数的表达意义和实例)-->done】为了便??于大家应用,我把此函数放到网站中,请到下面去下载:
??http://www.faithli.com/linshi/midiloop.zip
??
?????????????图1
??
?????图2
二. 用函数控制midi的播放
1.播放midi
??在流程线上放一计算图标,命名为播放midi. 里面的函数为:
??LoopMidi(FileLocation^"midi\\rose.mid"),如图3所示:
??
?????????????图3
??这样就可以在一个页面里循环播放midi音乐作为背景了:
2.这里需要对计算图标里的函数的路径说明一下:
??①这里的FileLocation^"midi\\rose.mid"是midi音乐rose.mid的相对路径,
???意思是midi文件夹和播放midi.exe 文件在同一目录下,这样不管你在
???测试或者刻录光盘时,都不用在考虑路径的问题。
??② 当然计算图标里我们也可以用绝对路径:LoopMidi("c:\\midi\\rose.mid")
???但这样做在自己的计算机里运行是没有问题的,当作品完成以后刻录 光盘后,
???到其它计算机里运行的时候找c盘里的midi文件夹,是找不 到的,因此不会正常实现???midi的播放。这种方法只实用于制作
???测试阶段。
??③还有一种方法是绝对路径的表示方法:LoopMidi(":\\midi\\rose.mid")
???这种表示方法是要求midi文件夹必须放在根目录下,也就是我们刻录
???光盘的时候要把这个midi文件夹刻录在光盘的根目录下,这样不管你
???的光驱是那一个盘符,保证能找到rose.mid,使midi音乐的播放没有问题。
3. 这种在流程线上播放的midi是没有控制的,即打开界面,背景音乐就
??开始播放,平且是循环播放。我们希望界面上的音乐可以操纵,即我们想听
??的时候,才打开,这就需要用下面的按钮来控制。
三. 用按钮或热区控制midi的播放
1用按钮控制midi的播放
?在上面图3的流程上做一下修改,即在流程线上放一个交互图标midi控制,在其右边放一?个按钮:播放midi如下图中的②;计算图标播放midi里的
?函数同上采用相对路径:FileLocation^"midi\\rose.mid"如图中的③所示;
?测试一拢?挥型计?挥猩?簦??颐窃谕计??吹降挠幸桓?FONT color=#000099>播放midi
?按钮,点击一下,可以听到优美的rose音乐。当然这里的按钮用的是系统自带的,我们一?般在制作的时候要使用与界面协调的自制按钮,这会在后面的按钮篇里做详细的讲解。
??
?????????????图4
2.用热区控制midi的播放
??为了清晰可见,我们一般会用一个喇叭或带音乐符号的小图片来做为
??声音的标志,所以在图4中,将按钮改为热区,把小图片放到热区里。
??点击小图片,背景音乐开始。达到和上面同样的播放效果。见图5。
??兰色的箭头所示即热区和图片的重合。【实现的途径:ctrl+R(是运行)
??ctrl+P(设计状态,这时候你可以将热区放大或缩小,将图片拖入热区内),再????ctrl+R,点击音乐图片就可以听到rose音乐了】
??
???????????????????图5
四:用函数停止midi的播放
??如果你采用的midi播放是在流程线上,如上面的二中的方法,那么关闭该页面,进入另??外的一个页面以后,音乐rose不能自动停止,一般我们采用在每个页面的流程线的最上??方放置一个计算图标:停止midi,里面的函数很简单:stopmidi(),如图6所示,流??程线上开始把其它的任何midi音乐停止,然后执行下面的播放rose(或butterfly)???midi,这样在玫瑰页面音乐是rose.mid,调转到蝴蝶页面的时候就变成butterfly音乐。
??
?????????????图6
五:用按钮或热区停止midi的播放
? 用按钮按钮或热区停止midi的播放可以参考上面的方法三,在交互流程线的右侧加一??个计算图标停止midi,里面的函数为:stopmidi()
??具体的可看一下图7和图8。采用这种方法,可以在一个页面里控制背景音乐的播放,如??果只想看内容,不想听音乐时候,就可以关掉;看的内容感觉枯燥的时候,再把背景音??乐打开。
??
?????????????图7
??
?????????图8
??在图8中放置了两个小图片,一个是静止的,一个是动态的gif,
??将动态的gif拖入停止midi的热区内,当背景音乐想起来的时候,
??点击动态的gif,声音停止。
六:停止midi和播放midi合并一个按钮
??上面的第五节的内容里控制背景音乐的播放和停止是用了两个按钮或图片,这样在界面??里显的比较乱,所以可以参照《多媒体软件Authorware6声音Wav篇》里的声音控制失效??和合并将第五节里的midi用一个图片来控制,具体的原理不在详述,下面将其流程图给??大家参考:图9和图10
??
?????????????图9
??
?????????图10
??在图9和图10里大家注意热区的交互响应属性里的active if
??条件语句里的pause=0或pause=1
??pause:=0 按钮失效pause:=1按钮正常运行。
七:退出和停止midi 结合在一起
??有时候我们在制作的课件的时候不希望界面上有很多的按钮,在流程线上放上播放????midi背景音乐rose.mid,希望退出界面的同时,音乐rose.mid终止,这样的效果如
??何实现呢。我们在制作的过程中通过反复的测试和思考,得到如下的方法:
??将停止midi和返回主界面放到一个计算图标里:返回+停止midi
??把它作为一个热区和退出按钮重合,如图11中的兰色方框所示。
??返回+停止midi计算图标里的函数为:
??StopMidi()
??GoTo(IconID@"主界面")
??
?????????????图11
结束语:?通过上面的学习,我们掌握了authorware里midi音乐的应用方法和技巧,为我们制??作比较好的作品打下基础。如果你的wav音乐不错的话,也可以通过软件AmazingMIDI将??其转化为midi背景音乐。这样作品的容量就会减小很多。
??另外在作品制作完成以后,为了让打包后的exe文件能正常运行,需要将
??midiloop.u32和midi(作品中用到的*.mid音乐)文件夹放到可执行文件exe同
??一目录下:见图12。
??????????????
?图12