envlpx — Applique une enveloppe constituée de 3 segments.
envlpx -- applique une enveloppe constituée de 3 segments :
une attaque dont la forme est donnée par une fonction
un pseudo entretien modifié exponentiellement
une chute exponentielle
ares envlpx xamp, irise, idur, idec, ifn, iatss, iatdec [, ixmod]
kres envlpx kamp, irise, idur, idec, ifn, iatss, iatdec [, ixmod]
irise -- durée de l'attaque en secondes. Une valeur nulle ou négative signifie pas d'attaque.
idur -- durée globale en seconde. Avec une valeur nulle ou négative, l'initialisation sera ignorée.
idec -- durée de la chute en secondes. Zéro signifie pas de chute. Si idec > idur la chute sera tronquée.
ifn -- numéro de la table de fonction avec point de garde dans laquelle la forme de l'attaque est stockée.
iatss -- le rapport entre la valeur finale de la période de pseudo entretien et sa valeur initiale (c'est-à-dire l'atténuation entre la dernière valeur de l'attaque et le début de la chute). Un rapport supérieur à 1 provoque une montée exponentielle tandis qu'un rapport inférieur à 1 crée une descente exponentielle. Un rapport égal à 1 maintient un véritable entretien de la note sur la dernière valeur de l'attaque. Il faut noter que cette atténuation n'évolue pas à vitesse constante (comme dans le cas du piano), mais qu'elle dépend de la durée de la note. Cependant, si iatss est négatif (ou si l'entretien < 4 périodes-k) une vitesse d'atténuation de abs(iatss) par seconde sera utilisée. 0 est interdit.
iatdec -- le rapport entre la dernière valeur de la chute et sa première valeur (la fin du segment d'entretien). Cette valeur doit être positive et elle est normalement de l'ordre de 0,01. Une valeur trop longue ou excessivement courte peut produire une coupure audible. Les valeurs nulles ou négatives sont interdites.
ixmod (facultatif, entre +- 0,9 environ) -- facteur de modification de courbe exponentielle, qui influe sur la raideur de la trajectoire exponentielle pendant l'entretien. Les valeurs négatives provoqueront une montée ou une descente accélérée (par exemple subito piano). Les valeurs positives provoqueront une montée ou une descente ralentie. La valeur par défaut est zéro (exponentielle non modifiée).
kamp, xamp -- amplitude du signal d'entrée.
Les modifications de l'attaque sont appliquées pendant les premières irise secondes, et celles de la chute à partir de idur - idec. Si ces périodes sont séparées dans le temps il y aura un entretien au cours duquel amp sera modifié selon le schéma exponentiel décrit. Si la durée globale idur est dépassée pendant l'exécution, la chute continuera dans la même direction, en tendant asymtotiquement vers zéro.
Voici un exemple de l'opcode envlpx. Il utilise le fichier envlpx.csd.
Exemple 266. Exemple de l'opcode envlpx.
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 envlpx.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> sr = 44100 ksmps = 32 nchnls = 2 0dbfs = 1 instr 1 irise = 0.2 idec = 0.5 idur = p3 - idec ifn = 1 iatss = p5 iatdec = 0.01 kenv envlpx .6, irise, idur, idec, ifn, iatss, iatdec kcps = cpspch(p4) asig vco2 kenv, kcps ;apply envlpx to the filter cut-off frequency asig moogvcf asig, kcps + (kenv * 8 * kcps) , .5 ;the higher the pitch, the higher the filter cut-off frequency outs asig, asig endin </CsInstruments> <CsScore> ; a linear rising envelope f 1 0 129 -7 0 128 1 i 1 0 2 7.00 .1 i 1 + 2 7.02 1 i 1 + 2 7.03 2 i 1 + 2 7.05 3 e </CsScore> </CsoundSynthesizer>