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 ATSA.
ipartials – nombre de partiels qui seront utilisés dans la resynthèse (le bruit a un maximum de 25 bandes).
ipartialoffset (facultatif) – le premier partiel utilisé (0 par défaut).
ipartialincr (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. 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 exemple complet de l'opcode ATSsinnoi. Il utilise le fichier ATSsinnoi.csd.
Exemple 82. 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> ; by Menno Knevel - 2021 sr = 44100 ksmps = 32 nchnls = 2 0dbfs = 1 ires1 system_i 1,{{ atsa -h.5 -c1 beats.wav beats1.ats }} ires2 system_i 1,{{ atsa beats.wav beats2.ats }} ; default settings -h.25 -c4 instr 1 ktime line 0, p3, 2 aout ATSsinnoi ktime, 1, 1, 1, p4, p5 outs aout*.4, aout*.4 endin </CsInstruments> <CsScore> s ; atsfile partial i 1 0 2 "beats1.ats" 3 i 1 3 2 "beats2.ats" 3 s i 1 0 2 "beats1.ats" 13 i 1 3 2 "beats2.ats" 13 s i 1 0 2 "beats1.ats" 30 i 1 3 2 "beats2.ats" 30 e </CsScore> </CsoundSynthesizer>
Voici un autre exemple de l'opcode ATSsinnoi. Il utilise le fichier ATSsinnoi-2.csd.
Exemple 83. Exemple 2 de l'opcode ATSsinnoi.
<CsoundSynthesizer> <CsOptions> -odac -d -m128 </CsOptions> <CsInstruments> ;example by joachim heintz (& Menno Knevel) sr = 44100 ksmps = 32 nchnls = 2 0dbfs = 1 ires system_i 1,{{ atsa fox.wav fox.ats }} ; default settings 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, .3, 1, gSfile, 10, iOffset, 1 ; a bit less noise (.3) outs aOut*2, aOut ; left channel a bit louder ;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*.6, aOut ; pan a bit to the right ;exit if file is at the end if kEnd == 1 then event "e", 0, 0 endif endin </CsInstruments> <CsScore> i "PlayList" 0 1 i "PlayBand" 20 1 0 .5 i "PlayWeighted" 110 100 </CsScore> </CsoundSynthesizer>
ATSread, ATSreadnz, ATSinfo, ATSbufread, ATScross, ATSinterpread, ATSpartialtap, ATSadd, ATSaddnz