foutk — Envoie des signaux de taux-k vers un nombre arbitraire de canaux dans un fichier externe, en format brut (sans en-tête).
ifilename -- le nom du fichier de sortie (entre guillements)
iformat -- un indicateur pour choisir le format du fichier de sortie (note : il se peut que les versions de Csound antérieures à la 5.0 ne supportent que les formats 0 et 1) :
0 - échantillons en flottants sur 32 bit sans en-tête (fichier PCM binaire multicanaux)
1 - entiers sur 16 bit sans en-tête (fichier PCM binaire multicanaux)
2 - entiers sur 16 bit sans en-tête (fichier PCM binaire multicanaux)
3 - échantillons u-law sans en-tête
4 - entiers sur 16 bit sans en-tête
5 - entiers sur 32 bit sans en-tête
6 - flottants sur 32 bit sans en-tête
7 - entiers non signés sur 8 bit sans en-tête
8 - entiers sur 24 bit sans en-tête
9 - flottants sur 64 bit sans en-tête
kout1,...koutN -- signaux au taux de contrôle à écrire dans le fichier. L'étendue de l'amplitude des signaux est déterminée par le format d'échantillon choisi.
foutk opère de la même maniière que fout, mais avec des signaux de taux-k. iformat peut prendre une valeur entre 0 et 9, ou 0 et 1 avec une ancienne version de Csound.
Noter que fout et foutk peuvent utiliser soit une chaîne de caractères contenant un nom de chemin de fichier, soit un identificateur numérique généré par fiopen. Alors qu'avec fouti et foutir, le fichier cible ne peut être spécifié que par un identificateur numérique.
Voici un exemple de l'opcode foutk. Il utilise le fichier foutk.csd.
Exemple 374. Exemple de l'opcode foutk.
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 real audio input is needed too ; For Non-realtime ouput leave only the line below: ; -o foutk.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> ; by Stefano Cucchi - 2020 ; Sing in your microphone for 10'' ; Estimated pitch & amplitude are written on 2 files "amp" 6 "pitch" ; After 10'' a sawtooth is played with these values sr = 44100 ksmps = 32 nchnls = 2 0dbfs = 1 instr 1 ;use pitch iupdte = 0.001 ilo = 6 ihi = 10 idbthresh = 10 ifrqs = 24 iconf = 10 istrt = 8 asig1, asig2 inch 1, 2 koct, kamp pitch asig1, iupdte, ilo, ihi, idbthresh, ifrqs, iconf, istrt ; pitch & amplitude tracking kcps = cpsoct(koct) kamp = kamp*0.00002 foutk "amp", 6, kamp ; write amplitude values on a file - 32-bit floats without header foutk "pitch", 6, kcps ; write pitch values on a file - 32-bit floats without header endin instr 2 kamp readk "amp", 6, p4 ; read amplitude values fro the file kcps readk "pitch", 6, p4 ; read pitchvalues fro the file kcps portk kcps, 0.008 asig oscili kamp, kcps*p5, 1 ; use amplitude & pitch to play a sawtooth kdeclick linseg 0, 0.2, 1, p3 -0.4, 1, 0.2, 0 outs asig*kdeclick, asig*kdeclick endin </CsInstruments> <CsScore> f1 0 16384 10 1 0.5 0.3 0.25 0.2 0.167 0.14 0.125 .111 ;sawtooth i 1 0 10 i 2 10 10 0.001 1 ; e </CsScore> </CsoundSynthesizer>
Pour éviter le bruit de zip produit par des discontinuités dans la poursuite d'enveloppe complexe, on peut utiliser un filtre passe-bas pour lisser l'enveloppe estimée.