Strudel控制台
英语 |韩语
基于Strudel的TUI音乐作曲工具+MCP服务器。 您可以在终端上实时编码,也可以通过Claude Code等AI代理创建音乐。
安装和运行
npm install
npm run buildTUI模式(基本)
npm start
# 또는
npm run tuiMCP服务器模式
npm run mcpClaude Code的 settings.json在注册:
{
"mcpServers": {
"strudel-console": {
"command": "node",
"args": ["--experimental-specifier-resolution=node", "/path/to/strudel-console/dist/mcp/server.js"]
}
}
}______________________________________________________________________
MCP服务器规格
运输: 标准 |协议:MCP |版本: 0.1.0
“工具”(Tools)
回放
“工具”“说明”“参数” |------|------|----------| | evaluate |评估Strudel模式代码并立即开始播放| code (string,必需)| | start 开始/恢复当前模式播放-| | stop 停止播放-| | toggle |播放/停止切换-| | set_bpm | BPM设置(默认120)| bpm (number,正)| | get_state 查询当前状态(是否播放、代码、错误等)-|
样品
“工具”“说明”“参数” |------|------|----------| | load_samples |样本/银行加载| source (字符串)-- github:user/repo、本地路径或URL|
模式
“工具”“说明”“参数” |------|------|----------| | save_pattern |模式 ~/.strudel-console/patterns/保存到| name (字符串), code (字符串), bpm (number,可选)| | load_pattern |装入保存的模式| name (字符串)| | list_patterns 查询保存的模式列表-|
多轨道
“工具”“说明”“参数” |------|------|----------| | add_track 添加新曲目。所有活动轨道 stack()同时播放到| name (string,选择) code (string,选择)| | evaluate_track |更新轨道上的模式代码并重新编译| code (字符串), track_index (int、1-based、选择-跳过时的活动轨道)| | remove_track |删除音轨| track_index (int,从1开始)| | mute_track |音轨缪特切换| track_index (int,从1开始)| | solo_track 音轨独奏切换。如果有独唱曲目,则只播放独唱| track_index (int,从1开始)| | set_track_gain |设置音轨音量| track_index (int,1-基), gain (数字,0.0–1.0)| | list_tracks |完整曲目列表+状态(名称、缪特、独奏、增益、代码)--|
混音器
“工具”“说明”“参数” |------|------|----------| | set_master_gain |设置主输出卷(应用前一轨)| gain (数字,0.0–1.0)| | list_effect_presets 查询效果预设列表-|
可用的效果预设:
预设效果链 |--------|------------| | clean |(无)| | lofi | .lpf(800).gain(0.8) | | ambient | .room(0.6).delay(0.4).gain(0.7) | | dark | .lpf(400).room(0.3).gain(0.9) | | bright | .hpf(300).lpf(8000).gain(0.9) | | tape | .lpf(3000).room(0.2).delay(0.15).gain(0.85) |
渲染
“工具”“说明”“参数” |------|------|----------| | render_to_file |将图案渲染为WAV文件(OfflineAudioContext)| code (string,选择) cycles (int,1–64,默认为8), bpm (number,选择) filename (string,选择)|
输出路径: ~/.strudel-console/renders/
AI组成
“工具”“说明”“参数” |------|------|----------| | analyze_pattern |分析图案的音乐属性(键、尺度、音域、密度)| code (字符串), cycles (int,1–16,默认4)| | load_genre_preset |加载类型预设-自动设置轨道+BPM后开始播放| genre (字符串)| | list_genre_presets |类型预设列表+查询说明--|
可用的类型预设:
| 类型 | BPM | 音轨数量 | 说明 |
|---|---|---|---|
lofi | 75 | 4 | 用爵士和弦舒缓低保真节拍 |
techno | 130 | 4 | 用酸贝斯线在地板上驾驶四人 |
ambient | 60 | 3 | 带混响的缓慢演变的垫子 |
house | 124 | 5 | 带有风琴刺的经典房屋凹槽 |
dnb | 174 | 3 | 快速节奏,低音起伏 |
jazz | 110 | 3 | 具有ii-V-I进程的挥杆感觉 |
资源(Resources)
URI说明 |-----|------| | strudel-console://guide | Strudel阵列创建指南(小型说明、效果、多轨工作流)| | strudel-console://music-theory 音乐理论参考(尺度、代码进度、节奏模式、间隔)
______________________________________________________________________
工作流示例
1.播放单个图案
evaluate({ code: 'note("c4 e4 g4 b4").sound("sine")' })
set_bpm({ bpm: 90 })
stop()2.多音轨作曲
add_track({ name: "drums", code: 's("bd sd hh sd")' })
add_track({ name: "bass", code: 'note("c2 e2 g2 e2").sound("sawtooth").lpf(400)' })
evaluate_track({ code: 's("bd sd [~ bd] sd")', track_index: 1 })
mute_track({ track_index: 2 }) // 베이스 뮤트
set_track_gain({ track_index: 1, gain: 0.8 })3.类型预设→自定义
load_genre_preset({ genre: "lofi" }) // 4트랙 + 75 BPM 세팅
list_tracks() // 현재 트랙 확인
evaluate_track({ code: 's("bd ~ [bd sd] ~")', track_index: 1 }) // 드럼 수정
set_master_gain({ gain: 0.7 })4.分析→渲染
analyze_pattern({ code: 'note("c4 e4 g4 b4").sound("sine")', cycles: 4 })
render_to_file({ code: 'note("c4 e4 g4 b4").sound("sine")', cycles: 16, bpm: 90, filename: "melody" })______________________________________________________________________
错误处理
所有工具失败时 isError: true返回错误消息。
| 情况 | 错误示例 |
|---|---|
Strudel语法无效 Error: unexpected token ... | |
| 不存在的音轨索引 | Error: track 5 does not exist |
| 不存在的类型 | Unknown genre. Available: lofi, techno, ambient, house, dnb, jazz |
| 没有要渲染的图案 | Error: no pattern to render. Provide code or set up tracks. |
| 不存在的模式名称 | Error: pattern not found: ... |
______________________________________________________________________
技术堆栈
- 引擎:@strudel/\*v1.1.0+node-web-audio-api(IRCAM Rust绑定)
- 主控程序:@modelcontextprotocol/sdk(stdio传输)
- 文本用户界面:墨水5.x+反应18
- 语言:TypeScript(ESM)
______________________________________________________________________
许可证
这个项目 GNU Affero通用公共许可证v3.0或更高版本 以下分发。
果馅饼 基于(AGPL-3.0-or-later)的衍生作品。
