Skip to content

mdelay

A MIDI delay opcode.

Syntax

mdelay kstatus, kchan, kd1, kd2, kdelay

Performance

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.

Examples

Here is an example of the mdelay opcode. It uses the file mdelay.csd.

Example of the mdelay opcode.
<CsoundSynthesizer> 
<CsOptions>
; Select audio/midi flags here according to platform
; Audio out   Audio in    No messages
-odac           -iadc     -d         -M0  -Q0 
</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>

See also

MIDI Message Output

Credits

Author: Gabriel Maldonado
Italy
November 1998

New in Csound version 3.492