# 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つの大きなプログラムを,解説のために分割しているページも存在し,上から順番に実行することが求められます.その場合,可能な限りコメントに指示が書いてあります.