AboutPostsMy Music Works

SuperColliderを操作するMCPサーバーを作ってみた

makotyo,4 min read

はじめに

SuperColliderは、プログラミングで音響合成が行える強力なシンセサイザーですが、使いこなすにはSuperColliderの文法の理解と音響合成の知識が必要です。
そこで最近注目を集めているModel Context Protocol (MCP) を使って手軽に自然言語でスパコを操ることができるのでは?と考え、SuperColliderを操作するMCPサーバーを開発しました。

開発したMCPサーバーのリポジトリは以下のリンクからアクセスできるので、興味のある方はぜひのぞいてみてください。

supercollider-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のインストール

Node.jsのインストール

MCPクライアントの設定

Claude DesktopやVS CodeなどMCPサーバーが利用可能なクライアントへ以下の設定を追加します。

/Users/<ユーザー名>/Library/Application\ Support/Claude/claude_desktop_config.json に以下の設定を追加します。

{ "mcpServers": { "supercollider-mcp": { "command": "npx", "args": [ "-y", "@makotyo/supercollider-mcp", ] } } }

VS Codeのユーザー設定(json)ファイルに以下のjsonブロックを追加してください。 設定を開くには、Ctrl + Shift + Pを押して「Preferences: Open User Settings (JSON)」と入力します。

{ "mcp": { "servers": { "mcp-supercollider": { "command": "npx", "args": [ "-y", "@makotyo/mcp-supercollider" ] } } } }

使用例

以下のような操作が自然言語で可能になります:

  1. サイン波の生成

サイン波を出してください

サイン波を5秒間再生しました。 使用したSuperColliderコードは以下の通りです。 { SinOsc.ar(440, 0, 0.2) } このコードは、440Hzのサイン波(A4)を音量0.2で出力します。

  1. エフェクトの適用

現在の音にリバーブを追加して、ディレイタイムを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