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.
Ces appels devraient tous fonctionner :
ipeak = 0dbfs
asig oscil 0dbfs, freq, 1 out asig * 0.3 * 0dbfs
etc.
Quant à la documentation, l'usage doit être évident - le but principal est de commencer à coder relativement au 0dbfs (et d'utiliser beaucoup plus les opcodes ampdbfs() !), plutôt que d'utiliser des valeurs d'échantillon explicites.
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.
![]() |
NOTA BENE IMPORTANT |
---|---|
Tous les principaux formats d'échantillon sont supportés, mais je n'ai pas eu le temps de m'occuper des formats char. C'est probablement assez simple. J'ai essayé de couvrir les principaux utilitaires - adsyn, lpanal, etc. Mais il y a sûrement des oublis, désolé. Une partie du code de l'analyseur est un peu brouillonne parce que j'ai introduit un nom de variable commençant par un chiffre ! |
Voici un exemple de l'opcode 0dbfs. Il utilise le fichier 0dbfs.csd.
Exemple 20. 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 kr = 4410 ksmps = 10 nchnls = 1 ; Set the 0dbfs to the 16-bit maximum. 0dbfs = 32767 ; Instrument #1. instr 1 ; Linearly increase the amplitude value "kamp" from ; 0 to 1 over the duration defined by p3. kamp line 0, p3, 1 ; Generate a basic tone using our amplitude value. a1 oscil kamp, 440, 1 ; Multiply the basic tone (with its amplitude between ; 0 and 1) by the full-scale 0dbfs value. out a1 * 0dbfs endin </CsInstruments> <CsScore> ; Table #1, a sine wave. f 1 0 16384 10 1 ; Play Instrument #1 for three seconds. i 1 0 3 e </CsScore> </CsoundSynthesizer>
Voici un autre exemple de l'opcode 0dbfs. Il utilise le fichier 0dbfs-1.csd. Cet exemple a exactement la même sortie que l'exemple précédent, mais les échantillons de sortie sont maintenant normalisés entre -1 et 1.
Exemple 21. Exemple de l'opcode 0dbfs avec une amplitude maximale de 1.
<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 kr = 4410 ksmps = 10 nchnls = 1 ; Set the 0dbfs to 1. 0dbfs = 1 ; Instrument #1. instr 1 ; Linearly increase the amplitude value "kamp" from ; -90 to p4 (in dBfs) over the duration defined by p3. kamp line -90, p3, p4 print ampdbfs(p4) ; Generate a basic tone using our amplitude value. a1 oscil ampdbfs(kamp), 440, 1 ; Since 0dbfs = 1 we don't need to multiply the output out a1 endin </CsInstruments> <CsScore> ; Table #1, a sine wave. f 1 0 16384 10 1 ; Play Instrument #1 for three seconds. i 1 0 3 -6 e </CsScore> </CsoundSynthesizer>