Top Banner
JavaScriptで音合成 moriyoshi (http://www.mozo.jp /)
28

Adobe MAX Japan 2009: 出張JUIカンファレンス - JavaScriptで音合成

Jun 14, 2015

Download

Technology

The slides used for the talk at Adobe MAX Japan 2009, about on-the-fly sound synthesis in pure JavaScript.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Adobe MAX Japan 2009: 出張JUIカンファレンス - JavaScriptで音合成

JavaScriptで音合成 moriyoshi (http://www.mozo.jp/)

Page 2: Adobe MAX Japan 2009: 出張JUIカンファレンス - JavaScriptで音合成

はい

Page 3: Adobe MAX Japan 2009: 出張JUIカンファレンス - JavaScriptで音合成

えー

Page 4: Adobe MAX Japan 2009: 出張JUIカンファレンス - JavaScriptで音合成

JavaScriptで音を合成

Page 5: Adobe MAX Japan 2009: 出張JUIカンファレンス - JavaScriptで音合成

して、それをその場で

再生しちゃう

Page 6: Adobe MAX Japan 2009: 出張JUIカンファレンス - JavaScriptで音合成

できんのそれ?

Page 7: Adobe MAX Japan 2009: 出張JUIカンファレンス - JavaScriptで音合成

それ、dataスキームでできるんじゃない?

Page 8: Adobe MAX Japan 2009: 出張JUIカンファレンス - JavaScriptで音合成

data:

Page 9: Adobe MAX Japan 2009: 出張JUIカンファレンス - JavaScriptで音合成

dataスキーム• RFC2393 (1998年8月!)

• IEを除くブラウザで大体サポート※

•リソースへの参照ではなく、データそのものを表現するURI

• バイナリデータを表現するには

• base64エンコードする

• URIエンコードする

Page 10: Adobe MAX Japan 2009: 出張JUIカンファレンス - JavaScriptで音合成

よくある使い方background-image: url(data:image/gif,R0lGODlhEAAQAMIFAAAAAGBgYKCgoODBcPggP///////////yH5BAEKAAcALAAAAAAQABAAAANJeHrQvlCBIKhoUYZdhQfRNHXNFQKDAxAEYC7oMLC0C8LN3K72nesEXaMlQa1aNZYPhWQVaESJbAjFQGLQXcZIjW6B2kxRJS6L

EwA7);

Page 11: Adobe MAX Japan 2009: 出張JUIカンファレンス - JavaScriptで音合成

画像がいければ音もいけるはず

Page 12: Adobe MAX Japan 2009: 出張JUIカンファレンス - JavaScriptで音合成

で、まあ、

Page 13: Adobe MAX Japan 2009: 出張JUIカンファレンス - JavaScriptで音合成

あとはブラウザのメディア再生能力に

頼る。

Page 14: Adobe MAX Japan 2009: 出張JUIカンファレンス - JavaScriptで音合成

background-image: url(data:image/gif,R0lGODlhEAAQAMIFAAAAAGBgYKCgoODBcPggP///////////yH5BAEKAAcALAAAAAAQABAAAANJeHrQvlCBIKhoUYZdhQfRNHXNFQKDAxAEYC7oMLC0C8LN3K72nesEXaMlQa1aNZYPhWQVaESJbAjFQGLQXcZIjW6B2kxRJS6L

EwA7);

バイナリデータつくっちゃうJavaScriptで

もこれ

Page 15: Adobe MAX Japan 2009: 出張JUIカンファレンス - JavaScriptで音合成

(仮) JS Synthsizer

Page 16: Adobe MAX Japan 2009: 出張JUIカンファレンス - JavaScriptで音合成

……(デモ: http://svn.coderepos.org/share/lang/javascript/SoundGenerator/test.html)

Page 17: Adobe MAX Japan 2009: 出張JUIカンファレンス - JavaScriptで音合成

(仮) JS Synthsizer

• JavaScriptで音を合成 (=synthesize)

• 今のところは矩形波とノコギリ波の生成に対応

•目指せJS-303

Page 18: Adobe MAX Japan 2009: 出張JUIカンファレンス - JavaScriptで音合成

しくみ

+-127 54 67 90 102 125 76 51 9 3 -23…

-127 54 67 90 102 125 76 51 9 3 -23…

-127 54 67 90 102 125 76 51 9 3 -23…

data:audio/wav,R&DIFF%04%7B%00%00WAVEfmt%20%10%00%00%00…

1.2.

3.

4.

<iframe src=”data:audio/wav,RIFF%04%7B%00%00WAVEfmt%20%10%00%00%00…

Page 19: Adobe MAX Japan 2009: 出張JUIカンファレンス - JavaScriptで音合成

今後の課題

•リアルタイムストリーミング

➡音を鳴らしながら処理する

•もっとシンセっぽく

➡ローパスフィルタとかの実装

Page 20: Adobe MAX Japan 2009: 出張JUIカンファレンス - JavaScriptで音合成

余談

Page 21: Adobe MAX Japan 2009: 出張JUIカンファレンス - JavaScriptで音合成

dataスキームでバイナリを吐くテクを

応用して

Page 22: Adobe MAX Japan 2009: 出張JUIカンファレンス - JavaScriptで音合成

JavaScriptでExcelのファイルを作る

Page 23: Adobe MAX Japan 2009: 出張JUIカンファレンス - JavaScriptで音合成

……

Page 24: Adobe MAX Japan 2009: 出張JUIカンファレンス - JavaScriptで音合成

とか

Page 25: Adobe MAX Japan 2009: 出張JUIカンファレンス - JavaScriptで音合成

JSでなんでもやるお(含むAS)

Page 26: Adobe MAX Japan 2009: 出張JUIカンファレンス - JavaScriptで音合成

そんな時代

Page 27: Adobe MAX Japan 2009: 出張JUIカンファレンス - JavaScriptで音合成

Page 28: Adobe MAX Japan 2009: 出張JUIカンファレンス - JavaScriptで音合成

ありがとうございました