locsend — Distribue les signaux audio d'un opcode locsig précédent.
locsend dépend de l'existence d'un locsig précédemment défini. Le nombre de signaux de sortie doit correspondre à celui du locsig précédent. Les signaux de sortie de locsend sont dérivés des valeurs de distance et de réverbération données dans le locsig et sont prêts à être envoyés à des unités de réverbération locale ou globale (voir l'exemple ci-dessous). Le taux de réverbération et la balance entre les 2 ou les 4 canaux sont calculés selon la description dans le livre de Dodge (un texte essentiel !).
asig ;some audio signal kdegree line 0, p3, 360 kdistance line 1, p3, 10 a1, a2, a3, a4 locsig asig, kdegree, kdistance, .1 ar1, ar2, ar3, ar4 locsend ga1 = ga1+ar1 ga2 = ga2+ar2 ga3 = ga3+ar3 ga4 = ga4+ar4 outq a1, a2, a3, a4 endin instr 99 ; reverb instrument a1 reverb2 ga1, 2.5, .5 a2 reverb2 ga2, 2.5, .5 a3 reverb2 ga3, 2.5, .5 a4 reverb2 ga4, 2.5, .5 outq a1, a2, a3, a4 ga1=0 ga2=0 ga3=0 ga4=0
Dans l'exemple ci-dessus, le signal asig fait un tour complet sur un cercle pendant la durée de la note tout en « s'éloignant » de la position de l'auditeur. locsig envoie en interne à locsend la quantité de signal appropriée. Les sorties de locsend sont ajoutées à des accumulateurs globaux selon la manière habituelle dans Csound et les signaux globaux servent d'entrée aux unités de réverbération dans un instrument séparé. Pour un exemple, voir locsig.
locsig est utile pour les panoramiques quadro et stéréo ainsi que pour le placement fixe des sons n'importe où entre deux haut-parleurs. Ci-dessous un exemple de placement fixe de sons dans un champ stéréo. Il utilise le fichier locsend_stereo.csd.
Exemple 522. Exemple de l'opcode locsend.
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 locsend_stereo.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> sr = 44100 ksmps = 32 nchnls = 2 0dbfs = 1 ga1 init 0 ga2 init 0 instr 1 krevsend = p4 aout diskin2 "beats.wav", 1, 0, 1 kdegree line 0, p3, 180 ;left to right kdistance line 1, p3, 30 a1, a2 locsig aout, kdegree, kdistance, p4 ar1, ar2 locsend ga1 = ga1+ar1 ga2 = ga2+ar2 outs a1, a2 endin instr 99 ; reverb instrument a1 reverb2 ga1, 2.5, .5 a2 reverb2 ga2, 2.5, .5 outs a1, a2 ga1 = 0 ga2 = 0 endin </CsInstruments> <CsScore> ; sine wave. f 1 0 16384 10 1 i 1 0 4 .1 ;with reverb i 1 + 4 0 ;no reverb i99 0 7 e </CsScore> </CsoundSynthesizer>
Quelques notes:
; place le son dans le haut-parleur gauche et au premier plan : i1 0 1 0 1 ; place le son dans le haut-parleur droit et à l'arrière plan : i1 1 1 90 25 ; place le son au milieu gauche-droite et à mi-distance en profondeur : i1 2 1 45 12 e
L'exemple suivant montre une utilisation intuitive simple de la valeur de distance pour simuler un effet Doppler. La même valeur est utilisée comme diviseur pour la fréquence et comme paramètre de distance pour locsig.
kdistance line 1, p3, 10 kfreq = (ifreq * 340) / (340 + kdistance) asig oscili iamp, kfreq, 1 kdegree line 0, p3, 360 a1, a2, a3, a4 locsig asig, kdegree, kdistance, .1 ar1, ar2, ar3, ar4 locsend