grain — Génère des textures de synthèse granulaire.
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.
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.
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>