電腦音樂格式之爭——MIDI與Tracker(下)
上集請看:電腦音樂格式之爭--MIDI與Tracker(上) - 知乎專欄
然後我們來說說Tracker!
那麼Tracker和MIDI的區別究竟是什麼呢?其實他們之間有著一些根本的區別,主要有:
- Tracker將樂器的數據與音符的數據存儲在一起。一般來講樂器的音色被嵌入在Tracker軟體所使用的「模塊」(module)文件當中。不過有一些早期的Tracker是將樂器音色存儲在單獨的文件中,並在主文件中引用他們,這樣的話可以更容易的讓一張磁碟上的多首歌曲同時使用一組音色。
- 音符被以「圖案」(pattern)的形式輸入並組成一張存儲音符的二維矩陣。一個「圖案」通常是一小段音樂片段,這些圖案被以一定的順序輸入,從而構成了樂曲的順序,在音樂中,一個圖案可以被使用許多次。
- 圖案中的每一列則是一個「通道」(channel),每個通道被直接映射到音頻硬體的一個和弦,而每個通道都是單聲道的,這符合音頻硬體的一般特性。
- 而圖案中水平的行則代表著時間線。時序通常與幀率同步(在不同的硬體系統上,這個頻率可以是50、60或70赫茲),而樂曲的節奏也以每一行有多少幀來決定。
這聽起來是不是受到了諸多的限制呢?沒錯,就是這樣,這確實有些不合常理。相比MIDI這種「高級」的音樂數據解決方案來說,Tracker可以提供非常高的靈活度和精確性。如果你把MIDI看作是C語言,那麼Tracker就像是彙編語言,再或者說,你可以把MIDI想像成HTML,它描述了每個部件在頁面上的位置,並大致的描述了布局,但由於不同的瀏覽器、屏幕尺寸、安裝的字體等因素,都會讓一個頁面在不同的場合下略有不同。而Tracker就像是PostScript或者PDF一樣「精確地」描述了頁面的外觀。接下來讓我們詳細的了解下Tracker的這四大特徵。
文件內的樂器數據
最初Tracker僅僅是用於特定硬體的音樂編輯器,大多數情況下被是C64和Amiga電腦所採用。而Tracker軟體也通常針對特定的硬體功能所開發,這樣造成的一個結果是,Tracker模塊通常只能在特定的硬體(或他們的模擬器)上播放。不過由於Tracker文件內同時包含了完整的音符和樂器數據,實際上Tracker文件完整的定義音樂的演奏效果,而不是像MIDI文件和通用MIDI標準那樣僅僅描述了樂曲中使用某個樂器是「鋼琴」或「吉他」這樣籠統的信息。
最流行的Tracker音樂製作方法,是使用Amiga電腦及SoundTracker、NoiseTracker和ProTracker等軟體。在本文的上半部分,我曾經提到了Amiga電腦上革命性的Paula聲音晶元。由於這款晶元可以支持四個數字聲音流串流,因此在Amiga電腦上。播放模塊音樂要在方式要比其他的電腦平台如PC或者Atari ST更加容易。
以「圖案」輸入音符
在前面我或多或少的已經提到了這一點,Tracker使用圖案序列來製作音樂,我想對於解釋圖案這個概念來說,一張好圖勝千言:
如果你熟悉鼓機軟體的話,其實你已經在使用類似的方式進行創作了。一個「圖案」就是音樂中一個段短暫的切片,通常只包含幾個小節,而一首完整的歌曲正是由一系列圖案所組成的「序列」構成的,在一首歌曲中重複使用相同的圖案,可以節省製作的時間和存儲音樂數據所需的空間。
圖案通常是以垂直方式排列的,多數軟體會有64行來擺放音符。這些行代表著樂曲的「節拍」,這取決於你設置了多快的播放速度(速度越快,單位時間內播放的行數也就越多)以及樂曲的「密度」。舉例來說,你可以在一個圖案中擺放四個小節,而如果以原來的兩倍距離擺放音符,並將速度播放速度設置為原來的兩倍,那麼它們聽起來就會是一樣的。雖然此時同樣的64行只能放下兩個小節,但也因此獲得了更高的「解析度」,即在同樣的播放時間裡,可以容納之前兩倍數量的行數。
「圖案列」既「和旋」
這可能是MIDI和Tracker之間最大的不同了:Tracker中的任何的複音都是明確定義的,每個通道(Channel)都是單聲道,並直接映射到硬體上的一個和弦(voice),這種設計非常適合於和弦數量非常有限(C64隻有三和弦,而Amiga只有四和弦)的聲音晶元。而MIDI僅僅是簡單的發送音符起止事件,再通過解釋器將MIDI事件轉換為硬體內部的信號,因此硬體需要決定如何分配和弦,而當遇到音符開啟時沒有更多和弦可用的情況時,硬體就會自行結束正在演奏的某些音符。
對於Tracker來說,由於你已經明確地定義了每個音符所使用的通道和和弦音色,也因此可以確定的知道哪些音符應該被啟用而哪些應該被禁用,這樣音樂的作者就可以更加高效地利用有限的通道數量,另外音樂作者也可以將旋律和低音部分交錯(weave)在一個通道中,比如說RobnHubbard的這個例子,從4分03秒開始:
International Karate_騰訊視頻 https://v.qq.com/x/page/x0520qnv6z2.html?start=243在段落的開始,僅有的一個通道將鼓聲和旋律交織在一起,接下來第二個通道加入了低音和更多的打擊樂。然後,第三個聲道帶入了主旋律和更多的修飾。音樂家使用一顆僅有三個通道的晶元,演奏出超過三個聲部的音樂效果。而這正是通過針對硬體特性進行的人工優化,對每個音符進行巧妙的擺放而完成的。
這裡有另外的一個例子,來自芬蘭著名Demo團隊Future Crew的Purple Motion,僅僅使用了兩個通道就完成了這首歌曲。
Zak-zaka-zak-zak_騰訊視頻 https://v.qq.com/x/page/h0519qxtr73.html下面的一段視頻中他同樣只使用了兩個聲音通道,通過合理的優化展現出非常精彩的聽覺效果。
Minimum Velocity_騰訊視頻 https://v.qq.com/x/page/s0520a2c0mu.html上面的幾個例子,恰到好處的展現了Tracker在開發者手中是何等強大的創作工具。
圖案中的水平「行」構成的時間軸
這一部分並不直接關係到音樂,卻與創作的效率和優化息息相關。你可能記得我在更早些時候曾經寫過關於圖形編程和「與光賽跑」般的極限優化相關的文章。自然而然的,人們也會希望在遊戲和Demo中加入音樂,並且希望音樂程序的加入不會打斷在屏幕上繪製像素的速度。因此開發者們希望能夠發展出一種聲畫同步的方法,這正是Tracker的時序通常於顯示器刷新率相關的原因。
舉例來說,Amiga電腦上的Tracker通常以50Hz(PAL制式)的頻率運行,也就是說,遊戲和演示引擎可以簡單的在繪製每一幀時呼叫一次聲音程序,而速度指令則可以控制播放每一行所使用的幀數,如果你設置速度為6,那麼音樂程序就會倒數6幀之後才會處理下一行。
你可以選擇在某一幀的中間呼叫音樂程序,你可以在光柵掃描事件中保留一個時槽,通常是垂直掃描間隔中的某個時間點來播放音樂。也因此我們知道這代表了音樂程序在一幀中的其他時間不會做任何事情,因此你可以按照自己的喜好精確的定義代碼的周期。音樂以行為單位被明確的組合在一起和進行同步,讓播放過程對CPU的使用非常的高效而且可控。播放音樂所需要的時間可能僅僅與繪製幾條掃描線的時間相當。
而對於普通的MIDI來說它們就沒有這樣的本領。MIDI有著非常精確的時序,幾乎每一首MIDI歌曲都不可避免的在一幀中處理多個MIDI事件。圖形程序員乎沒有可能知道下一條MIDI事件發生的實際。這也是為什麼遊戲開發中經常對MIDI進行向下量化(quantize)的原因。不過將所有的MIDI都量化為50或60赫茲的效果並不理想,因此通常會使用更高的頻率,通常是200~700赫茲之間。如果你不追求「與光賽跑」的話,這是一種可以接受的妥協。
讓我們再回來討論下UltraSound音效卡
上面這些Tracker音樂獨有的特性和優點解釋了為什麼Tracker在Demoscene社區如此流行的原因。也由此可以推斷出為什麼Demoscene也同樣熱愛UltraSound音效卡:這塊音效卡看起來就像是為播放基於採樣的Tracker模塊「量身定做」的一樣。ProTracker軟體僅僅依靠四通道和8-bit採樣就已經可以製作出相當精彩的音樂,雖然在PC上使用軟體方式混音需要消耗不少CPU資源。
但UltraSound有著多達32個聲音通道,支持16-bit採樣精度,以及更加強大的:高質量的硬體混音,這讓它可以與Amiga電腦一樣在播放音樂時基本不需要消耗CPU資源。UltraSound就像是一塊「Tracker加速卡」。如果你聽過上面那些使用C64或Amiga電腦上原始的聲音晶元所發出的2通道或3通道音樂,你就可以想見UltraSound音效卡所具備的巨大潛力。
UltraSound的主要問題在於缺少足夠的遊戲開發者為其進行適配,這確實有些奇怪,在Amiga電腦上,多數的遊戲音樂都使用了某種流行的Tracker進行創作,大部分是ProTracker。曾經我們以為UltraSound也會是類似的情況。但由於種種原因,許多開發人員僅僅將UltraSound作為MIDI設備使用,因此UltraSound在遊戲中的表現並不像在Demoscene中那樣令人印象深刻。
因此,我們來聽一下當時我最喜歡的兩段Demo音樂,他們代表了UltraSound在Demoscene社區中所展現出的最高水平。首先是傳奇般的《第二現實(Second Reality)》中優秀的配樂(可以說是這段Demo的亮點),它「僅僅」使用了8個通道:
Second Reality by Future Crew_騰訊視頻 https://v.qq.com/x/page/y0520xcio5q.html然後則是Triton的《水晶之夢II(Crystal Dream II)》中精彩的Tracker音樂,我猜測它可能同樣「僅僅」使用了8個通道,至少我可以確定它一定沒有使用UltraSound提供的全部32個通道(你可以注意到設置菜單中顯示的音效卡型號正是UltraSound)
Crystal Dream 2 by Triton_騰訊視頻 https://v.qq.com/x/page/g0520vvygl7.html有趣的是,這兩個Demo團隊都開發了自己的Tracker軟體。 Future Crew開發了Scream Tracker,而Triton則開發了FastTracker。這兩款軟體在後來成為了PC平台和UltraSound音效卡上最流行的Tracker軟體。
那麼是誰笑到了最後呢?事實上是沒有,UltraSound出現的有點太遲了。 至少有三個重要的技術進展,或多或少的導致了UltraSound的淡出:
- CPU性能迅速增長,並強大到足以在後台實現32通道混音,16-bit採樣精度和線性插值等功能。這讓任何具備16-bit DAC的音效卡如 Sound Blaster 16或Pro Audio Spectrum 16)都可以以和UltraSound幾乎相同的音質播放Tracker音樂。
- CD-ROM進入主流市場,許多遊戲開始僅僅使用CD音軌作為音樂,任何音效卡都無法在這一領域展開競爭。
- 遊戲從DOS平台遷移到Windows平台。在DOS下遊戲可以直接訪問音頻硬體,而Windows中音頻硬體則被抽象出來,並必須通過API進行訪問。但這種API並不特別適合像UltraSound這類基於RAM的波表合成器,這讓開發者們被拘束在通用MIDI的世界中。
而上面所講到的第二點也至少在遊戲領域宣告了MIDI使命的終結。遊戲配樂被事先「預製」在CD音軌或CD上的數字音頻文件中,再串流到16-bit立體聲DAC解碼。在這一流程中MIDI同樣沒有它的一席之地。
最早支持CD音軌的遊戲主機TurboGrafx-CD
可以說,在那之後通用MIDI同樣也過時了,它可能仍然是被市場所認可的標準之一,但我不認為人們會出於在電腦上聽音樂的需求而使用它,因為它從來沒有表現得非常出色。
MIDI標準本身仍然被用作連接合成器和其他設備的基礎,同時大多數的數字音頻工作站(DAW)軟體都支持導入及導出標準MIDI文件。當然,這類軟體通常具有自己專用的內部格式,這些格式可能包括了對MIDI的擴展,或是數字音軌信息。今天你在收音機里聽到的許多歌曲中,都可能使用了某些MIDI技術進行創作。
而Tracker技術也同樣被人們所使用,不僅僅是Demoscenes社區,也包括了「晶元音樂」社區,從某種程度上講,「晶元音樂」社區是從Demoscene社區中所分離出的一部分。許多音樂家仍然會定期的發布Tracker歌曲,而許多愛好者也仍然喜歡收聽Tracker音樂。
Professional Tracker_騰訊視頻 https://v.qq.com/x/page/l0519tlzlut.html推薦閱讀: