это была бы одна возможность:
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