mdelay — A MIDI delay opcode.
kstatus -- status byte of MIDI message to be delayed
kchan -- MIDI channel (1-16)
kd1 -- first MIDI data byte
kd2 -- second MIDI data byte
kdelay -- delay time in seconds
Each time that kstatus is other than zero, mdelay outputs a MIDI message to the MIDI out port after kdelay seconds. This opcode is useful in implementing MIDI delays. Several instances of mdelay can be present in the same instrument with different argument values, so complex and colorful MIDI echoes can be implemented. Further, the delay time can be changed at k-rate.
Here is an example of the mdelay opcode. It uses the file mdelay.csd.
Example 249. Example of the mdelay opcode.
See the sections Real-time Audio and Command Line Flags for more information on using command line flags.
<CsoundSynthesizer> <CsOptions> ; Select audio/midi flags here according to platform ; Audio out Audio in No messages -odac -iadc -d -M0 -Q1;;;RT audio I/O with MIDI in </CsOptions> <CsInstruments> sr = 44100 kr = 4410 ksmps = 10 nchnls = 2 ; Example by Giorgio Zucco 2007 instr 1 ;Triggered by MIDI notes on channel 1 kstatus init 0 ifund notnum ivel veloc noteondur 1, ifund, ivel, 1 kstatus = kstatus + 1 idel1 = .2 idel2 = .4 idel3 = .6 idel4 = .8 ;make four delay lines mdelay kstatus,1,ifund+2, ivel,idel1 mdelay kstatus,1,ifund+4, ivel,idel2 mdelay kstatus,1,ifund+6, ivel,idel3 mdelay kstatus,1,ifund+8, ivel,idel4 endin </CsInstruments> <CsScore> ; Dummy ftable f 0 60 </CsScore> </CsoundSynthesizer>