我没有太多的运气与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中已知的bug吗?除了手册中的用法之外,我找不到任何midipolyaftertouch的用法示例,所以我猜几乎没有人使用它……顺便说一句,aftouch获取的是通道,而不是每个音符的触摸后(压力),即aftouch查询kstatus == 208 (确实可以工作,但当然不是每个音符)。有关区别,请参阅this。
我在Windows上使用的是Csound 6.13测试版,它是在Windows系统上安装的2.3.0版(因为这是该版本的卷心菜附带的版本)。
发布于 2020-02-15 16:48:59
在文档后面还有另一个实际有效的操作码,即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键/音符编号...不像在DAWs的世界中,one使用例如“多个MIDI控制器”来表示几个键盘,而不是同一键盘的几个键……此外,Csound有多个控制器的概念,在后者/DAW意义上,由-M启动开关选择,尽管它calls他们的"MIDI设备“。
文档中的midipolyaftertouch代码示例不可能工作,除非您只是尝试将D0作为键/注释;在这里插入关于坏掉的时钟的笑话。有趣的是,文档是由源代码作者为该操作码编写的,所以这不是其他人误解代码的情况……
https://stackoverflow.com/questions/60236638
复制相似问题