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