0dbfs — Fixe la valeur des 0 décibels à amplitude maximale.
La valeur par défaut est 32767, si bien que tous les orchestres existants devraient fonctionner.
Les valeurs d'amplitude dans Csound sont toujours relatives à une valeur "0dbfs" représentant l'amplitude maximale possible sans écrêtage. A l'origine cette valeur valait toujours 32767 dans Csound, correspondant à l'étendue bipolaire d'un fichier son sur 16 bit ou d'un codec AN/NA sur 16 bit. Cela reste l'amplitude maximale par défaut dans Csound, pour des raisons de compatibilité descendante. La valeur 0dbfs permet à Csound de produire des valeurs mises à l'échelle de n'importe quel format de sortie, que ce soit en entiers sur 16 bit ou 24 bit, en flottants sur 32 bit, et même en entiers sur 32 bit.
On peut définir 0dBFS dans l'en-tête, pour fixer l'amplitude de référence utilisée par Csound, mais on peut aussi l'utiliser comme variable dans un instrument comme ceci :
ipeak = 0dbfs
asig oscil 0dbfs, freq, 1 out asig * 0.3 * 0dbfs
L'opcode 0dbfs a pour but le codage relatif à une valeur 0dbfs (et l'usage beaucoup plus fréquent des opcodes ampdbfs() !), plutôt que l'utilisation de valeurs d'échantillon explicites. L'utilisation de 0dbfs=1 est conforme aux pratiques de l'industrie, car l'intervalle allant de -1 à 1 est utilisé dans la plupart des formats de greffon commerciaux et dans la plupart des autres systèmes de synthèse comme Pure Data.
Les nombres en virgule flottante écrits dans un fichier, lorsque 0dbfs = 1, ne seront effectivement pas transposés du tout en amplitude. Ainsi les nombres dans le fichier sont exactement ce que l'orchestre dit qu'ils sont.
Pour plus de détails sur les valeurs d'amplitude dans Csound, voir la section Valeurs d'amplitude dans Csound.
Voici un exemple de l'opcode 0dbfs. Il utilise le fichier 0dbfs.csd.
Exemple 33. Exemple de l'opcode 0dbfs.
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 ; Audio out Audio in No messages -odac -iadc -d ;;;RT audio I/O ; For Non-realtime ouput leave only the line below: ; -o 0dbfs.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> ; Initialize the global variables. sr = 44100 ksmps = 10 nchnls = 2 ; Set the 0dbfs to 1. 0dbfs = 1 instr 1 ; from linear amplitude (0-1 range) print p4 a1 oscil p4, 440, 1 outs a1, a1 endin instr 2 ; from linear amplitude (0-32767 range) iamp = p4 / 32767 print iamp a1 oscil iamp, 440, 1 outs a1, a1 endin instr 3 ; from dB FS iamp = ampdbfs(p4) print iamp a1 oscil iamp, 440, 1 outs a1, a1 endin </CsInstruments> <CsScore> ; Table #1, a sine wave. f 1 0 16384 10 1 i 1 0 1 1 i 1 + 1 0.5 i 1 + 1 0.1 s i 2 0 1 32767 i 2 + 1 [32767/2] i 2 + 1 [3276.7] s i 3 0 1 0 i 3 + 1 -6 i 3 + 1 -20 e </CsScore> </CsoundSynthesizer>