【问题标题】: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 版本附带的)。

【问题讨论】:

    标签: midi csound 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 作为键/注释;在这里插入关于坏时钟的笑话。有趣的是,文档是由该操作码的源代码作者编写的,所以这不是其他人误解代码的情况......

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-13
      • 1970-01-01
      • 2013-12-02
      • 1970-01-01
      • 2011-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多