使用说明
MIDI转换MCP服务器
一个全面的模型上下文协议(MCP)服务器,将各种输入转换为功能性的多轨MIDI文件。支持文本描述、乐谱图像和音频文件。
特性
🎵 文本转换为MIDI
将自然语言描述转换为完整的MIDI作品:
- 模糊提示:“生日快乐歌”→ 简单的旋律
- 详细提示:“D小调140 BPM的dubstep drop,带有沉重的低音和咄咄逼人的鼓声”→ 全面生产
- 人工智能发电 具有多种提供商选项:
- 奥拉玛 (本地、免费、私人)-推荐给大多数用户
- Anthropic Claude (云API,最高质量)
- 基于规则 (无需人工智能,始终可用)
- 支持多种仪器、标尺、按键和时间签名
📄 将乐谱转换为MIDI(OCR)
从图像中提取乐谱:
- 扫描的乐谱
- 手写乐谱照片
- PDF音乐文件
- 自动节奏和按键检测
🎧 音频转MIDI
将录音转换为MIDI:
- 自动音调检测
- 按音高范围选择轨道间距
- 支持MP3、WAV、FLAC、OGG、M4A、AIFF
- 节奏检测和音符提取
安装
先决条件
- Python 3.8或更高版本
- FFmpeg(音频处理所需)
安装FFmpeg
macOS:
brew install ffmpeg
Ubuntu/Debian:
sudo apt-get update
sudo apt-get install ffmpeg
窗户: 下载自 ffmpeg.org 并添加到PATH
安装MCP服务器
- 克隆或下载此存储库:
cd midi_conversion_mcp
- 安装Python依赖项:
pip install -r requirements.txt
- (可选)设置AI提供程序以增强文本到MIDI的生成:
选项A:Ollama(本地,免费)
# Install Ollama from https://ollama.ai
# Pull a recommended model
ollama pull qwen2.5:14b
# Configure environment
export AI_PROVIDER="ollama"
export OLLAMA_MODEL="qwen2.5:14b"
export OLLAMA_ENDPOINT="http://localhost:11434"
选项B:API(云)
export AI_PROVIDER="anthropic"
export ANTHROPIC_API_KEY="your-api-key-here"
选项C:自动(先尝试Ollama,然后是Anthropic,然后是基于规则的)
export AI_PROVIDER="auto"
配置
添加到Claude桌面
添加到您的Claude Desktop配置(~/Library/Application Support/Claude/claude_desktop_config.json 在macOS上):
使用Olama(推荐本地/免费):
{
"mcpServers": {
"midi-conversion": {
"command": "python",
"args": ["/path/to/midi_mcp/midi_conversion_mcp.py"],
"env": {
"AI_PROVIDER": "ollama",
"OLLAMA_MODEL": "qwen2.5:14b",
"OLLAMA_ENDPOINT": "http://localhost:11434"
}
}
}
}
使用无烟煤API:
{
"mcpServers": {
"midi-conversion": {
"command": "python",
"args": ["/path/to/midi_mcp/midi_conversion_mcp.py"],
"env": {
"AI_PROVIDER": "anthropic",
"ANTHROPIC_API_KEY": "your-api-key-here"
}
}
}
}
环境变量
AI_PROVIDER(可选):要使用的AI提供者-"ollama","anthropic",或"auto"(默认:自动)OLLAMA_MODEL(可选):Ollama型号名称(默认值:qwen2.5:14b)。推荐:qwen2.5:14b,llama3.1:8b,或混音:8x7bOLLAMA_ENDPOINT(可选):Ollama API端点(默认值:http://localhost:11434)ANTHROPIC_API_KEY(可选):Claude-powered生成的人类API密钥
用法
MCP服务器提供三个主要工具:
1.文本到MIDI转换
工具: midi_convert_text_to_midi
将自然语言描述转换为MIDI文件。
参数:
prompt(必填):要生成的音乐的描述- 示例:“爵士钢琴即兴演奏”、“史诗管弦乐主题曲”、“dubstep drop”
tempo(可选):BPM(40-240),默认值120duration_bars(可选):长度(1-64),默认值为8time_signature(可选):“4/4”、“3/4”、“6/8”等,默认为“4/4key(可选):“C”、“D#”、“Bb”等,默认为“C”scale(可选):“major”、“minor”、“pentatonic_major”和“blues”等,默认为“main”complexity(可选):“简单”、“中等”、“复杂”、默认“中等”instruments(可选):乐器列表,如[“钢琴”、“贝司”、“鼓”]output_filename(可选):自定义文件名(不带扩展名)
示例提示:
"Create a happy birthday song"
"Dubstep drop in D minor, 140 BPM, with heavy bass and drums"
"Jazz piano improvisation over a walking bass line"
"Epic orchestral theme with strings, brass, and timpani"
"Lo-fi hip hop beat with mellow Rhodes and vinyl crackle feel"
"Fast metal riff in E minor with distorted guitar"
2.将乐谱转换为MIDI
工具: midi_convert_sheet_music_to_midi
将乐谱图像转换为MIDI文件。
参数:
image_data(必需):Base64编码图像或图像的文件路径image_format(可选):“png”、“jpg”、“jpeg”、“pdf”、默认“png”auto_detect_tempo(可选):自动检测速度标记,默认为真tempo(可选):如果auto_detect_tempo为假,则手动节奏output_filename(可选):自定义文件名
支持的格式:
- PNG、JPEG、BMP、TIFF图像
- 带乐谱的PDF文件
例子:
# Using file path
image_data = "/path/to/sheet_music.png"
# Or using base64
with open("sheet_music.png", "rb") as f:
import base64
image_data = base64.b64encode(f.read()).decode()
3.音频转MIDI
工具: midi_convert_audio_to_midi
通过音调检测将音频文件转换为MIDI。
参数:
audio_data(必需):Base64编码音频或音频文件路径audio_format(可选):mp3、wav、flac、ogg、m4a、aiff、默认wavseparate_tracks(可选):按音高范围分隔,默认为truemin_note_duration(可选):最小钞票长度(秒)(0.05-0.5),默认0.1pitch_sensitivity(可选):检测灵敏度(0.1-1.0),默认0.5output_filename(可选):自定义文件名
最佳结果:
- 单声道音频(单乐器/语音)
- 清晰无失真的录音
- 最小背景噪声
- 简单的旋律比复杂的复调音乐效果更好
输出
所有工具都会生成保存到的MIDI文件 /mnt/user-data/outputs/ 与:
- 适当的多轨道结构
- 分离的仪表通道
- 正确的节奏和时间特征
- 标准MIDI格式(.mid)与所有DAW兼容
通用MIDI乐器
服务器使用通用MIDI(GM)乐器标准。可用的仪器包括:
键盘:钢琴,电子琴,罗德斯,管风琴,教堂有机物 吉他:吉他、声学吉他、电吉他、失真吉他 低音:低音、声学低音、电低音、拍打低音 字符串:小提琴、中提琴、大提琴、弦乐、弦乐器 黄铜:小号、长号、大号、铜管 木管乐器:萨克斯、中音萨克斯、男高音萨克斯、长笛、单簧管、双簧管 音响合成器:synth_lead、synth_pad、synth_bass 打击乐器:鼓(自动使用MIDI通道10)
比例和模式
支持的文本到MIDI生成比例:
major-标准大比例尺minor-自然小规模harmonic_minor-未成年人,第7名melodic_minor-未成年人,第六和第七次上升pentatonic_major-五音大调五声音阶pentatonic_minor-5音小调五声音阶blues-带蓝色音符的蓝色音阶dorian-多利安模式phrygian-弗里吉亚模式lydian-吕底亚模式mixolydian-混合模式
技术细节
MIDI规范
- 格式:标准MIDI文件(SMF)格式1
- 决心:每季度480分
- 频道:最多16个同步通道
- 速度:动态速度范围(0-127)
- 音符范围:MIDI音符21-108(A0-C8)
音频处理
- 音高检测:使用librosa
piptrack算法 - 温度检测:使用librosa进行节拍追踪
- 采样率:自适应(保留原始或默认为22050 Hz)
图像处理
- OCR引擎:基于OpenCV的员工队伍检测
- 支持的DPI:建议使用300+以获得最佳效果
- 颜色模式:支持灰度和彩色图像
故障排除
安装问题
“没有名为'mcp'的模块”:
pip install --upgrade mcp
“找不到FFmpeg”:
- 确保FFmpeg已安装并位于您的PATH中
- 测试:
ffmpeg -version
“librosa导入错误”:
pip install --upgrade librosa soundfile numpy scipy
运行时问题
“AI生成服务不可用”:
- 服务器将自动回退到基于规则的生成
- 要使用AI生成,请设置
ANTHROPIC_API_KEY环境变量
“音频转MIDI会产生错误的音符”:
- 尝试调整
pitch_sensitivity(音符越少越低,音符越多越高) - 增加
min_note_duration滤除噪声 - 确保音频干净且单声道,以获得最佳效果
“乐谱OCR不准确”:
- 使用高质量扫描(最小300 DPI)
- 确保员工队伍和背景之间有良好的对比
- 没有污渍或痕迹的干净乐谱效果最好
输出问题
“找不到生成的MIDI文件”:
- 检查
/mnt/user-data/outputs/目录 - 确保您具有写入权限
- 在响应中查找错误消息
API 参考
响应格式
所有工具都返回markdown格式的响应,其中包含:
- 下载生成的MIDI文件的链接
- 使用的音乐参数
- 轨道结构和仪器分配
- 发电记录和统计
错误处理
错误以描述性消息的形式返回:
- 输入验证错误指定了参数问题
- 处理错误包括有用的建议
- 文件系统错误表示权限或路径问题
例子
示例1:简单歌曲
prompt: "simple melody for a children's song in C major"
tempo: 100
duration_bars: 8
complexity: simple
示例2:电子音乐
prompt: "aggressive dubstep drop with wobble bass and drums"
tempo: 140
duration_bars: 4
key: "D"
scale: "minor"
complexity: complex
instruments: ["synth_bass", "synth_lead", "drums"]
示例3:经典作品
prompt: "baroque-style harpsichord piece"
tempo: 96
duration_bars: 16
key: "G"
scale: "major"
complexity: complex
instruments: ["piano"] # piano approximates harpsichord
贡献
此MCP服务器是按照官方MCP最佳实践构建的:
- 以代理为中心的设计,实现最佳LLM交互
- 使用Pydantic进行全面的输入验证
- 清晰、可操作的错误消息
- 高效的上下文窗口使用
许可证
[在此处添加您的许可证]
版本
1.0.0-初始版本
作者
专为具有多模式输入支持的全面MIDI转换功能而构建。