3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

Posted at

はじめに

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

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

Githubリンク

この記事ではインストールのやり方や使い方を解説していこうと思います。

デモ

デモは同じ内容を載せた個人ブログにて公開しています。
https://makotyo-blog.vercel.app/posts/supercollider-mcp-server

できること

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

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で出力します。

  • シンセ名: SimpleSine
  • コード: { SinOsc.ar(440, 0, 0.2) }
  • 再生時間: 5秒

  • エフェクトの適用

ユーザー:
現在の音にリバーブを追加して、ディレイタイムを2秒に設定してください

システム:
サイン波にリバーブを追加しました。使用した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秒のサイン波+リバーブの例を希望されますか?

  • シンセ名: SineWithReverb
  • コード: { FreeVerb.ar(SinOsc.ar(440, 0, 0.2), mix: 1, room: 1, damp: 0.5) }
  • 再生時間: 5秒

まとめ

MCPサーバーを活用することで、SuperColliderでより直感的に音作りができるようになります。
さらに複雑なシーケンスの作成に挑みたい場合は生成されたコードを元にSuperColliderのIDEで編集していっても良いでしょう。

音楽制作の新しい可能性を広げるツールとして、ぜひ試してみてください。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?