Use Non-Frames Version Previous Page Next Page
MIDI Support: Event Extenders

xtratim, release

          xtratim    iextradur
  kflag   release

Description

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

Initialization

iextradur - additional duration of current instrument instance

Performance

xtratim extends current MIDI-activated note duration of iextradur seconds after the corresponding noteoff 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 extended 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 release-stage goto release 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
New in Csound version 3.47


Use Non-Frames Version Previous Page Next Page
MIDI Support: Event Extenders