🌀 TidalCycles MCP服务器
与Claude AI+TidalCycles进行对话式实时编码
 ](https://nodejs.org/)
这个MCP(模型上下文协议)服务器使Claude能够通过自然对话控制TidalCycles,为算法音乐创作创造强大的人工智能辅助现场编码体验。
✨ 特性
- 🎵 评估潮汐周期模式 通过对话式人工智能
- 📊 国家意识 -克劳德知道现在在玩什么
- 🕰️ 图案历史 -跟踪和回忆以前的模式
- 🎛️ 渠道管理 -独奏、静默或静默特定频道
- 💬 自然对话 -用简单的英语和克劳德谈谈你的音乐
- 🔄 实时反馈 -即时模式评估
- 🚀 双重运输方式:用于Claude Desktop的stdio+用于外部客户端的WebSocket
- 🌐 网络可访问 -Web UI和远程客户端可以通过WebSocket连接
- 🔄 自动恢复 -具有自动重新连接功能的强大GHCi流程管理
📋 先决条件
安装前,请确保:
- 潮汐周期 -从以下位置安装 tidalcycles.org
- 包括GHCi(格拉斯哥Haskell编译器交互式) - 哈斯克尔堆栈或阴谋集团
- 超级对撞机+超级污垢 -音频输出所需
- 下载自 - 安装SuperDirt:在SuperCollider中,运行 Quarks.install("SuperDirt") - 安装示例: Quarks.install("Dirt-Samples")
- Claude桌面版 -从 claude.ai
- Node.js 18+ -用于运行MCP服务器
- 下载自 - 验证: node --version
🚀 快速开始
1.安装
# Clone the repository
git clone https://github.com/yourusername/tidal-mcp-server.git
cd tidal-mcp-server
# Install dependencies
npm install
# Build the server
npm run build2.启动超级对撞机
打开SuperCollider并运行:
// Start SuperDirt
SuperDirt.start;
// Verify it's listening
// Should see: "SuperDirt: listening to Tidal on port 57120"3.配置克劳德桌面
将此添加到您的Claude Desktop配置文件中:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json\ 视窗: %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"
}
}
}
}直接GHCi模式(实验-无重启):
{
"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
# Use this path for GHCI_PATH替换 /absolute/path/to/ 安装的实际路径。
4.文件监视设置(仅基于文件模式)
对于基于文件的模式,您需要查看输出文件并在TidalCycles中对其进行评估:
选项A:使用watchexec(推荐)
# Install watchexec
brew install watchexec # macOS
# or
cargo install watchexec-cli # Any OS with Rust
# Watch and auto-reload patterns
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:使用编辑器
打开 tidal-mcp-output.tidal 在您首选的编辑器中使用TidalCycles支持,并在Claude编写模式时手动评估模式。
5.开始使用
- 重新启动克劳德桌面 加载MCP服务器
- 开始新的对话
- 做音乐!
You: Create a funky drum pattern
Claude: [calls tidal_eval]
I'll create a syncopated funk groove:
d1 $ sound "bd ~ bd ~ bd ~ ~ ~"
You: Add a bassline
Claude: [calls tidal_eval on d2]
Added a groovy bassline:
d2 $ sound "bass2*8" # n "0 3 5 7"🎹 使用示例
基本模式
You: Play a simple drum beat
You: Make it faster
You: Add some hi-hats
You: What's playing right now?高级作文
You: Create a glitchy breakbeat with euclidean rhythms
You: Add a wobbling bassline with filter sweeps
You: Layer some atmospheric pads over the top
You: Make the whole thing more sparse现场表演
You: Solo channel d2
You: Bring back everything
You: Hush
You: Show me the last 5 patterns I evaluated🛠️ 可用工具
MCP服务器向Claude公开了这些工具:
tidal_eval
评估特定通道(d1-d9)上的潮汐周期模式。
参数:
channel:字符串(d1-d9)pattern:String(TidalCycles代码,不带d1 $前缀)
例子:
{
"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 # Main MCP server implementation
│ └── websocket-transport.ts # WebSocket transport layer
├── dist/ # Compiled JavaScript output
├── BootTidal.hs # TidalCycles initialization
├── tidal-mcp-output.tidal # Generated pattern output file
├── start-websocket.sh # WebSocket server startup script
├── test-websocket-client.js # WebSocket connection test
├── examples.tidal # Example patterns
├── WEBSOCKET-USAGE.md # WebSocket setup and usage guide
├── package.json # Node.js dependencies
├── tsconfig.json # TypeScript configuration
├── README.md # This file
├── QUICKSTART.md # Quick reference guide
├── CONTRIBUTING.md # Contribution guidelines
└── LICENSE # MIT License
🎨 用例
现场表演
- 在算法过程中动态生成模式
- 快速迭代和实验
- 卡住时生成应急模式
- 人工智能辅助即兴创作
学习与探索
- 请克劳德解释潮汐周期的概念
- 为特定技术生成示例模式
- 探索新的节奏和谐理念
- 通过对话学习
构图
- 音乐创意的快速原型制作
- 生成图案变化
- 与人工智能协同构图
- 构建复杂的分层安排
🔧 建筑
┌─────────┐ ┌──────────────┐ ┌──────────────┐
│ Claude │ ◄─MCP─► │ MCP Server │ ◄─────► │ TidalCycles │
│ AI │ │ (Node.js) │ │ (GHCi) │
└─────────┘ └──────────────┘ └──────────────┘
│ │
│ (File mode) │
▼ ▼
┌──────────────┐ ┌──────────────┐
│ .tidal file │ │ SuperCollider│
│ (watch) │ │ SuperDirt │
└──────────────┘ └──────────────┘流量:
- 你用自然语言和克劳德说话
- Claude使用MCP工具生成Tidal代码
- MCP服务器:
- 文件模式:将代码写入 .tidal file → 文件监视器对其进行评估 - 直接模式:直接发送到正在运行的GHCi进程
- TidalCycles/GHCi向SuperDirt发送OSC消息
- SuperCollider/SuperDirt播放音频
🐛 故障排除
“MCP服务器未连接”
- 检查路径
claude_desktop_config.json是绝对的 - 配置更改后重新启动Claude Desktop
- 检查Node.js版本:
node --version(需要18+) - 在Claude Desktop中检查MCP服务器日志
“模式不播放”(文件模式)
- 确保SuperCollider正在运行:
SuperDirt.start - 验证文件监视器(watchexec)是否正在运行
- 检查TIDAL_FILE路径是否正确
- 尝试在编辑器中手动评估文件
“模式不播放”(直接GHCi模式)
- 检查ghci是否在路径中:
which ghci - 验证配置中的GHCI_PATH是否匹配
which ghci - 检查MCP服务器日志中的“GHCi/TidalCycles已启动并连接”
- 确保只有一个GHCi实例正在运行
“生成ghci ENOONT”
- 在PATH中找不到GHCi
- 使用完整路径设置GHCI_PATH环境变量
- 在macOS上使用ghcup:通常
/Users/username/.ghcup/bin/ghci
“未找到样本”/声音库为空
- 在SuperCollider中安装污垢样本:
Quarks.install("Dirt-Samples");
// Recompile (Cmd+K)
SuperDirt.start;- 验证:
~dirt.soundLibrary.buffers.keys.do({|x| x.postln});
SuperCollider中的“迟到”消息
- 快速节奏下正常(丛林/DnB)
- 如果严重(>1秒),请重新启动SuperDirt
- 检查系统音频设置
- 降低模式复杂性
停止MCP服务器后音乐继续播放
- 模式在SuperCollider中运行,独立于MCP服务器
- 在超级对撞机中停止:
s.freeAll; - 或在任何GHCi/Tidal会议上:
hush - 杀死所有ghci进程:
pkill -9 ghci
🚧 已知限制
- 文件模式:每次更改时重新启动GHCi(导致短暂的音频丢失)
- 直接GHCi模式:实验性,可能有边缘情况
- 无视觉反馈:模式更改在编辑器中不可见(文件模式)
- 单个实例:无法同时运行多个MCP服务器
- 无法撤消:模式更改是即时的,无法撤消
🗺️ 路线图
✅ 已完成的功能
- 直接GHCi集成 -无需文件监视的实时模式评估
- WebSocket传输 -用于web UI和协作的网络可访问服务器
- 稳健的错误处理 -GHCi过程恢复和连接监控
- 会话日志记录 -带有时间戳的完整模式历史记录
🚀 下一步(优先功能)
- MIDI控制器输入 -物理旋钮/推子控制潮汐参数
- MIDI学习模式,便于映射 - 支持流行的控制器(Push、Launchpad等) - 复杂参数自动化的宏观控制
- 模式版本控制 -为您的模式提供类似Git的历史记录
- 带分支的撤消/重做系统 - 保存/恢复快照 - 比较模式版本
- 基于浏览器的用户界面 -实时模式可视化
- 实时波形显示 - 频道时间线视图 - 多UI的WebSocket集成
🌟 高级功能
- 实时音频分析 -AI获得音频反馈
- 频率分析,为模式选择提供信息 - 节拍同步的节拍检测 - 混合平衡振幅监测
- AI模式建议 -情境感知建议
- 基于ML的模式生成 - 针对特定风格的建议(技术、环境、休息) - 自动创建互补图案
- 多用户协作 -实时编码会议
- 多个用户控制不同的频道 - 回合制干扰模式 - 共享模式库
🎨 创意整合
- Hydra视觉集成 -反应式视觉效果
- 根据音频模式自动生成视觉效果 - 与节拍事件同步的视觉效果 - 实时视觉编码与音频
- DAW集成 -专业工作流程
- MIDI输出到硬件合成器 - Tidal会议录音 - 与Ableton Live/Logic同步时间线
- AI合成工具 -先进的创造力
- 生成全轨道结构 - 流派之间的风格转换 - 和谐分析与建议
🤝 贡献
欢迎投稿!请看 贡献.md 作为指导方针。
贡献者快速入门:
# Clone and setup
git clone https://github.com/yourusername/tidal-mcp-server.git
cd tidal-mcp-server
npm install
# Development mode (with auto-rebuild)
npm run dev
# Run tests
npm test
# Build for production
npm run build📚 资源
📄 许可证
MIT许可证-请参阅 许可证 文件以获取详细信息。
🙏 致谢
- 亚历克斯·麦克莱恩(亚旭) 用于创建潮汐周期
- TOPLAP和算法社区 实时编码文化
- Anthropic 模型上下文协议和Claude
- 每个用电脑编写代码和制作奇怪音乐的人
📞 支持
- 问题:
- 讨论:
- 潮汐循环社区: Discord 的中文翻译是“不和谐”或“纷争”。
______________________________________________________________________
由以下材料制成🌀 面向实时编码社区
*去制造一些算法噪音吧!*
