Skip to content

作曲・音響環境概観

最終更新日時: 2025年08月25日 12:57

  • nothing
  • 作曲音響環境を利用する上でどんな構成が可能でどんな新しいアプリを導入するべきかの仮説を考える

大まかなユースケース:

  1. ライブパフォーマンス:Logic Proや他のアプリと連携したライブパフォーマンス環境/ライブコーディング環境を構築したい
  2. Webベースインスタレーション:networking先からの情報でリアルタイムに音をレンダリングする
  3. 上記の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/MSPGUI主体、商用、Jitter/Gen対応パッチベース+コード対応GUI+統合開発環境映像統合や外部連携が容易
PureDataMax/MSP互換オープン版パッチベース軽量/モジュール化教育用途や移植性に優れる
SuperColliderサーバ/クライアント分離、OOPオブジェクト指向コマンド/REPL複雑な合成や動的構成に強い
TidalCyclesHaskellベース、周期構造の記述関数型ライブコーディングGHCiベース即興とアルゴリズム的記述に最適化
ChucK強力な時間制御、教育的時間指向プログラミングスタンドアロン時間構造と同期表現が独特
OvertoneClojureベース、JVM上、SC使用関数型+LISPClojure REPL関数型構文とSuperCollider連携
Tone.jsJavaScript製、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・外部連携・VJ統合視点の比較

Section titled “Web・外部連携・VJ統合視点の比較”
名前Web親和性Web融合方法外部I/FVJ連携独自性・特有機能
CsoundEmscriptenなど経由OSC, MIDI長期安定、DSP品質
Max/MSP低〜中Node for MaxなどMIDI, OSC, TCP/UDP◎ Resolume連携Jitterによる映像統合
PureDataPurrData, WebPdMIDI, OSC, libpd軽量性、移植性
SuperCollider低〜中scsynth WebAssembly化例ありOSC, MIDI, TCP/UDP音響合成自由度と構造記述
TidalCyclestidal-vscode, browser拡張OSC経由SCパターン構文に特化
ChucK低〜中miniAudicle+socket対応OSC, MIDI, TCP/UDP時間制御構文 => now
OvertoneWebSocket経由Clojure連携OSC, MIDIClojure×SC連携の関数型高抽象
Tone.jsWebAudio API直結WebSocket, MIDI APIブラウザ完全統合、非同期制御
Python音響系Flask + WebSocketなどMIDI, OSC, TCP, HTTPAI/学術向け応用性、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最も安定した環境備考
CsoundWindows, macOS, LinuxmacOSCLI中心、DAW連携は限定的
Max/MSPmacOS, WindowsmacOS商用、Ableton連携に強い
PureDataWindows, macOS, LinuxLinux軽量、リアルタイム性高い
SuperColliderWindows, macOS, LinuxmacOS音質と構文柔軟性が高い
TidalCyclesmacOS, Linux(WSL含む)macOSSuperCollider必須
ChucKWindows, macOS, LinuxmacOS教育環境でも安定
OvertonemacOS, LinuxmacOSClojure+JVM依存
Tone.jsブラウザ環境Chrome系ブラウザWebAudioベース
Python音響系Windows, macOS, LinuxmacOSFoxDotはSuperCollider依存
C++音響系Windows, macOS, LinuxWindowsVST開発にWindowsが強い
名前WindowsWSL2/Ubuntu備考
CsoundCLI動作、GUIも対応。両環境で安定
PureData▼(GUI/Audio不可)WSL2ではX11・音声出力に難あり、Windows版Pd使用が安全
Max/MSP×(非対応)商用、Windows/macOS専用
SuperColliderWSL2でも動作するが音出力はX11+PulseAudio構成が必要
TidalCyclesSC依存。WSL2では音出力に設定が必要(WSLgではやや改善)
ChucKCLIで動作可。WSL2では音声設定が必要(PulseAudio前提)
OvertoneJVM依存、X11不要。WSL2内でも動作
Tone.js◎(Chrome)◎(WSLg or Win)ブラウザ上動作。両環境で問題なし
Python音響系pyoやFoxDotもSCが設定されていれば動作可能
C++ (JUCE等)▼(非推奨)ビルドやGUIが複雑。WSL2では音出力やVST関連で制限
TouchDesigner◎(Windows専用)×(動作不可)OpenGL/DirectX依存。Windowsが唯一の正式対応プラットフォーム

Logic Pro連携・作曲ワークフロー視点

Section titled “Logic Pro連携・作曲ワークフロー視点”
名前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・外部連携・VJ統合視点の比較

Section titled “Web・外部連携・VJ統合視点の比較”
名前Web親和性Web融合方法外部I/FVJ連携独自性・特有機能
CsoundEmscriptenなど経由OSC, MIDI長期安定、DSP品質
Max/MSP低〜中Node for MaxなどMIDI, OSC, TCP/UDP◎ Resolume連携Jitterによる映像統合
PureDataPurrData, WebPdMIDI, OSC, libpd軽量性、移植性
SuperCollider低〜中scsynth WebAssembly化例ありOSC, MIDI, TCP/UDP音響合成自由度と構造記述
TidalCyclestidal-vscode, browser拡張OSC経由SCパターン構文に特化
ChucK低〜中miniAudicle+socket対応OSC, MIDI, TCP/UDP時間制御構文 => now
OvertoneWebSocket経由Clojure連携OSC, MIDIClojure×SC連携の関数型高抽象
Tone.jsWebAudio API直結WebSocket, MIDI APIブラウザ完全統合、非同期制御
Python音響系Flask + WebSocketなどMIDI, OSC, TCP, HTTPAI/学術向け応用性、FoxDot
C++音響系Emscriptenなど必要ASIO, VST, OSCプラグイン/DAW組込

ライブコーディングにおける定義と分類

Section titled “ライブコーディングにおける定義と分類”
  • 音響エンジンに対してリアルタイムにコードを入力・変更し、その場で音響出力が変化すること
  • 条件:
    • 実行中のコードの逐次評価/差し替えが可能
    • 入力に待機やバッファ処理なしで反応
    • タイミング(拍、拍頭など)との同期支援がある
  • 外部UIやOSC/MIDI/WebSocket等を使ってライブ的な制御ができる環境
  • 音の発生タイミングや内容はコードで記述されていなくても可
  • DAWとの連携やVST化された音源も含まれる

各プラットフォームの分類とライブ対応状況

Section titled “各プラットフォームの分類とライブ対応状況”
プラットフォーム狭義対応広義対応備考
TidalCyclesHaskell + SuperCollider。周期ベースで自動クオンタイズ
SuperColliderPbind + TempoClock で高精度な同期制御可能
FoxDot (Python)SuperColliderをPythonから制御。初心者向け
OvertoneClojure + SC、関数による合成とタイミング制御
ChucKshred を使いプログラム単位で動的制御が可能
Tone.jsJSからWebAudioをリアルタイム制御、UI/OSC連携可
PureDataGUIベース、外部制御に強い(libpd, Camomileなど)
Max/MSPNode for MaxでOSC/JS制御可能、Abletonとの統合強力
Csound×channel変数、WebAssembly連携、OSC連携で広義は可能
C++ (JUCE等)×VST化によるDAW統合前提、ライブ制御は外部設計依存

タイミング・BPM同期に関する対応比較

Section titled “タイミング・BPM同期に関する対応比較”

| プラットフォーム | 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)タイミング制御は別途実装必要

ライブパフォーマンスに影響するその他要素

Section titled “ライブパフォーマンスに影響するその他要素”
  • 状態管理:SuperColliderはs.freeAll, s.meter等で状態可視化と制御が可能
  • 録音機能:TidalCyclesやFoxDotは自動録音スクリプトがあり、後編集しやすい
  • DAW連携:Max for Live、Camomile、VST (C++)、libpd などがDAWとの直接連携を実現
  • スケーラビリティ:Tone.jsやOSCベースの環境はネットワーク同期/複数演者対応が可能
  • 拡張性:OvertoneやSuperColliderはOSC入力によるセンサ連携やVR対応なども構築可能