Max/MSP與spat 空間聲響實作——繞圈跑步的人

Spat 是一款由著名的法國媒體聲音研究中心IRCAM 所開發的可用來模擬空間聲響(spatial audio)的套件。這個套件可以用Max/MSP的程式計算即時控制一個多聲道的環境中,模擬聲源在空間中的位置、空間殘響等物理數據,來製造宛若真實的聲響環境,可以被應用於聲音劇場、虛擬實境等讓觀眾身歷其境的體驗作品。今天,鴨編就用一個簡單的Max/MSP 與Spat的實作教學,帶大家認識 Spat 的功能。

這個教學中,你需要:

  1. 一台安裝有Max 程式和Spat的電腦。
  2. 一對值得信賴的喇吧。或電腦自己的喇吧和一對值得信賴的耳機也行。

如果以上都有了,那我們就開始今天的教學吧!

第一步:創建喇吧與聲音環境

打開一個空白的Max patcher,然後創建這幾個物件並連好。

Spat適用於多聲道的環境,因此為了精準的空間聲音表現,必須先知道喇吧的數量以及他們的位置。

喇吧數量/speaker/number 是以message box 的形式輸入進 spat5.speaker.config這個物件裡,其為最關鍵的設定物件之一。

我們可以先進入鎖定模式(左下角的鎖頭鎖起)然後按下/speaker/number 的message box 後在spat5.speaker.config上點兩下,會看到一個彈出的視窗:

這個視窗可以看到message box上設定的喇吧數量。畫面的正中央是預設的觀者的位置(俯視圖),用滑鼠拖曳喇吧圖示(黑色長方形),可以改變喇吧的座標。可以把喇吧們拖曳到與現實世界的音響相符的位置,到時播出聲音時以達到最還原的空間效果。如果想要精確的話,建議用視窗最上方的欄位打入絕對位置設定。

完成之後,可以先把視窗關掉,然後按下/preset/exxport的message box,可以將本次的喇吧設定位置檔案輸出,之後關掉程式再打開使用,只需將設定檔用/preset/load輸入就行了,不用再重新輸入。

然後介紹第二個關鍵物件:spat5.oper

這個物件點兩下,也會看到一個視窗:

突然看到好多控制項目和旋鈕,先不要緊張。右邊的像是座標圖的東西,中間的灰色圓球就是觀者的頭頂位置,你也可以看到剛剛設定的音響們,周圍的淺灰色範圍就是聲音可以活動的聲響環境。綠色標號1的球球,就是預設第一個音源,在觀者的正前方1公尺的位置。

這時,如果我們按下/source/number 2 的message box,會看到畫面中的綠色球球變成了兩個。這就是將音源加入環境的方式,要多少個音源,就在/source/number 的後面打對應的數字。

不過因為我們是用一對喇吧作為聲音輸出,所以我們可先回到patcher,將/speaker/number 6改為 /speaker/number 2。

第二步:將聲音加入環境

回到patch的畫面,打開鎖頭,然後將想要播放的聲音拖曳進來。當然可以使用Max/msp振盪器產生的聲音,但是這次我想用一個慢跑的人的腳步聲來玩。

先把音檔物件的輸出連接至 spat5.spat~ 物件上方,並把spat5.spat~下面的前兩個洞連至dac~輸出。

我們的spat5.spat~物件後面的一串設定是這樣的:

@inputs 2 指的是兩個音源,即要進入環境的聲音數量。有多少個音源,spat5.spat~的上方就會有多少個接口。第一個音源用第一個接口,第二個音源就使用第二個以此類推。連接的順序是對應到spat5.oper裡綠色球球的編號。

@outputs 2 指的是喇吧的數量。有多少喇吧,spat5.spat~物件下方就會有對應新增的洞,可以連到dac

@rooms 1 指的是要套用第一個空間設定(待會會提到)。

做到這樣,我們可以先將音檔循環播放,確定聽到聲音後,再次打開spat5.oper。

第三步:玩聲音

我們打開oper之後可以先試著用滑鼠拖曳綠色的球球。如果音檔連接的順序在spat5.spat~上方由左數來第一個,那就是對應到編號一的球球。

我們可以在拖曳的時候,觀察喇吧或耳機裡的聲音變化,和左邊那些旋鈕下數值的變化。在拖曳的過程中,應該大概可以感受到聲音方位上的變化了。

oper的版面有簡單的濾波器功能,可以用來調變聲音的質地,像是讓腳步聲聽起來從在水泥地上跑步聽起來更像在雜草小徑上。但我們先將注意力放在與聲音的空間表現上相關的功能。

在Position/ Orientation/Diffusion裡,一邊拖曳綠球,可以看到有主要兩個數值在變化:azim 和 distance

azim就是綠色球球在空間中的角度位置,由0度為正前方、90度為正右邊、180度為正後方、-90為正左邊。而distance就是該球球與觀者的(半徑)距離。這是這次教學未用到的兩個主要數值,像其他的yaw改變的是音源自身聲音播放的方向,aperture對應的是音源自身播放範圍的發散或集中。

我們現在設定的東西是屬於音源1,如果是多個音源的話,上方的標籤會有S2、S3以此類推,至於關於空間殘響、空間大小等設定,可以點開上方S1旁邊的R1做調整。

這個R1對應到的就是文章先前提到的spat5.spat~物件裡的 @room 1。

第四步:用數據讓聲音走位

理解程式的運作方式後,我們就可以使用Max本身的運算功能來讓聲音有走動的效果,增加戲劇感。

以鴨編的想法為例子:我希望這個慢跑的人,從我的正前方遠處慢慢跑向我,然後繞過我半圈之後,往我的左後方離開。

如果是這樣的話,我們要做的第一件事是摸清楚spat的「咒語」怎麼使用,才能命令他做出想要的指令。

這時,我們可以對著spat5.spat~物件在鎖定模式點兩下,會看到又又又一個視窗。

這個視窗裡可以看到目前所有oper裡可調變的數據的狀態。裡面的指令整齊的遞疊,這就是spat的「咒語集」。

所以,設定「跑者的位置在我的正前方遠處」,可以這樣寫:

用一個message box的方式將指令傳給oper。

/source/1/azim 0 就是「第一號音源,在角度0的位置(正前方)」。

/source/1/dist 10 「第一號音源,在距離觀者10公尺處」。

記得,指令的message box 要按下去才會起作用。可以先進oper的視窗把1號綠色球球亂拖曳後,按下message box 觀察有沒有歸位指定位置,如果有的話就是成功了!

既然起始點設定好,我們可以進行第二個指令:「跑者向我跑來」。

我用一個最高值為90的Slider物件控制數據,將/source/1/dist/的數據控制為從十公尺處慢慢地簡直到聲音離聽者只有一公尺。

其他指令也可以用同樣的邏輯。

以下是小編加上一些自動化的機制後的成果:

有這個插件,除了可以製作聲響劇場外,也可以幫影片的音效更有空間感,更身歷其境。看完教程之後,是不是躍躍欲試了呢?

spat 的官方載點:https://forum.ircam.fr/projects/detail/spat/

如果想要體驗演算聲音的樂趣卻沒有Max/MSP的話,也歡迎透過我們購買 Max/MSP的軟體喔!

Leave a Comment

發佈留言必須填寫的電子郵件地址不會公開。

相關文章

回到頂端