fout

fout — Envoie des signaux de taux-a vers un nombre arbitraire de canaux dans un fichier externe.

Description

fout envoie N signaux de taux-a vers un fichier spécifié à N canaux.

Syntaxe

fout ifilename, iformat, aout1 [, aout2, aout3,...,aoutN]
fout ifilename, iformat, array[]

Initialisation

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.

Exécution

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] 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.

Exemples

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>


Voir aussi

fiopen, fouti, foutir, foutk, monitor

Crédits

Auteur : Gabriel Maldonado
Italie
1999
Author: John ffitch
NUIM, 2013

Nouveau dans la version 3.56 de Csound

Octobre 2002. Note ajoutée par Richard Dobson.

Variante pour tableau ajoutée dans la version 6.01