我对midipolyaftertouch操作码不太满意。基本上
kPea init 0.1
midipolyaftertouch kPea, 1, 0.1, 0.9
printk2 kPea
实际上并不响应复音触后消息。另一方面,手动编码的粗略等效项
kPea init 0.1
kstatus,kchan,kdata1,kdata2 midiin
if (kstatus==160 && kchan==1) then
kPea = kdata2 * 0.007
printk2 kPea
endif
工作正常。那么,这是midipolyaftertouch
中的已知错误吗?除了手册中的用法示例,我找不到midipolyaftertouch
的任何用法示例,所以我想几乎没有人使用过它。...aftouch
的使用方式不是按音符触后通道(压),即aftouch
查询kstatus == 208(并且确实有效,但不是每个音符都可以)。有关差异,请参见this。
我正在Windows的Cabbage 2.3.0内部使用Csound 6.13 beta,因为那是该版本的Cabbage附带的。
根据文档,还有另一个实际上可以运行的操作码polyaft
kPea init 0.1
inote notnum ; note number
kPea polyaft inote, 0.1, 0.9
printk2 kPea
查看midipolyaftertouch
的C源代码,实际上它的索引方式与polyaft
完全相同。因此,基于此,我尝试了:
kPea init 0.1
inote notnum ; note number
midipolyaftertouch kPea, inote, 0.1, 0.9
printk2 kPea
而且这实际上也适用。
在MIDI API术语中,“ MIDI控制器[编号]”(通常)means键/音符[编号] ...不同于在DAW的世界中,one使用例如“多个MIDI控制器”指的是多个键盘,而不是同一键盘的多个键...此外,Csound具有后一种/ DAW含义的多个控制器的概念,由-M启动开关选择,尽管calls它们“ MIDI设备”。
除非您仅使用D0作为键/注释来尝试,否则本文档中midipolyaftertouch
的代码示例将无法工作;在这里插入有关坏钟的笑话。有趣的是,文档是由该操作码的源代码作者编写的,因此,这并不是别人误解该代码的情况...