音频合成服务器

Csound MCP服务器通过模型上下文协议(MCP)向AI代理提供Csound音频引擎功能,支持减法合成、鼓合成等功能。

  • by erno-szabados
  • Python
  • 本地部署
  • 3 星标
  • 更新于
在 GitHub 查看 erno-szabados/musmcp

使用说明

Csound MCP服务器

Csound MCP服务器公开 Csound 通过模型上下文协议(MCP)向AI代理提供音频引擎功能。

特性

  • 无状态架构: 使用标准Csound进行轻量级执行。
  • 减法合成: 暴露a synthesize_sawtooth_lead_bass 该工具提供LLM友好的0-255映射ADSR参数,以塑造通过低通滤波器运行的锯齿波振荡器。
  • 鼓合成: 暴露a synthesize_kick_drum 该工具专门用于制作亚低音、强力House踢腿和扭曲的Hardstyle踢腿,使用直观的参数,如 punch 和 drive.
  • 语义护栏: 工具参数大量记录在声学定义中(例如,将“快速攻击”与整数范围相匹配),以及MCP资源(lore://sound_design, lore://drum_design)提供这些工具来教代理人如何合成经典乐器。
  • 错误处理: 优雅地捕捉并返回 stdout 和 stderr 如果满足以下条件,则向代理发送内容 csound 编译或执行失败。

先决条件

安装与运行

该包是用Python构建的,依赖于 mcp。您可以使用直接运行服务器 uv:

uv run musmcp

添加到MCP客户端

要在MCP客户端(如Claude Desktop或Cursor)中配置此服务器,请将其添加到您的配置中(调整工作区目录的根路径):

{
  "mcpServers": {
    "musmcp": {
      "command": "uv",
      "args": [
        "--directory",
        "/path/to/your/workspace/musmcp",
        "run",
        "musmcp"
      ]
    }
  }
}

使用示例(代理视角)

在使用合成工具之前,代理人可以阅读提供的 lore://sound_design 和 lore://drum_design MCP资源,了解如何将声学概念映射到 0-255 整数。

1. synthesize_sawtooth_lead_bass

这 synthesize_sawtooth_lead_bass 该工具是专门设计的,便于LLM代理使用。它将复杂的Csound信封抽象为简单的 0-255 整数。

以下是代理应如何将所需的声音映射到工具的参数:

1.勇敢/打击性低音(快速攻击,快速衰减,无持续)

{
  "pitch": 55.0,
  "duration": 1.5,
  "cutoff_hz": 400.0,
  "attack": 5,
  "decay": 80,
  "sustain": 0,
  "release": 50,
  "output_filename": "bass_pluck.wav"
}

2.暖垫(缓慢攻击、高维持、长释放)

{
  "pitch": 220.0,
  "duration": 4.0,
  "cutoff_hz": 1200.0,
  "attack": 150,
  "decay": 100,
  "sustain": 200,
  "release": 200,
  "output_filename": "warm_pad.wav"
}

3.攻击性领先(快速攻击、高维持、明亮滤镜)

{
  "pitch": 880.0,
  "duration": 2.0,
  "cutoff_hz": 4500.0,
  "attack": 10,
  "decay": 50,
  "sustain": 255,
  "release": 20,
  "output_filename": "aggr_lead.wav"
}

2. synthesize_kick_drum

一个专门的工具,用于创建从柔和的声学重击到蓬勃发展的808秒和扭曲的硬踢的一切。

1.808子踢(轰鸣,无硬点击)

{
  "fundamental_hz": 45.0,
  "punch": 20,
  "decay": 220,
  "drive": 10,
  "output_filename": "808_sub.wav"
}

2.硬风格/工业踢腿(严重扭曲,伴随着巨大的点击)

{
  "fundamental_hz": 50.0,
  "punch": 200,
  "decay": 150,
  "drive": 220,
  "output_filename": "hard_kick.wav"
}