csound中的midipolyaftertouch是不是损坏?

Posted

技术标签:

【中文标题】csound中的midipolyaftertouch是不是损坏?【英文标题】:Is midipolyaftertouch broken in csound?csound中的midipolyaftertouch是否损坏? 【发布时间】:2020-02-15 07:07:01 【问题描述】:

我对 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 测试版(因为那是 Cabbage 版本附带的)。

【问题讨论】:

【参考方案1】:

根据文档,还有另一个操作码 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 设备”。

文档中midipolyaftertouch 的代码示例可能无法工作,除非您只是尝试使用 D0 作为键/注释;在这里插入关于坏时钟的笑话。有趣的是,文档是由该操作码的源代码作者编写的,所以这不是其他人误解代码的情况......

【讨论】:

以上是关于csound中的midipolyaftertouch是不是损坏?的主要内容,如果未能解决你的问题,请参考以下文章

出现语法错误,csound 中出现意外 T_IDENT 尝试使用 faustcompile

在 python 内部使用 csound

CSound 乐器的补丁存储

CSound 和 Python 通信

csound 是不是能够从互联网上提取简单的信息/数据?

CSound6 缺少 32 位库