ATSsinnoi
Précédent | Opcodes et opérateurs de l'orchestre | Suivant

## 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

Précédent | Niveau supérieur | Suivant
ATSpartialtap | Sommaire | babo