SuperColliderを操作するMCPサーバーを作ってみた
はじめに
SuperColliderは、プログラミングで音響合成が行える強力なシンセサイザーですが、使いこなすにはSuperColliderの文法の理解と音響合成の知識が必要です。
そこで最近注目を集めているModel Context Protocol (MCP) を使って手軽に自然言語でスパコを操ることができるのでは?と考え、SuperColliderを操作するMCPサーバーを開発しました。
開発したMCPサーバーのリポジトリは以下のリンクからアクセスできるので、興味のある方はぜひのぞいてみてください。
この記事ではインストールのやり方や使い方を解説していこうと思います。
デモ
※ 音量注意
池田亮司のようなSFチックでランダムなパルスを15秒鳴らしてください。
もう少し複雑なパターンでお願いできますか?
できること
2つのToolを提供しています。
synth-execute
1つのシンセサイザーを作成し、そのコードで音を出します。 引数はシンセサイザー名、シンセサイザーのコードを含むオブジェクトと再生時間です。
スキーマだけ抜粋すると以下のようになります。
{
synth: z.object({
name: z.string().describe("シンセの名前"),
code: z.string().describe("シンセのコード")
}).describe("再生するシンセの情報"),
duration: z.number().optional().describe("再生時間(ミリ秒)。デフォルトは5000(5秒)")
}
multi-synth-execute
複数のシンセサイザーを作成し、それらを同時に演奏します。 引数はシンセサイザーのオブジェクトのリストと再生時間です。
こちらのスキーマは以下のようになります。
{
synths: z.array(
z.object({
name: z.string().describe("シンセの名前"),
code: z.string().describe("シンセのコード")
})
).describe("再生するシンセのリスト"),
duration: z.number().optional().describe("再生時間(ミリ秒)。デフォルトは10000(10秒)")
}
インストール方法
前提条件
M1 Macで以下のソフトウェアを利用して動作確認を行いました。
- SuperCollider 3.13.0
- Node.js v22.2.0
- npm 10.7.0
セットアップ
SuperColliderのインストール
- SuperColliderの公式サイト からインストーラーをダウンロードしてインストールします。
Node.jsのインストール
- Node.jsの公式サイト を参照してインストールします。
MCPクライアントの設定
Claude DesktopやVS CodeなどMCPサーバーが利用可能なクライアントへ以下の設定を追加します。
- Claude Desktopの場合
/Users/<ユーザー名>/Library/Application\ Support/Claude/claude_desktop_config.json
に以下の設定を追加します。
{
"mcpServers": {
"supercollider-mcp": {
"command": "npx",
"args": [
"-y",
"@makotyo/supercollider-mcp",
]
}
}
}
- VS Codeの場合
VS Codeのユーザー設定(json)ファイルに以下のjsonブロックを追加してください。
設定を開くには、Ctrl + Shift + P
を押して「Preferences: Open User Settings (JSON)」と入力します。
{
"mcp": {
"servers": {
"mcp-supercollider": {
"command": "npx",
"args": [
"-y",
"@makotyo/mcp-supercollider"
]
}
}
}
}
使用例
以下のような操作が自然言語で可能になります:
- サイン波の生成
サイン波を出してください
サイン波を5秒間再生しました。
使用したSuperColliderコードは以下の通りです。
{ SinOsc.ar(440, 0, 0.2) }
このコードは、440Hzのサイン波(A4)を音量0.2で出力します。
- エフェクトの適用
現在の音にリバーブを追加して、ディレイタイムを2秒に設定してください
サイン波にリバーブを追加しました。使用したSuperColliderコードは以下の通りです。
使用したSuperColliderコードは以下の通りです。
{ FreeVerb.ar(SinOsc.ar(440, 0, 0.2), mix: 1, room: 1, damp: 0.5) }
このコードは、440Hzのサイン波(A4)を音量0.2で出力します。
このコードはリバーブ効果を最大(mix: 1, room: 1)で適用していますが、「ディレイタイム2秒」という指定に正確に対応するには、リバーブではなく明示的なディレイ(例えばCombNやDelayN)を使う必要があります。ディレイタイム2秒のサイン波+リバーブの例を希望されますか?
まとめ
MCPサーバーを活用することで、SuperColliderでより直感的に音作りができるようになります。
さらに複雑なシーケンスの作成に挑みたい場合は生成されたコードを元にSuperColliderのIDEで編集していっても良いでしょう。
音楽制作の新しい可能性を広げるツールとして、ぜひ試してみてください。
CC BY-NC 4.0 2025 © makotyoRSS