endop
Précédent | Opcodes et opérateurs de l'orchestre | Suivant

## endop

endop — Termine un bloc d'opcode défini par l'utilisateur.

## Description

Termine un bloc d'opcode défini par l'utilisateur.

## Syntaxe

                endop

## Exécution

La syntaxe d'un bloc d'opcode défini par l'utilisateur est la suivante :

    opcode  nom, outtypes, intypes
    xinarg1 [, xinarg2] [, xinarg3] ... [xinargN]  xin
    [setksmps  iksmps]
    ... the rest of the instrument's code.
    xout  xoutarg1 [, xoutarg2] [, xoutarg3] ... [xoutargN]
    endop

Le nouvel opcode peut ensuite être utilisé avec la syntaxe usuelle :

    [xinarg1] [, xinarg2] ... [xinargN]  nom  [xoutarg1] [, xoutarg2] ... [xoutargN] [, iksmps]

## Exemples

Voici un exemple de l'opcode endop. Il utilise le fichier endop.csd.

Exemple 235. Exemple de l'opcode endop.

Voir les sections Audio en Temps Réel et Options de la Ligne de Commande pour plus d'information sur l'utilisation des options de la ligne de commande.

    <CsoundSynthesizer>
    <CsOptions>
    ; Select audio/midi flags here according to platform
    -odac     ;;;realtime audio out
    ;-iadc    ;;;uncomment -iadc if realtime audio input is needed too
    ; For Non-realtime ouput leave only the line below:
    ; -o endop.wav -W ;;; for file output any platform
    </CsOptions>
    <CsInstruments>

    sr = 44100
    ksmps = 32
    nchnls = 2
    0dbfs = 1

    /* example opcode 1: simple oscillator */

            opcode Oscillator, a, kk

    kamp, kcps      xin             ; read input parameters
    a1      vco2 kamp, kcps         ; sawtooth oscillator
            xout a1                 ; write output

            endop

    /* example opcode 2: lowpass filter with local ksmps */

            opcode Lowpass, a, akk

            setksmps 1              ; need sr=kr
    ain, ka1, ka2   xin             ; read input parameters
    aout    init 0                  ; initialize output
    aout    =  ain*ka1 + aout*ka2   ; simple tone-like filter
            xout aout               ; write output

            endop

    /* example opcode 3: recursive call */

            opcode RecursiveLowpass, a, akkpp

    ain, ka1, ka2, idep, icnt       xin     ; read input parameters
            if (icnt >= idep) goto skip1    ; check if max depth reached
    ain     RecursiveLowpass ain, ka1, ka2, idep, icnt + 1
    skip1:
    aout    Lowpass ain, ka1, ka2           ; call filter
            xout aout                       ; write output

            endop

    /* example opcode 4: de-click envelope */

            opcode DeClick, a, a

    ain     xin
    aenv    linseg 0, 0.02, 1, p3 - 0.05, 1, 0.02, 0, 0.01, 0
            xout ain * aenv         ; apply envelope and write output

            endop

    /* instr 1 uses the example opcodes */

            instr 1

    kamp    =  .6                ; amplitude
    kcps    expon 50, p3, 500       ; pitch
    a1      Oscillator kamp, kcps                   ; call oscillator
    kflt    linseg 0.4, 1.5, 0.4, 1, 0.8, 1.5, 0.8  ; filter envelope
    a1      RecursiveLowpass a1, kflt, 1 - kflt, 10 ; 10th order lowpass
    a1      DeClick a1
            outs a1, a1

    endin
    </CsInstruments>
    <CsScore>

    i 1 0 4
    e

    </CsScore>
    </CsoundSynthesizer>

## Voir aussi

opcode, setksmps, xin, xout

Plus d'information sur cet opcode : http://www.csoundjournal.com/2006summer/controlFlow_part2.html, écrit par Steven Yi.

La page des opcodes définis par l'utilisateur : http://www.csounds.com/udo/, maintenue par Steven Yi.

## Crédits

Auteur : Istvan Varga, 2002 ; basé sur du code de Matt J. Ingalls

Nouveau dans la version 4.22

Précédent | Niveau supérieur | Suivant
endin | Sommaire | envlpx