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 -- facteur d'atténuation par lequel la dernière valeur de l'attaque d'envlpx évolue pendant le pseudo entretien de la note. Un facteur supérieur à 1 provoque une montée exponentielle tandis qu'un facteur inférieur à 1 crée une descente exponentielle. Un facteur é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 -- facteur d'atténuation par lequel la dernière valeur de l'entretien diminue exponentiellement pendant la chute. 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 l'attaque et la chute se chevauchent alors les deux modifications agiront simultanément durant cette période commune. 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 136. 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 ; Audio out Audio in No messages -odac -iadc -d ;;;RT audio I/O ; For Non-realtime ouput leave only the line below: ; -o envlpx.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> ; Initialize the global variables. sr = 44100 kr = 4410 ksmps = 10 nchnls = 1 ; Instrument #1 - a simple instrument. instr 1 ; Set the amplitude. kamp init 20000 ; Get the frequency from the fourth p-field. kcps = cpspch(p4) a1 vco kamp, kcps, 1 out a1 endin ; Instrument #2 - instrument with an amplitude envelope. instr 2 kamp = 20000 irise = 0.05 idur = p3 - .01 idec = 0.5 ifn = 2 iatss = 1 iatdec = 0.01 ; Create an amplitude envelope. kenv envlpx kamp, irise, idur, idec, ifn, iatss, iatdec ; Get the frequency from the fourth p-field. kcps = cpspch(p4) a1 vco kenv, kcps, 1 out a1 endin </CsInstruments> <CsScore> ; Table #1, a sine wave. f 1 0 16384 10 1 ; Table #2, a rising envelope. f 2 0 129 -7 0 128 1 ; Set the tempo to 120 beats per minute. t 0 120 ; Make sure the score plays for 33 seconds. f 0 33 ; Play a melody with Instrument #1. ; p4 = frequency in pitch-class notation. i 1 0 1 8.04 i 1 1 1 8.04 i 1 2 1 8.05 i 1 3 1 8.07 i 1 4 1 8.07 i 1 5 1 8.05 i 1 6 1 8.04 i 1 7 1 8.02 i 1 8 1 8.00 i 1 9 1 8.00 i 1 10 1 8.02 i 1 11 1 8.04 i 1 12 2 8.04 i 1 14 2 8.02 ; Repeat the melody with Instrument #2. ; p4 = frequency in pitch-class notation. i 2 16 1 8.04 i 2 17 1 8.04 i 2 18 1 8.05 i 2 19 1 8.07 i 2 20 1 8.07 i 2 21 1 8.05 i 2 22 1 8.04 i 2 23 1 8.02 i 2 24 1 8.00 i 2 25 1 8.00 i 2 26 1 8.02 i 2 27 1 8.04 i 2 28 2 8.04 i 2 30 2 8.02 e </CsScore> </CsoundSynthesizer>