陳凱
人們能聽到的聲音,無論是輕柔的鋼琴聲還是鑼鼓喧天,本質上都是波。改變了波,其實就改變了聲音。只要畫出一幅波的圖形,這個圖形也就對應了某種特殊的聲音。不過幾乎沒有人能真正“手繪”出某種特別的聲音,因為一個完整的聲音——可能是敲擊聲、彈波聲、摩擦聲等,從擊發到余響,常常要延續好幾秒的時間,加之人耳能識別的聲音的頻率從每秒幾十下振動到幾萬下振動不等。所以,若要畫出某個聲音,大概需要幾百根乃至幾萬根曲線或折線,非尋常人力可為。好在人類有計算機作為高效的信息處理工具,人們只要輸入參數,告訴計算機如何自動把輸入的數據轉化為波,就可以大大降低“畫聲音”的勞動量了。
● 計算機不畏懼重復
(圖1為一段可修改采樣點的聲波,為了便于繪制,橫軸即時間軸被放大了)
沒有人喜歡單調枯燥的重復勞動,但重復恰恰是計算機所擅長的事情。所以,可以先畫出一小段波,然后讓計算機將這段圖形重復畫上很多遍(如圖2)。
(圖2為重復畫了很多次的聲波,為了便于觀察,橫軸即時間軸被壓縮了)
將這個圖形重復個上百次的話,就能得到“嘰”一下的響聲了。完成實驗所需要的軟件可以是任何一款擁有修改采樣點功能的音頻編輯軟件。比如,在開源軟件Audacity的界面中,可借助鉛筆工具調整波的采樣點,然后點“特效—重復”菜單項,將簡單的波形重復許多遍,只是由于波形缺少變化,生成的聲音不怎么有美感。
● 數學的力量
數學是推動計算機科學發展的強大動力之一,不過在這里,是要借助強大的數學做一件小事:用數學函數來生成一段更好聽的聲音。所以,一方面要讓波的形態在時間軸上重復出現,另一方面還要在重復出現時產生細微的變化,如波的振幅隨時間的變化而變化,使得聲音的效果更自然。網頁http://js.do/blog/sound-waves-with-javascript/提供了一個難得的工具,不僅可以將數學函數繪制成波形圖像,還能將這個波作為聲音播放出來(如圖3)。
這段示例代碼所生成的基本波形是一個余弦函數,然后通過一個指數函數改變波的振幅,瀏覽器播放這個波形所產生的聲音類似于敲擊鈴鐺的效果。在網頁里還可以直接編輯函數,創造屬于自己的獨特聲音效果。
● 聲音的更多畫法
畫聲音當然有更多的辦法,這里給出若干有趣的工具,限于篇幅,僅做簡單的介紹。
◇JavOICe:這個工具名稱的意思就是Java+Voice,名稱里字母的大小寫也是有意安排的。這個工具所繪制endprint
人們能聽到的聲音,無論是輕柔的鋼琴聲還是鑼鼓喧天,本質上都是波。改變了波,其實就改變了聲音。只要畫出一幅波的圖形,這個圖形也就對應了某種特殊的聲音。不過幾乎沒有人能真正“手繪”出某種特別的聲音,因為一個完整的聲音——可能是敲擊聲、彈波聲、摩擦聲等,從擊發到余響,常常要延續好幾秒的時間,加之人耳能識別的聲音的頻率從每秒幾十下振動到幾萬下振動不等。所以,若要畫出某個聲音,大概需要幾百根乃至幾萬根曲線或折線,非尋常人力可為。好在人類有計算機作為高效的信息處理工具,人們只要輸入參數,告訴計算機如何自動把輸入的數據轉化為波,就可以大大降低“畫聲音”的勞動量了。
● 計算機不畏懼重復
(圖1為一段可修改采樣點的聲波,為了便于繪制,橫軸即時間軸被放大了)
沒有人喜歡單調枯燥的重復勞動,但重復恰恰是計算機所擅長的事情。所以,可以先畫出一小段波,然后讓計算機將這段圖形重復畫上很多遍(如圖2)。
(圖2為重復畫了很多次的聲波,為了便于觀察,橫軸即時間軸被壓縮了)
將這個圖形重復個上百次的話,就能得到“嘰”一下的響聲了。完成實驗所需要的軟件可以是任何一款擁有修改采樣點功能的音頻編輯軟件。比如,在開源軟件Audacity的界面中,可借助鉛筆工具調整波的采樣點,然后點“特效—重復”菜單項,將簡單的波形重復許多遍,只是由于波形缺少變化,生成的聲音不怎么有美感。
● 數學的力量
數學是推動計算機科學發展的強大動力之一,不過在這里,是要借助強大的數學做一件小事:用數學函數來生成一段更好聽的聲音。所以,一方面要讓波的形態在時間軸上重復出現,另一方面還要在重復出現時產生細微的變化,如波的振幅隨時間的變化而變化,使得聲音的效果更自然。網頁http://js.do/blog/sound-waves-with-javascript/提供了一個難得的工具,不僅可以將數學函數繪制成波形圖像,還能將這個波作為聲音播放出來(如圖3)。
這段示例代碼所生成的基本波形是一個余弦函數,然后通過一個指數函數改變波的振幅,瀏覽器播放這個波形所產生的聲音類似于敲擊鈴鐺的效果。在網頁里還可以直接編輯函數,創造屬于自己的獨特聲音效果。
● 聲音的更多畫法
畫聲音當然有更多的辦法,這里給出若干有趣的工具,限于篇幅,僅做簡單的介紹。
◇JavOICe:這個工具名稱的意思就是Java+Voice,名稱里字母的大小寫也是有意安排的。這個工具所繪制endprint
人們能聽到的聲音,無論是輕柔的鋼琴聲還是鑼鼓喧天,本質上都是波。改變了波,其實就改變了聲音。只要畫出一幅波的圖形,這個圖形也就對應了某種特殊的聲音。不過幾乎沒有人能真正“手繪”出某種特別的聲音,因為一個完整的聲音——可能是敲擊聲、彈波聲、摩擦聲等,從擊發到余響,常常要延續好幾秒的時間,加之人耳能識別的聲音的頻率從每秒幾十下振動到幾萬下振動不等。所以,若要畫出某個聲音,大概需要幾百根乃至幾萬根曲線或折線,非尋常人力可為。好在人類有計算機作為高效的信息處理工具,人們只要輸入參數,告訴計算機如何自動把輸入的數據轉化為波,就可以大大降低“畫聲音”的勞動量了。
● 計算機不畏懼重復
(圖1為一段可修改采樣點的聲波,為了便于繪制,橫軸即時間軸被放大了)
沒有人喜歡單調枯燥的重復勞動,但重復恰恰是計算機所擅長的事情。所以,可以先畫出一小段波,然后讓計算機將這段圖形重復畫上很多遍(如圖2)。
(圖2為重復畫了很多次的聲波,為了便于觀察,橫軸即時間軸被壓縮了)
將這個圖形重復個上百次的話,就能得到“嘰”一下的響聲了。完成實驗所需要的軟件可以是任何一款擁有修改采樣點功能的音頻編輯軟件。比如,在開源軟件Audacity的界面中,可借助鉛筆工具調整波的采樣點,然后點“特效—重復”菜單項,將簡單的波形重復許多遍,只是由于波形缺少變化,生成的聲音不怎么有美感。
● 數學的力量
數學是推動計算機科學發展的強大動力之一,不過在這里,是要借助強大的數學做一件小事:用數學函數來生成一段更好聽的聲音。所以,一方面要讓波的形態在時間軸上重復出現,另一方面還要在重復出現時產生細微的變化,如波的振幅隨時間的變化而變化,使得聲音的效果更自然。網頁http://js.do/blog/sound-waves-with-javascript/提供了一個難得的工具,不僅可以將數學函數繪制成波形圖像,還能將這個波作為聲音播放出來(如圖3)。
這段示例代碼所生成的基本波形是一個余弦函數,然后通過一個指數函數改變波的振幅,瀏覽器播放這個波形所產生的聲音類似于敲擊鈴鐺的效果。在網頁里還可以直接編輯函數,創造屬于自己的獨特聲音效果。
● 聲音的更多畫法
畫聲音當然有更多的辦法,這里給出若干有趣的工具,限于篇幅,僅做簡單的介紹。
◇JavOICe:這個工具名稱的意思就是Java+Voice,名稱里字母的大小寫也是有意安排的。這個工具所繪制endprint