GEN32

GEN32 — Mélange n'importe quelle forme d'onde, rééchantillonnée soit par TFR soit par interpolation linéaire.

Description

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.

Syntaxe

f # date taille  32  srca pna ampa phsa  srcb pnb ampb phsb  ...

Exécution

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)

Exemples

Voici un exemple de la routine GEN32. Il utilise le fichier gen32.csd.

Exemple 1303. Exemple de la routine GEN32.

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 gen32.wav -W ;;; for file output any platform
</CsOptions>
<CsInstruments>

sr = 44100
ksmps = 32
nchnls = 2
0dbfs  = 1

itmp    ftgen 1, 0, 16384, 7, 1, 16384, -1		; sawtooth
itmp    ftgen 2, 0, 8192, 10, 1				; sine
itmp    ftgen 5, 0, 4096, -32, -2, 1.5, 1.0, 0.25, 1, 2, 0.5, 0, 1, 3, -0.25, 0.5	; mix tables
itmp    ftgen 6, 0, 16384, 20, 3, 1			; window
; generate band-limited waveforms
inote   =  0
loop0:
icps    =  440 * exp(log(2) * (inote - 69) / 12)        ; one table for
inumh   =  sr / (2 * icps)                              ; each MIDI note number
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
        outs a1*.5, a1*.5
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
        outs a1*.08, a1*.08

endin
</CsInstruments>
<CsScore>
t 0 60

i 1 0 10
i 2 12 10
e
</CsScore>
</CsoundSynthesizer>


Crédits

Auteur : Rasmus Ekman

Programmeur : Istvan Varga

Nouveau dans la version 4.17