达里乌斯在Discord上🎵🤖
这是我第一个MCP服务器,是心血来潮为一个叫Yikes的人搭建的。
这的作用
- 达里乌斯(Discord机器人)将Magenta RT生成的音频流式传输到Discord语音频道
- 克劳德(MCP服务器)作为音乐参数的智能控制界面
- 你给出像“让它更有攻击性”或“加入一些酸性浩室音乐的氛围”这样的自然语言指令
结果:Claude实时响应你的语音反馈,而你的朋友们则在Discord上收听。
根据上面的信息,执行如下指令:
这个应用程序连接到托管在HuggingFace Spaces上的Magenta RT API: 合作补丁/品红色重试
注: API的URL目前是硬编码在 magenta_mcp_server.py (第186行)并且 discord_bot.py (第185行):
ws_url = "wss://thecollabagepatch-magenta-retry.hf.space/ws/jam"这个空间是特别设计来 可作为API进行复制 适用于各种Magenta RT应用。 darius-in-discord 这只是使用该后端的一个应用程序。
使用您自己的后端
你可以:
- 利用现有空间 (可能有使用限制或停机时间)
- 复制这个空间 上传到你自己的HuggingFace账户:
1. 首选 “thecollabagepatch/magenta-retry”可以翻译为“协作补丁/洋红色重试”。不过,这里的“thecollabagepatch”可能是一个特定上下文或项目中的专有名词,如果它有特定的含义或名称,应该根据实际情况进行翻译或保留原名。同时,“magenta-retry”中的“magenta”指的是洋红色,“retry”意为重试,所以整体翻译为“洋红色重试”是合理的 1. 点击“⋮”菜单 → “复制此空间” 1. 选择CPU或GPU(推荐使用GPU以获得实时性能) 1. 更新硬编码的URL magenta_mcp_server.py 和 discord_bot.py 附上您的空间URL
- 本地运行 使用您自己的Magenta RT实例
即将推出: API URL的环境变量配置,以便更轻松地切换后端。
建筑
┌─────────────────┐ ┌──────────────────┐
│ Claude Desktop │────────▶│ MCP Server │
│ (Control UI) │ │ (Parameter │
└─────────────────┘ │ Control) │
└────────┬─────────┘
│
▼
┌──────────────────┐
│ Magenta RT API │
│ /ws/jam │
└────────┬─────────┘
│
▼
┌──────────────────┐
│ Discord Bot │
│ (Audio Stream) │
└────────┬─────────┘
│
▼
┌──────────────────┐
│ Discord Voice │
│ Channel │
└──────────────────┘设置
先决条件
安装
- 克隆仓库:
git clone https://github.com/betweentwomidnights/darius-in-discord.git
cd darius-in-discord- 创建虚拟环境:
python -m venv venv
# Windows
venv\Scripts\activate
# Mac/Linux
source venv/bin/activate- 安装依赖项:
pip install mcp websockets discord.py pynacl python-dotenv pydub- 配置环境:
cp .env.example .env
# Edit .env and add your Discord bot token- 安装FFmpeg:
- Windows: 从……下载 ffmpeg.org(直接翻译为中文域名或网站名保持原样,因为“ffmpeg.org”是一个特定的网站域名,直接翻译并无实际意义,但可以理解为“FFmpeg官方网站”或类似表述来传达其含义) 或者 winget install ffmpeg - Mac: brew install ffmpeg - Linux: sudo apt install ffmpeg
- 配置Claude桌面版:
编辑您的Claude桌面配置文件:
- Windows: %APPDATA%\Claude\claude_desktop_config.json - Mac: ~/Library/Application Support/Claude/claude_desktop_config.json
添加此配置(调整路径以匹配您的设置):
{
"mcpServers": {
"magenta-rt": {
"command": "/full/path/to/venv/Scripts/python.exe",
"args": ["/full/path/to/magenta_mcp_server.py"]
}
}
}Windows 示例:
{
"mcpServers": {
"magenta-rt": {
"command": "C:\\Users\\YourName\\darius-in-discord\\venv\\Scripts\\python.exe",
"args": ["C:\\Users\\YourName\\darius-in-discord\\magenta_mcp_server.py"]
}
}
}- 邀请达里乌斯加入你的Discord服务器:
- 首选 Discord 开发者门户 - 选择您的应用程序 - OAuth2 → URL 生成器 - 选择范围: bot - 选择权限: Connect, Speak - 复制并打开生成的URL以邀请机器人
用法
1. 启动Darius(Discord机器人)
python discord_bot.py你应该看到:
darius#0330 has connected to Discord!
Bot is in 1 guild(s)2. 在Discord中启动音乐
在你的Discord服务器中:
!join # Darius joins your voice channel
!jam warmup # Start streaming music3. 通过Claude桌面版进行控制
重启Claude桌面以加载MCP服务器,然后就可以自然对话了:
示例:
- “以黑暗电子乐的氛围开启一场即兴演奏会”
- “让它更具攻击性”
- “太乱了,收回去吧”
- “加点酸性浩室音乐的风味”
- “保持这种氛围,但让它更阴暗一些”
- “彻底疯狂”
克劳德将会:
- 自动阅读参数指南
- 进行渐进式调整(避免突兀的转变)
- 理解权重归一化背后的数学原理
- 保持在最佳参数范围内
Discord 命令
手动控制指令:
!join- 加入你的语音频道!jam [styles]- 从特定风格开始(例如。,!jam techno, ambient)!stop- 关掉音乐!leave- 离开语音频道!status- 检查机器人状态
它是如何运作的
您可以控制的参数
- 温度 (0.1-2.0): 随机性/创造力
- 指导 (0.0-8.0):它遵循风格提示的程度
- TopK (1-256):采样种类
- 风格类型、乐器、氛围或任何描述性词汇
- 风格权重将多种风格以不同强度进行融合
- 使用当前混音作为风格为了更流畅的过渡
- 微调操控(或:精细调整方向控制) (如可提供):
- 平均重量向训练数据的平均值拉近 - 质心权重朝着特定集群方向调整(或引导)
知识库
克劳德自动阅读 magenta_knowledge.md 其中包含:
- 参数范围和最佳点
- 权重归一化数学
- 逐步改变的最佳实践
- 常见的交互模式
- 技术实施细节
这确保了Claude能够做出智能调整,而无需你解释一切的工作原理。
逐步调整
克劳德知道要缓慢地改变参数(分2-4步进行,每步之间有延迟),以避免产生刺耳的音频失真。例如:
你: “让它更加混乱”
克劳德: 在6秒内将温度从1.1 → 1.3 → 1.5 → 1.7逐步提升,同时将topk值从40 → 60 → 80进行调整。
项目结构
darius-in-discord/
├── magenta_mcp_server.py # MCP server for Claude Desktop
├── discord_bot.py # Discord bot for audio streaming
├── magenta_knowledge.md # Parameter guide for Claude
├── magenta_prompts.js # Style presets (from web tester)
├── .env.example # Environment template
├── .gitignore # Git ignore rules
├── requirements.txt # Python dependencies
└── README.md # This file已知问题
- 音频失真或瑕疵使用pydub进行重采样可能会引入一些伪影。未来的改进可以考虑使用SoX来获得更好的质量。
- 延迟由于Discord流媒体和WebSocket缓冲,存在1-2秒的延迟。
- 淡入淡出时的卡顿偶尔,淡入淡出效果可能会显得突兀,尤其是在参数变化时。
未来的改进/增强
- \[ \] 用于API URL配置的环境变量
- \[ \] 支持语音输入(直接通过Discord对Claude大喊)
- \[ \] 更好的音频重采样(使用SoX而非pydub)
- \[ \] 支持一次性生成
- \[ \] 通过音频注入
/jam/start带有条形对齐分块的终端(说实话,在Discord里使用可能效果更好) - \[ \] 用于可视化的网页仪表板
- \[ \] 多用户会话
功劳/学分/积分
由Kevin(betweentwomidnights)与Claude(Anthropic)携手,以纯粹的热情共建而成。
由……提供支持/驱动
- Magenta RT - 无限音乐生成
- Claude Desktop(可译为“Claude桌面版”) - 通过MCP进行的人工智能接口
- Discord.py(通常简称为Discord的Python库) - Discord 机器人框架
许可证
MIT 许可证 - 详情请参见 LICENSE 文件
______________________________________________________________________
享受那些疯狂的时刻,天呐
