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

## ATSadd

ATSadd — Utilise les données d'un fichier d'analyse ATS pour réaliser une synthèse additive.

## Description

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.

## Syntaxe

    ar ATSadd ktimepnt, kfmod, iatsfile, ifn, ipartials[, ipartialoffset, \
          ipartialincr, igatefn]

## Initialisation

iatsfile – le numéro ATS (n dans ats.n) ou le nom entre guillemets du fichier d'analyse créé avec ATS.

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.

## Exécution

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.

## Exemples

      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.

## Exemples

Voici un exemple complet de l'opcode ATSadd. Il utilise le fichier ATSadd.csd.

Exemple 60. 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

    instr 1	; "beats.ats" is created by atsa

    ktime	line	0, p3, 2
    asig	ATSadd	ktime, 1,  "beats.ats", 1, 20, 0, 2
    	outs	asig*3, asig*3	;amplify

    endin

    </CsInstruments>
    <CsScore>
    ;sine wave.
    f 1 0 16384 10 1

    i 1 0 2
    e

    </CsScore>
    </CsoundSynthesizer>

Dans l'exemple ci-dessus nous synthétisons 20 partiels comme dans l'exemple 1 sauf que cette fois-ci nous fixons ipartialoffset à 0 et ipartialincr à 2, ce qui veut dire que nous commençons avec le premier partiel et que nous synthétisons au total 20 partiels, ignorant tous les partiels impairs (1, 3, 5, ...).

Voici un autre exemple de l'opcode ATSadd. Il utilise le fichier ATSadd-2.csd.

Exemple 61. Exemple 2 de l'opcode ATSadd.

    <CsoundSynthesizer>
    <CsOptions>
    -odac -d -m1
    </CsOptions>
    <CsInstruments>
    ;example by joachim heintz
    sr = 44100
    ksmps = 32
    nchnls = 2
    0dbfs = 1

    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>

## Voir aussi

ATSread, ATSreadnz, ATSinfo, ATSbufread, ATScross, ATSinterpread, ATSpartialtap, ATSaddnz, ATSsinnoi

## Crédits

Auteur : Alex Norman
Seattle,Washington
2004

Précédent | Niveau supérieur | Suivant
atonex | Sommaire | ATSaddnz