phasorbnk

phasorbnk — Produit un nombre arbitraire de valeurs de phase mobiles normalisées.

Description

Produit un nombre arbitraire de valeurs de phase mobiles normalisées, accessibles par un indice.

Syntaxe

ares phasorbnk xcps, kndx, icnt [, iphs]
kres phasorbnk kcps, kndx, icnt [, iphs]

Initialisation

icnt -- nombre maximum de phaseurs à utiliser.

iphs -- phase initiale, exprimée comme une fraction d'une période (0 à 1). Si elle vaut -1, l'initialisation sera ignorée. Si iphas>1 chaque phaseur sera initialisé avec une valeur aléatoire.

Exécution

kndx -- valeur d'indice pour accéder aux phaseurs individuellement

Pour chaque phaseur indépendant, une phase interne est augmentée successivement selon la fréquence de kcps ou de xcps pour produire une valeur de phase mobile, normalisée pour se trouver dans l'intervalle 0 <= phs < 1. On accède à chaque phaseur individuel par l'indice kndx.

On peut utiliser cette banque de phaseurs dans une boucle de taux-k pour générer plusieurs voix indépendantes, ou en conjonction avec l'opcode adsynt pour changer les paramètres dans les tables utilisées par adsynt.

Exemples

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

Exemple 605. Exemple de l'opcode phasorbnk.

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>
; Select audio/midi flags here according to platform
; Audio out   Audio in    No messages
-odac           -iadc     -d     ;;;RT audio I/O
; For Non-realtime ouput leave only the line below:
; -o phasorbnk.wav -W ;;; for file output any platform
</CsOptions>
<CsInstruments>

; Initialize the global variables.
sr = 44100
kr = 4410
ksmps = 10
nchnls = 1

; Generate a sinewave table.
giwave ftgen 1, 0, 1024, 10, 1 

; Instrument #1
instr 1
  ; Generate 10 voices.
  icnt = 10 
  ; Empty the output buffer.
  asum = 0 
  ; Reset the loop index.
  kindex = 0 

; This loop is executed every k-cycle.
loop: 
  ; Generate non-harmonic partials.
  kcps = (kindex+1)*100+30 
  ; Get the phase for each voice.
  aphas phasorbnk kcps, kindex, icnt 
  ; Read the wave from the table.
  asig table aphas, giwave, 1 
  ; Accumulate the audio output.
  asum = asum + asig 

  ; Increment the index.
  kindex = kindex + 1

  ; Perform the loop until the index (kindex) reaches 
  ; the counter value (icnt).
  if (kindex < icnt) kgoto loop 

  out asum*3000
endin


</CsInstruments>
<CsScore>

; Play Instrument #1 for two seconds.
i 1 0 2
e


</CsScore>
</CsoundSynthesizer>


Génère plusieurs voix avec des partiels indépendants. Cet exemple est meilleur avec adsynt. Voir aussi l'exemple de la notice adsynt pour une utilisation de phasorbnk au taux-k.

Crédits

Auteur : Peter Neubäcker
Munich, Allemagne
Août 1999

Nouveau dans la version 3.58 de Csound