我们在三天内完成了这个项目。我们将开源它,看看我们能从中获得什么。可能性是无穷无尽的。
(如果你对音乐和AI的未来感兴趣,或者想要请求功能,也可以加入。我们正在与你一起构建这个项目)
你应该看到两个主要项目。
将Test Controller文件夹放置在Image-Line/FL Studio/Settings/Hardware目录下(不要更改此文件或文件夹的名称)
按照以下教程了解如何通过编辑claude_desktop_config文件来设置Claude中的MCP服务器。
https://modelcontextprotocol.io/quickstart/server
如果你遵循了这个过程,请确保将所有提到的weather.py更改为trigger.py
如果Hammer图标没有显示,请打开任务管理器并强制关闭Claude进程。
然后它应该会显示出来。
这是我的配置文件的样子
对于Windows,请从此处下载LoopMIDI。
https://www.tobias-erichsen.de/software/loopmidi.html
安装LoopMIDI,并使用+按钮添加一个端口。
这是我的样子:
你的MIDI端口会自动设置以接收数据。
打开FL Studio。
转到选项 > MIDI设置。
在输入标签页中,点击你刚刚使用LoopMIDI创建的MIDI输入。
将控制器类型从(通用控制器)更改为Test Controller。
转到包含trigger.py文件的文件夹。(这是MCP服务器文件)
激活conda环境(就像你在Claude MCP设置教程中学到的那样)
运行以下命令以下载必要的包:uv pip install httpx mido python-rtmidi typing fastmcp FL-Studio-API-Stubs (uv应从Claude MCP设置中安装)
告诉Claude获取可用的MIDI端口。
这应该使用MCP从FL Studio获取端口。
如果是Windows,请复制你使用LoopMIDI创建的端口及其前面的数字。
如果是Mac,请复制默认端口。
在我的情况下,我复制了loopMIDI Port 2
在文本编辑器中打开trigger.py,并用你刚刚复制的端口名称替换默认端口。 output_port = mido.open_output('loopMIDI Port 2')
使用MCP发送旋律、和弦、鼓点等。
点击你想录制的乐器,它将实时记录到该乐器的钢琴卷上。
当我开始新的聊天时,我倾向于使用这个提示:这是音符的格式:note(0-127),velocity(0-100),长度以拍数表示(小数),位置以拍数表示(小数)
在我们的Discord上分享你所创作的内容:https://discord.gg/ZjG9TaEhvy
FL Studio API Stubs: https://github.com/IL-Group/FL-Studio-API-Stubs Ableton MCP: https://github.com/ahujasid/ableton-mcp
如果你想贡献,请随意进行。
这个工作的原理是device_test.py作为一个虚拟MIDI控制器。 MCP服务器(trigger.py)通过打开一个虚拟端口并通过一个名为MIDO的库发送MIDI消息来与这个MIDI控制器通信。
MIDI消息的问题在于它是7位的,所以我们只能发送0-127之间的数字。
因此,我们将所有的MIDI数据,如音符位置等加密成多个MIDI音符,设备知道如何读取这些音符。
希望Image Line能通过他们的API给我们更多的访问权限,这样我们就不用处理这种MIDI乱七八糟的事情了。