web audio api緊緊圍繞著乙個概念設計:audio context,它就像是乙個有向圖,途中的每個節點都是乙個audio node,音訊資料從源節點按照程式中指定的邊一步一步的走的目的節點。
如果你接觸過directshow開發,audio context就像filter manager,而audio node則是各種filter,當然,如果你是個linux開發者,這有看起來像是pipe。乙個audio context中的audio node可以有很多,上面的是最簡單的形式了。而audio node又包括四種,
1. 源節點(source node)
2. 處理節點(gain node、panner node、w**e shaper node、oscillator node、delay node、convolver node等)
4. 目的節點(destination node)
現在只有firefox和webkit系的瀏覽器(chrome、safari、opera)都支援web audio api,不過和其他新標準一樣,每家瀏覽器還是使用了特定的字首,所以在呼叫api時,要考慮一下這個問題。?1
2345
6window.audiocontext = (window.audiocontext || window.webkitaudiocontext);
if
(window.audiocontext)
else
乙個audio context物件可以支援多個節點,包括source和destination節點,每個新建立的audio context都有乙個預設的目的節點,通常代表當前機器上的預設音訊輸出裝置,可以通過context.destination來獲取。?1
2// create source node
var
source = context.createbuffersource();
?1
2345
6789
1011
1213
1415
16var
audiourl =
'http://...'
; // 這裡替換為音訊檔案url
xhr.responsetype =
'arraybuffer'
;
// xmlhttprequest 2的新東西
xhr.onload =
function
()
}
xhr.send();
web audio提供了非常精準的時間控制,所有的時間都是以秒來計數的。是的,你沒看錯,是秒,不過這裡的秒在底層都是使用高精度的浮點數儲存的,其實際精確度是很高的。在建立的audio context中都有乙個同步系統,用來對外提供絕對時間,這個時間可以通過context.currenttime獲取。這個絕對時間從0開始,而且一旦新建context,就開始走了。?1
2345
6789
1011
1213
1415
1617
1819
2021
22var
startoffset = 0;
// audio file offset
var
starttime = 0;
// web audio absolute time
function
start()
function
pause()
function
resume()
到此為止,就是web audio最基本的應用。當然,web audio不止這麼簡單,使用其他型別的audio node,基本可以完成乙個小型的混音室。
vue初步介紹
摘要 vue.js 讀音類似於view 是一套構建使用者介面的漸進式框架。與其他重量級框架不同的是,vue 採用自底向上增量開發的設計。vue 的核心庫只關注檢視層,它不僅易於上手,還便於與第三方庫或既有專案整合。vue.js 讀音類似於view 是一套構建使用者介面的漸進式框架。與其他重量級框架不...
HTTPS 初步介紹
非對稱加密 基於數學方法,生成乙個公鑰 金鑰對,來對資料做加密 解密,被公鑰加密的資料只能被私鑰解密,同樣,被私鑰加密的資料也只能被公鑰解密。所以可以用別人公開的公鑰加密一段資訊然後傳送出去,只有擁有對應金鑰的那個人才能解密。但是缺點是加密 解密的計算成本高,比較占用cpu資源 對稱加密 和非對稱加...
Url 初步介紹
uri uniform resource identifier 是統一資源識別符號,就像網際網路上的位址一樣,在世界範圍內唯一標識並定位資源 url是uri最常見的形式,url描述了一台特定伺服器上某資源的特定位置。1 第一部分被稱為方案,說明了訪問資源所使用的協議型別,例如我們常常看到的 http...