Audio 每个音符的纯数据音高弯曲

Audio 每个音符的纯数据音高弯曲,audio,midi,puredata,Audio,Midi,Puredata,Pd似乎只有一个全局MIDI俯仰控制。如何为单个音符发送不同的音调弯曲事件 在Pd extended中,我制作了一个简单的补丁,从MIDI输入读取相同的音符,并将相同的音符写入MIDI输出。现在,我想根据查找表分别更改每个传入音符的音调弯曲事件,,因此MIDI out音符根据MIDI in音符的不同而弯曲 有什么想法吗?音调弯曲是一种频道语音信息,意思是它适用于整个频道,因此没有直接的方法来做你想做的事情。唯一可能的解决方案是非常间接的,它将使用多个通道,每个通道配置为播放相同的声音,然后在它们

Pd似乎只有一个全局MIDI俯仰控制。如何为单个音符发送不同的音调弯曲事件

在Pd extended中,我制作了一个简单的补丁,从MIDI输入读取相同的音符,并将相同的音符写入MIDI输出。现在,我想根据查找表分别更改每个传入音符的音调弯曲事件,因此MIDI out音符根据MIDI in音符的不同而弯曲


有什么想法吗?

音调弯曲是一种
频道语音信息
,意思是它适用于整个频道,因此没有直接的方法来做你想做的事情。唯一可能的解决方案是非常间接的,它将使用多个通道,每个通道配置为播放相同的声音,然后在它们之间分割传入的音符,这样每个通道上一次只播放一个音符。这种方法的一个经典例子是吉他的MIDI拾音器——每根弦都有拾音器。他们将每个拾音器分配给一个独立的MIDI通道,然后他们可以将各个琴弦的音高弯折映射到各个琴弦的音高弯折(有时效果很差)。

这是MIDI协议的一个限制,根据您想做什么,您可能需要查看OSC(OpenSoundControl),HD-MIDI或简单的FUDI。

因此,您似乎意识到MIDI的局限性(每个通道只有一个音调弯曲参数),但希望为每个音符单独设置音调弯曲值

假设您已经创建了128个表(名为“bend1”。“bend128”),每个表的长度为16383个值,其中包含一个查找表,用于在输入pitchbend值(-8192..+8192)和输出pitchbend值(从-1..+1)之间进行转换,那么您可以执行以下操作:

[notein                        1]
|                               |
[t b f]                         |
|     +---------+               |
|               |               |
|  [bendin 1]   |               |
|  |            |               |
[f ]            [t f         f] |
|               |             | |
[+ 8192]        [set array$1( | |
| ______________+             | |
|/                           /  |
[tabread]                   /   |
|                          /    |
[* 12]                    /     |
|                        /      |
[+                      ]       |
|                               |
[noteout                       1]
这将根据单个形状的音高-弯曲值修改每个MIDI音符。 主要缺点是,[noteout]将发送MIDI音符(由于MIDI的限制,只能是整数值),因此输出将量化为半色调:-(


但是,如果您在Pd中进行合成,那么您可以使用分形音符值:只需将它们发送到[mtof]即可从MIDI音符编号中获取频率,并将其发送到您喜爱的[osc~。

对于纯数据,您可以通过使用MIDI CC进行实时音高变换来解决此问题,或者指定“音符后触”出于这个目的。

太酷了!似乎这将是剩下的唯一解决方案,使用
notein
,然后使用
osc
作为声音。但是您能解释一下
数组
块的作用吗?[osc~]这只是一个关于如何轻松生成声音的愚蠢例子;Pd在构建合成器方面非常好,所以你应该用你自己的奇特的声音发生器来代替[osc~。@xaratustra,你说的“数组块”是什么意思?对不起,我在Pd中有点呆头呆脑:-(到目前为止,我已经编写了非常简单的补丁。在上面的图表中,
设置数组$1
做什么?顺便说一句。我实际上对输入音高弯曲值不感兴趣,只对输出音高感兴趣。使用您建议的
mtof
解决方案,整个过程简化为
音符中的
midi和修改频率之间的查找表…)消息
[将foo(
设置为
[tabread]
只需更改要读取的表格;我的补丁程序使用它来访问每个音符的不同俯仰-弯曲查找表格