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

## unwrap

unwrap — Applique une opération de dépliement à un tableau de valeurs de phase.

## Description

Applique une opération de dépliement à un vecteur de phases stockées dans un tableau. La sortie est un tableau avec les phases dans l'intervalle [-pi, pi).

## Syntaxe

    kout[] unwrap kin[]

## Exécution

kout[] -- tableau de sortie contenant les phases dépliées. Crée s'il n'existe pas.

kin[] -- tableau en entrée contenant le vecteur d'entrée.

## Exemples

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

Exemple 1124. Exemple de l'opcode unwrap.

Voir les sections Audio en temps réel et Options de la ligne de commande pour plus d'information sur l'utilisation des options de la ligne de commande.

    <CsoundSynthesizer>
    <CsOptions>
    </CsOptions>
    <CsInstruments>
    ksmps = 64

    ifn1 ftgen 1, 0, 512, 7, 0, 512, 0
    ifn2 ftgen 2, 0, 512, 7, 0, 512, 0

    opcode PVA,k[]k[]k,aii
     asig,isize,ihop xin
     iolaps init isize/ihop
     kcnt init 0
     krow init 1
     kIn[] init isize
     kOlph[] init isize/2 + 1
     ifac = (sr/(ihop*2*$M_PI));
     iscal = (2*$M_PI*ihop/isize);
     kfl = 0
     kIn shiftin asig
     if kcnt == ihop then
       kWin[] window kIn,krow*ihop
       kSpec[] rfft kWin
       kMags[] mags kSpec
       kPha[] phs kSpec
       kDelta[] = kPha - kOlph
       kOlph = kPha
       kk = 0
       kDelta unwrap kDelta
       while kk < isize/2 do
        kPha[kk] = (kDelta[kk] + kk*iscal)*ifac
        kk += 1
       od
       krow = (krow+1)%iolaps
       kcnt = 0
       kfl = 1
     endif
     xout kMags,kPha,kfl
     kcnt += ksmps
    endop

    opcode PVS,a,k[]k[]kii
     kMags[],kFr[],kfl,isize,ihop xin
     iolaps init isize/ihop
     ifac = ihop*2*$M_PI/sr;
     iscal = sr/isize
     krow init 0
     kOla[] init isize
     kOut[][] init iolaps,isize
     kPhs[] init isize/2+1
     if kfl == 1 then
      kk = 0
      while kk < isize/2 do
        kFr[kk] = (kFr[kk] - kk*iscal)*ifac
        kk += 1
      od
      kPhs = kFr + kPhs
      kSpec[] pol2rect kMags,kPhs
      kRow[] rifft kSpec
      kWin[] window kRow, krow*ihop
      kOut setrow kWin, krow
      kOla = 0
      kk = 0
      until kk == iolaps do
       kRow getrow kOut, kk
       kOla = kOla + kRow
       kk += 1
      od
      krow = (krow+1)%iolaps
     endif
     xout shiftout(kOla)/iolaps
    endop

    instr 1
    isi = 1024
    ihop = 128

    a1 diskin2 "fox.wav",1,0,1 ; audio input
    kMags[],kPhs[],kflg PVA a1,isi,ihop
    a2 PVS kMags,kPhs,kflg,isi,ihop
       out a2

    endin

    </CsInstruments>
    <CsScore>
    i1 0 10
    </CsScore>
    </CsoundSynthesizer>

## Voir aussi

Opcodes vectoriels, Opcodes de tableaux.

## Crédits

Auteur : Victor Lazzarini
NUI Maynooth
2014

Nouveau dans la version 6.04

Précédent | Niveau supérieur | Suivant
until | Sommaire | upsamp