最終更新日時: 2025年08月25日 12:57
- 作曲音響環境を利用する上でどんな構成が可能でどんな新しいアプリを導入するべきかの仮説を考える
大まかなユースケース:
- ライブパフォーマンス:Logic Proや他のアプリと連携したライブパフォーマンス環境/ライブコーディング環境を構築したい
- Webベースインスタレーション:networking先からの情報でリアルタイムに音をレンダリングする
- 上記のshowcase:chromeでshow caseとしてのwavの1ループを独自楽器でbpmを決めて作りたい(LogicProでファイナライズ)
実際には、showcaseだけから始まりライブに至らないパターンもあるし、ライブパフォーマンスを作ってそれをインスタレーションはshowcaseに落とす場合もあるのだろう。まだ何も想定できないので仮説を作っておくことがこのドキュメントの目的だ。
- TidalCyclesとOvertoneは”ライブコーディング”に特化
- SuperColliderとChucKは”音響言語”としての抽象度と柔軟性が高い
- Max/MSP、PureData、CsoundはGUIや伝統的構成に強みがある
- Tone.jsやPython/C++ライブラリ群はWebやプログラミング環境との統合に優れる
| 名前 | 主な特徴 | プログラミング | 実行形態 | live | 他との比較視点 |
| | | | | |
|---|
| Csound | スコア/オーケストラ形式、古典的 | 宣言的+構造記述 | スタンドアロン | △ | 音質と安定性に優れる |
| Max/MSP | GUI主体、商用、Jitter/Gen対応 | パッチベース+コード対応 | GUI+統合開発環境 | ○ | 映像統合や外部連携が容易 |
| PureData | Max/MSP互換オープン版 | パッチベース | 軽量/モジュール化 | ○ | 教育用途や移植性に優れる |
| SuperCollider | サーバ/クライアント分離、OOP | オブジェクト指向 | コマンド/REPL | ◎ | 複雑な合成や動的構成に強い |
| TidalCycles | Haskellベース、周期構造の記述 | 関数型ライブコーディング | GHCiベース | ◎ | 即興とアルゴリズム的記述に最適化 |
| ChucK | 強力な時間制御、教育的 | 時間指向プログラミング | スタンドアロン | ○ | 時間構造と同期表現が独特 |
| Overtone | Clojureベース、JVM上、SC使用 | 関数型+LISP | Clojure REPL | ◎ | 関数型構文とSuperCollider連携 |
| Tone.js | JavaScript製、WebAudio APIベース | 非同期+イベント駆動 | ブラウザ上 | ○ | Web環境との親和性が高い |
| Python音響系 | pyo, scamp, FoxDot など | 手続き型+OOP混在 | スクリプト環境 | ○ | 科学計算やAIとの連携に優れる |
| C++音響系 | JUCE, RtAudio, STKなど | ネイティブコード | コンパイル型 | △ | 高性能、VST等プラグイン開発に活用 |
| | | | | |
- sclangとscsynthに分離されている
- 動的な音生成と複雑な合成構造に対応
- 多様なGUI拡張やネットワーク連携も可能
- パターンベースで記述が極めて簡潔
- 音源はSuperColliderに依存(SuperDirt)
- 高速な即興用途に最適
- 音の”今”をコードで扱う時間制御構文(
=> now)
- 教育現場や研究用途でも利用される
- コードの即時挿入/削除が容易(オンザフライ実行)
- Clojure上でSCサーバを操作
- 高度なライブコーディング環境とJVM連携
- 関数型による抽象度の高い音響表現が可能
- JavaScript/TypeScriptで記述
- 音源/エフェクト/スケジューラが統合済
- ブラウザで即実行可能、UIと結合しやすい
- FoxDot(Tidal風ライブ)、scamp(楽譜生成)、pyo(DSP)
- 教育・研究・AI音楽での応用が進む
- SuperColliderやMIDIと連携しやすい
- JUCE: GUIとVST開発に標準的
- RtAudio/STK: 低レベルAPIに強み
- 商用製品/研究での信頼性が高い
- 抽象度:TidalCycles/Overtone > SuperCollider > ChucK > Python > Tone.js > Csound ≒ Max ≒ Pd > C++
- リアルタイム性:Tidal > Overtone ≒ SC > ChucK > Python ≒ Tone.js > Pd > Max > Csound > C++
- 学習曲線:Csound > Overtone > SC > Tidal > ChucK > Python > Max/Pd > Tone.js > C++(左に行くほど難易度高)
- 柔軟性と拡張性:SuperCollider, Overtone, C++, Pythonが高い
| 名前 | Web親和性 | Web融合方法 | 外部I/F | VJ連携 | 独自性・特有機能 |
|---|
| Csound | 低 | Emscriptenなど経由 | OSC, MIDI | △ | 長期安定、DSP品質 |
| Max/MSP | 低〜中 | Node for Maxなど | MIDI, OSC, TCP/UDP | ◎ Resolume連携 | Jitterによる映像統合 |
| PureData | 中 | PurrData, WebPd | MIDI, OSC, libpd | ○ | 軽量性、移植性 |
| SuperCollider | 低〜中 | scsynth WebAssembly化例あり | OSC, MIDI, TCP/UDP | ○ | 音響合成自由度と構造記述 |
| TidalCycles | 中 | tidal-vscode, browser拡張 | OSC経由SC | △ | パターン構文に特化 |
| ChucK | 低〜中 | miniAudicle+socket対応 | OSC, MIDI, TCP/UDP | △ | 時間制御構文 => now |
| Overtone | 中 | WebSocket経由Clojure連携 | OSC, MIDI | △ | Clojure×SC連携の関数型高抽象 |
| Tone.js | 高 | WebAudio API直結 | WebSocket, MIDI API | △ | ブラウザ完全統合、非同期制御 |
| Python音響系 | 中 | Flask + WebSocketなど | MIDI, OSC, TCP, HTTP | ○ | AI/学術向け応用性、FoxDot |
| C++音響系 | 低 | Emscriptenなど必要 | ASIO, VST, OSC | ◎ | プラグイン/DAW組込 |
各ツールの特徴と位置づけを明確に比較すると、以下の通りである。
- TidalCyclesとOvertoneは”ライブコーディング”に特化
- SuperColliderとChucKは”音響言語”としての抽象度と柔軟性が高い
- Max/MSP、PureData、CsoundはGUIや伝統的構成に強みがある
- Tone.jsやPython/C++ライブラリ群はWebやプログラミング環境との統合に優れる
- Logic Proと連携するには「WAV出力」「MIDI/VST対応」「外部音源化」が鍵
| 名前 | 対応OS | 最も安定した環境 | 備考 |
|---|
| Csound | Windows, macOS, Linux | macOS | CLI中心、DAW連携は限定的 |
| Max/MSP | macOS, Windows | macOS | 商用、Ableton連携に強い |
| PureData | Windows, macOS, Linux | Linux | 軽量、リアルタイム性高い |
| SuperCollider | Windows, macOS, Linux | macOS | 音質と構文柔軟性が高い |
| TidalCycles | macOS, Linux(WSL含む) | macOS | SuperCollider必須 |
| ChucK | Windows, macOS, Linux | macOS | 教育環境でも安定 |
| Overtone | macOS, Linux | macOS | Clojure+JVM依存 |
| Tone.js | ブラウザ環境 | Chrome系ブラウザ | WebAudioベース |
| Python音響系 | Windows, macOS, Linux | macOS | FoxDotはSuperCollider依存 |
| C++音響系 | Windows, macOS, Linux | Windows | VST開発にWindowsが強い |
| 名前 | Windows | WSL2/Ubuntu | 備考 |
|---|
| Csound | ◎ | ◎ | CLI動作、GUIも対応。両環境で安定 |
| PureData | ◎ | ▼(GUI/Audio不可) | WSL2ではX11・音声出力に難あり、Windows版Pd使用が安全 |
| Max/MSP | ◎ | ×(非対応) | 商用、Windows/macOS専用 |
| SuperCollider | ◎ | ◎ | WSL2でも動作するが音出力はX11+PulseAudio構成が必要 |
| TidalCycles | ◎ | ○ | SC依存。WSL2では音出力に設定が必要(WSLgではやや改善) |
| ChucK | ◎ | ○ | CLIで動作可。WSL2では音声設定が必要(PulseAudio前提) |
| Overtone | ◎ | ◎ | JVM依存、X11不要。WSL2内でも動作 |
| Tone.js | ◎(Chrome) | ◎(WSLg or Win) | ブラウザ上動作。両環境で問題なし |
| Python音響系 | ◎ | ◎ | pyoやFoxDotもSCが設定されていれば動作可能 |
| C++ (JUCE等) | ◎ | ▼(非推奨) | ビルドやGUIが複雑。WSL2では音出力やVST関連で制限 |
| TouchDesigner | ◎(Windows専用) | ×(動作不可) | OpenGL/DirectX依存。Windowsが唯一の正式対応プラットフォーム |
| 名前 | BPM指定・拍子制御 | WAV/MIDI出力容易性 | 外部音源化(VST等) | 作曲ワークフロー補足 |
|---|
| Csound | △(時間指定のみ) | ○(手動レンダリング) | △(VSTなし) | リズム制御に難あり、音色デザインに特化 |
| Max/MSP | ○ | ○ | ○(Max for Live等) | Liveとの統合、エフェクトやジェネレータとして活用可 |
| PureData | ○ | ○ | ○(Camomile等) | VST化可能、リアルタイム生成も対応 |
| SuperCollider | ○ | △(外部で録音) | △(SC3 plugins別途) | 外部からOSCで制御し録音、FoxDot等が支援 |
| TidalCycles | ◎(構文に組込) | △(録音または外部制御) | × | bpm制御明示、パターンベースの即興向き |
| ChucK | ○ | △(録音に依存) | × | リアルタイムに強いがVST化難 |
| Overtone | ○ | △(録音に依存) | × | JVM依存、SCとの協調が前提 |
| Tone.js | ◎ | ○(ブラウザ録音可) | △(VST不可) | UI付き自作楽器可、外部録音してLogicへ |
| Python音響系 | ○ | ○(pyoなど) | △(非標準) | FoxDot, scampは楽譜・制御に優れる |
| C++音響系 | ◎(自動計算可能) | ◎(DAW向け) | ◎(VST標準) | Logic対応VST開発に最適 |
- VSTプラグイン化:C++ (JUCE) や PureData (Camomile) を使い、独自音源をVSTとしてLogic Proに組み込む
- OSC制御:SuperColliderやPythonからOSCで外部制御→DAW録音
- WAV書き出し:TidalCyclesやCsoundなど、非DAW連携環境では録音出力→Logicで加工
- Webインタフェース:Tone.js等で生成した音素材を録音・DLして取り込む(クロスプラットフォーム性重視)
| 名前 | Web親和性 | Web融合方法 | 外部I/F | VJ連携 | 独自性・特有機能 |
|---|
| Csound | 低 | Emscriptenなど経由 | OSC, MIDI | △ | 長期安定、DSP品質 |
| Max/MSP | 低〜中 | Node for Maxなど | MIDI, OSC, TCP/UDP | ◎ Resolume連携 | Jitterによる映像統合 |
| PureData | 中 | PurrData, WebPd | MIDI, OSC, libpd | ○ | 軽量性、移植性 |
| SuperCollider | 低〜中 | scsynth WebAssembly化例あり | OSC, MIDI, TCP/UDP | ○ | 音響合成自由度と構造記述 |
| TidalCycles | 中 | tidal-vscode, browser拡張 | OSC経由SC | △ | パターン構文に特化 |
| ChucK | 低〜中 | miniAudicle+socket対応 | OSC, MIDI, TCP/UDP | △ | 時間制御構文 => now |
| Overtone | 中 | WebSocket経由Clojure連携 | OSC, MIDI | △ | Clojure×SC連携の関数型高抽象 |
| Tone.js | 高 | WebAudio API直結 | WebSocket, MIDI API | △ | ブラウザ完全統合、非同期制御 |
| Python音響系 | 中 | Flask + WebSocketなど | MIDI, OSC, TCP, HTTP | ○ | AI/学術向け応用性、FoxDot |
| C++音響系 | 低 | Emscriptenなど必要 | ASIO, VST, OSC | ◎ | プラグイン/DAW組込 |
- 音響エンジンに対してリアルタイムにコードを入力・変更し、その場で音響出力が変化すること
- 条件:
- 実行中のコードの逐次評価/差し替えが可能
- 入力に待機やバッファ処理なしで反応
- タイミング(拍、拍頭など)との同期支援がある
- 外部UIやOSC/MIDI/WebSocket等を使ってライブ的な制御ができる環境
- 音の発生タイミングや内容はコードで記述されていなくても可
- DAWとの連携やVST化された音源も含まれる
| プラットフォーム | 狭義対応 | 広義対応 | 備考 |
|---|
| TidalCycles | ◎ | ○ | Haskell + SuperCollider。周期ベースで自動クオンタイズ |
| SuperCollider | ◎ | ◎ | Pbind + TempoClock で高精度な同期制御可能 |
| FoxDot (Python) | ◎ | ○ | SuperColliderをPythonから制御。初心者向け |
| Overtone | ○ | ◎ | Clojure + SC、関数による合成とタイミング制御 |
| ChucK | ○ | ○ | shred を使いプログラム単位で動的制御が可能 |
| Tone.js | △ | ◎ | JSからWebAudioをリアルタイム制御、UI/OSC連携可 |
| PureData | △ | ◎ | GUIベース、外部制御に強い(libpd, Camomileなど) |
| Max/MSP | △ | ◎ | Node for MaxでOSC/JS制御可能、Abletonとの統合強力 |
| Csound | × | ◎ | channel変数、WebAssembly連携、OSC連携で広義は可能 |
| C++ (JUCE等) | × | ○ | VST化によるDAW統合前提、ライブ制御は外部設計依存 |
| プラットフォーム | BPM明示 | 自動クオンタイズ | 任意拍頭同期 | 外部クロック連携 | 備考 |
| | | | | |
|---|
| TidalCycles | ◎ (setcps) | ◎ | ◎(1小節単位) | △(OSCで制御) | 最も自動化されている |
| SuperCollider | ◎ (TempoClock) | ○(要設定) | ◎(quant指定) | ◎(OSC/MIDI) | 柔軟だが手動設定前提 |
| FoxDot | ◎ (Clock.bpm) | ◎ | ◎(自動) | △ | ラップトップパフォーマンス向け |
| Overtone | ◎(SCに準拠) | ○(要手動) | ○(関数で制御) | ◎ | 同期はコードで明示する必要あり |
| ChucK | ○(手動計算) | ×(手動) | ○(コードで明示) | ○(MIDIも可能) | now制御は強力だが複雑 |
| Tone.js | ◎(Tone.Transport.bpm) | ◎ | ○(schedule) | △(WebSocket等) | ブラウザ内で容易に同期可能 |
| PureData | ○(環境依存) | △(外部支援必要) | △ | ◎ | MIDI同期や拍制御可能 |
| Max/MSP | ◎(Live対応) | ◎(Abletonで) | ◎(Live clip単位) | ◎ | Live連携では最高レベルの制御 |
| Csound | △(直接指定不可) | ×(明示同期なし) | △(手動) | ◎(OSC/channel) | タイミング制御は別途実装必要 |
- 状態管理:SuperColliderは
s.freeAll, s.meter等で状態可視化と制御が可能
- 録音機能:TidalCyclesやFoxDotは自動録音スクリプトがあり、後編集しやすい
- DAW連携:Max for Live、Camomile、VST (C++)、libpd などがDAWとの直接連携を実現
- スケーラビリティ:Tone.jsやOSCベースの環境はネットワーク同期/複数演者対応が可能
- 拡張性:OvertoneやSuperColliderはOSC入力によるセンサ連携やVR対応なども構築可能