深入解析 MML 音樂巨集語言:晶片音樂創作的秘密武器

作者: Calpa Liu
字數:1961
出版:2025 年 4 月 24 日
MML 是專為早期遊戲機設計的音樂語言,具備簡潔語法與強大宏功能,廣泛應用於晶片音樂與嵌入式系統。本文深入解析其技術優勢與現代應用。

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 允許以多種方式輸入音符,這種靈活性使其適用於各種不同的編程風格。例如:

  1. 可以將不同聲道的音符交錯排列,如:A cd B c A efg B defg
  2. 也可以按聲道分組輸入,如:A cdefg B cdefg
  3. 甚至可以使用多行格式,增強可讀性

這些不同的表示方法在編譯後會產生相同的音樂效果,這種靈活性是 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 無疑是一個值得探索的領域。

關於 Calpa

Calpa 擅長使用 TypeScriptReact.jsVue.js 建立 Responsive Website。

他積極參與開源社區,曾在 2019 年的香港開源大會上擔任講者,提供工作經驗和見解。此外,他也在 GitHub 上公開分享個人博客程式碼,已獲得超過 300 顆星星和 60 個分支的支持。

他熱愛學習新技術,並樂意分享經驗。他相信,唯有不斷學習才能跟上快速演變的技術環境。

熱門文章

最新文章

圖片管理中心
管理圖片資源
IP 查詢
快速查詢和定位 IP 地址的地理位置和相關信息
Python 運行器
無需後端、無需登入,只需打開瀏覽器即可運行 Python 代碼(由 Pyodide 提供支持)
封面圖生成器
自動創建適合各種平台的文章封面圖
原作(青山剛昌)產生器
一鍵創建原作(青山剛昌)的封面圖
日本色彩
探索和使用傳統日本色彩
部落格內容洞察儀表板
以視覺化儀表板方式追蹤文章成效、分享熱度與分類分布,協助創作者掌握內容表現。
蒙特卡羅估算 π
使用蒙特卡羅方法演示 π 值的估算過程
LLM
使用 LLM 模型進行聊天
活動圖生成器
一鍵創建活動的封面圖
Wagmi Card
一鍵創建 Wagmi 的封面圖
Facebook Quote
Facebook Quote
Music Macro Language (MML) Studio
用程式語法編寫旋律,用音符構築想像
Blurhash
一鍵創建 Blurhash
文字分類器
使用 MediaPipe TextClassifier 分類文字
前端工程師免費工具資源
前端工程師免費工具資源
後端工程師免費工具資源
後端工程師免費工具資源
全端工程師免費工具資源
全端工程師免費工具資源
Web3 工程師免費工具資源
Web3 工程師免費工具資源
紫微斗數排盤系統|結合 AI 的命盤性格與事業財務分析生成器
紫微斗數排盤工具,輸入生日與時辰,自動生成完整命盤分析提示(Prompt)。結合最專業紫微理論與 AI 助力,助你深入解析性格、事業、財務與人際課題。免費使用,適合命理師及紫微愛好者。
PixAI Prompt 組合器|快速打造可用於 AI 繪圖的語言拼圖
使用 PixAI 卻不會寫 prompt?這個工具幫你一鍵組裝角色、表情、風格語彙,輸出高品質繪圖提示語句(Prompt),可直接貼入 PixAI 使用。適合插畫師、創作者、AI 新手與 VTuber 角色開發者。