"sone" — Génère une table contenant des valeurs de sonie.
size -- nombre de points dans la table. Doit être une puissance de 2 ou une puissance-de-2 plus 1 (voir l'instruction f).
start, end -- la première et la dernière valeur à mémoriser. Les points mis en mémoire sont répartis uniformément entre ces deux valeurs sur la longueur de la table.
equalpoint -- le point de la courbe où les valeurs d'entrée et de sortie sont égales.
rescale -- s'il est différent de zéro, la table n'est pas normalisée.
la table est remplie par la fonction x*POWER(x/equalpoint, FL(33.0)/FL(78.0)) pour x compris entre les points start et end. C'est la courbe d'intensité en sone.
Voici un exemple simple de la routine GENsone. Il utilise le fichier gensone.csd.
Exemple 1317. Un exemple simple de la routine GENsone.
<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 gensone.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> sr = 44100 ksmps = 32 nchnls = 2 0dbfs = 1 instr 1 ; simple oscillator with loudness correction. kcps = cpspch(p4) kenv linseg 0, p3*0.25, 1, p3*0.75, 0 ;amplitude envelope kamp tablei 16384 *kenv, 2 asig oscil kamp, kcps, 1 outs asig, asig endin instr 2 ;neutral oscillator to compare with kcps = cpspch(p4) kenv linseg 0, p3*0.25, 1, p3*0.75, 0 ;amplitude envelope asig oscil kenv, kcps, 1 outs asig, asig endin </CsInstruments> <CsScore> f 1 0 16384 10 1 ;sine wave f 2 0 16385 "sone" 0 32000 32000 0 s f 0 1 ;1 second of silence before we start... s i 1 0 2 7.00 i 1 + . 7.01 i 1 + . 8.02 i 1 + . 8.03 s i 2 0 2 7.00 i 2 + . 7.01 i 2 + . 8.02 i 2 + . 8.03 e </CsScore> </CsoundSynthesizer>
Voici le diagramme de la forme d'onde de la routine GENsone
utilisée dans l'exemple :