QUICK-REF - CsoundManual - Top of this section - Previous - Contents - Index - Next 

xtratim, release

           xtratim      iextradur
   kflag   release

DESCRIPTION

Extend the duration of realtime generated events and handle their extra life (see also linenr).

INITIALIZATION

iextradur - additional duration of current instrument instance

PERFORMANCE

xtratim exetends current MIDI-activated note duration of iextradur seconds after the corresponding note-off message has deactivated current note itself. This opcode has no output arguments.

release outputs current note state. If current note is in the release stage (i.e. if its duration has been exetended with xtratim opcode and if it has only just deactivated), kflag output argument is set to 1, else (in sustain stage of current note) is set to 0. These two opcodes are useful for implementing complex release-oriented envelopes.

EXAMPLE:

  instr 1 ;allows complex ADSR envelope with MIDI events
   inum notnum
   icps cpsmidi
   iamp ampmidi 4000
   ;
   ;------- complex envelope block ------
        xtratim 1 ;extra-time, i.e. release dur
   krel init 0
   krel release ;outputs release-stage flag (0 or 1 values)
   if (krel > .5) kgoto rel ;if in relase-stage goto relase section
   ;
   ;************ attack and sustain section ***********
   kmp1 linseg 0, .03, 1, .05, 1, .07, 0, .08, .5, 4, 1, 50, 1 
   kmp = kmp1*iamp
    kgoto done
   ;
   ;--------- release section --------
   rel:
   kmp2 linseg 1, .3, .2, .7, 0 
   kmp = kmp1*kmp2*iamp
   done:
   ;------
   ;
   a1 oscili kmp, icps, 1
    out a1
  endin

AUTHOR:

Gabriel Maldonado
Italy
May 1997


QUICK-REF - CsoundManual - Top of this section - Previous - Contents - Index - Next 

HTML Csound Manual - © Jean Piché & Peter J. Nix, 1994-97