GEN32 — Mélange n'importe quelle forme d'onde, rééchantillonnée soit par TFR soit par interpolation linéaire.
Cette routine est semblable à GEN31, mais elle permet la spécification d'une table source pour chaque partiel. Les tables peuvent être rééchantilonnées soit par TFR soit par interpolation linéaire.
srca, srcb -- numéro de table source. Une valeur négative peut être utilisée pour lire une table avec interpolation linéaire (par défaut, la forme d'onde source est transposée et déphasée par TFR) ; c'est moins précis, mais plus rapide, et cela permet des numéros de partiels non entiers et négatifs.
pna, pnb, ... -- numéro de partiel, doit être un entier positif si le numéro de la table source est positif (c'est-à-dire rééchantillonage par TFR).
ampa, ampb, ... -- échelle d'amplitude
phsa, phsb, ... -- phase initiale (0 à 1)
itmp ftgen 1, 0, 16384, 7, 1, 16384, -1 ; dent de scie itmp ftgen 2, 0, 8192, 10, 1 ; sinus ; mélange les tables itmp ftgen 5, 0, 4096, -32, -2, 1.5, 1.0, 0.25, 1, 2, 0.5, 0, \ 1, 3, -0.25, 0.5 ; fenêtre itmp ftgen 6, 0, 16384, 20, 3, 1 ; génère des formes d'onde à bande limitée inote = 0 loop0: icps = 440 * exp(log(2) * (inote - 69) / 12) ; une table pour inumh = sr / (2 * icps) ; chaque numéro de note MIDI ift = int(inote + 256.5) itmp ftgen ift, 0, 4096, -30, 5, 1, inumh inote = inote + 1 if (inote < 127.5) igoto loop0 instr 1 kcps expon 20, p3, 16000 kft = int(256.5 + 69 + 12 * log(kcps / 440) / log(2)) kft = (kft > 383 ? 383 : kft) a1 phasor kcps a1 tableikt a1, kft, 1, 0, 1 out a1 * 10000 endin instr 2 kcps expon 20, p3, 16000 kft = int(256.5 + 69 + 12 * log(kcps / 440) / log(2)) kft = (kft > 383 ? 383 : kft) kgdur limit 10 / kcps, 0.1, 1 a1 grain2 kcps, 0.02, kgdur, 30, kft, 6, -0.5 out a1 * 2000 endin -------------- partition : -------------- t 0 60 i 1 0 10 i 2 12 10 e