音響プログラミング環境一覧（随時更新予定）

音系のプログラムは正直映像ほどハードや技術的なハードルが高くはないと思います。
なのでやる気と知識と時間さえあれば音響用と銘打っていなくても大体の環境でできてしまったりします。
例えばUnityで作られた作曲ソフトは実在します。
色々ある上に大概何でもできるっちゃできるともなると、何を使えばいいのかわからなくなることも多いと思うので（僕はそうなので）僕が知っている範囲で一覧を作りたいと思います。
（随時更新して行くつもりです。）

####〜一覧〜
- [Max8（Max/Msp)](#max8maxmsp)
- [Pure Data](#pure-data)
- [Super Collider](#supercollider)
- [JUCE](#juce)
- [Faust](#faust)
- [Mozzi](#mozzi)
- [Tidal Cycles](#tidal-cycles)
- [Sonic Pi](#sonic-pi)
- [FoxDot](#foxdot)
- [SOUL](#soul)

###リアルタイム処理/インタラクティブ系（フロント）
- [Max8（Max/Msp)](#max8maxmsp)
- [Pure Data](#pure-data)
- [Super Collider](#supercollider)

###組み込み系（バック）
- [Pure Data](#pure-data)
- [JUCE](#juce)
- [Faust](#faust)

###ハードウェア系
- [Mozzi](#mozzi)

###ライブコーディング系
- [Super Collider](#supercollider)
- [Tidal Cycles](#tidal-cycles)
- [Sonic Pi](#sonic-pi)
- [FoxDot](#foxdot)

#Max8（Max/Msp)
###概要
Cycling '74が開発したノードベースの音響プログラミング言語。（オリジナルはMiller PucketteがIRCAM在籍時に開発）
元はMaxというDAWなどをコントロールする目的で作られた言語であったが、Mspという音響処理用パッケージが入りさらに映像処理ができるJitterというパッケージが入って今の形になった。
Ableton社のDAWであるLiveの中で拡張機能（Max for Live）として使えることもありLiveユーザーからも人気。
（8になってMCとかNodeとかさらに便利機能が増えたみたいです）

###いいところ

- ノードベースで各オブジェクトにヘルプがあるため学習しやすい
- Max for Liveがめちゃくちゃ便利
- ユーザーが多いためドキュメントや拡張（エクスターナル）が豊富
- スニペットやプラグイン管理等の便利機能がしっかりしている
- bpatcherやJava Script、VST、gen~（Max独自のテキストベース環境）などのユーザーが簡単に拡張できる機能も揃っている

###微妙なところ

- 良くも悪くも商品として完成されているため他の言語に組み込みとかはできない。
- アプリ書き出しが不安定
- ライセンスが有料でオープンソースではない（そこまで高いわけではない）
- バージョンが変わると結構がっつり仕様が変わる


#Pure Data
###概要
Maxの開発者であるMiller Pucketteが開発したノードベースの音響プログラミング言語。
Maxの原型だと思われがちだがこちらの方が新しい。
オープンソースであり多くの人によって開発が進められている。
2013年頃までPd extendedという便利な拡張機能がすでに盛り込まれているPure Dataが開発されていたが、現在は開発が止まっている。

###いいところ

- 基本無料でオープンソースである
- Linuxで動く（Raspberry Piで動く）
- 現在も開発者が多いためドキュメントや拡張機能 (エクスターナル）が豊富
- libPdという他の環境にPDを組み込むためのライブラリがありOpenFrameworksやSwiftなど様々な環境に組み込むことができる。

###微妙なところ

- Maxと比べるとはるかに見辛い
- Windowsだと音声入出力設定でハマったりハマらなかったりする

#SuperCollider
###概要
テキストベースの音響プログラミング言語。
ライブコーディングの際の音源部として使われたりもする。
twitter黎明期に140字以内で曲を作るチャレンジが流行り、サンプルとして配布されている。

###いいところ

- 基本無料でオープンソースである
- Ugenという音響処理用の関数のようなものが非常に豊富であり、それぞれのヘルプがそろっている。
- 慣れると簡潔に書くことができる。

###微妙なところ

- 日本でのユーザーは少ないため学習しづらい。
- 言語が非常に柔軟なため他人のコードを解読するのに時間がかかる。
- 以前は組み込み向けの開発もあったようだが今は活発ではない。

#JUCE
###概要
音楽アプリやVST/AUプラグインを作ることが目的とされたC++ライブラリ。
Tracktionの開発者が開発している。Maxのベースにも使われていた。（？）
RoliのBlocksの開発ができたり、Raspberry Piでも動いたりハードウェアとの親和性も高い。


###いいところ

- 同じコードでスタンドアロンアプリやVSTプラグインなどを様々なプラットフォームに合わせて作ることができ汎用性が高い。
- C++なので様々なSDKなどの資産を使うことができる
- Linuxで動く（Raspberry Piで動く）スタンドアロンアプリを作ることができる。

###微妙なところ

- C++なので若干敷居が高い。
- 映像生成系のアプリも作れるがOFやUnityと比べるとその辺は弱い。

#Faust
###概要
テキストベースではあるがストリームを非常に意識した作りの関数型音響プログラミング言語。
フランスの音響研究所GRAMEが中心に開発している。

###いいところ

- MaxエクスターナルやVST、Unityなど、様々な環境向けのプラグインとしてコンパイルすることができる。
- FaustLiveやFaust editor（web版）など手軽に始められる環境がある。

###微妙なところ

- 日本でのユーザーは少ないため学習しづらい。
- 文法が非常に独特で抽象的であるため、読みづらく描き辛い（慣れると大丈夫らしい）
- なぜかWindowsのMaxエクスターナルがうまく書き出せない（僕だけ？）

#Mozzi
###概要
Arduinoでシンセサイザーなどを作るためのライブラリ。
様々なArduinoやArduino互換基板で使うことができる。

###いいところ

- 安価にハード楽器を作ることができる。

###微妙なところ

- 当たり前ではあるがハード的な制約はある。

#Tidal Cycles
###概要
haskelベースのライブコーディング環境。
デフォルトではサウンドエンジンにSuperColliderを用いている。

#Sonic Pi
###概要
プログラミングや音楽の教育を目的として作られたプログラミング環境。
基本的にはDSP的なプログラムより楽譜的なプログラムに特化しており、
ライブコーディングに使われたりする。

#FoxDot
###概要
pythonベースのライブコーディング環境。
デフォルトではサウンドエンジンにSuperColliderを用いている。

#SOUL
###概要
JUCEを開発している会社が先日発表したばかりの言語。
プラットフォームやハード性能に縛られず、低レイヤーなプログラムを組めることを目指して要るっぽい。
音版GLSL的なもの？？