MML 的歷史與發展
音樂巨集語言最早可追溯至 1970 年代末期,最初出現在微軟 BASIC 語言中,並在日本 8 位元和 16 位元個人電腦時代廣泛流行。早期的自動音樂生成功能被用於街機遊戲,例如 1975 年的《Gun Fight》和 1977 年的《Circus》,這些遊戲使用了許多電腦音效。
2001 年,隨著 Izumi 開發的 Music Creation Kit (MCK) 軟件的發布,MML 的知名度和使用度大幅提升。這個工具允許音樂創作者為任天堂娛樂系統 (NES) 編寫音樂,並將其編譯為 NSF 格式,從而可以加入到 NES 遊戲中。
MML 的基本語法與結構
MML 使用簡單直觀的語法來表示音樂元素。基本音符指令包括 CDEFGAB
,可以使用 #
或 +
作為升記號,-
作為降記號。R
表示休止符,而 ^
用於延長前一個音符、休止符或連音線。
控制指令則包括:O
指定八度音階,>
和 <
分別提高或降低八度,L
設定預設音符時值(如 L4
將四分音符設為預設值),V
控制音量大小,T
設定演奏速度(如 T120
表示 120BPM),以及 @
設定聲道的樂器音色。這些指令使 MML 能夠精確控制音樂的各個方面。
例子
以下是兩個 MML 範例,展示了如何使用 MML 創作音樂。
🎼 MML 範例:MyGO!!!!! - 春日影
MML@t97v10ed8cl8de.f16ed4.e4dc4de.f16ed4.e4dc4de.f16ed4.e4dc4de.l16fe8d4v12ccl8eedfedddl16ccf8e8d8d4cdl4.erl8egb+b4b+b4b+b16a16g4gdff4ee4<g>fede4gc4.r4cdc.c-16cgcf4edccc4.r4c16d16eedfedddl16ccf8e8d8d4cdl4.erl8egb+b4b+b4b+b16a16g4gdffeee4<g>fede4gc4.r4c16c16dc4cgcfl16ffedl8dccc2&cragggffeddd4ggf16f16ffeddcc16c-16c4.agggffeddd4efl16eeeel8ede>d4cc4c<baaa4.r4aagl16fff4e8efg4&g2.ededefg4fga4ab>c4dc<g4.g8f8f8e4feg4.edede8g4fga4abb+4re>e8e8.ef8e8d8d4cc-c4<g>cl8dccc4<g>dcc<g4l16g>cd8c8c8c4<g>cd8.el8dc4c<baaa4gg4ffede2.efefedc2.ff4g4>cc2.cdcdcde4dc4de.f16ed4.e4dc4de.f16ed4.r4<<e32>e16.&e&e2,t97<c2.c2l8<ab>cd4g4cc4cf4.<cg>cd4c<fc>cd4c<cg>cd4c<fc>cd4v10<fcg4b+4gfc4>d.r16<gcg4b+4g>c4c<g4>e<fc>cg4e<gdb>e4d<ecgb+4ce4cg4>e<fcb+gd4e4.g4gdcb+gd4c<g>>cdc<gcg4b+4gfc4>d4<ccg4b+4g>c4c<g4>e<fc>cg4e<gdb>e4d<ecgb+4c>c4c<g4>e<fcagd4e4.g4gfcb+gd4cg>ce4.l2.<fgeefgel8a>ec<gb+gccf>ec<f16.r32ccf>ec<fddg>d<gdddgbggcg4>cd<gcc4b+afeegbgeeea>cd<gcg4>cd<gccb+ee>e<eeb>e4<bee4>cd<acc>cfc<fdd>dgd<g16.r32ccg>cc<g16.r32c>cegc<gcc>cfc<fddb>d<bggg>cdc<gcab+ddb+cb+16c16g>d4c<fab+frbgb+16c16g>d4c<fab+grb>c2.c2<ab>cd4g4cc4cf4.r.<c16&c4&c2,t97<g2.<f2r>g8r2r8<fl1rrrrr.r4v10e4rrl4>cr2cr2.r8<b8ra.dr1r1r1.r.er1r1b+r2er2.r8b8ra.d.r1.l2.>crd<a>crdl8gr4dr4<fr2rfr2rgr2rgr4>dr<dr4.>er4<fr4>fr4<gr4>dr4<ar4>er2rer4<fr4br4gr4>g4r<ar4>er4<fr2rgr2rgr2rgr2rfr2rgr2rcr2rfr4gr4gr4>d4<ccr4ddrcr4c4ccr4ddr>g2.<f2r4>gr2r<f4r2r.l32rg&g4&g2;
🎼 MML 範例:孤獨搖滾OP-青春コンプレックス
MML@r1t190v10>f1&f2.rl8<dcdardrcrdre16f16edc<a>dcdardrcrdre16f16e4r4dcdardrcrdre16f16edc<a>dcdardrcrg>d<aga16g16f4dcdardrcrdre16f16edc<a>dcdardrcrdre16f16e4r4dcdardrcrdre16f16edc<a>dcdardrcrdra2&a>fl32d.fd.l8cd4c<ag+gfgagfrcc+fa+>c+4c<a+a1&a<ddrara+red4r>cd<araddrara+rer>>fd<g+baba<ddrara+red4r>cd<ara>fffd4dddn34c+<g>f4<gn49gr1ffffaaaaaaaaa+a+a+a+aaaaaaaa>ccccccccddddrg4dc+defr>c+4.<ddddddd4d+d+d+d+d+d+d+4<ffffaaaaaaaaa+a+a+a+>ffffffddeeeecccc<dddg4<g>g<ga>c16.>c32dc4c<gd>ffffaaaafrfrff4.>cccccccccccccccc<gggggggg>cccc4<g4.l2dfegl8defgra4rd<d+d+>d4dd4>cccccccccccccccc<gggggggg>cccc4<g4.<dddg4<g>g<ga>c16.>c32dc4cc4ffffaaaafrfrfc4.b+4r<g4gfg4fga4c4dl16ffffggggaaaa>ccccdddddddd>eeeeeeeel8<dcdardrcrfrerc4.ccreerff,r1v10o2c8rc8rl8n22r1rf1l1.rrrrrrrrrr2l8r>fgcd<gab+<a+a+ra4ar>d4>dr<ga>cdfn32d<g+grgrf4erdrc<a4a+a+ra4ar>cddrgrgd4<a+a+ra4arar>drga>cdf<<a+a+ra4ar>d4>drc4<ga4gdg16.g32araraa+fa+r>c+c+<a+4r1<a+4a+a+a+a+a+a+aa>ag4geeddddddddddffgg+a4<g4gg4ggg>c+c+c+g4gc+c+>d4<<eeffaa>d+d+ffga+g4<a+4a+a+a+a+a+a+aa>a4g4e4ddddddddffggaab+4<g4gg4ggga4aa4aaaa+a+a+a+a+a+a+a+>crc4rcc4<a+4a+a+a+a+a+a+a+a+a+>d4fga+<a4aaaaaa>ddffgga4<g4gg4ggg>c+c+c+g4gc+c+>d4<<eeffaa>d+d+ffga+g4a+a+aaggff<a+a+>ccdfc4<aaaaaaaa>>d4<<eeffaag4gg4gggaaaa4aaaa+4a+a+4a+a+a+>>cc<ffgb+g4<a+a+ra4ar>d4>d4<ga>cdf<g>d<ga4a4da>d4c4gf4r1.<c2ddr<eerff,l1.rrrrrrrr4.v10l8<a>fffffedcd4cr<a4ra>fffffedcd4c4d4r<a>f4fffedcd4cc<a4ra>ffffffa4g4<aa>e4d2.r1r1r1r4.<a>fffffedcl4dc<ar8a>fl8ffedcddc4d4r<a>fffffedcddcc<a4ra>ffffffaa+l4agfgr1l2adga+al4rfb+a+agf8f8frfefrfgfga2a+a8g8rl2adga+al4rfb+a+agf8f8frc8ee8frfgfgfgag8f8fl2adga+al4rfb+a+agf8f8frf8f8efrf8f8gfga2a+a8g8rl2adga+al4rfb+a+agf8f8frc8ee8frfgfgfgag8f8fl1.rrrrr1;
MML 的技術優勢
強大的宏功能
MML 最顯著的優勢是其強大的宏功能,這也是其名稱「Music Macro Language」的由來。宏允許定義一次關鍵序列和複雜的操作序列,然後在整個音樂作品中多次調用它們。對於習慣於使用模組追踪器 (trackers) 的音樂創作者來說,這是創作晶片音樂時的巨大優勢。
例如,如果希望每個音符以 50% 方波開始,然後迅速跳至 25% 脈衝波以模擬鋼琴般的「叮」聲,在追踪器中需要在每次輸入音符後的後續行中更改樂器,這極其低效。而在 MML 中,只需要定義一次這個音色變化序列,之後就可以輕鬆地在整個作品中重複使用。
靈活的音符輸入方式
MML 允許以多種方式輸入音符,這種靈活性使其適用於各種不同的編程風格。例如:
- 可以將不同聲道的音符交錯排列,如:
A cd B c A efg B defg
- 也可以按聲道分組輸入,如:
A cdefg B cdefg
- 甚至可以使用多行格式,增強可讀性
這些不同的表示方法在編譯後會產生相同的音樂效果,這種靈活性是 MML 相比其他晶片音樂創作技術的主要優勢之一。
通道組合功能
MML 允許將多個聲道鏈接在一起,同時調用它們,使單個音符或指令串可以在所有這些聲道上播放。例如:
ACE cdefg
與下面的代碼效果相同:
A cdefg C cdefg E cdefg
這種通道組合功能大大簡化了多聲道音樂的創作過程。
跨平台相容性
MML 在不同平台和設備之間具有良好的相容性。多種遊戲開發商使用自定義形式的 MML 為其遊戲創作音樂,這些 MML 版本幾乎可以用於每一種早期視頻遊戲機和家用電腦的音頻晶片。
對音樂參數的精確控制
MML 提供了對音樂參數的精確控制能力。創作者可以精確地定義音符的音高、持續時間、音量變化和音色特性等參數,從而實現對音樂表現的細緻把控。
適合小型系統與晶片音樂創作
MML 特別適合在資源有限的系統上創作音樂,如微控制器和早期遊戲機。例如,μMML(Micro Music Macro Language)是為 AVR 微控制器設計的 MML 實現,可以讓創作者使用最基本的元件製作出運行在單個紐扣電池上的嵌入式音樂播放器。
MML 在現代的應用
儘管 MML 起源於 70、80 年代的早期計算機時代,但至今依然在多個領域中扮演著重要角色。最具代表性的應用之一,是在 ROM 修改(ROM Hacking)領域中,MML 經常被用來替換經典遊戲的背景音樂,例如《塞爾達傳說》、《耀西島》與《超級馬里奧世界》等。透過 MML 語法與工具,玩家與創作者能自訂原本遊戲中的音樂素材,創造屬於自己的復刻或同人版本。
同時,在晶片音樂(chiptune)創作圈,特別是日本的 8-bit/16-bit 音樂愛好者中,MML 仍被廣泛使用。許多電子音樂人會透過 MML 編寫曲譜並編譯成 NES 的 NSF 音樂檔案,搭配專用播放器進行演出與發表。MML 簡潔的結構與強大的宏擴充性,使其成為在資源受限的晶片或模擬平台上創作音樂的最佳工具。
更值得一提的是線上遊戲《瑪奇 Mabinogi》對 MML 的現代應用與推廣。遊戲內建完整的 MML 編輯與演奏系統,玩家可撰寫三聲部的樂譜,並於遊戲中透過角色演奏樂器重現旋律、合奏乃至即興表演。這項設計不僅培養了一批遊戲內外皆精通 MML 的玩家社群,也促成了大量以 MML 為載體的音樂創作分享與交流,成為少數將「音樂語言」真正落地為遊戲內創作引擎的成功範例。
結論
音樂巨集語言 (MML) 作為一種專為電腦和視頻遊戲系統設計的音樂描述語言,憑藉其簡潔的語法、強大的宏功能、靈活的音符輸入方式、良好的跨平台相容性以及對音樂參數的精確控制能力,在數位音樂創作領域,特別是晶片音樂創作領域佔有重要地位。
對於習慣於使用追踪器的音樂創作者來說,MML 提供了一種更加高效的音樂表達方式,特別是在處理複雜的音色變化和多聲道音樂時。而對於資源有限的系統,如微控制器和早期遊戲機,MML 則提供了一種輕量級但功能強大的音樂創作解決方案。
在現代,隨著對復古遊戲音樂的興趣不斷增長,以及 ROM 修改和晶片音樂創作社區的活躍,MML 仍然保持著其獨特的技術價值和歷史意義。對於想要深入了解數位音樂創作歷史或尋求高效率晶片音樂創作工具的音樂家和程式開發者來說,MML 無疑是一個值得探索的領域。