如何製作 8-bit 三角波?

如何製作 8-bit 三角波?

December 1, 2025

早期的家用遊戲主機礙於當時的硬體限制,通常一次只能發出兩三個聲音。例如任天堂在 1983 年推出的紅白機,APU 總共有五個頻道:兩個 Pulse Wave(duty cycle 有 12.5%、25%、50% 和 75% 四種可以調整)、一個 Triangle Wave、一個 Noise 和一個 DPCM Sample。很難想像 80 年代的作曲家只用這幾個聲音,就可以寫出豐富且多樣的音樂和音效。即便後來任天堂推出後續機種 SNES,紅白機在日本的生命週期依舊持續了 20 年,直到 2003 年九月停止生產。

一起來聽洛克人二代的音樂

感受一下作曲家立石孝為 ROCKMAN 2 譜寫的 Opening 音樂。

「冒險的序章即將展開,儘管前方道路充滿未知,也下定決心踏上旅途。」細細品嚐音樂後,內心浮現這樣的畫面。不知道其他人是否也有類似的感覺?

開場音樂後半段節奏加快兩次,最後出現的滑音有一種墜落感,銜接到下一首 Title 音樂。不覺得這樣很帥嗎?

仔細聽聽這首的小鼓,我自己覺得很像鞭子在甩的聲音。噪音頻道可以拿來模擬各種打擊樂的聲音或遊戲音效,藉此讓作曲家營造節奏律動。從網路上找到的資訊來看1,透過不同的參數調整,應該可以組合出 32 種基本噪音。

數學上完美的三角波

回到今天的主角三角波,先來看一下長怎麼樣。

再來看看數學上長怎樣。是不是有點可怕?🤯 沒關係多看幾次就不會覺得害怕了。

f(t)=4tfloor(t+34)+141f(t)=4\left|\,t-\operatorname{floor}\left(t+\frac{3}{4}\right)+\frac{1}{4}\,\right|-1

我們再換個方式看一下,是不是沒那麼害怕了?

f(t)=4mod(t+34, 1)121f(t)=4\left|\,\operatorname{mod}\left(t+\frac{3}{4},\ 1\right)-\frac{1}{2}\,\right|-1

不管害怕與否,數學上的三角波並不會幫助我們對它的聲音更加認識。還是回到聽覺上面,聽聽看作曲家怎麼使用三角波。好和弦寫的這篇文章〈合成器(Synthesizer)到底是什麼?〉有提到,當時的作曲家喜歡用三角波寫 Bassline。因為跟方波相比,它的奇數倍高頻泛音2比較弱,聽起來乾淨,不會跟其他聲部搶頻率。

NES 的三角波

接著來看看 NES 的三角波。NES 採用的晶片 2A03 產生出來的三角波其實是階梯狀3,硬體內建長度 32 的波形查詢表,播放時會按照這個序列循環讀取出來。數數看是不是上升 16 階再下降 16 階?

因為硬體實作的方式,那些超過取樣率一半的頻率都會造成 Aliasing4,干擾原本的聲音。因此,播放高頻聲音時會產生明顯的失真與鋸齒感。這種聽起來「毛邊、顆粒感和不乾淨」的感覺就是紅白機的招牌聲音,少了這一味,紅白機就不是紅白機了。

在洛克人二代 Crash Man 關卡的配樂中,三角波那一軌單獨聽起來是不是很復古?

比較一下完美三角波聽起來的版本。因為少了很多刺耳的高頻,聲音變得單薄許多。我個人比較喜歡紅白機的版本,畢竟——這世界本來就不完美。

Surge XT 模擬 8-bit 三角波

拉哩拉渣講了這麼多,讓我們來學習用 Surge XT 模擬紅白機的三角波吧!

曾經嘗試用寫程式的方式來發出三角波的聲音,但發現這樣實在太痛苦了,決定不拿石頭砸自己腳。工欲善其事,必先利其器。找來 Surge XT 這款看起來功能強大的合成器軟體,幫助我們控制電腦發出聲音。試用了一陣子,可以快速產生各種基本聲波,而且還內建一堆 Patch 讓你實驗各種聲響。這軟體不僅不用花半毛錢,而且還開源,不幫忙推廣實在是對不起自己。

對第一次接觸合成器的人來說,操作界面有點難懂,不過熟能生巧,只要掌握幾個重點也能輕鬆愉快駕馭它🤨。

官方文件有明確標示每一個區塊大致上是做什麼的,請務必前往查看,不然很容易迷失方向。

  • Header 區塊可以選擇內建的 Patch
  • Scene Controls 有各種參數可以針對目前的 Patch 做調整
  • FX 有 16 個效果器可以使用
  • Modulation/Routing 我們先不管它👻

另外,分享一下我覺得在 Surge XT 很重要的概念 Scene。Surge XT 裡面每個 Patch 可以包含兩個 Scene:AB。預設的 Scene Mode 是 Single,等於同一個 Patch 可以有兩種獨立的音色設定(包含:Oscillators、Filters、Envelopes、LFO、FX、Routing…)。還有其他三個 Scene Mode 可以選擇,同樣地,我們先不管它👻。

準備好要模擬 8-bit 三角波了嗎?

  1. 先切到內建的 Patch Init Saw
  2. Oscillator 1 類別改成 Triangle
  3. Filter 1
    • Effect > Sample & Hold
    • 調整 Cutoff 頻率
    • Keytrack 調到 100%

聽聽看是不是已經很接近紅白機三角波的聲響?老實說,打開 Oscilloscope 看波形,還是不太一樣😒。

最後,分享兩個常用的快捷鍵。Alt + K 叫出虛擬 MIDI 鍵盤。Alt + O 叫出 Oscilloscope,方便讓我們看波形和頻譜。

總結

雖然文章有一半篇幅都在講三角波,但真正目的是想讓大家了解復古遊戲(retro game)音樂的迷人之處。無論你是否經歷過 NES 遊戲時代,希望這篇文章能讓你對 NES 的音色有基本的認識。即使現代合成器軟體技術進步,限制作曲家的從來不是硬體,而是想像力和創意,以及對遊戲世界的深刻理解。