通过自然对话控制TidalCycles进行实时编码
此MCP(模型上下文协议)服务器使Claude能够通过自然对话控制TidalCycles,创建强大的AI辅助实时编码体验,用于算法音乐创作。
在安装之前,请确保你拥有:
TidalCycles - 从 tidalcycles.org 安装
SuperCollider + SuperDirt - 音频输出所需
Quarks.install("SuperDirt")Quarks.install("Dirt-Samples")Claude Desktop - 从 claude.ai 获取
Node.js 18+ - 运行MCP服务器
node --version# 克隆仓库
git clone https://github.com/yourusername/tidal-mcp-server.git
cd tidal-mcp-server
# 安装依赖
npm install
# 构建服务器
npm run build
打开SuperCollider并运行:
// 启动SuperDirt
SuperDirt.start;
// 验证是否正在监听
// 应该看到:"SuperDirt: listening to Tidal on port 57120"
在你的Claude Desktop配置文件中添加以下内容:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
Linux: ~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"tidal": {
"command": "node",
"args": [
"/absolute/path/to/tidal-mcp-server/dist/index.js"
],
"env": {
"TIDAL_FILE": "/absolute/path/to/tidal-mcp-server/tidal-mcp-output.tidal"
}
}
}
}
{
"mcpServers": {
"tidal": {
"command": "node",
"args": [
"/absolute/path/to/tidal-mcp-server/dist/index.js"
],
"env": {
"TIDAL_FILE": "/absolute/path/to/tidal-mcp-server/tidal-mcp-output.tidal",
"TIDAL_USE_GHCI": "true",
"TIDAL_BOOT_PATH": "/absolute/path/to/tidal-mcp-server/BootTidal.hs",
"GHCI_PATH": "/usr/local/bin/ghci"
}
}
}
}
找到你的ghci路径:
which ghci
# 使用这个路径作为GHCI_PATH
用实际安装路径替换 /absolute/path/to/。
对于文件模式,你需要监视输出文件并在TidalCycles中评估它:
选项A:使用watchexec(推荐)
# 安装watchexec
brew install watchexec # macOS
# 或
cargo install watchexec-cli # 任何带有Rust的系统
# 监视并自动重新加载模式
cd /path/to/tidal-mcp-server
watchexec --restart -w tidal-mcp-output.tidal \
"ghci -ghci-script BootTidal.hs -ghci-script tidal-mcp-output.tidal"
选项B:使用你的编辑器
在支持TidalCycles的首选编辑器中打开 tidal-mcp-output.tidal 并手动评估Claude写入的模式。
你:创建一个有趣的鼓点模式
Claude:[调用tidal_eval]
我会创建一个同步的放克节奏:
d1 $ sound "bd ~ bd ~ bd ~ ~ ~"
你:添加贝斯线
Claude:[调用d2上的tidal_eval]
添加了一个有节奏感的贝斯线:
d2 $ sound "bass2*8" # n "0 3 5 7"
你:播放一个简单的鼓点
你:让它更快
你:添加一些踩镲声
你:现在正在播放什么?
你:创建一个带有欧几里得节奏的故障节拍
你:添加一个带有滤波扫过的摇摆贝斯线
你:在上面叠加一些氛围垫
你:让整个作品更稀疏
你:独奏通道d2
你:恢复所有
你:静音
你:显示我最后评估的5个模式
MCP服务器向Claude暴露了这些工具:
tidal_eval在特定通道(d1-d9)上评估TidalCycles模式。
参数:
channel: 字符串(d1-d9)pattern: 字符串(不带 d1 $ 前缀的TidalCycles代码)示例:
{
"channel": "d1",
"pattern": "sound \"bd sd bd sd\" # gain \"1.2\""
}
tidal_hush立即停止所有当前播放的模式。
tidal_silence优雅地停止特定通道。
参数:
channel: 字符串(d1-d9)tidal_get_state获取所有通道的当前状态 - 正在播放的内容及其开始时间。
tidal_solo独奏特定通道,静音其他所有通道。
参数:
channel: 字符串(d1-d9)tidal_unsolo独奏后恢复所有通道。
tidal_get_history获取当前会话中的模式历史。
参数:
limit: 数字(可选,默认值:10)tidal-mcp-server/
├── src/
│ ├── index.ts # 主MCP服务器实现
│ └── websocket-transport.ts # WebSocket传输层
├── dist/ # 编译后的JavaScript输出
├── BootTidal.hs # TidalCycles初始化
├── tidal-mcp-output.tidal # 生成的模式输出文件
├── start-websocket.sh # WebSocket服务器启动脚本
├── test-websocket-client.js # WebSocket连接测试
├── examples.tidal # 示例模式
├── WEBSOCKET-USAGE.md # WebSocket设置和使用指南
├── package.json # Node.js依赖
├── tsconfig.json # TypeScript配置
├── README.md # 本文档
├── QUICKSTART.md # 快速参考指南
├── CONTRIBUTING.md # 贡献指南
└── LICENSE # MIT许可证
┌─────────┐ ┌──────────────┐ ┌──────────────┐
│ Claude │ ◄─MCP─► │ MCP Server │ ◄─────► │ TidalCycles │
│ AI │ │ (Node.js) │ │ (GHCi) │
└─────────┘ └──────────────┘ └──────────────┘
│ │
│ (文件模式) │
▼ ▼
┌──────────────┐ ┌──────────────┐
│ .tidal文件 │ │ SuperCollider│
│ (监视) │ │ SuperDirt │
└──────────────┘ └──────────────┘
流程:
.tidal文件 → 文件监视器评估它claude_desktop_config.json中的路径是否绝对node --version(需要18+)SuperDirt.startwhich ghciwhich ghci匹配/Users/username/.ghcup/bin/ghciQuarks.install("Dirt-Samples");
// 重新编译(Cmd+K)
SuperDirt.start;
~dirt.soundLibrary.buffers.keys.do({|x| x.postln});s.freeAll;hushpkill -9 ghciMIDI控制器输入 - 物理旋钮/推子控制Tidal参数
模式版本控制 - 类似Git的历史记录
基于浏览器的UI - 实时模式可视化
实时音频分析 - AI获得音频反馈
AI模式建议 - 上下文感知推荐
多用户协作 - 实时编码会话
Hydra视觉整合 - 反应式视觉效果
DAW整合 - 专业工作流程
AI创作工具 - 高级创意
欢迎贡献!请参阅 CONTRIBUTING.md 了解指南。
贡献者快速入门:
# 克隆并设置
git clone https://github.com/yourusername/tidal-mcp-server.git
cd tidal-mcp-server
npm install
# 开发模式(自动重建)
npm run dev
# 运行测试
npm test
# 为生产构建
npm run build
MIT 许可证 - 详情见 LICENSE 文件。
为实时编码社区制作的 🌀
去吧,制造一些算法噪音吧!