# JavaScript によるサウンドプログラミングハンズオン講座 このページは,2017年11月11日,12日に開催される音響学会 音響教育研究会の「JavaScript によるサウンドプログラミングハンズオン講座」のための資料です. ## ハンズオンの流れ サウンドプログラミングとして,今回のワークショップで体験して頂く内容は,簡単なSin波を鳴らすことから始まり,ボタンをクリックしたら音がなるようなプログラムなどを通じて,最終的にはシンセサイザーの仕組みを皆様のプログラムで再現していただきます. JavaScriptを知っていることが望ましいですが,他の言語にない概念などについては適宜説明を入れます. ## 必要なソフトウェア HTML5に対応したWebブラウザ(Google ChromeやFirefox),まともなテキストエディタ(Atom,SublimeText,VisualStudio Codeなど)が必要となります.各自事前にダウンロードしておいてください. Markdownの強みは,表も書きやすいことです. ## ワークショップの資料について ワークショップで使用する資料は,全て電子的に配布しています. ### テキスト 筆者が開発しているJSNotebookという仕組みを取り入れ,Webページ上でサンプルの編集,実行が可能です.ページ上で仕組みを学習した後に,HTMLファイルやJSファイルを作成し,皆様の学習成果としてください. 実際に使用するページは以下のとおりです. 章 | リンク --|-- 1 | [基本的な文法,Sin波の鳴らし方,音量の変更](https://jsnotebook.sudalab.net/audio01.html) 2 | [周波数の変え方,和音を鳴らす,矩形波の合成,楽器音](https://jsnotebook.sudalab.net/audio02.html) 3 | [波形を可視化する](https://jsnotebook.sudalab.net/audio03.html) 3の関連ページ | [Canvas APIの使い方](https://jsnotebook.sudalab.net/canvas.html) 4 | [ビブラート,FM音源,アナログシンセサイザー](https://jsnotebook.sudalab.net/audio04.html) 5 | [畳み込み演算](https://jsnotebook.sudalab.net/audio05.html) アクティビティ | [キーボードのひな形,ボタンクリックで音を鳴らす,クラス](https://jsnotebook.sudalab.net/audio-activity01.html) ### ソースコード JSNotebookのソースコードはGithubで管理しています.ご意見やバグの報告など御座いましたら,下記URLからいただければ幸いです. [https://github.com/sudahiroshi/jsnotebook](https://github.com/sudahiroshi/jsnotebook) ## テキストの使い方 説明の文章に混じって,プログラムを掲載しています.大抵のプログラムはその場で編集及び実行が可能です.例えば,以下のようにプログラムを掲載しており,プログラムの下の「Run」ボタンをクリックすると実行されます.以下の例では,変数x1に20を代入して,その結果を表示するというものです. ここで,x1に代入する数値を変更してからRunをクリックすると,結果が変わります.まずはお試しください. ```javascript runnable console var x1 = 20; console.log( "x1は" + x1 + "です" ); ``` 実行ボタンには3つの種類があります.それぞれ以下のような意味です. ボタン | 意味 --|-- Run | プログラムを実行する.変数は他のプログラムにも影響する. Once | プログラムを1度だけ実行する.変数は他のプログラムにも影響する. Sandbox | プログラムを実行する.変数は他のプログラムに影響しない また,1つの大きなプログラムを,解説のために分割しているページも存在し,上から順番に実行することが求められます.その場合,可能な限りコメントに指示が書いてあります.