我正在尝试用两个函数表制作一个音高包络。一个表保存音高值,另一个保存相应的持续时间。这两个表的长度相等,但该长度可以是任何值。有谁知道创建具有任意数量点的线的任何好方法?还是一种将两个信封一个接一个地连接在一起的方法?谢谢!
问问题
11 次
1 回答
0
这是一种可能性:
instr test
kPitches[] fillarray 60, 62, 61, 63
kDurations[] fillarray 1, 2, 3, 1
kTime init 0
kIndx init 0
if kTime <= 0 then
kPitchLine = kPitches[kIndx]
kTime = kDurations[kIndx]
kIndx += 1
endif
kTime -= 1/kr
aTest poscil .2, mtof(kPitchLine)
out aTest, aTest
endin
schedule("test",0,7)
如果您愿意,可以使用函数表而不是数组。您可以将其包装到 UDO 中(有关更多信息,请参见http://write.flossmanuals.net/csound/g-user-defined-opcodes/)。
也许您考虑加入 csound 邮件列表。你会在那里得到更多建议:https ://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND
于 2019-03-16T15:11:15.040 回答