音を扱うJavaScriptライブラリや記事

Web Audio API を中心に音を扱うライブラリや記事をざっとまとめました。

## サウンドファイルの再生に特化したやつ
ゲーム用途とかならこのあたりで十分っぽい

- [howler.js](https://github.com/goldfire/howler.js/)
- [SoundJS](https://github.com/CreateJS/SoundJS)

## 簡単に演奏できるやつ

- [beeplay](https://github.com/watilde/beeplay) / [記事](http://qiita.com/watilde/items/6ae42c581cca097144c7)
  - メソッドチェーンで音をつなげていく
- [abeck](https://github.com/watilde/abeck)
  - [ABC記譜法](http://ja.wikipedia.org/wiki/ABC%E8%A8%98%E8%AD%9C%E6%B3%95) で書ける

## テンプレート的なやつ
- [TemplateSynth](https://github.com/aike/TemplateSynth) / [記事](http://d.hatena.ne.jp/aike/20140909)
  - ポリシンセ用のテンプレート
- [mml-emitter](https://github.com/mohayonao/mml-emitter)
  - MMLをイベントとして発火する

## 信号処理するやつ
- [Tone.js](https://github.com/TONEnoTONE/Tone.js/)
  - 必要な機能がひととおり揃っている
- [tuna](https://github.com/Dinahmoe/tuna)
  - Web Audio API 用のエフェクター
- [flocking](https://github.com/colinbdclark/flocking)
  - 音の構造をJSONで書く。node.jsでも動く。
- [neume.js](https://github.com/mohayonao/neume.js)
  - jQueryっぽく書けるインターフェースが特徴だけど色々雑い。
- [pico.js](https://github.com/mohayonao/pico.js)
  - Web Audio API, flash fallback, node.js に対応したインターフェース
  - 信号処理自体は自分で書く必要がある。全部自分でやりたい人むけ。

## 便利なやつ
- [WAAPISim](https://github.com/g200kg/WAAPISim)
  - IE でも動く Web Audio API
- [node-web-audio-api](https://github.com/sebpiq/node-web-audio-api)
  - node.js でも動く Web Audio API
- [web-audio-test-api](https://github.com/mohayonao/web-audio-test-api)
  - テスト用途の Web Audio API。オーディオグラフのテストができる。
- [web-audio-scheduler](https://github.com/mohayonao/web-audio-scheduler)
  - [この記事](http://www.html5rocks.com/ja/tutorials/audio/scheduling/) をライブラリ化。イベントをスケジューリングする。
- [webaudio-controls](https://github.com/g200kg/webaudio-controls) / [記事](http://www.g200kg.com/archives/2013/08/webaudio-contro.html)
  - WebComponents で書かれたGUI部品

## polyfill
- [webkitAudioContext monkeypatch](https://github.com/cwilso/webkitAudioContext-MonkeyPatch)
  - (かなり)古いAPIを新しいものに置き換える。
- [StereoPannerShim](https://github.com/mohayonao/stereo-panner-shim)
  - StereoPanner が古いブラウザ [^1] でも使える
- [AudioWorkerShim](https://github.com/mohayonao/audio-worker-shim)
  - AudioWorker が古いブラウザ [^1] でも使える
- [promise-based-decode-audio-data](https://github.com/mohayonao/promise-decode-audio-data)
  - 古いブラウザ [^1] でも AudioContext#deocdeAudioData が Promise を返す
- [getFloatTimeDomainData](https://github.com/mohayonao/get-float-time-domain-data)
  - 古いブラウザ [^1] でも AnalyserNode#getFloatTimeDomainData が使える

[^1]: Chrome 40 とか Firefox 35 あたり

## アプリケーション
- [Web Audio Synth2](http://aikelab.net/websynthv2/) / [記事](http://d.hatena.ne.jp/aike/20120129) [記事](http://d.hatena.ne.jp/aike/20150130)
  - WebGL を使った 3D mini moog
- [Gibber - An audiovisual live coding environment for the browser](http://gibber.mat.ucsb.edu/)
  - ライブコーディング
- [Renoid Player](http://www.g200kg.com/renoid/) / [記事](http://www.g200kg.com/archives/2013/01/renoid.html)
  - ボーカロイド 
- [Web Music Platform](http://yamaha-webmusic.github.io/webmusicplatform/app/) / [記事](http://www.dtmstation.com/archives/51917472.html)
  - パッチで音楽を作れる
- [Protracker module player for Web Audio](http://mod.haxor.fi/)

## 仕様
- [Web Audio API](http://www.w3.org/TR/webaudio/)
- [Web Audio API - draft](http://webaudio.github.io/web-audio-api/)
- [Web Audio API - 日本語訳](http://g200kg.github.io/web-audio-api-ja/)

## 知見
- [Web Audio API 解説](http://www.g200kg.com/jp/docs/webaudio/)
  - 各AudioNodeの使い方とデモが試せる
- [2 つの時計のお話 - Web Audio の正確なスケジューリングについて](http://www.html5rocks.com/ja/tutorials/audio/scheduling/)
  - これ理解していないと困ると思う
- [Web Audio Weekly](http://blog.chrislowis.co.uk/waw.html)
  - Web Audio関係のニュース
- [WebAudio-PulseOscillator](https://github.com/pendragon-andyh/WebAudio-PulseOscillator)
  - Web Audio API でパルスオシレーターを作る方法
- [PHYSICAL AUDIO SIGNAL PROCESSING ](https://ccrma.stanford.edu/~jos/pasp/)
  - 信号処理のテキスト
-  [Audio EQ Cookbook](http://www.musicdsp.org/files/Audio-EQ-Cookbook.txt)
  - BiquadFilterのテキスト  

## 古の遺跡
Audio Data API 時代のライブラリ。信号処理を全部 JavaScript でやっている。

- [dsp.js](https://github.com/corbanbrook/dsp.js/)
- [Audiolet](https://github.com/oampo/Audiolet)
- [timbre.js](https://github.com/mohayonao/timbre.js/)