我們現在看看Web Audio API(網頁音頻介面)是如何來處理錄音的。有些聲音是很難使用振蕩器來重現的,所以在許多情況下必須使用錄製的聲音來重現真實的聲音。格式可以是”.MP3″,”.ogg”,”.wav”等,本人建議使用”.MP3″,因為它是輕量級,有廣泛支持且具有很好的音質。
你不能像圖片一樣簡單地通過一個網址得到聲音。我們需要通過發送一個XMLHttpRequest請求來得到文件,解碼數據,並放入緩衝區。

讓我們看看構造函數: 我們收到我們在聲音類中所做的Context;收到的Url列表將被載入;一個空數組用於緩衝。
我們有兩個方法:loadsound和loadAll。 loadAll循環通過URL列表來調用loadSound方法。它重要的是傳遞索引,我們才能在不管哪個請求首先載入下把緩衝的聲音放入正確的數組元素。這也讓我們看到最後一個請求意味著緩衝區載入的完成。
然後你可以調用loaded()方法來做一些像隱藏載入指示器之類事情。最後在播放時通過getSoundByIndex(index) 方法從播放緩衝區中獲取相應的值。
decodeAudioData方法是新的語法,現在還不能在Safari中工作。
context.decodeAudioData(audioData).then(function(decodedData) {
// use the decoded data here
});
然後我們必須為聲音創建類。現在我們有完整的類來處理錄音:

構造函數接收了Context和Buffer緩衝。我們調用createBufferSource()方法來代替我們以前做的createOscillator()方法。我們使用getSoundByIndex()方法來獲取緩衝的音符(從緩衝數組中來的元素)。現在我們創建緩衝區(而不是振蕩器),設置緩衝區,然後將其連接到目標(或增益和其他濾波器)。

現在我們要創建緩衝區實例並調用loadAll方法來載入所有的聲音到緩衝區。我們同時也要用getSoundById方法來獲取我們真正所需要的,把它傳送給聲音類並調用play()方法。ID可以作為按鈕上的數據屬性存儲,你點擊則播放聲音。
原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/274526.html
微信掃一掃
支付寶掃一掃