rms — Détermine la valeur efficace d'un signal audio.
Détermine la valeur efficace d'un signal audio. La valeur instantanée passe à travers un filtre passe-bas pour en sortir une valeur moyenne comme dans un VU-mètre.
ihp (facultatif, 10 par défaut) -- point à mi-puissance (en Hz) d'un d'un filtre passe-bas interne spécial. La valeur par défaut est 10.
iskip (facultatif, 0 par défaut) -- disposition initiale de l'espace de données interne (voir reson). La valeur par défaut est 0.
asig -- signal audio en entrée
kres -- valeur efficace du signal d'entrée issue du filtre passe-bas
Les valeurs de sortie kres de rms suivent la valeur efficace de l'entrée audio asig. Cette unité n'est pas un modificateur de signal, mais fonctionne plutôt comme une mesure de la puissance du signal. Elle utilise un filtre passe-bas interne pour rendre la réponse plus lisse. On peut utiliser ihp pour contrôler ce lissage. Plus les valeurs sont importantes, plus la mesure est "dynamique".
On peut aussi utiliser cet opcode comme suiveur d'enveloppe.
La sortie kres de cet opcode est donnée en amplitude et dépend de 0dbfs. Pour une sortie en décibels, il faut utiliser dbamp
Voici un exemple de l'opcode rms. Il utilise le fichier rms.csd.
Exemple 913. Exemple de l'opcode rms.
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 rms.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> ; By Stefano Cucchi 2020 sr = 44100 ksmps = 32 nchnls = 2 0dbfs = 1 instr 1 areference diskin "fox.wav" krms rms areference ; take the RMS of "fox.wav" asound oscili krms, 440 ; use RMS as amplitude of sine wave outch 1, areference outch 2, asound endin </CsInstruments> <CsScore> i 1 0 4 e </CsScore> </CsoundSynthesizer>
Voici un autre exemple de l'opdcode rms. Il utilise le fichier rms-FLTK.csd.
Exemple 914. Exemple avancé de l'opcode rms.
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 -m0 ;;;RT audio I/O ; For Non-realtime ouput leave only the line below: ; -o rms.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> ; Initialize the global variables. sr = 44100 ksmps = 128 nchnls = 1 ;Example by Andres Cabrera 2007 0dbfs = 1 FLpanel "rms", 400, 100, 50, 50 gkrmstext, gihrmstext FLtext "Rms", -100, 0, 0.1, 3, 110, 30, 60, 50 gkihp, gihandle FLtext "ihp", 0, 10, 0.05, 1, 100, 30, 220, 50 gkrmsslider, gihrmsslider FLslider "", -60, -0.5, -1, 5, -1, 380, 20, 10, 10 FLpanelEnd FLrun FLsetVal_i 5, gihandle ; Instrument #1. instr 1 a1 inch 1 label: kval rms a1, i(gkihp) ;measures rms of input channel 1 rireturn kval = dbamp(kval) ; convert to db full scale printk 0.5, kval FLsetVal 1, kval, gihrmsslider ;update the slider and text values FLsetVal 1, kval, gihrmstext knewihp changed gkihp ; reinit when ihp text has changed if (knewihp == 1) then reinit label ;needed because ihp is an i-rate parameter endif endin </CsInstruments> <CsScore> ; Play Instrument #1 for one minute i 1 0 60 e </CsScore> </CsoundSynthesizer>