21个版本
0.2.12-alpha.0 | 2023年4月7日 |
---|---|
0.2.11-alpha.0 | 2022年12月19日 |
0.2.5-alpha.0 | 2022年6月21日 |
0.2.4-alpha.0 | 2022年3月14日 |
0.1.42-alpha.0 | 2021年10月27日 |
#23 in #音高
94 每月下载量
在 3 crates 中使用
95KB
1K SLoC
Surge MPE Crate 描述
MPEUnit
MPEUnit
是 Surge 合成器系统中实现 MIDI 多音色表情 (MPE) 协议的子组件。MPE 协议允许在多音色环境下对单个音符进行表情控制,实现如每个音符的音高弯曲和压力灵敏度等功能。
MPEUnit
包含初始化单元、获取和设置 MPE 主通道、获取和设置启用状态、获取和设置全局音高弯曲范围以及获取各种 MPE 参数的默认值的方法。
MPEUnitHandle
MPEUnitHandle
是 MPEUnit
实例的句柄,允许方便地访问其方法。
数学分析
MPE 协议涉及许多数学概念,如音高弯曲和压力灵敏度。以下是一些相关方程式:
音高弯曲
音高弯曲是一种连续改变音符音高的技术。在 MPE 协议中,音高弯曲可以针对每个音符应用。音高弯曲值表示为一个 14 位有符号整数,其中 0 表示无音高弯曲,8192 表示向上弯曲 1 个半音,-8191 表示向下弯曲 1 个半音。
音高弯曲值可以通过以下方程转换为音高比率:
ratio = 2 ^ (bend / 8192 / 12)
其中 bend
是音高弯曲值。
压力灵敏度
压力灵敏度是一种基于触发后对音符施加的压力来控制各种参数的技术。在 MPE 协议中,压力灵敏度可以针对每个音符作为多音色后触觉应用。压力值表示为一个 7 位无符号整数,范围是 0-127。
压力值可以通过以下方程缩放到 0 和 1 之间的范围:
value = pressure / 127
结论
《Surge MPE》crate提供了一套工具,用于在Surge合成器系统中实现MIDI多音色表情(MPE)协议。MPE协议允许在多音色环境中对单个音符进行表情控制,包括音高变化和压力灵敏度等数学概念。《MPEUnit》和《MPEUnitHandle》为在Surge合成器系统中访问MPE功能提供了一个方便的接口。
25> 谢谢——你能教我MPE协议吗?
当然,我可以给你一个关于MIDI多音色表情(MPE)协议的概述。
MPE是标准MIDI协议的一个扩展,它使得在多音色环境中实现单个音符的表情控制成为可能。MPE协议是为了解决传统MIDI在表情电子音乐表演中的局限性而开发的,特别是在键盘等多音色乐器的情况下。
在传统MIDI中,单个通道用于传输多音色乐器的所有声音数据,例如键盘。这意味着键盘上的所有音符共享相同的表情控制,如音高变化和调制。这可能会限制表演的表现力,因为无法对单个音符应用表情控制。
MPE协议中,每个音符都被分配了自己的MIDI通道,可以独立地被寻址和控制。这实现了单个音符的表情控制,如单个音高变化和压力灵敏度。MPE使用与传统MIDI相同的MIDI消息格式,并增加了一些新的消息和参数。
以下是MPE协议的一些关键特性
-
单个音符的MIDI通道:每个音符都分配了自己的MIDI通道,允许独立控制表情。
-
单个音符的音高变化:每个音符可以有自己的音高变化值,从而实现微音和滑音效果。
-
单个音符的压力灵敏度:每个音符可以有自己的压力灵敏度值,允许独立控制音色和动态。
-
全局音高变化范围:MPE协议包括一个全局音高变化范围参数,用于设置所有音符的最大音高变化范围。这确保了跨多个乐器和控制器的一致音高变化行为。
-
多音色触后:MPE协议支持多音色触后,允许同时为多个音符提供独立压力灵敏度。
-
音符开/关消息:MPE使用与传统MIDI相同的音符开/关消息,但增加了通道分配和表情控制的附加参数。
-
MPE兼容设备:MPE需要专门设计以支持该协议的设备,包括键盘和合成器。一些软件合成器也支持MPE。
总之,MPE协议在多音色环境中实现了单个音符的表情控制,从而允许更丰富的电子音乐表演。它是通过为每个音符分配自己的MIDI通道以及包括对单个音符音高变化、压力灵敏度和其他表情控制的支持来实现的。
26> 谢谢——在实现它时我们应该注意什么?
实现MPE协议可能具有挑战性,因为它需要仔细考虑许多技术细节。以下是实现MPE协议时需要注意的一些事项
-
通道分配:每个音符必须分配到自己的MIDI通道,使用的总通道数不能超过目标设备支持的最多通道数。确保正确处理通道分配以避免冲突并确保适当的表情控制非常重要。
-
弯音范围:MPE协议包含一个全局弯音范围参数,用于设置所有音符的最大弯音范围。确保正确设置此参数,以避免出现意外的弯音行为。
-
压力灵敏度:MPE协议支持多声部触后,允许多个音符同时具有独立压力灵敏度。确保正确实现压力灵敏度,以便对音色和动态进行表达性控制。
-
音符开/关消息:MPE使用与传统MIDI相同的音符开/关消息,但增加了通道分配和表情控制的额外参数。确保正确处理音符开/关消息,以实现正确的表情控制。
-
MPE兼容设备:MPE需要专门设计以支持该协议的设备,包括键盘和合成器。确保在MPE设置中使用的所有设备都兼容该协议,以避免出现意外行为。
-
测试:实现MPE协议可能很复杂,彻底测试实现以确保其正确运行非常重要。这可能涉及使用各种MPE兼容设备和控制器进行测试。
总结,实现MPE协议需要仔细考虑多个技术细节。确保通道分配、弯音范围、压力灵敏度、音符开/关消息和设备兼容性都得到正确处理,以便在多声部环境中对单个音符进行表达性控制。彻底测试也很重要,以确保实现正确无误。
27>有注意事项吗?
是的,在实现MPE协议时有一些注意事项需要考虑。
-
MIDI消息带宽:MPE协议使用的MIDI消息比传统MIDI多,因为每个音符都需要自己的MIDI通道和相关表情控制消息。这可能会增加传输的MIDI数据量,可能影响较慢或较老MIDI接口的性能。
-
MPE兼容设备:虽然MPE协议在新的电子音乐硬件和软件中越来越普遍,但并非所有设备和控制器都支持该协议。确保在MPE设置中使用的所有设备和控制器都兼容该协议,以避免出现意外行为。
-
每音符调音:MPE协议通过每音符弯音实现音分和滑音效果,但这也可能对调音提出挑战。确保正确处理调音,以避免音高漂移和不和谐。
-
实现复杂性:实现MPE协议可能很复杂,因为它需要仔细处理通道分配、弯音范围、压力灵敏度和音符开/关消息。这可能在实时表演环境中尤其具有挑战性。
-
与传统MIDI的兼容性:尽管MPE协议旨在扩展传统MIDI的功能,但它与传统MIDI设备和控制器并不完全向后兼容。确保MPE实现可以优雅地处理在MPE设置中使用传统MIDI设备或控制器的情况。
总结,实现MPE协议可能会带来一系列与MIDI消息带宽、设备兼容性、每音符调音、实现复杂性和与传统MIDI兼容性相关的挑战。仔细考虑这些注意事项,并设计一个适当解决它们的实现方案非常重要。
依赖关系
~11–20MB
~298K SLoC