這絕對是未來最主要的發展跟研究目標
把聽覺世界 與視覺世界連結在一起
就像狄卡兒發明了直角座標 把代數圖形化一樣偉大!
因此 我們可以直接看到 摸到 操控到 一個"聲音物體"
直接利用視覺圖形介面 來達到聲音的編輯 以及雕塑
聲音不再是單純的抽象語言與物理能量
要能從 傳統音樂的抽象符號世界裡 蛻變到具象音樂的直觀世界 最後
再進階到 超越空間與時間的超現實世界
這聽起來就令人興奮!
我們說 傳統的音樂 或是西方古典音樂 音樂的本質是抽象的 是符號化的 無論從調式音樂 複音音樂 到調性音樂 多調性音樂 甚至是無調性音樂 只要是記譜音樂 基本上就是符號 而符號的意義 就是一種抽象的理解 這整個抽象理解 延伸擴大到整個音樂聆聽美學 因此 所謂的"樂音" 與 "噪音" 的分別 就建立在這個符號編排之上 是否讓人喜歡 讓人覺得難以忘懷 就考驗作曲家的功力
但是一直到了未來主義的噪音宣言 認為所有的聲響 都可以是成為音樂的一部分 便開啟了直觀世界的大門 而真正成熟期 在於具象音樂理念的提出與實踐 通過科技的進步 人們可利用更好的器材 來達成以往做不到的事情 錄音技術的發展 提供了具象音樂有力的後盾 因此 我們可以專注於聲響上的趣味 而逐漸跳脫 以符號 音高 節奏 曲式 對位 和聲 結構等等抽象元素所組成的傳統音樂美學 更直接的面對聲響
但是 無論具象再如何具象 終究還是聲音 人類對於聲音的理解本質 基本上就是很抽象的 也似乎不太在乎是否為"符號"或是"直觀具象" 畢竟 語言的本身就是一種符號化 將抽象符號思想轉換到具象直觀的思想 並不能說他是一種"進步" 頂多只能說是一種探索與開發 全面否定傳統符號抽象概念並不正確
因此 下一步要往哪裡走? 看來聽覺視覺化 是能賦予聲音真正血肉的途徑 他以具象音樂為出發 不排除抽象符號 但徹底的將聲音 與視覺形體連結 因此聲音開始有了形體化 有了生命 是一個完整的存在了 透過玩弄這些形體 我們可以更專注於 時間與空間的操作 以及與人之間的互動
2010年1月11日 星期一
關於都普勒效應 doppler effect
Spatialisation領域裡面 或者是多聲道控制領域裡 很重要的一門課題 就是虛擬音源的設立模擬
由於並非所有的錄音 都是以既定的多聲道規格 去收音的 因此 在事後製作 以及重新模擬一個虛擬的音源 及相關的音場 變成了異常的重要
大部分的空間處理 或是模擬軟體 都一定會牽涉到多聲道編解碼的問題 也就是說 當一個虛擬音源 被放置在一個虛擬的音場空間內 其單一訊號 要如何分配到相關再生重建此音場的喇吧的一個重要問題
別以為這樣多了幾顆喇吧 好像 就只是兩倍或三倍於傳統立體聲的數量 因此 仍然從立體聲的觀點去看待多聲道控制 其實 整體的複雜程度 應該是指數成長 而非倍數
大部分的3D AUDIO 多聲道 spatialisation處理 都會牽涉到兩個層面 (或者是說 分成兩種層面來解釋 會比較好理解) 第一 就是所謂 要實現聲音定位感 第二 要能實現聲音的空間感
事實上 以目的而論 完美的模擬音源再生 當然都是結合了好的定位跟空間資訊 缺一不可 不過 在實行上 我們還是會將兩者分開來處理 會比較方便
而定位感的部分 所謂的sound localisation 會從兩個因素上去判斷 一者為ILD (interaural level difference) 另一者為ITD (interaural time difference) 白話的說起來 就是音量差距 跟時間差距 因此 兩耳之間的音量差距 或是時間差距 造就了人類去分辨音源的來源及定位
而在多聲道實現上 雖然整個概念 以及數學模型 跟立體聲有很大的差距 可是若以定位目的來看 大致上 仍舊會在ILD 跟ITD上下手
純粹以ILD來做多聲道PANNING的規格 所要解決的問題 就只是要去解決多個喇吧 所建構起的音場內 聲音的平均分布以及合理性 代表作如ambisonics 跟VBAP (vector based amplitude panning)
但是若要考慮到ITD 更多的問題 就來了 簡單的說法 我們僅需要額外再考慮 每個聲道 或是喇吧之間的細微時間差距即可 但是 實際上操作起來 並不是這麼一回事
假設 虛擬的音源 是靜態的 不會移動的 那還好處理 若一個虛擬音源S, 在N顆喇吧所組成的音場內 則每個喇吧 SPn 所會擁有的ITD 則會根據音源S的位置而定 依序可得 SP1=若干ms的delay,SP2=若干ms的delay,SP3......SPn=若干ms的delay
但是 如果今天 虛擬的音源 是會移動的 問題就大了 我們無法在單純的僅用幾何上的算術 就把相對應的SPn的delay給算出來 因為 這變成 每個SPn的時間差 隨時都在變動
這樣說起來 好像沒什麼大不了 可是請仔細想想 所謂的一個虛擬音源 其聲音來源 不外乎兩種 1.外部的麥克風 或是音訊音源 2.現成的聲音檔案
假設此虛擬音源 是靜止的 那麼 我們只要令 SPn中 delay最小的 甚至沒有delay設定的喇吧 先開始播放此音源 然後 依據每個SPn的延遲 依序播放下去即可 比方說 第一個喇吧 有1ms的延遲後 開始播放此音源 而第二個喇吧 再等1ms的延遲 第三個喇吧 再等1ms..... 一切都可以運作很正常
若假設 此虛擬音源開始移動 變代表著 每個SPn的延遲開始有了變動 回到剛才的假設 第一個喇吧會從1ms的延遲 經過0.5秒後 增加到2ms 問題來了 請問 在這0.5秒的時間內 此虛擬音源的訊號 要怎麼處理呢?? 對於SPn來說 訊號從一開始產生後 就必須是連續不斷的 線性的 因此 根本不可能 從1ms 突然跳到xxms的時間差 要達到這樣的目的 等於是要硬生生的將音源(無論是聲音檔案 或是現場的input)切成兩半 從新的時間點繼續播放 否則不可能改變時間差 但是 這樣就會出現一個很不合理的現象 : 在自然生活中怎麼可能有聲音 會突然斷掉 跳到另一個時間點上去呢? 非線性在日常生活中 是不可能存在的
因此 我們必須重新回頭思考 一個"移動中"的音源 在現實生活中 會有什麼樣的情況發生 於是 就不得不去重視 "都普勒效應" 的存在 跟應用
都普勒效應的公式如下 : f={(v+vr)/(v-vs)}*f0
其中 f為 想要求得的最終頻率變化 v為正常一般介質下的音速 vr為聆聽者的速度(若靠近音源則為正 反之為負) vs為音源的速度 (若靠近聆聽者則為負 反之為正)
現在讓我們回到剛才的問題 要如何讓這0.5秒內 由1ms的延遲增加到2ms 最簡單的做法 就是非線性的粗魯做法 直接把1ms 跳到2ms 也就是說 此虛擬音源 中間會有整整1ms的斷層突然消失
但是我們說過這是不允許的 因此 換個角度來想 要如何 讓虛擬音源 在這0.5秒內 可以從1ms的延遲逐漸變化到2ms 達到一個線性的目的
若用doppler的角度去解釋 1ms的秒差*音速340m/s的話 就是等於34cm 也就是此虛擬音源的直線上運動遠離了聆聽者(圓心)34公分 在0.5秒內 因此速率為0.68m/s 代入上面公式 可得340/340+0.68=0.998 因此 假設虛擬音源的頻率為440hz的La 在此移動中 我們會聽到440*0.998=439 的大約頻率
這是現實情況
若以聲音檔案 或是數位訊號來看 要做到這樣看似簡單的事情 卻還滿難的 不過還是可以達成
如同上面所說 若時間是延續的 線性的 那麼 要在0.5秒內 讓聲音延遲從1ms變成2ms 一個很直覺的方法 就是把播放的速度放慢 因此 當慢到2ms的延遲後 再回復正常速度 我們知道 當聲音檔案放慢的同時 音高頻率也會降低 這其實 就是任何波形運動 簡諧運動都會存在的現象 都普勒效應 一樣可以在播放聲音檔案中實現出來
結論 在以ITD implementation內的多聲道虛擬系統中 只要扯的上時間差距 就必須要扯到都普勒效應 否則無法維持時間上的線性 虛擬音源在移動的過程中 一定會爆音 以及非線性的延遲 但是為求運算效能 只要虛擬的音源 是靜止的 我們大可以放心捨棄doppler 節省運算資源
由於並非所有的錄音 都是以既定的多聲道規格 去收音的 因此 在事後製作 以及重新模擬一個虛擬的音源 及相關的音場 變成了異常的重要
大部分的空間處理 或是模擬軟體 都一定會牽涉到多聲道編解碼的問題 也就是說 當一個虛擬音源 被放置在一個虛擬的音場空間內 其單一訊號 要如何分配到相關再生重建此音場的喇吧的一個重要問題
別以為這樣多了幾顆喇吧 好像 就只是兩倍或三倍於傳統立體聲的數量 因此 仍然從立體聲的觀點去看待多聲道控制 其實 整體的複雜程度 應該是指數成長 而非倍數
大部分的3D AUDIO 多聲道 spatialisation處理 都會牽涉到兩個層面 (或者是說 分成兩種層面來解釋 會比較好理解) 第一 就是所謂 要實現聲音定位感 第二 要能實現聲音的空間感
事實上 以目的而論 完美的模擬音源再生 當然都是結合了好的定位跟空間資訊 缺一不可 不過 在實行上 我們還是會將兩者分開來處理 會比較方便
而定位感的部分 所謂的sound localisation 會從兩個因素上去判斷 一者為ILD (interaural level difference) 另一者為ITD (interaural time difference) 白話的說起來 就是音量差距 跟時間差距 因此 兩耳之間的音量差距 或是時間差距 造就了人類去分辨音源的來源及定位
而在多聲道實現上 雖然整個概念 以及數學模型 跟立體聲有很大的差距 可是若以定位目的來看 大致上 仍舊會在ILD 跟ITD上下手
純粹以ILD來做多聲道PANNING的規格 所要解決的問題 就只是要去解決多個喇吧 所建構起的音場內 聲音的平均分布以及合理性 代表作如ambisonics 跟VBAP (vector based amplitude panning)
但是若要考慮到ITD 更多的問題 就來了 簡單的說法 我們僅需要額外再考慮 每個聲道 或是喇吧之間的細微時間差距即可 但是 實際上操作起來 並不是這麼一回事
假設 虛擬的音源 是靜態的 不會移動的 那還好處理 若一個虛擬音源S, 在N顆喇吧所組成的音場內 則每個喇吧 SPn 所會擁有的ITD 則會根據音源S的位置而定 依序可得 SP1=若干ms的delay,SP2=若干ms的delay,SP3......SPn=若干ms的delay
但是 如果今天 虛擬的音源 是會移動的 問題就大了 我們無法在單純的僅用幾何上的算術 就把相對應的SPn的delay給算出來 因為 這變成 每個SPn的時間差 隨時都在變動
這樣說起來 好像沒什麼大不了 可是請仔細想想 所謂的一個虛擬音源 其聲音來源 不外乎兩種 1.外部的麥克風 或是音訊音源 2.現成的聲音檔案
假設此虛擬音源 是靜止的 那麼 我們只要令 SPn中 delay最小的 甚至沒有delay設定的喇吧 先開始播放此音源 然後 依據每個SPn的延遲 依序播放下去即可 比方說 第一個喇吧 有1ms的延遲後 開始播放此音源 而第二個喇吧 再等1ms的延遲 第三個喇吧 再等1ms..... 一切都可以運作很正常
若假設 此虛擬音源開始移動 變代表著 每個SPn的延遲開始有了變動 回到剛才的假設 第一個喇吧會從1ms的延遲 經過0.5秒後 增加到2ms 問題來了 請問 在這0.5秒的時間內 此虛擬音源的訊號 要怎麼處理呢?? 對於SPn來說 訊號從一開始產生後 就必須是連續不斷的 線性的 因此 根本不可能 從1ms 突然跳到xxms的時間差 要達到這樣的目的 等於是要硬生生的將音源(無論是聲音檔案 或是現場的input)切成兩半 從新的時間點繼續播放 否則不可能改變時間差 但是 這樣就會出現一個很不合理的現象 : 在自然生活中怎麼可能有聲音 會突然斷掉 跳到另一個時間點上去呢? 非線性在日常生活中 是不可能存在的
因此 我們必須重新回頭思考 一個"移動中"的音源 在現實生活中 會有什麼樣的情況發生 於是 就不得不去重視 "都普勒效應" 的存在 跟應用
都普勒效應的公式如下 : f={(v+vr)/(v-vs)}*f0
其中 f為 想要求得的最終頻率變化 v為正常一般介質下的音速 vr為聆聽者的速度(若靠近音源則為正 反之為負) vs為音源的速度 (若靠近聆聽者則為負 反之為正)
現在讓我們回到剛才的問題 要如何讓這0.5秒內 由1ms的延遲增加到2ms 最簡單的做法 就是非線性的粗魯做法 直接把1ms 跳到2ms 也就是說 此虛擬音源 中間會有整整1ms的斷層突然消失
但是我們說過這是不允許的 因此 換個角度來想 要如何 讓虛擬音源 在這0.5秒內 可以從1ms的延遲逐漸變化到2ms 達到一個線性的目的
若用doppler的角度去解釋 1ms的秒差*音速340m/s的話 就是等於34cm 也就是此虛擬音源的直線上運動遠離了聆聽者(圓心)34公分 在0.5秒內 因此速率為0.68m/s 代入上面公式 可得340/340+0.68=0.998 因此 假設虛擬音源的頻率為440hz的La 在此移動中 我們會聽到440*0.998=439 的大約頻率
這是現實情況
若以聲音檔案 或是數位訊號來看 要做到這樣看似簡單的事情 卻還滿難的 不過還是可以達成
如同上面所說 若時間是延續的 線性的 那麼 要在0.5秒內 讓聲音延遲從1ms變成2ms 一個很直覺的方法 就是把播放的速度放慢 因此 當慢到2ms的延遲後 再回復正常速度 我們知道 當聲音檔案放慢的同時 音高頻率也會降低 這其實 就是任何波形運動 簡諧運動都會存在的現象 都普勒效應 一樣可以在播放聲音檔案中實現出來
結論 在以ITD implementation內的多聲道虛擬系統中 只要扯的上時間差距 就必須要扯到都普勒效應 否則無法維持時間上的線性 虛擬音源在移動的過程中 一定會爆音 以及非線性的延遲 但是為求運算效能 只要虛擬的音源 是靜止的 我們大可以放心捨棄doppler 節省運算資源
2009年12月25日 星期五
2009年12月24日 星期四
Max/MSP二三事@@
關於Max/MSP的PATCH無法加密的問題 相信很多人 包括74'上面的論壇 都已經討論N遍了
很多人 花了非常多的時間 去編寫一個 非常有系統 非常龐大 完成度非常高的patch 相信作者本人 的確對於他的PATCH 是以一個 "個人資產" 的角度去看待的 甚至有人委託編寫 等於是賣錢的PATCH 相信 這種東西 作者當然不希望 讓別人看光光裡面的內容
不過 無論如何呼籲74 我想對方是個不算小的公司 應該是不可能鳥這種問題的 即便把PATCH鎖住 把他給BUILD 弄成STANDALONE版本 但是 只要您對MAX稍微有點認識 都曉得 這不是根本的辦法 有心人 還是可以花點功夫 把裡面的內容看透透
因此 想要完全讓自己的PATCH給徹底 "商業化" 基本上 最徹底的方式 就是 自行重新撰寫程式 也就是說 不再倚賴MAX所提供的環境及平台 自行用C語言慢慢寫出來 然後結合WINDOWS或是OS的API 把END USER的GUI也一併寫出來 這是最萬無一失的狀況 但是 這種開發方式 沒有個小型10來人的軟體公司 是根本做不來的 想一個人獨力完成 可能要耗費數年的時間
因此 比較可行的做法 以IRCAM為例 他的FORUM LOGICIELS都是要錢的 但是 都必須要在MAX的環境下執行 他賣的不只是PATCH 還有他們自行開發的OBJETS 以及LIBRARY 這些東西 都必須要完整了解MAX的SDK開發環境 才能自行用程式語言撰寫出獨立的OBJET 一方面 他不怕人家看 因為你只有PATCH也沒用 你沒有資料庫 跟相關的元件 還是不能啟動
最後一個方法 當你自己還沒有到達自行開發OBJET能力 但又想要 自己的PATCH有獨特性 你可以利用MAX裡面的JAVA支援 利用mxj 以及js檔案 來讓你的PATCH看起來高級複雜許多 就算別人想要COPY或是修改 也必須要花非常久的時間 來了解你的PATCH 而我相信 在大型的PATCH裡面 通常都有4個以上的階層 也就是說 最上層的主PATCH裡面 還有第二層SUBPATCH 然後第二層內還有第三層 第四層 第五.... 依此類推 然後 整個大型PATCH完成之後 若要發布流傳 你可以將第一層主PATCH以下的所有的編排 通通弄成黑色 背景也是 然後全部ALIGN 置中 讓所有的物件 通通疊在一起 盡量能弄多亂 就弄多亂 這樣的話 別人就算是有心想要看裡面的東西 也要花很多的功夫整理.... (當然 前提條件是 你必須要另存別的檔案 原始檔的內容 還是要乾淨整齊的...)
很多人 花了非常多的時間 去編寫一個 非常有系統 非常龐大 完成度非常高的patch 相信作者本人 的確對於他的PATCH 是以一個 "個人資產" 的角度去看待的 甚至有人委託編寫 等於是賣錢的PATCH 相信 這種東西 作者當然不希望 讓別人看光光裡面的內容
不過 無論如何呼籲74 我想對方是個不算小的公司 應該是不可能鳥這種問題的 即便把PATCH鎖住 把他給BUILD 弄成STANDALONE版本 但是 只要您對MAX稍微有點認識 都曉得 這不是根本的辦法 有心人 還是可以花點功夫 把裡面的內容看透透
因此 想要完全讓自己的PATCH給徹底 "商業化" 基本上 最徹底的方式 就是 自行重新撰寫程式 也就是說 不再倚賴MAX所提供的環境及平台 自行用C語言慢慢寫出來 然後結合WINDOWS或是OS的API 把END USER的GUI也一併寫出來 這是最萬無一失的狀況 但是 這種開發方式 沒有個小型10來人的軟體公司 是根本做不來的 想一個人獨力完成 可能要耗費數年的時間
因此 比較可行的做法 以IRCAM為例 他的FORUM LOGICIELS都是要錢的 但是 都必須要在MAX的環境下執行 他賣的不只是PATCH 還有他們自行開發的OBJETS 以及LIBRARY 這些東西 都必須要完整了解MAX的SDK開發環境 才能自行用程式語言撰寫出獨立的OBJET 一方面 他不怕人家看 因為你只有PATCH也沒用 你沒有資料庫 跟相關的元件 還是不能啟動
最後一個方法 當你自己還沒有到達自行開發OBJET能力 但又想要 自己的PATCH有獨特性 你可以利用MAX裡面的JAVA支援 利用mxj 以及js檔案 來讓你的PATCH看起來高級複雜許多 就算別人想要COPY或是修改 也必須要花非常久的時間 來了解你的PATCH 而我相信 在大型的PATCH裡面 通常都有4個以上的階層 也就是說 最上層的主PATCH裡面 還有第二層SUBPATCH 然後第二層內還有第三層 第四層 第五.... 依此類推 然後 整個大型PATCH完成之後 若要發布流傳 你可以將第一層主PATCH以下的所有的編排 通通弄成黑色 背景也是 然後全部ALIGN 置中 讓所有的物件 通通疊在一起 盡量能弄多亂 就弄多亂 這樣的話 別人就算是有心想要看裡面的東西 也要花很多的功夫整理.... (當然 前提條件是 你必須要另存別的檔案 原始檔的內容 還是要乾淨整齊的...)
訂閱:
文章 (Atom)
