GEN13 — Mémorise un polynôme dont les coefficients sont dérivés des polynômes de Tchebychev de première espèce.
Utilise les coefficients de Tchebychev pour générer des fonctions polynomiales stockées qui, dans le waveshaping, peuvent être utilisées pour séparer une sinus en harmoniques selon un spectre prédéfini.
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é. GEN13 et GEN14 appellent GEN03 pour évaluer leurs fonctions ; la valeur en p5 est ainsi é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, etc. -- 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.
Note | |
---|---|
GEN13 est le générateur de fonction normalement employé dans le waveshaping standard. Il stocke un polynôme dont les coefficients dérivent des polynômes de Tchebychev de première espèce, de sorte qu'une sinus d'amplitude xamp pilotant le dispositif produise le spectre spécifié en sortie. Noter que l'évolution de ce spectre ne varie généralement pas linéairement en fonction de xamp. Cependant, il est à bande limitée (les seuls harmoniques qui apparaissent seront ceux qui auront été spécifiés au moment de la génération) ; et les harmoniques auront tendance à apparaître et à se développer en ordre ascendant (les harmoniques inférieurs dominant pour de faibles xamp, et la richesse spectrale augmentant pour des valeurs plus grandes de xamp). Une valeur hn négative implique une opposition de phase de cet harmonique ; le spectre d'amplitude complet demandé ne sera pas affecté par ce déphasage, bien que l'évolution de plusieurs de ses harmoniques puisse l'être. Le schéma +, +, -, -, +, +, ... pour h0, h1, h2, ... minimisera le problème de la normalisation pour de faibles valeurs de xamp (voir ci-dessus), mais ne fournira pas nécessairement le schéma d'évolution le plus lisse. |
Voici un exemple de la routine GEN13. Il utilise le fichier gen13.csd.
Exemple 1287. Exemple de la routine GEN13.
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 gen13.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> sr = 44100 ksmps = 32 nchnls = 2 0dbfs = 1 ;example by Russell Pinkston - Univ. of Texas (but slightly modified) gisine ftgen 0, 0, 16384, 10, 1 ;sine wave instr 1 ihertz = cpspch(p4) ipkamp = p5 iwsfn = p6 ;waveshaping function inmfn = p7 ;normalization function agate linen 1, .01, p3, .1 ;overall amp envelope kctrl linen .99, 2, p3, 2 ;waveshaping index control aindex poscil kctrl/2, ihertz, gisine ;sine wave to be distorted asignal tablei .5+aindex, iwsfn, 1 ;waveshaping knormal tablei kctrl, inmfn, 1 ;amplitude normalization asig = asignal*knormal*ipkamp*agate outs asig, asig endin </CsInstruments> <CsScore> ; This proves the statement in Dodge (p. 147) that Chebyshev polynomials ; of order K have "only the kth harmonic." This is only true when the ; waveshaping index is at the maximum - i.e., when the entire transfer ; function is being accessed. RP. ;-------------------------------------------------------------------------------------------------------------------------------------------- ; quasi sawtooth transfer function: ; h0 h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 h20 f1 0 513 13 1 1 0 100 -50 -33 25 20 -16.7 -14.2 12.5 11.1 -10 -9.09 8.333 7.69 -7.14 -6.67 6.25 5.88 -5.55 -5.26 5 f2 0 257 4 1 1 ; normalizing function with midpoint bipolar offset ; st dur pch amp wsfn nmfn i1 0 4 6.00 .7 1 2 i1 4 . 7.00 . i1 8 . 8.00 . ;-------------------------------------------------------------------------------------------------------------------------------------------- ; quasi square wave transfer function: ; h0 h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 f3 0 513 13 1 1 0 100 0 -33 0 20 0 -14.2 0 11.1 0 -9.09 0 7.69 0 -6.67 0 5.88 0 -5.26 f4 0 257 4 3 1 ; normalizing function with midpoint bipolar offset ; st dur pch amp wsfn nmfn i1 16 4 6.00 .7 3 4 i1 20 . 7.00 . i1 24 . 8.00 . ;-------------------------------------------------------------------------------------------------------------------------------------------- ; quasi triangle wave transfer function: ; h0 h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 f5 0 513 13 1 1 0 100 0 -11.11 0 4 0 -2.04 0 1.23 0 -.826 0 .59 0 -.444 0 .346 0 -.277 f6 0 257 4 5 1 ; normalizing function with midpoint bipolar offset ; st dur pch amp wsfn nmfn i1 32 4 6.00 .7 5 6 i1 36 . 7.00 . i1 40 . 8.00 . ;-------------------------------------------------------------------------------------------------------------------------------------------- ; transfer function1: h0 h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 f7 0 513 13 1 1 0 1 -.8 0 .6 0 0 0 .4 0 0 0 0 .1 -.2 -.3 .5 f8 0 257 4 7 1 ; normalizing function with midpoint bipolar offset ; st dur pch amp wsfn nmfn i1 48 4 5.00 .7 7 8 i1 52 . 6.00 . i1 56 . 7.00 . ;-------------------------------------------------------------------------------------------------------------------------------------------- ;=========================================================================; ; This demonstrates the use of high partials, sometimes without a ; ; fundamental, to get quasi-inharmonic spectra from waveshaping. ; ;=========================================================================; ; transfer function2: h0 h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 f9 0 513 13 1 1 0 0 0 -.1 0 .3 0 -.5 0 .7 0 -.9 0 1 0 -1 0 f10 0 257 4 9 1 ; normalizing function with midpoint bipolar offset ; st dur pch amp wsfn nmfn i1 64 4 5.00 .7 9 10 i1 68 . 6.00 . i1 72 . 7.00 . ;-------------------------------------------------------------------------------------------------------------------------------------------- ; transfer function3: h0 h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 h17 h18 h19 h20 f11 0 513 13 1 1 0 0 0 0 0 0 0 -1 0 1 0 0 -.1 0 .1 0 -.2 .3 0 -.7 0 .2 0 -.1 f12 0 257 4 11 1 ; normalizing function with midpoint bipolar offset ; st dur pch amp wsfn nmfn i1 80 4 5.00 .7 11 12 i1 84 . 5.06 . i1 88 . 6.00 . ;-------------------------------------------------------------------------------------------------------------------------------------------- ;=========================================================================; ; split a sinusoid into 3 odd-harmonic partials of relative strength 5:3:1 ;=========================================================================; ;-------------------------------------------------------------------------------------------------------------------------------------------- ; transfer function4: h0 h1 h2 h3 h4 h5 f13 0 513 13 1 1 0 5 0 3 0 1 f14 0 257 4 13 1 ; normalizing function with midpoint bipolar offset ; st dur pch amp wsfn nmfn i1 96 4 5.00 .7 13 14 i1 100 . 5.06 . i1 104 . 6.00 . e </CsScore> </CsoundSynthesizer>
Voici les diagrammes des formes d'onde des routines GEN13
utilisées dans l'exemple :
Information au sujet des polynômes de Tchebychev sur Wikipedia : http://fr.wikipedia.org/wiki/Polynôme_de_Tchebychev