Jovi_MIDI 插件保姆级教程 - 让 ComfyUI 听懂音乐控制器!
1. 插件简介
GitHub 原地址: https://github.com/Amorano/Jovi_MIDI
Jovi_MIDI 是一个专门为 ComfyUI 设计的音乐控制器插件,它能让你用 MIDI 设备(比如电子琴、MIDI 控制器、音乐键盘等)来控制 ComfyUI 的各种参数。
简单来说,就是把你的音乐设备变成一个超级遥控器,可以用来:
- 用键盘按键控制图片生成的参数
- 用旋钮调节图片的风格强度
- 用滑块控制动画速度
- 读取现成的音乐文件来制作动画
想象一下,你可以一边弹钢琴一边看着 AI 根据你的演奏实时生成不同的图片,是不是很酷?
2. 如何安装
方法一:通过 ComfyUI 管理器安装(推荐)
- 打开 ComfyUI 管理器(Manager)
- 搜索 "Jovi_MIDI"
- 点击安装即可
方法二:手动安装
- 打开 ComfyUI 的
custom_nodes文件夹 - 运行命令:
git clone https://github.com/Amorano/Jovi_MIDI.git - 安装依赖包:
pip install -r requirements.txt - 重启 ComfyUI
3. 节点详细解析
3.1 MIDI READER 节点 - 音乐设备监听器
这个节点就像一个"耳朵",专门负责听取你的音乐设备发出的信号。当你按下键盘、转动旋钮或者推动滑块时,它会把这些动作转换成 ComfyUI 能理解的数据。
3.1.1 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| MIDI 设备 | device | 字符串列表 | 默认设备 | 选择你想要监听的音乐设备 | 选择 MIDI 输入设备 | 如果你连了电子琴,就选择电子琴的名称 |
| 监听开关 | active | True/False | True | 决定是否开始监听设备 | 启用/禁用 MIDI 监听 | 设为 True 开始监听,False 停止监听 |
| 实时更新 | realtime | True/False | True | 是否实时显示设备动作 | 实时处理 MIDI 消息 | True 时每个动作都会立即响应 |
3.1.2 输出接口
| 输出名称 | 输出类型 | 通俗解释 |
|---|---|---|
| 按键状态 | 布尔值 | 告诉你现在是否有按键被按下 |
| 通道号 | 数字 | 音乐设备的通道编号(1-16) |
| 控制器号 | 数字 | 旋钮或滑块的编号 |
| 音符号 | 数字 | 按下的键盘音符编号 |
| 原始数值 | 数字 | 设备发送的原始数值(0-127) |
| 标准化数值 | 小数 | 转换为 0-1 之间的数值,方便其他节点使用 |
3.2 MIDI MESSAGE 节点 - 信号翻译器
这个节点像一个"翻译官",把音乐设备发出的复杂信号翻译成更容易理解的格式。
3.2.1 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| MIDI 数据 | midi_data | MIDI 消息 | 来自 READER | 接收音乐设备的原始信号 | 输入 MIDI 消息数据 | 连接到 MIDI READER 的输出 |
| 消息类型 | message_type | 下拉选项 | Note On | 选择要处理的信号类型 | 指定 MIDI 消息类型过滤 | Note On(按键),Control Change(旋钮) |
| 通道过滤 | channel_filter | 数字 | 1 | 只处理指定通道的信号 | 过滤特定 MIDI 通道 | 设为 1 只处理第一通道的信号 |
| 数值范围 | value_range | 数字对 | 0-127 | 设置输出数值的范围 | 映射 MIDI 值到指定范围 | 设为 0-100 就是把 0-127 映射到 0-100 |
3.2.2 输出接口
| 输出名称 | 输出类型 | 通俗解释 |
|---|---|---|
| 处理后的值 | 数字 | 经过翻译的标准数值 |
| 消息有效性 | 布尔值 | 当前消息是否符合过滤条件 |
| 时间戳 | 数字 | 消息接收的时间 |
3.3 MIDI FILTER 节点 - 高级信号筛选器
这个节点像一个"智能筛子",可以从复杂的音乐信号中筛选出你需要的特定信号。适合高级用户使用。
3.3.1 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| MIDI 流 | midi_stream | MIDI 数据流 | 来自 READER | 要筛选的音乐信号流 | 输入 MIDI 消息流 | 连接音乐设备的信号输出 |
| 过滤规则 | filter_rules | 文本 | 空 | 用文字描述筛选条件 | 定义过滤逻辑的规则 | "channel=1,note=60-72" 表示只要第1通道的中音区 |
| 包含模式 | include_mode | True/False | True | 是包含还是排除符合条件的信号 | 选择包含或排除模式 | True 是只要符合的,False 是排除符合的 |
| 优先级 | priority | 数字 | 1 | 多个过滤器时的优先级 | 过滤器处理优先级 | 数字越大优先级越高 |
3.3.2 输出接口
| 输出名称 | 输出类型 | 通俗解释 |
|---|---|---|
| 筛选结果 | MIDI 数据 | 符合条件的信号 |
| 匹配计数 | 数字 | 有多少信号符合条件 |
| 筛选状态 | 布尔值 | 筛选器是否正在工作 |
3.4 MIDI FILTER EZ 节点 - 简单信号筛选器
这个节点是 MIDI FILTER 的简化版本,就像"傻瓜相机"一样,操作简单但功能够用。
3.4.1 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| MIDI 输入 | midi_input | MIDI 数据 | 来自 READER | 要处理的音乐信号 | 输入 MIDI 消息 | 连接到 MIDI READER 输出 |
| 目标通道 | target_channel | 数字 | 1 | 只处理指定通道的信号 | 指定 MIDI 通道 | 设为 1 表示只处理第1通道 |
| 目标控制器 | target_controller | 数字 | 1 | 只处理指定控制器的信号 | 指定 MIDI 控制器编号 | 设为 1 表示只处理第1个旋钮/滑块 |
| 目标音符 | target_note | 数字 | 60 | 只处理指定音符的信号 | 指定 MIDI 音符编号 | 60 是中央 C,设为 60 只处理这个键 |
| 数值范围 | value_min | 数字 | 0 | 输出数值的最小值 | 映射范围最小值 | 设为 0 表示最小输出 0 |
| 数值范围 | value_max | 数字 | 1 | 输出数值的最大值 | 映射范围最大值 | 设为 1 表示最大输出 1 |
3.4.2 输出接口
| 输出名称 | 输出类型 | 通俗解释 |
|---|---|---|
| 输出值 | 数字 | 处理后的数值 |
| 触发状态 | 布尔值 | 是否有匹配的信号 |
3.5 MIDI LOADER 节点 - 音乐文件读取器
这个节点就像一个"音乐文件播放器",可以读取现成的音乐文件(.mid 格式),把音乐变成动画数据。
3.5.1 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 文件路径 | file_path | 文件路径 | 空 | 选择要读取的音乐文件 | MIDI 文件路径 | 选择一个 .mid 文件 |
| 播放速度 | playback_speed | 小数 | 1.0 | 控制音乐播放的快慢 | 播放速度倍数 | 1.0 是正常速度,2.0 是两倍速 |
| 循环播放 | loop | True/False | False | 是否重复播放音乐 | 是否循环播放 | True 会无限循环播放 |
| 开始时间 | start_time | 数字 | 0 | 从音乐的第几秒开始播放 | 播放起始时间(秒) | 设为 10 表示从第10秒开始播放 |
| 结束时间 | end_time | 数字 | -1 | 播放到音乐的第几秒结束 | 播放结束时间(秒) | -1 表示播放到结尾 |
| 轨道选择 | track_select | 数字 | 0 | 选择音乐文件中的第几个轨道 | 选择 MIDI 轨道 | 0 是第一个轨道,1 是第二个轨道 |
| 通道映射 | channel_map | 文本 | 空 | 把音乐通道映射到不同输出 | 通道映射规则 | "1->A,2->B" 表示通道1输出到A,通道2输出到B |
3.5.2 输出接口
| 输出名称 | 输出类型 | 通俗解释 |
|---|---|---|
| 当前音符 | 数字数组 | 当前时刻正在播放的音符 |
| 当前速度 | 数字数组 | 当前音符的力度 |
| 播放进度 | 小数 | 音乐播放的进度(0-1) |
| 播放状态 | 布尔值 | 是否正在播放 |
| 时间戳 | 数字 | 当前播放时间 |
| 轨道数据 | 数据结构 | 完整的音乐轨道信息 |
4. 使用技巧和建议
4.1 新手入门建议
- 从简单开始:先用 MIDI READER 和 MIDI FILTER EZ 组合,不要一开始就用复杂的过滤器
- 一步一步来:先让设备能被识别,再考虑复杂的控制
- 多试试不同设备:不同的音乐设备可能有不同的通道和控制器编号
4.2 常用搭配组合
- 实时控制:MIDI READER + MIDI FILTER EZ + 其他生成节点
- 音乐动画:MIDI LOADER + MIDI MESSAGE + 动画节点
- 复杂控制:MIDI READER + MIDI FILTER + 多个输出节点
4.3 参数设置小贴士
- 通道选择:一般家用设备都是第1通道,专业设备可能有16个通道
- 数值范围:MIDI 设备通常输出 0-127,建议映射到 0-1 方便其他节点使用
- 实时性:如果需要实时响应,记得把 realtime 设为 True
5. 常见问题解答
Q1: 为什么我的音乐设备没有被识别?
A:
- 检查设备是否正确连接到电脑
- 确认设备驱动程序已安装
- 在 Windows 中检查设备管理器是否显示设备
- 重启 ComfyUI 试试
Q2: 节点显示有信号但没有反应?
A:
- 检查通道设置是否正确
- 确认控制器编号是否匹配
- 查看数值范围设置是否合理
- 检查后续节点的连接是否正确
Q3: 音乐文件无法加载?
A:
- 确认文件格式是 .mid 或 .midi
- 检查文件路径是否正确
- 确认文件没有损坏
- 尝试用其他音乐软件打开文件验证
Q4: 设备延迟很大怎么办?
A:
- 检查电脑性能是否足够
- 关闭不必要的其他程序
- 调整音频设备的缓冲区大小
- 使用有线连接代替无线连接
Q5: 如何同时使用多个设备?
A:
- 为每个设备创建独立的 MIDI READER 节点
- 使用不同的通道号区分设备
- 可以用 MIDI FILTER 节点分离不同设备的信号
6. 进阶应用示例
6.1 用电子琴控制图片风格
- 用 MIDI READER 读取电子琴信号
- 用 MIDI FILTER EZ 筛选特定按键
- 把按键信号连接到图片生成节点的风格参数
- 不同按键对应不同的艺术风格
6.2 用调音台制作动画
- 用 MIDI READER 读取调音台的推杆信号
- 用 MIDI FILTER 分离不同推杆的信号
- 把推杆数值连接到动画参数(速度、旋转、缩放等)
- 实时调节推杆就能控制动画效果
6.3 用音乐文件生成视频
- 用 MIDI LOADER 读取音乐文件
- 用 MIDI MESSAGE 处理音乐数据
- 把音符强度连接到图片生成的参数
- 按照音乐节拍生成一系列图片,制作成视频
希望这份教程能帮助你轻松上手 Jovi_MIDI 插件!记住,最重要的是多动手实践,每个音乐设备都有自己的特点,多试试就能找到最适合你的使用方法。