GEN12

GEN12 — Génère le logarithme d'une fonction de Bessel de seconde espèce modifiée.

Description

Génère le logarithme d'une fonction de Bessel de seconde espèce modifiée, d'ordre 0, adaptée pour la MF modulée en amplitude.

Syntaxe

f # date taille 12 intx

Initialisation

taille -- nombre de points dans la table. Doit être une puissance de 2 ou une puissance-de-2 plus 1 (voir l'instruction f).

intx -- spécifie l'intervalle des x [0 à +intx] sur lequel la fonction est définie.

[Note] Note

  • Ce sous-programme calcule le logarithme naturel d'une fonction de Bessel de seconde espèce modifiée, d'ordre 0 (habituellement écrite comme I0), sur l'intervalle des x demandé. Cet appel devrait désactiver la normalisation.

  • Cette fonction est utile comme facteur d'échelle d'amplitude dans la MF à période synchrone modulée en amplitude. (Voir Palamin & Palamin, J. Audio Eng. Soc., 36/9, Sept. 1988, pp.671-684.) L'algorithme est intéressant car il permet de rendre le spectre de MF, habituellement symétrique, assymétrique autour d'une fréquence autre que la porteuse, et il est ainsi utile pour placer des formants. En utilisant un index de lecture dans la table de I(r - 1/r), où I est l'index de modulation et r est un paramètre exponentiel affectant l'importance des partiels, l'algorithme Palamin se montre relativement efficace, ne demandant que des oscil, des lecture de table, et un appel d'exp.

Exemples

Voici un exemple de la routine GEN12. Il utilise le fichier gen12.csd.

Exemple 1140. Un exemple de la routine GEN12.

Voir les sections Audio en Temps Réel et Options de 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 gen12.wav -W ;;; for file output any platform
</CsOptions>
<CsInstruments>
;example from the Csound Book, page 87
sr = 44100
ksmps = 32
nchnls = 2
0dbfs  = 1

instr 1

idur    =       p3
iamp    =       p4
icarfrq =       p5
imodfrq =       p6          
aenv    expseg  .01, idur*.1, iamp, idur*.8, iamp*.75, idur*.1, .01
i1      =       p7*imodfrq			;p7=modulation index start
i2      =       p8*imodfrq			;p8=modulation index end
adev    line    i1, idur, i2			;modulation frequency
aindex  line    p7, idur, p8			;modulation index

ar      linseg  1, .1, p9, p3-.2, p10, .1, 1	; r value envelope: p9-p10 =exp. partial strength parameter start and end
amp1    =       (aindex*(ar+(1/ar)))/2
afmod   oscili  amp1, imodfrq, 1		;FM modulator (sine)
atab    =       (aindex*(ar-(1/ar)))/2		;index to table
alook   tablei  atab, 37			;table lookup to GEN12
aamod   oscili  atab, adev, 2			;am modulator (cosine)
aamod   =       (exp(alook+aamod))*aenv
acar    oscili  aamod, afmod+icarfrq, 1		;AFM (carrier)
asig    balance acar, aenv
        outs    asig, asig
        
endin       

</CsInstruments>
<CsScore>
f 1     0   8192    10  1               
f 2     0   8192    9   1 1 90          
f37 0   1024    -12 40		;Bessel function-defined from 0 to 40

i 1  0  2  .2  800  800    1    6   .1   2
i 1  +  .  .   1900 147    8    1    4   .2
i 1  .  .  .   1100 380    2    9   .5   2
i 1  .  10 .   100  100    11   3   .2   5
s
i 1  0  1 .1   200 100     1    6   .1   2
i 1  +  .  <   <    <      <    <   <    <
i 1  +  .  .   <    <      <    <   <    <
i 1  +  .  .   <    <      <    <   <    <
i 1  +  .  .   <    <      <    <   <    <
i 1  +  .  .   <    <      <    <   <    <
i 1  +  .  .   <    <      <    <   <    <
i 1  +  10 .2  800  800    9    1   .9   6
s
i 1  0  11 .25 50   51     1    6   .1   2
i 1  1  9  .05 700  401    1    6   .1   2
i 1  2  8  .   900  147    8    1    4   .2
i 1  3  7  .   1100 381    2    9   .5   2
i 1  4  6  .   200  102    11   3   .2   5
i 1  5  6  .   800  803    9    1   .9   6
e
</CsScore>
</CsoundSynthesizer>


Voici le diagramme de la forme d'onde de la routine GEN12 utilisée dans l'exemple :

f 37 0 1024 -12 40 - fonction de Bessel définie de 0 à 40

f 37 0 1024 -12 40 - fonction de Bessel définie de 0 à 40

Crédits

L'exemple provient du Csound Book (p. 87) avec de légères modifications.