ATSadd — Utilise les données d'un fichier d'analyse ATS pour réaliser une synthèse additive.
ATSadd lit depuis un fichier d'analyse ATS et utilise les données pour réaliser une synthèse additive à partir d'une batterie interne d'oscillateurs avec interpolation.
ar ATSadd ktimepnt, kfmod, iatsfile, ifn, ipartials[, ipartialoffset, \
ipartialincr, igatefn]
iatsfile – le numéro ATS (n dans ats.n) ou le nom entre guillemets du fichier d'analyse créé avec ATSA.
ifn – numéro de table d'une fonction stockée contenant une onde sinus pour ATSadd et une onde cosinus pour ATSaddnz (voir les exemples ci-dessous pour plus d'information).
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).
igatefn (facultatif) – numéro d'une fonction stockée qui sera appliquée aux amplitudes des bins de l'analyse avant la resynthèse. Si igatefn est supérieur à 0 les amplitudes de chaque bin seront pondérées par igatefn selon un simple procédé de mise en correspondance. D'abord les amplitudes de tous les bins de toutes les trames du fichier d'analyse sont comparées pour déterminer la valeur maximale de l'amplitude. Cette valeur est ensuite utilisée pour créer des amplitudes normalisées comme indices dans la fonction stockée igatefn. L'amplitude maximale correspondra au dernier point de la fonction. Une amplitude de 0 correspondra au premier point de la fonction. Les valeurs comprises entre 0 et 1 correspondront aux points à l'intérieur de la table de fonction. Voir les exemples ci-dessous.
ktimepnt – Le pointeur de temps en secondes utilisé comme indice sur le fichier ATS. Est utilisé pour ATSadd exactement de la même manière que pour pvoc.
ATSadd et ATSaddnz sont basés sur pvadd par Richard Karpen et ils utilisent des fichier créés par ATS de Juan Pampin (Analyse - Transformation - Synthèse).
kfmod – Un facteur de transposition du taux de contrôle : la valeur 1 implique pas de transposition, 1.5 transpose vers l'aigu d'une quinte juste et 0.5 vers le grave d'une octave. Est utilisé pour ATSadd exactement de la même manière que pour pvoc.
ATSadd lit depuis un fichier d'analyse ATS et utilise les données pour réaliser une synthèse additive à partir d'une batterie interne d'oscillateurs avec interpolation. L'utilisateur fournit la table d'onde (habituellement une période d'onde sinusoïdale) et il peut choisir quels partiels de l'analyse seront utilisés dans la resynthèse.
ktime line 0, p3, 2.5 asig ATSadd ktime, 1, "clarinet.ats", 1, 20, 2
Dans l'exemple ci-dessus, ipartials vaut 20 et ipartialoffset vaut 2. Les partiels du fichier d'analyse "clarinet.ats" allant du 3ème au 22ème seront synthétisés. kfmod vaut 1 et il n'y aura ainsi pas de modification de la hauteur. Comme l'enveloppe ktimepnt évolue de 0 à 2.5 pendant la durée de la note, le fichier d'analyse sera lu de 0 à 2.5 secondes de la durée originale de l'analyse pendant la durée de la note csound, ce qui permet de changer la durée indépendamment de la hauteur.
Voici un exemple complet de l'opcode ATSadd. Il utilise le fichier ATSadd.csd.
Exemple 70. Exemple de l'opcode ATSadd.
<CsoundSynthesizer> <CsOptions> ; Select audio/midi flags here according to platform -odac ;;;RT audio out ;-iadc ;;;uncomment -iadc for RT audio input is needed too ; For Non-realtime ouput leave only the line below: ; -o ATSadd.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> sr = 44100 ksmps = 32 nchnls = 2 0dbfs = 1 ; by Menno Knevel - 2021 ;ATSA wants a mono file! ires system_i 1,{{ atsa fox.wav fox.ats }} ; default settings instr 1 ; synthesize 30 partials, using a ipartialoffset of 0 and ipartialincr of 2, ; which means that we will start from the first partial and synthesize 30 partials in total, ; skipping every other one (ie. partial 1, 3, 5,..). ktime line 0, p3, 2.756 asig ATSadd ktime, 1, "fox.ats", 1, 30, 0, 2 outs asig*2.5, asig*2.5 ;amplify endin </CsInstruments> <CsScore> f 1 0 16384 10 1 0 .5 0 .3 0 .15 ;square wave i 1 0 2.756 e </CsScore> </CsoundSynthesizer>
Voici un autre exemple de l'opcode ATSadd. Il utilise le fichier ATSadd-2.csd.
Exemple 71. Exemple 2 de l'opcode ATSadd.
<CsoundSynthesizer> <CsOptions> -odac -d -m1 </CsOptions> <CsInstruments> ;example by joachim heintz (& Menno Knevel) sr = 44100 ksmps = 32 nchnls = 2 0dbfs = 1 ;ATSA wants a mono file! ires system_i 1,{{ atsa -h.1 -c2 fox.wav fox.ats }} ; only 2 cycles and small hop size giSine ftgen 0, 0, 1024, 10, 1 instr AllTheTones Sfile = "fox.ats" prints "Resynthesizing with all the tones.\n" iDur ATSinfo Sfile, 7 p3 = iDur iNumParts ATSinfo Sfile, 3 prints "Overall number of partials = %d\n", iNumParts ktime line 0, iDur, iDur asig ATSadd ktime, 1, Sfile, giSine, iNumParts outs asig, asig ;start next instr event_i "i", "TonesInBandsOfTen", iDur+1, iDur, 0, iNumParts endin instr TonesInBandsOfTen Sfile = "fox.ats" iOffset = p4 ;start at this partial iNumParts = p5 ;overall number of partials prints "Resynthesizing with partials %d - %d.\n", iOffset+1, iOffset+10 ktime line 0, p3, p3 asig ATSadd ktime, 1, Sfile, giSine, 10, iOffset outs asig, asig ;start next instance until there are enough partials left if iOffset+20 < iNumParts then event_i "i", "TonesInBandsOfTen", p3+1, p3, iOffset+10, iNumParts else event_i "i", "End", p3, 1 endif endin instr End exitnow endin </CsInstruments> <CsScore> i "AllTheTones" 0 1 e 999 </CsScore> </CsoundSynthesizer>
ATSread, ATSreadnz, ATSinfo, ATSbufread, ATScross, ATSinterpread, ATSpartialtap, ATSaddnz, ATSsinnoi