ATSsinnoi

ATSsinnoi — Utilise les données d'un fichier d'analyse ATS pour réaliser une resynthèse.

Description

ATSsinnoi lit les données d'un fichier ATS et utilise cette information pour synthétiser à la fois des sinusoïdes et du bruit.

Syntaxe

ar ATSsinnoi ktimepnt, ksinlev, knzlev, kfmod, iatsfile, ipartials \
          [, ipartialoffset, ipartialincr]

Initialisation

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).

Exécution

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.

Exemples

  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 73. 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.

Voir aussi

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 74. 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>


Crédits

Auteur : Alex Norman
Seattle,Washington
2004