ATSsinnoi — Utilise les données d'un fichier d'analyse ATS pour réaliser une resynthèse.
ATSsinnoi lit les données d'un fichier ATS et utilise cette information pour synthétiser à la fois des sinusoïdes et du bruit.
ar ATSsinnoi ktimepnt, ksinlev, knzlev, kfmod, iatsfile, ipartials \
[, ipartialoffset, ipartialincr]
iatsfile – le numéro ATS (n dans ats.n) ou le nom entre guillemets du fichier d'analyse créé avec ATS.
ipartials – nombre de partiels qui seront utilisés dans la resynthèse (le bruit a un maximum de 25 bandes).
ipartialoffset (optional) – (facultatif) – le premier partiel utilisé (0 par défaut).
ipartialincr (optional) – (facultatif) – fixe le pas d'incrémentation que ces opcodes de synthèse utilisent pour compter les composants bins à partir de ipartialoffset dans la resynthèse (1 par défaut).
ktimepnt – Le pointeur de temps en secondes utilisé comme indice sur le fichier ATS. Est utilisé pour ATSsinnoi exactement de la même manière que pour pvoc.
ksinlev - contrôle le niveau des sinus dans le générateur unitaire ATSsinnoi. Une valeur de 1 donne des ondes sinus à plein volume.
knzlev - contrôle le niveau des composants du bruit dans le générateur unitaire ATSsinnoi. Une valeur de 1 donne du bruit à plein volume.
kfmod – une entrée pour faire une transpositon de hauteur ou une modulation de fréquence sur tous les partiels synthétisés ; si aucune modulation de fréquence ou aucun changement de hauteur ne sont désirés, il faut utiliser 1 pour cette valeur.
ATSsinnoi lit les données d'un fichier ATS et utilise cette information pour synthétiser à la fois des sinusoïdes et du bruit. L'énergie du bruit pour chaque bande est distribuée également entre les partiels qui tombent dans cette bande. Chaque partiel est ensuite synthétisé, avec sa composante de bruit. Chaque composante de bruit est ensuite modulée par le partiel correspondant pour être placée au bon endroit dans le spectre de fréquence. Les niveaux du bruit et des partiels sont contrôlables individuellement. Voir la page web ATS pour plus d'information sur la synthèse sinnoi. Une analyse ATS diffère d'une analyse pvanal du fait qu'ATS trace les partiels et calcule l'énergie du bruit dans le son étant analysé. Pour plus d'information sur l'analyse ATS, lire la description de Juan Pampin sur la page web ATS.
ktime line 0, p3, 2.5 asig ATSsinnoi ktime, 1, 1, 1, "beats.ats", 42
Nous synthétisons ici à la fois le bruit et les ondes sinus (les 42 partiels) contenus dans "beats.ats". Les volumes relatifs du bruit et des partiels sont inchangés (chacun est fixé à 1).
Voici un autre exemple de l'opcode ATSsinnoi. Il utilise le fichier ATSsinnoi.csd.
Exemple 74. Exemple de l'opcode ATSsinnoi.
<CsoundSynthesizer> <CsOptions> ; Select audio/midi flags here according to platform -odac ;;;RT audio out ;-iadc ;;;uncomment -iadc if RT audio input is needed too ; For Non-realtime ouput leave only the line below: ; -o ATSsinnoi.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> sr = 44100 ksmps = 32 nchnls = 2 0dbfs = 1 instr 1 ; "beats.ats" is created by atsa ktime line 0, p3, 2 knzfade expon 0.001, p3, 2 aout ATSsinnoi ktime, 1, knzfade, 1, "beats.ats", 150 outs aout*2, aout*2 ;amplify some more endin </CsInstruments> <CsScore> i 1 0 2 e </CsScore> </CsoundSynthesizer>
Cet exemple reprend le précédent mais en utilisant une enveloppe pour contrôler knzlev (le niveau de bruit). Cela donne le son de "beats.wav" dont la composante de bruit apparaît progressivement durant la durée de la note.
ATSread, ATSreadnz, ATSinfo, ATSbufread, ATScross, ATSinterpread, ATSpartialtap, ATSadd, ATSaddnz
Voici un autre exemple de l'opcode ATSsinnoi. Il utilise le fichier ATSsinnoi-2.csd.
Exemple 75. Exemple 2 de l'opcode ATSsinnoi.
<CsoundSynthesizer> <CsOptions> -odac -d -m128 </CsOptions> <CsInstruments> ;example by joachim heintz sr = 44100 ksmps = 32 nchnls = 2 0dbfs = 1 giSine ftgen 0, 0, 1024, 10, 1 gSfile = "fox.ats" giNumParts ATSinfo gSfile, 3 ;overall number of partials giDur ATSinfo gSfile, 7 ;duration seed 0 instr PlayList event_i "i", "PlayAll", 0, 1, 1, 0, .5 ;sine only, half speed event_i "i", "PlayAll", giDur*2+1, 1, 0, 1, .5 ;noise only event_i "i", "PlayAll", giDur*4+2, 1, .5, .5, .5 ;half sine, half noise endin instr PlayAll iSinAmnt = p4 ;sinee amount (0-1) iNzAmnt = p5 ;noise amount (0-1) iSpeed = p6 ;speed p3 = giDur/iSpeed ktime line 0, giDur/iSpeed, giDur prints "Resynthesizing all partials with tone = %.1f and noise = %.1f.\n", iSinAmnt, iNzAmnt aOut ATSsinnoi ktime, iSinAmnt, iNzAmnt, 1, gSfile, giNumParts outs aOut, aOut endin instr PlayBand iOffset = p4 ;offset in partials iSpeed = p5 ;speed p3 = giDur/iSpeed ktime line 0, giDur/iSpeed, giDur prints "Resynthesizing partials %d to %d with related noise.\n", iOffset+1, iOffset+10 aOut ATSsinnoi ktime, 1, 1, 1, gSfile, 10, iOffset, 1 outs aOut, aOut ;call itself again if iOffset < giNumParts - 20 then event_i "i", "PlayBand", giDur/iSpeed+1, 1, iOffset+10, iSpeed endif endin instr PlayWeighted ;sine amount, noise amount and speeed are varying kSinAmnt randomi 0, 1, 1, 3 kNzAmnt = 1-kSinAmnt kSpeed randomi .01, .3, 1, 3 async init 0 atime, aEnd syncphasor kSpeed/giDur, async kTrig metro 100 kEnd max_k aEnd, kTrig, 1 ;1 if phasor signal crosses zero ktime downsamp atime aOut ATSsinnoi ktime*giDur, kSinAmnt, kNzAmnt, 1, gSfile, giNumParts outs aOut, aOut ;exit if file is at the end if kEnd == 1 then event "i", "End", 0, 1 endif endin instr End exitnow endin </CsInstruments> <CsScore> i "PlayList" 0 1 i "PlayBand" 20 1 0 .5 i "PlayWeighted" 110 100 </CsScore> </CsoundSynthesizer>