跳轉到內容

使用 XNA/音訊聲音/合成器建立遊戲

來自華夏公益教科書

合成器

[編輯 | 編輯原始碼]

如果你想建立一個遊戲,並且你思考你的遊戲應該是什麼樣的聲音,你很可能對想要營造的氛圍和聲音有很清晰的認識。
我認為有三種方法可以獲得你想要的聲音。

  1. 在網路上搜索免費的聲音,以滿足你的需求。
  2. 使用任何型別的錄音裝置(例如你的手機、帶有錄音功能的 mp3 播放器、麥克風...),出去錄製你認為聽起來很酷的任何東西,然後用錄音軟體對其進行增強。
  3. 使用合成器設計你自己的聲音。

第三種也是最後一種方法是我認為最令人興奮的方法,現在我在網路上搜索一個簡單的合成器,我可以開始我的小實驗。
我的目標(因此也是本文的目標)是瞭解如何操縱合成器的哪些部分才能獲得什麼樣的音效。

我發現一本關於合成器程式設計/聲音設計的不錯書籍[1],該書使用Native Instruments Reaktor 5,因此我決定繼續使用它並使用他們的基本合成器 Soundschool_Synth,該合成器可以從這裡下載。不幸的是,這是一個演示版本,只能執行半小時,而且你無法儲存你的快照,但它旨在演示聲音合成的基本概念,因此這正是我需要的。
讓我們啟動 Reaktor 5 的演示版本,轉到檔案開啟合奏,然後選擇 SoundSchoolAnalog.ens。你應該看到類似下面的內容




聲音是如何透過合成器的?

[編輯 | 編輯原始碼]

每個合成器都包含三到四個基本元素來塑造聲音:首先,必須生成一個聲音。振盪器負責此任務。你可以選擇一些基本波形,例如正弦波、鋸齒波或矩形波。試一試它們,聽聽它們的區別。由於我們的合成器有兩個振盪器,因此生成的聲波必須混合。為此,所有具有多個振盪器的合成器都需要一個混音器。由此產生的訊號是波形組合,它已經可以包含節拍和/或音程。此時,聲音的生成已完成,我們開始進行聲音的調製。
經過混音器後,我們的聲波的下一個站是濾波器。這裡會切斷(過濾)部分頻率,從而為聲音新增不同的音色。試用不同的濾波器特性,玩弄截止旋鈕,你就會聽到聲音的音色是如何變化的。
第三件事我們希望能夠改變的是聲音的淡入和/或淡出方式。這發生在放大器中。在這個合成器中,就像大多數其他合成器一樣,放大器不可直接看見,但它由放大器包絡控制,其中你會找到 4 個旋鈕:A = 攻擊、D = 衰減、S = 持續、R = 釋放。改變它們的值,你可以直接聽到(並在下面的圖形中看到)聲音的演變發生了什麼。
所有其他元件基本上都有改變、調節和修改這四個元素的目的。



因此,讓我們跟隨聲音的路徑,並嘗試深入瞭解真正發生了什麼,以及我們在合成器中的每個不同模組中有哪些設計機會。

振盪器

[編輯 | 編輯原始碼]

通常有 6 種不同的波形正弦三角形鋸齒形矩形/方波、脈衝和噪聲.
在我們的第一個振盪器中,我們有四種不同的波形和三個控制器來修改它們。
第一個控制器是 symm 旋鈕,它改變波形的對稱性。試一試!你有沒有意識到,如果你選擇脈衝波並將 symm 設定為 0(關閉),你將獲得一個簡單的矩形波,但是透過增加 symm,你可以修改波形的寬度,從而將其變成脈衝波?!如果你選擇三角形波或正弦波,增加對稱性將使其順時針彎曲並變成鋸齒波!
下一個旋鈕是 interval 旋鈕,它只是以音調為單位以半音的步驟對聲音進行移調。
第三個旋鈕調節調頻:如果你將其調高,osc1 不僅會生成聲音,而且其幅度還會控制 osc2 的頻率。這意味著 osc2 的頻率會更高,當 osc1 的波形為正時,會更低,當波形為負時。此功能為聲音添加了一個非常重要的特徵:顫音
讓我們做一個簡單的實驗來試一試。

  1. 對於 osc1,選擇脈衝波,並在混音器中將 osc1 設定為 0(關閉)。我們不想聽到波形,我們只是想將其用作調製器,並且由於脈衝波在正負之間快速切換,因此它是演示 FM 的最佳波形。
  2. 對於 osc2,選擇正弦波,並在混音器中將其設定為 1(開啟)。現在慢慢將 FM 旋鈕調高。現在你應該能聽到聲音中的顫動,但它會變得更加明顯!
  3. 現在將 osc1 的音程設定為 -60,將 osc2 的音程設定為 60。你在示波器中應該看到一個從
這個 切換到這個

的波形。如果你仍然不理解發生了什麼,將 osc1 設定為 1,這樣你就可以聽到我們用於操作的聲音:它是一種週期性的、非常短的聲音,聽起來就像一個節拍。現在應該一切都清楚了:當節拍聲波為正時,我們的正弦波的頻率及其聲音很高,當它為負時,頻率很低,因此我們聽到一個低沉的聲音。
第二個振盪器提供了相同數量的不同引數,這些引數與第一個振盪器略有不同。與 osc1 的 symm 控制器不同,puls-sym 控制器只是調整脈衝寬度;而不是 FM 控制器,我們有一個用於微調的旋鈕。只有當我們同時使用兩個振盪器作為聲音發生器時,微調才有意義,這樣我們才能相互微調它們。
讓我們再做一個小的實驗來了解微調可以達到什麼樣的效果。

1. 我們為兩個振盪器選擇方波/脈衝波形,並在混音器中將 osc1 設定為 1(開啟),將 osc2 設定為 0(關閉)。
2. 在鍵盤上彈奏一個音符時,慢慢地將 osc2 也開啟。如果你停在約 0.25 處,你應該能夠很好地看到示波器中的效果。
它應該看起來類似於此
兩個波形疊加在一起,到目前為止,聲音的特性還沒有真正發生變化。
3. 試一試將微調開啟會發生什麼。看起來一個波形比另一個波形更快,而且正如你所聽到的那樣,音調似乎已經開始獲得一些色彩。
4. 然後再次關閉微調,試一試音程。基本上,音程旋鈕和微調旋鈕的作用相同:它們改變波形的頻率,但微調只會產生非常細微的
變化,而將音程設定為 12(或 24)會使音調提高一個八度(或兩個)。
示波器現在應該看起來類似於此
你有沒有意識到,雖然音調相差一個、兩個、三個...個八度,但你卻聽到它們是一個音調?!

你可以隨意調節音程和失諧,甚至嘗試組合其他波形!你所體驗到的實際上是拍頻現象:當兩個頻率略微不同的振盪器相互干擾時就會出現拍頻。聲音會變得更飽滿,聽起來更生動。

同步代表同步,它是一個工具,類似於 FM,它賦予第一個振盪器一個調製作用:每當它的訊號到達起始點時,它就會迫使第二個振盪器也從頭開始。選擇一個脈衝波作為 osc1 和一個鋸齒波作為 osc2。現在增加 osc2 的音程(將其設定為 1 到 12 之間的某個值)並選中同步框。在混音器中將 osc1 開啟 0,osc2 開啟 1,你就會看到鋸齒波是如何在脈衝波每次穿過 x 軸時被中斷和重置的。


LFO 代表 低頻振盪器。它的工作方式基本上與 FM 非常相似。LFO 振盪器生成一個波形,通常頻率低於 20Hz,然後用於修改合成器中的某些元件,例如任何其他可聽振盪器(音高和對稱性)、濾波器或放大器的輸入。顯然,與 FM 的區別在於,你可以使用這個波形來修改合成器中所有可修改的元件。它的速率定義了速度(在我們的合成器中介於 0.1 到 10Hz 之間),而它的幅度(你猜對了!...)定義了調製的幅度。在我們的合成器模型中,LFO 的前三個單元(速率、波形和對稱性)描述了生成波形的特徵,而右邊的單元描述了波形調製的程度和方式。

混音器

[編輯 | 編輯原始碼]

混音器的前兩個旋鈕不言自明:它們調節從兩個振盪器中獲取的訊號量。第三個控制器負責環形調製。..這聽起來很複雜,但實際上很簡單:它實際上是兩個波形的乘積(osc1 的訊號乘以 osc2 的訊號)。將兩個振盪器的混音器設定為 0,開啟環形調製,然後嘗試不同的波形組合!

濾波器

[編輯 | 編輯原始碼]

我們合成器的 濾波器 包含一個下拉選單,我們可以在其中選擇要使用的濾波器型別,以及四個控制器。
最重要的控制器是 **截止** 旋鈕!它設定濾波器開始工作的頻率。這意味著,如果你選擇一個 低通濾波器,只有頻率高於截止值的部分被過濾,而低於截止值的頻率則不變地透過;如果你選擇一個 高通濾波器,則高於截止值的訊號透過,而低於截止值的訊號被過濾,而 帶通濾波器 過濾了高頻和低頻訊號,只讓截止頻率附近的頻帶不變地透過。
此時,我們應該看一下濾波器的斜率。在我們的合成器中,濾波器不僅在範圍上有所不同,而且在斜率上也有所不同。斜率以 分貝八度 為單位測量,告訴我們濾波器開始拉入的速率。斜率為 6dB/oct 的濾波器也被稱為 1 極點濾波器,斜率為 12dB/oct 的濾波器被稱為 2 極點濾波器,依此類推。..這就是我們濾波器名稱後面的數字所代表的意義!因此,如果你只是在 Lowpass1 和 Lowpass4 之間切換,你就會意識到,極點數量越高,斜率越大,我們就能越清楚地聽到濾波效果!
**共振** 控制器也很重要:它會提升截止頻率附近的頻率!如果你完全開啟它,濾波器就會開始自振。這是因為截止頻率附近的頻率被提升了,導致它們變成正弦波,所有泛音都被削掉了!聽到和看到這種現象的最佳方法是選擇噪聲波,將濾波器設定為 LowPass4,將共振設定為 1。因為我們選擇了低通濾波器,所以所有低於截止值的頻率都被過濾掉了,因此,如果截止值很高,就不會有任何變化。但是,嘗試降低截止值!你會發現,隨機噪聲訊號逐漸變成正弦波!
**Env** 值僅僅描述了濾波器受濾波器包絡控制的程度,濾波器包絡的目的是控制濾波效果的時間順序。再次選擇噪聲波,將共振設定為 1,將截止頻率設定為 80。如果你現在更改包絡的 ADSR 值,並將 env 控制器設定為負值,你會發現結果就好像你將截止頻率從低頻提高到 80 一樣;如果你將 env 控制器設定為正值,結果就好像你將截止頻率從高頻降低到 80 一樣。你可以看到,使用包絡的效果與使用控制器相同,而濾波器包絡則控制著音色的變化。
**K-track** 代表鍵盤跟蹤,它負責截止頻率跟隨音符音高的程度。選擇帶有低通 4 濾波器的脈衝波,將截止頻率設定為 80,將共振設定為 0.5。現在彈奏一個非常低的音符,然後彈奏一個非常高的音符,同時將 k-track 設定為 0(關閉)。我們可以在示波器中看到,高音符被過濾了,幾乎沒有泛音了,變成了正弦波,而低音符則保留了其獨特的音色和形狀。大多數時候,我們不希望這種情況發生,而是希望濾波器根據我們彈奏的頻率進行過濾。如果現在我們將 k-track 開啟 1,就會發生這種情況!

低音 高音(無 k-track) 高音(有 k-track)


放大器

[編輯 | 編輯原始碼]

正如之前提到的,放大器在合成器中並不真正可見,但它由放大器包絡來代表。這個單元的功能與濾波器包絡的功能相同,你可以修改 ADSR 值,只是它不是控制過濾的變化,而是實際調節最終可聽聲音的變化。這是聲音設計中最基本工具之一,因為它決定了聲音是短促而清脆還是悠長而舒緩。正如你所能想象的,賽車遊戲的音效的放大器包絡應該與賽馬遊戲的音效的放大器包絡有很大不同,而風聲的變化與槍聲的變化也不同!

我們不都喜歡模式嗎?

[編輯 | 編輯原始碼]

所以現在我們已經瞭解了所有不同的元件以及它們的作用,與其只是隨意撥弄旋鈕,希望偶然從機器中得到一個不錯的聲音,不如給自己一個模式(用來作為指導,當然不是死板地遵循它),以實現我們的第一個合理結果。
以下是我們應該遵循的步驟

做什麼? 在哪裡做?
1) 改變原始音色 Osc1、混音器
2) 新增拍頻和振盪器調製 Osc2、混音器、LFO、濾波器包絡->Osc
3) 修改濾波器特性 濾波器
4) 修改濾波器變化 濾波器包絡
5) 修改音量變化 放大器包絡


現在我們需要找到一個免費的合成器(類似於這個,這樣我們就可以使用我們的模式!),然後開始真正做點什麼!


參考文獻

[編輯 | 編輯原始碼]



jonnyBlu

華夏公益教科書