fout — Envoie des signaux de taux-a vers un nombre arbitraire de canaux dans un fichier externe.
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, 1 et 2) :
-1 - formatage identique à celui des options globales de sortie de Csound (-A, -W, --format=..., etc).
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 avec en-tête. Le type de l'en-tête dépend du format de restitution (-o). Par exemple, si l'utilisateur choisit le format AIFF (en utilisant l'option -A), le format de l'en-tête sera de type AIFF.
3 - échantillons u-law avec un en-tête (voir iformat=2).
4 - entiers sur 16 bit avec un en-tête (voir iformat=2).
5 - entiers sur 32 bit avec un en-tête (voir iformat=2).
6 - flottants sur 32 bit avec un en-tête (voir iformat=2).
7 - entiers non signés sur 8 bit avec un en-tête (voir iformat=2).
8 - entiers sur 24 bit avec un en-tête (voir iformat=2).
9 - flottants sur 64 bit avec un en-tête (voir iformat=2).
50 - format ogg-vorbis.
De plus, les versions de Csound à partir de la 5.0 permettent de choisir explicitement un type d'en-tête particulier en spécifiant le format comme 10 * typeFichier + formatEchantillon, où typeFichier peut valoir 1 pour WAV, 2 pour AIFF, 3 pour fichiers brut (sans en-tête) et 4 pour IRCAM ; formatEchantillon est l'une des valeurs ci-dessus comprise entre 0 et 9, sauf que le format d'échantillon 0 est déduit de la ligne de commande (-o), le format 1 représente des entiers signés sur 8 bit et le format 2 est a-law. Ainsi, par exemple, iformat = 25 signifie des entiers sur 32 bit avec un en-tête AIFF.
aout1,... aoutN -- signaux à écrire dans le fichier. Dans le cas de fichiers bruts, l'étendue de l'amplitude des signaux audio est déterminée par le format d'échantillon choisi ; pour les fichiers son avec un en-tête comme WAV et AIFF, les signaux audio doivent être dans l'intervalle compris entre -0dbfs et 0dbfs.
fout (file output) écrit des échantillons de signaux audio dans un fichier avec n'importe quel nombre de canaux. Le nombre de canaux dépend du nombre de variables aoutN (par exemple un signal mono avec un seul argument de taux-a, un signal stéréo avec deux arguments de taux-a, etc.) Le nombre maximum de canaux est fixé à 64. Plusieurs opcodes fout peuvent se trouver dans le même instrument, se référant à différents fichiers.
Noter que, contrairement à out, outs et outq, fout ne remet pas à zéro la variable audio, c'est pourquoi l'on doit la remettre à zéro après l'appel. Si l'on travaille en polyphonie, on peut utiliser les opcodes vincr et clear pour cela.
Noter que fout et foutk utilisent une chaîne de caractères contenant un nom de chemin de fichier. Alors qu'avec fouti et foutir, le fichier cible ne peut être spécifié que par un identificateur numérique.
Note | |
---|---|
Si l'on utilise fout pour générer un fichier audio depuis la sortie globale de Csound, il peut être désirable d'utiliser l'opcode monitor qui peut capter le tampon de sortie, ce qui évite le routage. |
Voici un exemple de l'opcode fout. Il utilise le fichier fout.csd.
Exemple 370. Exemple de l'opcode fout.
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 fout.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> sr = 44100 ksmps = 32 nchnls = 2 0dbfs = 1 giSine ftgen 0, 0, 2^10, 10, 1 instr 1 asig poscil3 .5, 880, giSine ;write a raw file: 32 bits with header fout "fout_880.wav", 15, asig outs asig, asig endin instr 2 klfo lfo 1, 2, 0 asig poscil3 .5*klfo, 220, giSine ;write an aiff file: 32 bits with header fout "fout_aif.aiff", 25, asig ; fout "fout_all3.wav", 14, asig outs asig, asig endin instr 99 ;read the stereo csound output buffer allL, allR monitor ;write the output of csound to an audio file ;to a wav file: 16 bits with header fout "fout_all.wav", 14, allL, allR endin </CsInstruments> <CsScore> i 1 0 2 i 2 0 3 i 99 0 3 e </CsScore> </CsoundSynthesizer>
Voici un autre exemple de fout, qui l'utilise pour sauvegarder le contenu d'une table dans un fichier audio. Il utilise les fichiers fout_ftable.csd et beats.wav.
Exemple 371. Exemple de l'opcode fout pour sauvegarder le contenu d'une ftable.
<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 fout_ftable.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> ; By: Jonathan Murphy 2007 gilen = 131072 gicps = sr/gilen gitab ftgen 1, 0, gilen, 10, 1 instr 1 /******** write file to table ********/ ain diskin2 "beats.wav", 1, 0, 1 aphs phasor gicps andx = aphs * gilen tablew ain, andx, gitab /******** write table to file ********/ aosc table aphs, gitab, 1 out aosc fout "beats_copy.wav", 6, aosc endin </CsInstruments> <CsScore> i1 0 2 e </CsScore> </CsoundSynthesizer>