GEN15 — Crée deux tables de fonctions polynomiales mémorisées.
Ce sous-programme crée deux tables de fonctions polynomiales mémorisées, appropriées pour une utilisation en quadrature de phase.
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.
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. |
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) :