🚀 Carla MCP Server
このCarla MCP Serverは、Carlaオーディオプラグインホストを完全に制御するための包括的なモデルコンテキストプロトコル(MCP)サーバーです。このサーバーを通じて、大規模言語モデル(LLM)による自然言語でのプロのオーディオ制作ワークフローの制御が可能になります。
🚀 クイックスタート
Carla MCP Serverは、AIアシスタントとプロのオーディオソフトウェアの間に、本番環境で使用可能なインターフェースを提供します。7つの機能カテゴリーにまたがる45のツールを備え、オーディオ制作の完全な制御を可能にします。
✨ 主な機能
- 🤖 AIネイティブ:大規模言語モデル(LLM)を通じた自然言語制御に最適化されています。
- 🎛️ 完全制御:オーディオ制作のあらゆる側面をカバーする45のツールを提供します。
- ⚡ リアルタイム:低レイテンシーのモニタリングと分析機能を備えています。
- 🔧 プロ仕様:包括的なエラーハンドリングと型安全性を備え、本番環境での使用に耐えます。
- 📈 スケーラブル:複雑なワークフローをサポートするモジュール式アーキテクチャです。
🌟 できること
AIアシスタントに以下のようなプロのオーディオタスクを依頼できます。
- "ミキシングプロジェクトを読み込み、圧縮をかけたドラムバスをセットアップして"
- "リードシンセにフィルタースイープエフェクトを作成し、テンポに同期させて"
- "ミックスを分析し、周波数バランスを改善する提案をして"
- "ボーカルにパラレル圧縮を設定し、バースとコーラスで異なる設定にして"
- "このセッションを低レイテンシーでライブパフォーマンスに備えさせて"
🎛️ 完全な機能セット
🗂️ セッション管理(8つのツール)
- 自動接続付きでプロジェクトを読み込み/保存
- A/Bスナップショットを作成して比較
- クロスフェードでセッションをホットスワップ
- 複数の形式でエクスポート/インポート
- セッションのクリーンアップと最適化
🔌 プラグイン制御(8つのツール)
- VST2/3、LV2、LADSPA、DSSI、AU、SF2/SFZプラグインを読み込み
- ディレクトリをスキャンして利用可能なプラグインを検出
- パラメーターマッピング付きでプラグインを複製して置き換え
- プラグインチェーンでバッチ処理
- リアルタイムでプラグインの状態を制御
🔗 オーディオルーティング(7つのツール)
- 複雑なオーディオ/MIDIルーティングマトリックス
- グルーピング付きでバスを作成し管理
- 圧縮用のサイドチェーン設定
- リアルタイムでルーティングマトリックスを検査
🎚️ パラメーターオートメーション(8つのツール)
- 複数のカーブタイプを持つ高度なオートメーション
- カスタム範囲付きでMIDI CCをマッピング
- 複数のパラメーター用のマクロコントロール
- パラメーターの直接取得/設定操作
- リアルタイムでパラメーターを制御しモニタリング
📊 リアルタイム分析(5つのツール)
- カスタマイズ可能なFFTでスペクトル分析
- オーディオレベルメータリング(ピーク、RMS、LUFS)
- レイテンシー測定と最適化
- フィードバックループの検出と防止
- 時間経過に伴うパラメーターキャプチャ
🔊 JACK統合(6つのツール)
- JACKポートの管理と接続
- システムオーディオルーティング
- ポートのモニタリングとステータス
- プラグインの自動接続
- 接続の安定性検証
🖥️ ハードウェア制御(3つのツール)
- オーディオインターフェースの設定
- デバイスの検出と管理
- コントロールサーフェイスのマッピング
- モニターキャリブレーションのサポート
🎓 MixAssist統合
- MixAssist研究データセットへの直接アクセス
- プロのオーディオエンジニアリング会話データベース
- 専門家からの実践的なミキシングアドバイスとテクニック
- コンテキストに応じたミキシングガイダンスとトラブルシューティングリソース
📦 インストール
前提条件
- Carlaオーディオプラグインホスト
sudo apt install carla carla-dev
git clone https://github.com/falkTX/Carla.git
cd Carla
make
sudo make install
- Python環境
python3 --version
- オーディオシステム
sudo apt install jackd2 jack-tools
sudo apt install wine wine32 wine64
セットアップ
- クローンとインストール
git clone https://github.com/your-org/carla-mcp-server.git
cd carla-mcp-server
pip install -r requirements.txt
pip install -e ".[dev]"
- 環境を設定
export CARLA_PATH=/usr/share/carla
export PYTHONPATH=$CARLA_PATH/source/frontend:$PYTHONPATH
export LD_LIBRARY_PATH=/usr/lib/carla:$LD_LIBRARY_PATH
- インストールをテスト
pytest tests/
python -c "import carla_backend; print('Carla integration working!')"
💻 使用例
クイックスタート
python server.py
python server.py --debug --log-level INFO
MCPクライアントの統合
MCPクライアントの設定(例:Claude Desktop)に追加します。
{
"mcpServers": {
"carla-mcp": {
"type": "stdio",
"command": "python",
"args": ["/path/to/carla-mcp-server/server.py"],
"env": {
"CARLA_PATH": "/usr/share/carla",
"PYTHONPATH": "/usr/share/carla/source/frontend"
}
}
}
}
クイックセットアップ:提供されている.mcp.json.exampleファイルをコピーし、システムに合わせてパスを調整します。
自然言語の使用例
LLMに接続した後、自然言語で複雑なオーディオタスクを実行できます。
基本的なミキシングセッション
ユーザー: "私のロックソングプロジェクトを読み込み、ボーカルのランブルを除去するEQを追加し、ボーカルのクリアさを向上させて。"
AI: 完了です!プロジェクトを読み込み、マイクロフォンのEQを最適化して、プロレベルのボーカル品質を実現しました。
🎯 ボーカル最適化適用:
✅ ランブル除去:
- 50Hz: -12dB (サブベースのランブルを除去)
- 100Hz: -8dB (低周波ノイズを低減)
- 156Hz: -6dB (濁った低域ミッドをクリーンアップ)
✅ クリアさ向上:
- 2500Hz: +4dB (ボーカルの存在感)
- 3500Hz: +6dB (音声の明瞭性)
- 5000Hz: +3dB (クリアさと定義)
✅ シビランス低減:
- 10000Hz: -4dB (耳障りな's'や't'の音を抑える)
マイクロフォンの信号は、最適化されたEQを通じてルーティングされ、ランブルが低減され、クリアさが向上し、シビランスがコントロールされた、よりクリーンでプロなボーカルサウンドが得られます。これらの設定は、標準的なポップ/ロックのボーカル処理テクニックに基づいています。
クリエイティブなサウンドデザイン
ユーザー: "シンセパッドに緊張感を醸し出すエボリューション型のフィルタースイープを作成して"
AI: 緊張感を醸し出すダイナミックなフィルターオートメーションを作成します。
1. シンセパッドプラグインを見つける
2. 指数関数的なフィルター周波数オートメーションを設定する
3. より個性的なサウンドにするためにレゾナンスオートメーションを追加する
4. スイープをプロジェクトのテンポに同期させる
16小節のフィルタースイープを作成しました。最初は控えめで、徐々に激しいピークに達するようになっており、アレンジに緊張感を与えるのに最適です。
問題解決
ユーザー: "ミックスが濁っているようで、少しフィードバックがあります。"
AI: 分析して問題を解決します。
1. 濁った周波数を特定するためにスペクトル分析を実行する
2. ルーティング内のフィードバックループをスキャンする
3. 濁りを解消するために補正EQを適用する
4. 見つけたフィードバックパスを修正する
分析が完了しました!200 - 300Hz付近のビルドアップを発見し(補正EQを適用)、リバーブセンドと入力の間のフィードバックループを修正しました。
これでミックスははるかにクリーンに聞こえるはずです。
ミックスの曲構造を分析
ユーザー: "私の曲の全長にわたってVUメーターのレベルを分析し、過去の測定データを使用して、各バース、コーラス、ソロセクションがタイムコード上のどこから始まるかを特定して。"
AI: 05:32分間(ミックスの正確な長さに、再生のわずかな遅延を考慮して2秒を加えた時間)のVUメータープラグインの分析を開始します。
...
VUメーターのレベル分析が完了しました!処理した過去の測定データに基づいて、曲の音楽構造を以下のように分解します。
1. 00:02 - イントロ
2. 00:28 - 最初のバース
3. 01:20 - 最初のコーラス
4. 01:50 - 2番目のバース
5. 2:45 - 2番目のコーラス
6. 3:32 - ソロ
7. 4:02 - ブレイクダウン
8. 4:20 - 最後のコーラス
9. 5:12 - アウトロ
🛠️ 開発
プロジェクト構造
carla-mcp-server/
├── server.py # メインのMCPサーバー
├── carla_controller.py # Carlaバックエンドのラッパー
├── tool_registry.py # ツール登録システム
├── carla_types.py # 型定義とスキーマ
├── base_tools.py # 基本ツールフレームワーク
├── mixassist_resources.py # MixAssistデータセットの統合
├── mixassist_schema.py # MixAssistデータのスキーマ
├── tools/ # MCPツールの実装
│ ├── session_tools.py # セッション管理
│ ├── plugin_tools.py # プラグイン制御
│ ├── routing_tools.py # オーディオルーティング
│ ├── parameter_tools.py # パラメーターオートメーション
│ ├── analysis_tools.py # リアルタイム分析
│ ├── jack_tools.py # JACK統合
│ └── hardware_tools.py # ハードウェア制御
├── monitors/ # リアルタイムモニタリング
│ ├── audio_monitor.py # オーディオレベルモニタリング
│ ├── cpu_monitor.py # パフォーマンスモニタリング
│ └── event_monitor.py # イベントストリーミング
├── tests/ # 包括的なテストスイート
├── .mcp.json.example # 例のMCP設定ファイル
└── LICENSE # GPL-2.0-or-laterライセンス
テストの実行
pytest
pytest --cov=carla_mcp_server --cov-report=html
pytest tests/test_server.py::TestSessionManagement
pytest tests/test_complete_suite.py
コード品質
black carla_mcp_server/
isort carla_mcp_server/
mypy carla_mcp_server/
flake8 carla_mcp_server/
pre-commit run --all-files
新しいツールの追加
- ツールメソッドを作成:適切な
tools/モジュール内に作成します。async def my_new_tool(self, param1: str, param2: int = 10) -> dict:
"""ドキュメント用のツール説明。"""
try:
return {"success": True, "result": data}
except Exception as e:
return {"success": False, "error": str(e)}
- ツールを登録:
tool_registry.py内で登録します。ToolDefinition(
name="my_new_tool",
description="MCPクライアント用の説明",
handler="tool_class_name",
input_schema={/* JSONスキーマ */}
)
- テストを追加:
tests/内に追加します。async def test_my_new_tool():
🧩 完全なツールリファレンス
セッション管理
load_session - Carlaプロジェクトファイルを読み込む
save_session - 現在のセッション状態を保存する
create_snapshot - A/B比較用のスナップショットを作成する
switch_session - セッションをホットスワップする
list_sessions - 利用可能なセッションを表示する
delete_session - セッションを削除する
export_session - オーディオ形式でエクスポートする
import_session - 外部形式からインポートする
プラグイン制御
load_plugin - 任意のプラグイン形式を読み込む
scan_plugins - 利用可能なプラグインを検出する
control_plugin - プラグインをアクティブ化/バイパス/ソロ/削除する
batch_process - オーディオにプラグインチェーンを適用する
list_plugins - 読み込まれたプラグインを表示する
get_plugin_info - 詳細なプラグイン情報を取得する
clone_plugin - 設定を保持したままプラグインを複製する
replace_plugin - パラメーターマッピング付きでプラグインを交換する
オーディオルーティング
connect_audio - オーディオ接続を作成する
create_bus - グルーピング用のオーディオバスを作成する
setup_sidechain - サイドチェーンルーティングを設定する
get_routing_matrix - 完全なルーティングを表示する
disconnect_audio - 接続を削除する
create_send - センド/リターンエフェクトを設定する
set_connection_gain - 接続レベルを調整する
パラメーターオートメーション
automate_parameter - オートメーションカーブを作成する
map_midi_cc - MIDIコントローラーをマッピングする
set_parameter - プラグインのパラメーター値を直接設定する
get_parameter - プラグインのパラメーター値と情報を取得する
create_macro - 複数パラメーターのマクロを作成する
record_automation - パラメーターの変更をキャプチャする
randomize_parameters - クリエイティブなランダム化を行う
morph_parameters - スムーズなパラメーター遷移を行う
リアルタイム分析
analyze_spectrum - FFTスペクトル分析を行う
measure_levels - ピーク/RMS/LUFSメータリングを行う
capture_plugin_parameters - 時間経過に伴うパラメーターモニタリングを行う
detect_feedback - フィードバックループを検出する
analyze_latency - システムのレイテンシーを測定する
JACK統合
list_jack_ports - 利用可能なJACKポートを表示する
connect_jack_ports - JACKポートを接続する
disconnect_jack_ports - JACKポートの接続を切断する
get_jack_connections - ポートの接続を表示する
connect_system_to_plugin - システムオーディオをプラグインにルーティングする
connect_plugin_to_system - プラグインをシステム出力にルーティングする
ハードウェア制御
configure_audio_interface - オーディオハードウェアを設定する
list_audio_devices - オーディオデバイスを検出する
map_control_surface - MIDIコントローラーを設定する
📚 ドキュメント
- API.md - 例付きの完全なツールリファレンス
- ARCHITECTURE.md - 技術的なアーキテクチャドキュメント
- CONTRIBUTING.md - 開発ガイドライン
🔧 設定
サーバー設定 (config/config.yaml)
server:
host: localhost
port: 8765
log_level: INFO
carla:
path: /usr/share/carla
wine_prefix: ~/.wine
auto_start_engine: true
audio:
driver: JACK
sample_rate: 48000
buffer_size: 512
auto_connect: true
plugins:
scan_paths:
- /usr/lib/lv2
- /usr/lib/vst
- ~/.wine/drive_c/Program Files/Common Files/VST3
cache_enabled: true
monitoring:
audio_enabled: true
cpu_enabled: true
update_interval_ms: 100
環境変数
export CARLA_PATH=/usr/share/carla
export PYTHONPATH=$CARLA_PATH/source/frontend:$PYTHONPATH
export LD_LIBRARY_PATH=/usr/lib/carla:$LD_LIBRARY_PATH
export CARLA_MCP_LOG_LEVEL=INFO
export CARLA_MCP_HOST=localhost
export CARLA_MCP_PORT=8765
🤝 コントリビューション
コントリビューションを歓迎します!詳細なガイドラインはCONTRIBUTING.mdを参照してください。
コントリビューションの手順
- リポジトリをフォークする
- 機能ブランチを作成する
- 新機能に対するテストを追加する
- すべてのテストが通ることを確認する
- プルリクエストを送信する
📄 ライセンス
このプロジェクトはGPL-2.0-or-laterライセンスの下でライセンスされています。詳細はLICENSEファイルを参照してください。
🙏 クレジット
📞 サポート
AIアシスタントによるオーディオ制作ワークフローの革命を始めましょう! 🎵✨