maxaccum — Accumule la valeur maximale de signaux audio.
maxaccum compare deux variables de taux-audio et écrit la valeur maximale des deux dans la première.
aAccumulator -- variable audio dans laquelle la valeur maximale est écrite.
aInput -- signal auquel aAccumulator est comparé.
L'opcode maxaccum est conçu pour accumuler la valeur maximale de plusieurs signaux audio qui peuvent provenir de plusieurs instances de note, dans différents canaux, ou qui ne peuvent être comparés en une fois au moyen de l'opcode max. Sa sémantique est semblable à celle de vincr car aAccumulator est utilisé à la fois comme variable d'entrée et comme variable de sortie, sauf que maxaccum garde la valeur maximale au lieu d'additionner les signaux ensemble. maxaccum exécute l'opération suivante sur chaque paire d'échantillons :
if (aInput > aAccumulator) aAccumulator = aInput
aAccumulator sera habituellement une variable audio globale. A la fin de chaque cycle de calcul (période-k), après que sa valeur ait été lue et utilisée, la variable accumulateur doit être remise à zéro (peut-être en utilisant l'opcode clear). Il faut faire cependant attention si aInput est négatif en tout point, auquel cas l'accumulateur doit être initialisé et réinitialisé à une valeur négative suffisamment importante pour être toujours inférieure aux signaux d'entrée auquels elle est comparé.
Voici un exemple de l'opcode maxaccum. Il utilise le fichier maxaccum.csd.
Exemple 576. Eemple de l'opcode maxaccum.
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 maxaccum.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> sr = 44100 ksmps = 32 nchnls = 2 0dbfs = 1 instr 1 ;saw asig vco2 .2, p4 outs asig, asig gasaw = asig endin instr 2 ;sine aout poscil .3, p4, 1 outs aout, aout gasin = aout endin instr 10 accum init 0 maxaccum accum, gasaw + gasin ;saw and sine accumulated outs accum, accum clear accum endin </CsInstruments> <CsScore> f 1 0 4096 10 1 i 1 0 7 330 i 2 3 3 440 i 1 10 7 330 ;same notes but without maxaccum, for comparison i 2 13 3 440 i 10 0 6 ;accumulation note stops after 6 seconds e </CsScore> </CsoundSynthesizer>