GEN15

GEN15 — Crée deux tables de fonctions polynomiales mémorisées.

Description

Ce sous-programme crée deux tables de fonctions polynomiales mémorisées, appropriées pour une utilisation en quadrature de phase.

Syntaxe

f # date taille 15 xint xamp h0 phs0 h1 phs1 h2 phs2 ...

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). La valeur normale est une puissance-de-2 plus 1.

xint -- fournit les valeurs gauches et droites [-xint, +xint] de l'intervalle des x sur lequel le polynôme doit être évalué. Ce sous-porgramme appellera éventuellement GEN03 pour évaluer les deux fonctions ; la valeur en p5 est alors étendue en une paire négative-positive p5, p6 avant l'appel de GEN03. La valeur normale est 1.

xamp -- facteur de pondération de l'amplitude de l'entrée sinusoïdale qui est attendue pour produire le spectre suivant.

h0, h1, h2, ..., hn -- importance relative des harmoniques 0 (CC), 1 (fondamental), 2 ... qui résulteront quand une sinus d'amplitude

xamp * int(taille/2)/xint

est traitée en waveshaping avec cette table de fonction. Ces valeurs décrivent ainsi un spectre de fréquences associé à un facteur particulier xamp du signal d'entrée.

phs0, phs1, ... -- phase en degrés des harmoniques désirés h0, h1, ... lorsque les deux fonctions de GEN15 sont utilisées en quadrature de phase.

[Note] Notes

GEN15 crée deux tables de même taille, étiquetées f # et f # + 1. La table # contiendra une fonction de Tchebychev de première espèce, évaluée par GEN13 avec des harmoniques d'amplitude h0cos(phs0), h1cos(phs1), .... Table # + 1 contiendra une fonction de Tchebychev de deuxième espèce, évaluée par GEN14 avec les harmoniques h1sin(phs1), h2sin(phs2),... (noter le déplacement harmonique). Les deux tables peuvent être utilisées en conjonction dans un réseau de waveshaping qui exploite la quadrature de phase.

Avant la version 5.16 il y avait un bogue (signalé par Menno Knevel et corrigé par François Pinot) sur le nombre de p-champs transmis à GEN13 et à GEN14 par GEN15. En conséquence, tous les fichiers csd, ou orc et sco qui utilisaient GEN15 avant la correction du bogue, donneront probablement un résultat différent maintenant.

Exemples

Voici un exemple de la routine GEN15. Il utilise le fichier gen15.csd.

Exemple 1289. Exemple de la routine GEN15.

<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 gen15.wav -W ;;; for file output any platform
</CsOptions>
<CsInstruments>
;example from the Csound Book, page 85
sr = 44100
ksmps = 32
nchnls = 2
0dbfs  = 1

instr 1

idur  = p3
iamp  = p4
ifrq  = cpspch(p5)        ;pitch
iswp1 = p6
iswp2 = p7
kswp  line   iswp1, p3, iswp2      ;amplitude sweep values
acosi oscili kswp*.5, ifrq, 2      ;f2=cosine wave
asine oscili kswp, ifrq, 1         ;f1=sine wave
atab1 tablei acosi, 33, 1, .5      ;tables a1 to GEN13
atab2 tablei acosi, 34, 1, .5      ;tables a1 to GEN14
knrm1 tablei kswp, 35, 1           ;normalizing f35
knrm2 tablei kswp, 36, 1           ;normalizing f36
anrm1 = atab1*knrm1                ;normalize GEN13 signal
anrm2 = atab2*knrm2*asine          ;normalize GEN14 signal
amix  = anrm1+anrm2                ;mix GEN13 and GEN14
kenv  expseg .001, idur*.1, iamp, idur*.1, iamp*.8, idur*.8, .001  
asig  = amix*kenv  
      outs   asig, asig

endin

</CsInstruments>
<CsScore>
f 1 0 8193 10  1        ;sine wave
f 2 0 8193  9  1 1 90   ;cosine wave

; Note that all the f33 tables in the following sections are defined with p4=-15,
; which means that tables 33 and 34 will not be normalized. Thus if we display
; tables when running this example, we'll get correct diagrams even if one table
; has very small values instead of 0 values, due to cpu approximations in processing
; sin(180), as in sections 2, 4, and 5. This has no consequence on the audio result,
; because of the use of amp normalization (tables 35 and 36).

f 33 0 8193 -15 1 1 1 0 1 180 .8 45 .6 270 .5 90 .4 225 .2 135 .1 315  ;makes function tables 33 and 34
f 35 0 4097  4  33 1    ;amp normalization for f33
f 36 0 4097  4  34 1    ;amp normalization for f34
i 1 0 5  .6  8.00 0   1
i 1 + .  .6  8.00 1   0
s
;even harmonics with no phase shift, odd harmonics with phase shift
f 33 0 8193 -15 1 1 1 0 1 0 1 180 1 180 1 0 1 0 1 180 1 180 1 0 1 0 1 180 1 180
f 35 0 4097  4  33 1    ;amp normalization for f33
f 36 0 4097  4  34 1    ;amp normalization for f34
i 1 0  5 .6  8.00 0   1
i 1 +  . .6  8.00 1   0
s
;different harmonic strenghts and phases
f 33 0 8193 -15 1 1 1 0 1 0 .9 180 .5 270 .75 90 .4 45 .2 225 .1 0
f 35 0 4097  4  33 1    ;amp normalization for f33
f 36 0 4097  4  34 1    ;amp normalization for f34
i 1 0 5 .6  8.00 0  1
i 1 + . .6  8.00 1  0
s
;lower harmonics no phase shift, upper harmonics with phase shift
f 33 0 8193 -15 1  1  1 0 1 0 .5 0 .9 0 .3 0 .75 0 .2 180 .6 180 .15 180 .5 180 .1 180  
f 35 0 4097  4  33 1    ;amp normalization for f33
f 36 0 4097  4  34 1    ;amp normalization for f34
i 1 0 5 .6  8.00 0   1
i 1 + . .6  8.00 1   0

s
;lower harmonics with phase shift, upper harmonics no phase shift
f 33 0 8193 -15 1 1 1 180 1 180 .5 180 .9 180 .3 180 .75 180 .2 0 .6 0 .15 0 .5 0 .1 0  
f 35 0 4097 4 33 1    ;amp normalization for f33
f 36 0 4097 4 34 1    ;amp normalization for f34
i 1 0 5 .6  8.00 0  1
i 1 + . .6  8.00 1  0
e
</CsScore>
</CsoundSynthesizer>


Voici les diagrammes des formes d'onde de la routine GEN15 utilisées dans l'exemple (dans chaque diagramme, la courbe en bleu représente la table 33 et la courbe en vert représente la table 34) :

f 33 0 8193 -15 1 1 1 0 1 180 .8 45 .6 270 .5 90 .4 225 .2 135 .1 315

f 33 0 8193 -15 1 1 1 0 1 180 .8 45 .6 270 .5 90 .4 225 .2 135 .1 315

f 33 0 8193 -15 1 1 1 0 1 0 1 180 1 180 1 0 1 0 1 180 1 180 1 0 1 0 1 180 1 180

f 33 0 8193 -15 1 1 1 0 1 0 1 180 1 180 1 0 1 0 1 180 1 180 1 0 1 0 1 180 1 180

f 33 0 8193 -15 1 1 1 0 1 0 .9 180 .5 270 .75 90 .4 45 .2 225 .1 0

f 33 0 8193 -15 1 1 1 0 1 0 .9 180 .5 270 .75 90 .4 45 .2 225 .1 0

f 33 0 8193 -15 1 1 1 0 1 0 .5 0 .9 0 .3 0 .75 0 .2 180 .6 180 .15 180 .5 180 .1 180

f 33 0 8193 -15 1 1 1 0 1 0 .5 0 .9 0 .3 0 .75 0 .2 180 .6 180 .15 180 .5 180 .1 180

f 33 0 8193 -15 1 1 1 180 1 180 .5 180 .9 180 .3 180 .75 180 .2 0 .6 0 .15 0 .5 0 .1 0

f 33 0 8193 -15 1 1 1 180 1 180 .5 180 .9 180 .3 180 .75 180 .2 0 .6 0 .15 0 .5 0 .1 0

Voir aussi

GEN13 et GEN14.