我剛剛遇到了interlabs上的Nintendo emulator written entirely in JavaScript,但它沒有聲音。它讓我思考:有什麼方法可以在瀏覽器中使用JavaScript合成聲音,然後播放它?如果一般情況下不可行,那麼是否有Safari/Opera/FireFox/IE/Etc。這將使它成爲可能嗎?使用JavaScript可以在瀏覽器中播放合成聲音嗎?
我不是在問合成聲音的技巧,只是用於播放由瀏覽器中運行的代碼合成的聲音的技巧。
我剛剛遇到了interlabs上的Nintendo emulator written entirely in JavaScript,但它沒有聲音。它讓我思考:有什麼方法可以在瀏覽器中使用JavaScript合成聲音,然後播放它?如果一般情況下不可行,那麼是否有Safari/Opera/FireFox/IE/Etc。這將使它成爲可能嗎?使用JavaScript可以在瀏覽器中播放合成聲音嗎?
我不是在問合成聲音的技巧,只是用於播放由瀏覽器中運行的代碼合成的聲音的技巧。
我會想你最好的選擇是讓Javascript使用ExternalInterface與Flash進行通話(http://www.adobe.com/devnet/flash/articles/external_interface.html)。 Flash現在可以在聲音緩衝區和通用ByteArray類之間傳輸數據。
http://www.adobe.com/devnet/flash/articles/dynamic_sound_generation/
您可以使用Flex SDK http://www.adobe.com/products/flex/開發Flash是免費的。
大多數開發人員使用SoundManager 2時,他們想要使用JavaScript爲應用程序添加聲音。它具有鉤子,因此JavaScript可以與Flash 8和9功能交互。我不確定它是否暴露出了我認爲你在使用字節數據的能力,我從來沒有處理過這個問題。
原來的NES模擬器的作者發現了一個動態的音頻庫:
https://github.com/bfirsh/dynamicaudio.js
我還沒有嘗試過,但該文檔看好:
VAR dynamicaudio = new DynamicAudio({'swf': '/static/dynamicaudio.swf'})
write(samples); //播放範圍爲-1.0到 1.0的浮點音頻樣本數組。
理論上應該可以合成聲音,然後讓瀏覽器使用數據URL播放它們。
實際上,史蒂文威滕斯實際上已經產生了這種技術的。 encodeAudio8bit
和encodeAudio16bit
功能是魔術發生的地方。