denorm — Ajoute du bruit de bas niveau à une liste de signaux de taux-a.
Ajoute du bruit de bas niveau (~1e-20 pour les flottants et ~1e-56 pour les doubles) à une liste de signaux de taux-a. On peut l'utiliser avant les filtres RII et les réverbérations pour éviter les nombres dénormalisés qui peuvent sinon produire un accroissement significatif de l'utilisation des ressources CPU.
a1[, a2[, a3[, ... ]]] -- signaux auquels on ajoute du bruit.
Certaines architectures de processeur (particulièrement les Pentium IV) sont très lentes pour traiter les très petits nombres. Ces petits nombres peuvent résulter de certains traitements à rétroaction décroissante comme la réverbération et les filtres RII. On peut ajouter du bruit de faible niveau afin que les nombres très petits ne soient jamais atteints et soient "absorbés" par le "fond bruiteux".
Si l'utilisation du CPU atteint les 100% en queue de réverbération ou si l'on obtient des discontinuités audio dans un traitement qui ne devrait pas beaucoup utiliser le CPU, l'utilisation de denorm avant l'opcode ou le traitement fautif peut résoudre le problème.
Voici un exemple de l'opcode denorm. Il utilise le fichier denorm.csd.
Exemple 232. Exemple de l'opcode denorm.
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 ;;;RT audio out ;-iadc ;;;uncomment -iadc if RT audio input is needed too ; For Non-realtime ouput leave only the line below: ; -o denorm.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> ; slightly simplified example from Istvan Varga 2006 sr = 44100 ksmps = 32 nchnls = 2 0dbfs = 1 garvb init 0 instr 1 a1 oscils 0.6, 440, 0 a2 linsegr 0, 0.005, 1, 3600, 1, 0.08, 0 a1 = a1 * a2 vincr garvb, a1 outs a1, a1 endin instr 99 ;"Always on" denorm garvb aL, aR reverbsc garvb * 0.5, garvb * 0.5, 0.92, 10000 clear garvb outs aL, aR endin </CsInstruments> <CsScore> i 99 0 -1 ;held by a negative p3, means "always on" i 1 0 0.5 i 1 4 0.5 e 8 ;8 extra seconds after the performance </CsScore> </CsoundSynthesizer>