我们知道在AuthorWare中很容易引入声音文件,一般情况下,我们都是将声音录制成一个双声道文件,其实,在多媒体软件中的声音主要包括人声、音乐声和音响效果声,所以从音质上是基本听不出来到底是单声道还是双声道的,这样我们就可以将一个双声道文件中录制两种不同的声音,如在左声道中录制汉语声音,而在右声道中录制英语声音,然后通过控制Windows 的声音输出左右声道平衡来达到双语的输出。具体方法如下:
一、双语声音文件的制作
1、 启动CoolEdit PRo声音处理软件;
2、 新建一个WAV文件,录制一段汉语声音,命名为ch.wav;
3、 新建一个WAV文件,录制一段英语声音,命名为en.wav;
4、 新建一个WAV文件,命名为chen.wav,切换ch.wav,选中左声道(只有左声道被选择,它的颜色会发生变化)中的所有声音内容,并将它拷贝到Windows的剪贴板中,再切换到chen.wav,选中左声道,按下Ctrl+V键将汉语声音粘贴到这个文件的左声道中;
5、 依照步骤4的方法,切换en.wav,将它的右声道中的声音拷贝并粘贴到chen.wav文件的右声道中。这样就制作出了一个包含有两种语言的声音文件,下面的任务就是进行左右声道的输出平衡控制。
二、在程序中控制左右声道的输出平衡
1、加载动态链接库文件:
(1)新建一个文件,文件名为“双语输出.a4p”;
(2)按Ctrl+Shift+F键,打开Function窗口,选择“动态音量控制.a4p”,点击Load钮,打开budwav.u32文件(这个动态库可以从http://www.mods.com.au/budapi上下载),并引入其中的WaveNumDevices()、WaveCanSetLRVolume()和WaveSetVolume()函数;
2、控制左右声道的输出平衡
(1) 放置一交互图标于流程线上,命名为“选择”;
(2) 再放置四个计算图标于“选择”图标下,分别命名为“汉语”、“英语”、“平衡”和“手动设置”;
(3) 放置一音乐图标于交互图标下,将它命名为“chen”;
(4) 双击“汉语”计算图标,在里面写上:
r:=WaveSetVolume(0,100,0)
MediaPlay(@"chen")
(6) 双击“汉语”计算图标,在里面写上:
r:=WaveSetVolume(0,0,100)
MediaPlay(@"chen")
(7) 双击“平衡”计算图标,在里面写上:
r:=WaveSetVolume(0,50,50)
(8) 双击“手动设置”计算图标,在里面写上:
JumpOutReturn("sndvol32.exe")
三、几点说明:
1、可能有的机器的声卡是不支持分离声道的输出的,因此增了一个手动设置按钮,如果发现声卡汉语或英语设置无效,则可以通过按下此钮弹出Windows声音控制面板让用户自己手动进行设置,但这必须告诉用户,设置左声道输出为汉语,设置右声道输出为英语;
2、函数WaveSetVolume()的原型为 Result := WaveSetVolume( DeviceID , LeftVolume , RightVolume )其中,
DeviceID为一般为0,即Windows下第一个设备识别号;
LeftVolume 和RightVolume分别为设置左右声道音量,最大值为100,最小值为0,在选择汉语时左声道音量设置为100、右声道音量设置为0,而在选择英语时左声道音量设置为0、右声道音量设置为100,设置为平衡时分别为50;
3、程序sndvol32.exe是用于Windows下的控制音量的,用户双击任务栏上的喇叭小图标就是启动的这个程序,另外,这个程序还有一个参数/r,可以用于打开录制控制。
4、 通过上述的方法,就可以进行语言的选择了,而且丝毫不增大多媒体程序的大小,如果您嫌这个WAV文件太大的话,也可以将它转化为超级音频格式的文件(SWA文件),但是要注意的是,千万不能选中Convert Stereo to Mono选项,否则……如果您需要动态地控制音量的大小,可以看一看我写的另一篇文章《在AuthorWare中动态设置音量大小》,那一篇文章对动态地控制音量的大小的方法作了详细的介绍,并有源程序及图片供参考。