crossfm — Deux oscillateurs se modulant mutuellement en fréquence et/ou en phase.
a1, a2 crossfm xfrq1, xfrq2, xndx1, xndx2, kcps, ifn1, ifn2 [, iphs1] [, iphs2]
a1, a2 crossfmi xfrq1, xfrq2, xndx1, xndx2, kcps, ifn1, ifn2 [, iphs1] [, iphs2]
a1, a2 crosspm xfrq1, xfrq2, xndx1, xndx2, kcps, ifn1, ifn2 [, iphs1] [, iphs2]
a1, a2 crosspmi xfrq1, xfrq2, xndx1, xndx2, kcps, ifn1, ifn2 [, iphs1] [, iphs2]
a1, a2 crossfmpm xfrq1, xfrq2, xndx1, xndx2, kcps, ifn1, ifn2 [, iphs1] [, iphs2]
a1, a2 crossfmpmi xfrq1, xfrq2, xndx1, xndx2, kcps, ifn1, ifn2 [, iphs1] [, iphs2]
ifn1 -- numéro de la table de fonction pour l'oscillateur 1. Nécessite un point de garde.
ifn2 -- numéro de la table de fonction pour l'oscillateur 2. Nécessite un point de garde.
iphs1 (facultatif, 0 par défaut=0) -- phase initiale de la forme d'onde de la table ifn1, exprimée comme une fraction d'une période (0 à 1). Avec une valeur négative, l'initialisation sera ignorée.
iphs2 (facultatif, 0 par défaut=0) -- phase initiale de la forme d'onde de la table ifn2, exprimée comme une fraction d'une période (0 à 1). Avec une valeur négative, l'initialisation sera ignorée.
xfrq1 -- un facteur qui, lorsqu'il est multiplié par le paramètre kcps done la fréquence de l'oscillateur 1.
xfrq2 -- un facteur qui, lorsqu'il est multiplié par le paramètre kcps done la fréquence de l'oscillateur 2.
xndx1 -- l'indice de modulation de l'oscillateur 2 par l'oscillateur 1.
xndx2 -- l'indice de modulation de l'oscillateur 1 par l'oscillateur 2.
kcps -- un dénominateur commun, en cycles par seconde, pour les fréquences des deux oscillateurs.
crossfm implémente un algorithme de modulation de fréquence croisée. La sortie de taux audio de l'oscillateur 1 module l'entrée en fréquence de l'oscillateur 2 tandis que la sortie audio de l'oscillateur 2 module l'entrée en fréquence de l'oscillateur 1. Cette double structure de rétroaction produit des sonorités riches avec parfois un comportement chaotique. crossfmi fonctionne comme crossfm mais en utilisant l'interpolation linéaire pour la lecture des tables.
crosspm et crosspmi implémentent la modulation de phase croisée entre deux oscillateurs.
crossfmpm et crossfmpmi implémentent une modulation de fréquence/phase croisée entre deux oscillateurs. L'oscillateur 1 est modulé en fréquence par l'oscillateur 2 tandis que l'oscillateur 2 est modulé en phase par l'oscillateur 1.
Avertissement | |
---|---|
Ces opcodes peuvent produire des spectres très riches, particulièrement avec des indices de modulation importants et, dans certains cas des fréquences de repliement peuvent apparaître si le taux d'échantillonnage n'est pas suffisamment élevé. De plus, la sortie audio peut varier en fonction du taux d'échantillonnage à cause de la non-linéarité de l'algorithme. Dans Csound, deux autres opcodes présentent cette caractéristique : planet et chuap. |
Voici un exemple de l'opcode crossfm. Il utilise le fichier crossfm.csd.
Exemple 190. Exemple de l'opcode crossfm.
<CsoundSynthesizer> <CsOptions> -d -o dac </CsOptions> <CsInstruments> sr = 48000 ksmps = 10 nchnls = 2 0dbfs = 1 instr 1 idur = p3 iamp = p4 ifrq1 = p5 ifrq2 = p6 indx1 = p7 indx2 = p8 kenv linen iamp, 0.05, idur, 0.2 a1, a2 crossfm ifrq1, ifrq2, indx1, indx2, 1, 1, 1 outs a1*kenv, a2*kenv endin instr 2 kx init 0.0 kdx init 0.1 kdur init p4 kamp init p5 kndx init 0 kmax init p6 kfq1 init 440.0 kfq2 init 557.0 knx1 init 3.5 knx2 init 4.8 event "i", 1, kx, kdur, kamp, kfq1, kfq2, knx1, knx2 kx = kx + kdx knx1 = knx1 - 0.025 knx2 = knx2 - 0.075 kndx = kndx + 1 if (kndx <= kmax) kgoto nextone turnoff nextone: endin </CsInstruments> <CsScore> f 1 0 16384 10 1 0 i 2 0 2 0.67 0.16 150 i 1 15.1 1.5 0.1 440 557 -0.25 -6.45 0.05 1.2 e </CsScore> </CsoundSynthesizer>