標準聲音解決方案:背景MIDI+前景聲音(一)
背景MIDI加前景聲音是Autherware提供的標準多音同放解?方案,在各種多媒體軟件中使用廣泛,它主要是通過多媒體函數接口(MCI)來實現MIDI的播放。然而,MIDI函數不是Autherware自身的標準函數,它是由一個名為A5wmme.u32的多媒體函數包提供的。這個函數包沒有包含在Autherware 5.0中,你必須到Macromedia的網站中去下載它(免費)。
在MIDI播放函數中,最重要的是兩個函數:MIDIPlay和MIDIPlaying。MIDIPlay函數用于對MIDI進行播放,其格式為:
errorCode := MIDIPlay(fileName, tempo, wait),其中,fileName為要播放的MIDI文件名;tempo為播放的節奏,一般為100,即按標準速率播放;wait為0表示作為背景播放(圖標繼續向下執行),為1表示作為前景播放(等待播放完畢再向下執行)。
MIDIPlaying函數用于返回MIDI當前的播放狀態,其格式為:
result := MIDIPlaying()
如果返回為0則表示沒有播放,為1表示正在播放。
在MIDI播放中一個頭疼的問題是如何實現MIDI的循環播放。單純使用MIDIPlaying()函數,Autherware 并不會對它響應,解?的方法是使用系統變量:fulltime。在流程線上加入一個永久條件響應并把條件設定為MIDIPlaying()+FullTime=0+FullTime,然后在條件分支中加入MIDI播放圖標即可。
QuickTime解?方案:多聲音合成之一
QuickTime多音回放方案是Autherware提供的另一種聲音解?方案。使用前必須先在Windows里加裝QuickTime多媒體播放軟件,你可以在Apple公司的主頁去下載,如今廣泛使用的是QuickTime V4.1。由于QuickTime是Mac OS下極為重要的多媒體平臺,因此支持的媒體格式特別多樣。從MP3音樂到MOV格式的影像,甚至于連GIF格式的動畫圖像和FLASH動畫都能加以使用。而且,使用MP3等音樂不受數目限制,因而使用方便。
Autherware中自帶QuickTime的接口,可以使用QuickTime 3.0及以后的版本,然而為了使用較多的聲音格式(如MP3),應當使用QuickTime 4.0及以后的版本。使用的方法是:通過Autherware的Insert選單→Media→Quicktime 3..即可。要注意的是,Autherware V5.1中對Quicktime的支持有問題,不能正常播放。解?的方法是把5.0版中Xtras目錄下的QuickTime目錄拷貝到V5.1相同目錄下覆蓋即可。請注意:使用Quicktime后將造成Autherware自身的多媒體圖標無效果。
使用QuickTime最大的問題是對于各個音源的音量控制十分不方便,而且在較老的聲卡上,同時播放兩種音源會產生間斷性顫音現象,使用尚需改進。
DirectMediaXtra解?方案:多聲音合成之二
DirectMediaXtra是筆者接觸到的迄今為止最為完善的聲音解?方案。同樣是使用Autherware插件接口,DirectMediaXtra卻提供了近乎完美的支持。它能使用包括MP3在內的多種聲音格式,也能播放MPG文件和AVI文件。無論同時播放幾種聲音和動畫,只要你的CPU足夠快,效果都很好。
DirectMediaXtra是通過Microsoft的Direct Draw和Direct Sound功能來支持聲音和動畫播放的。因此,它不能運行在最早的Windows 95中。流傳較廣的是DirectMediaXtra v1.4和V1.5版。1.4版對于音量的大小控制還不夠完善,必須通過函數SetIconProperty(@"DirectMediaXtra", #volume,0)來設定。其中,最后的參數0表示以100%的音量播放。如果?得太大,可在-100到0之間變換,變換單位是分貝。1.5版中可以直接通過滑塊來設定音量,十分方便。
你可以到下載最新的DirectMediaXtra包,安裝在Xtras的目錄中即可使用。使用方法是通過Insert選單→Tabilero Xtras→ DirectMediaXtra。美中不足的是,要正常使用DirectMediaXtra必須注冊。
MJSAPI解?方案:背景MIDI+前景聲音(二)
MJSAPI是磨鑒室工作組出品的一個UCD外部函數插件,這是一個國產軟件。
MJSAPI提供對MIDI背景音樂的循環播放,使用非常方便,而且支持播放MIDI列表和亂序播放。其格式如下:
M_PlayMidiLoopPro(MidiListFile,Type),其中MidiListFile為一個MIDI文件的列表,其內容是一個個的MIDI文件,每行一個。Type是一個布爾變量,為false表示順序播放,為ture表示按隨機次序播放。
如果要停止播放MIDI,應該使用M_StopMidiLoop()函數。
值得一提的是,MJSAPI功能極為繁多。用它還可以制造不規則窗口和很多的新奇效果。你可以到去下載試用,最新版本為V3.35。