> >讓我們更具體一點:Web音頻使您可以訪問聲音的原始波形數據,並讓您操縱,分析,扭曲或以其他方式修改它。音頻是帆布API對像素的內容。您對聲音數據有深度且大多不受限制的訪問。它真的很強大!
本教程是Flight Arcade系列的第二個教程 - 構建,以演示Web平台以及新的Microsoft Edge瀏覽器和EdgeHTML渲染引擎中的可能性。本文的交互式代碼和示例也位於以下位置:http://www.flightarcade.com/learn/[YouTube XYAQ9TPMXRA]
即使是最早的飛行模擬器版本,也努力使用聲音重新創建飛行感覺。最重要的聲音之一是發動機的動態音高,它隨油門而變化。我們知道,當我們重新構想網絡遊戲時,靜態引擎噪聲確實看起來很平坦,因此發動機噪聲的動態音高顯然是Web音頻的候選者。
> 我們的飛行教練的聲音不太明顯(但可能更有趣)。在飛行街機的早期迭代中,我們像錄製的那樣播放了教練的聲音,聽起來好像是從一個良好的攤位出來的!我們注意到我們開始將聲音稱為“敘述者”,而不是“講師”。以某種方式,原始的聲音打破了遊戲的幻想。如此完美的音頻在駕駛艙的嘈雜聲音上似乎是不對的。因此,在這種情況下,我們使用Web音頻對語音說明應用了一些簡單的扭曲,並增強了學習飛行的現實主義!
>>在文章末尾有一個講師音頻示例。在下面的部分中,我們將為您提供有關如何使用Web音頻API創建這些聲音的詳細視圖。
使用API:AudioContext和Audio源>任何Web音頻項目的第一步是創建AudioContext對象。一些瀏覽器(包括Chrome)仍然需要將此API進行前綴,因此代碼看起來像這樣:
>現在,我們有了AudioContext和一些音頻數據。下一步是使這些事情共同努力。為此,我們需要…
您使用Web音頻進行的所有操作都會通過某種Audionode發生,它們具有許多不同的口味:有些節點被用作音頻源,有些節點用作音頻輸出,有些則用作音頻處理器或分析儀。您可以將它們鏈在一起做有趣的事情。
>您可能會認為AudioContext是一種聲音階段。它包含的各種儀器,放大器和揚聲器都將是不同類型的Audionodes。使用Web音頻API很像將所有這些東西插入在一起(例如,效果踏板和踏板的樂器中,然後將其插入放大器,然後插入揚聲器等)。
好吧,為了對我們新獲取的AudioContext音頻源做任何有趣的事情,我們需要首先將音頻數據封裝為源audionode。播放
>值得注意的是,您只能在每個源節點上調用一次啟動()。這意味著“停頓”不受直接支持。一旦來源停止,它就會過期。幸運的是,源節點是廉價的對象,旨在輕鬆創建(音頻數據本身,請記住,在單獨的緩衝區中)。因此,如果要恢復暫停的聲音,您可以簡單地創建一個新的源節點,然後使用時間戳參數來調用start()。 AudioContext具有一個內部時鐘,您可以使用該時鐘來管理時間戳。
>就是這樣的基礎知識,但是到目前為止,我們所做的一切(簡單的音頻播放)本可以使用舊的音頻元素來完成。對於飛行街機,我們需要做一些動態的事情。我們希望球場隨著發動機的速度而變化。
>發動機聲音也需要循環。這也很容易(也有一個屬性):
>
幸運的是,使用Web Audio API播放的無間隙音頻播放確實很簡單。這只是為音頻循環部分的開始和結束設置時間戳(請注意,這些值與音頻源本身而不是AudioContext時鐘相對
講師的語音
從W3C規格:
卷積是一個數學過程,可以應用於音頻信號,以實現許多有趣的高質量線性效應。通常,效果用於模擬聲學空間,例如音樂廳,大教堂或戶外露天劇場。它也可以用於復雜的過濾效果,例如壁櫥內部發出的悶悶不樂的聲音,在水下聲音,通過電話發出聲音或通過老式揚聲器櫃播放。該技術非常常用於主要的電影和音樂製作中,被認為是極具用途和高質量的。
卷積基本上結合了兩種聲音:要處理的聲音(講師的聲音)和一種稱為衝動響應的聲音。脈衝響應確實是一個聲音文件,但它對於這種卷積過程確實很有用。您可以將其視為各種音頻過濾器,旨在與另一種聲音捲入時產生特定的效果。結果通常比音頻的簡單數學操縱更為現實。 >
要使用它,我們創建了一個插款節點,加載包含脈衝響應的音頻,然後連接節點。
波形
為了增加失真,我們還使用了waveShaper節點。這種類型的節點使您可以將數學失真應用於音頻信號,以達到一些真正的戲劇性效果。失真定義為曲線函數。這些功能可能需要一些複雜的數學。對於請注意原始波形和波形之間的巨大差異,並將波形施加到它。
您可以在此處進行交互嘗試。
上面的示例是您可以使用Web音頻API進行多少的戲劇性表示。我們不僅從瀏覽器對聲音進行了一些非常戲劇性的更改,而且我們還分析了波形並將其渲染為帆布元素!網絡音頻API功能強大,多才多藝,坦率地說,很有趣!
>2015年Microsoft Edge Web峰會(Microsoft Edge Web Summit)(新瀏覽器,新的Web平台功能和社區的嘉賓演講者的期望完整系列)
> Web Audio API
的經常詢問有關動態聲音的問題(常見問題解答)>如何開始使用Web Audio API為我的Web應用程序? 開始使用Web Audio API,您首先需要創建AudioContext接口的實例。這是您的音頻項目的主要“容器”,通常是在頁面加載時創建的。有了AudioContext的實例後,您可以在此上下文中創建節點,將它們連接在一起以形成音頻路由圖,然後操縱音頻數據。請記住要檢查瀏覽器的兼容性,因為並非所有瀏覽器都完全支持Web音頻API。
如何使用Web Audio API來生成聲音? 。該節點會生成周期性波形。您可以使用AudioContext的CreateSoscillator()方法創建一個oscillatornode。創建後,您可以設置波形的類型以生成(正弦,方形,鋸齒或三角形)和頻率。您可以使用Biquadfilternode應用音頻效果。該節點代表一個二階過濾器,可用於創建各種效果,例如音調控制。您可以使用AudioContext的CreateBiquadFilter()方法創建一個Biquadfilternode。創建後,您可以設置過濾器的類型(低通,高通,帶通等),並設置頻率,Q和增益。
>>
>如何在Web Audio API中連接音頻節點?>如何在Web音頻API中操縱音頻數據?音頻節點提供的屬性。例如,您可以更改示波器的頻率,調整增益表的增益或將濾波器應用於Biquadfilternode。您還可以使用AnalySernode捕獲實時頻率和時間域數據。
>以上是Web音頻API的動態聲音的詳細內容。更多資訊請關注PHP中文網其他相關文章!