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