grain

grain — Génère des textures de synthèse granulaire.

Description

Génère des textures de synthèse granulaire.

Syntaxe

ares grain xamp, xpitch, xdens, kampoff, kpitchoff, kgdur, igfn, \
      iwfn, imgdur [, igrnd]

Initialisation

igfn -- numéro de la ftable de la forme d'onde du grain. Peut être une onde sinus ou un son échantillonné.

iwfn -- numéro de la ftable de l'enveloppe d'amplitude utilisée pour les grains (voir aussi GEN20).

imgdur -- durée maximum du grain en secondes. C'est la plus grande valeur que l'on peut affecter à kgdur.

igrnd (facultatif) -- s'il est non nul, le décalage aléatoire du grain est désactivé. Cela signifie que tous les grains commenceront à lire la table igfn depuis son début. S'il vaut zéro (par défaut), les grains commenceront leur lecture dans la table igfn à partir de positions aléatoires.

Exécution

xamp -- amplitude de chaque grain.

xpitch -- hauteur du grain. Pour utiliser la fréquence originale du son en entrée, on se sert de la formule :

   sndsr / ftlen(igfn)

où sndsr est le taux d'échantillonnage original du son igfn.

xdens -- densité des grains mesurée en grains par seconde. Si elle est constante la sortie sera une synthèse granulaire synchrone, très semblable à fof. Si xdens a une composante aléatoire (comme du bruit ajouté), alors le résultat ressemblera plus à une synthèse granulaire asynchrone.

kampoff -- déviation d'amplitude maximale par rapport à xamp. Cela signifie que l'amplitude maximale possible pour un grain est xamp + kampoff et l'amplitude minimale est xamp. Si kampoff est nul alors il n'y a pas d'amplitude aléatoire pour chaque grain.

kpitchoff -- déviation de hauteur maximale par rapport à xpitch en Hz. Semblable à kampoff.

kgdur -- durée du grain en secondes. Sa valeur maximale doit être déclarée dans imgdur. Si kgdur dépasse imgdur en un point, sa valeur sera tronquée à celle de imgdur.

Le générateur grain est principalement basé sur les travaux et les écrits de Barry Truax et de Curtis Roads.

Exemples

Cet exemple génère une texture avec des grains de plus en plus courts, une amplitude de plus en plus large et une dispersion de hauteur. Il utilise les fichiers grain.csd et beats.wav.

Exemple 427. Exemple de l'opcode grain.

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

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

instr 1 

insnd   = 10 
ibasfrq = 44100 / ftlen(insnd) ; Use original sample rate of insnd file 

kamp   expseg .001, p3/2, .1, p3/2, .01 ;a swell in amplitude
kpitch line ibasfrq, p3, ibasfrq * .8 
kdens  line 600, p3, 100 
kaoff  line 0, p3, .1
kpoff  line 0, p3, ibasfrq * .5 
kgdur  line .4, p3, .01
imaxgdur =  .5 

asigL  grain kamp, kpitch, kdens, kaoff, kpoff, kgdur, insnd, 5, imaxgdur, 0.0 
asigR  grain kamp, kpitch, kdens, kaoff, kpoff, kgdur, insnd, 5, imaxgdur, 0.0 
       outs asigL, asigR

endin 
</CsInstruments> 
<CsScore> 
f5  0 512  20 2 ; Hanning window 
f10 0 16384 1  "beats.wav" 0 0 0 

i1 0 15 
e 
</CsScore> 
</CsoundSynthesizer> 


Crédits

Auteur : Paris Smaragdis
MIT
Mai 1997