envlpxr

envlpxr — L'opcode envlpx avec un segment final de relâchement.

Description

envlpxr est le même que envlpx sauf que le segment final n'est exécuté qu'après un évènement MIDI de relâchement de note. La note est ensuite allongée de la durée de la chute.

Syntaxe

ares envlpxr xamp, irise, idec, ifn, iatss, iatdec [, ixmod] [,irind]
kres envlpxr kamp, irise, idec, ifn, iatss, iatdec [, ixmod] [,irind]

Initialisation

irise -- durée de l'attaque en secondes. Une valeur nulle ou négative signifie pas d'attaque.

idec -- durée de la chute en secondes. Zéro signifie pas de chute.

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'envlpxr é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).

irind (facultatif) -- indicateur d'indépendance. S'il est nul, la durée de relâchement (idec) aura une influence sur l'allongement de la note après un note-off. S'il est non nul, la durée idec sera relativement indépendante de l'allongement de la note (voir ci-dessous). La valeur par défaut est 0.

Exécution

kamp, xamp -- amplitude du signal d'entrée.

envlpxr fait partie des unités « r » de Csound qui contiennent un détecteur de fin de note et une extension de durée pour le relâchement. Quand la fin d'un évènement ou MIDI note-off est détectée, la durée d'exécution de l'instrument courant est immédiatement allongée de idec secondes à moins qu'il ne soit rendu indépendant par irind. Dans ce cas, la chute démarrera de l'endroit, quelqu'il soit, où l'on se trouvait à ce moment précis.

On peut utiliser d'autres enveloppes préfabriquées pour lancer un segment de relâchement à la réception d'un message note-off, comme linsegr et expsegr, ou bien l'on peut construire des enveloppes plus complexes au moyen de xtratim et de release. Noter qu'il n'est pas nécessaire d'utiliser xtratim avec envlpxr, car la durée est allongée automatiquement.

Ces unités « r » peuvent être modifiées également par des évènements MIDI note-off provoqués par une vélocité nulle. Si l'indicateur irind est positionné (différent de zéro), la durée d'exécution totale n'est pas affectée par les données de note-off ou de vélocité nulle.

Unités « r » multiples.  Quand plusieurs unités « r » sont présentes dans le même instrument, il est habituel qu'une seule d'entre elle influence la durée totale de la note. C'est normalement l'unité contrôlant l'amplitude principale de la note. D'autres unités contrôlant par exemple l'évolution d'un filtre, peuvent toujours être sensibles aux commandes note-off tout en n'affectant pas la durée grâce à leur indépendance (irind non nul). En fonction de leur propre valeur idec (durée de relâchement), les unités « r » indépendantes pourront ou ne pourront pas atteindre leur destination finale avant que la note ne se termine. Si elles y arrivent, elles tiendront simplement leur dernière valeur jusqu'à la fin. Si plusieurs unités « r » sont principales, l'extension de la note sera celle de la plus grande valeur idec.

Exemples

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

Exemple 242. Exemple de l'opcode envlpxr.

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

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

instr 1
 	 
icps	cpsmidi	 	 
iamp	ampmidi	.5	 
 	 	 	 
kenv	envlpxr	iamp, 0.2, 1, 1, 1, 0.01
asig	pluck	kenv, icps, 200, 2, 1	 
	outs	asig, asig
	 
endin
</CsInstruments>
<CsScore>
f 1 0 129 -7 0 128 1
f 2 0 4096 10 1	

f0 30	;runs 30 seconds
e
</CsScore>
</CsoundSynthesizer>


Voir aussi

envlpx, linen, linenr

Crédits

Merci à Luis Jure pour avoir signalé une erreur avec iatss.