phaser1

phaser1 — Filtres passe-tout du premier ordre arrangés en série.

Description

Une implémentation de iord filtres passe-tout du premier ordre en série.

Syntaxe

ares phaser1 asig, kfreq, kord, kfeedback [, iskip]

Initialisation

iskip (facultatif, 0 par défaut) -- utilisé pour contrôler l'état initial de la mémoire interne. Comme le filtrage comprend une boucle rétroactive de la sortie précédente, l'état initial de la mémoire utilisée est significatif. Une valeur nulle efface l'état ; une valeur non-nulle permet de conserver l'information précédente. La valeur par défaut est 0.

Exécution

kfreq -- fréquence (en Hz) du(des) filtre(s). C'est la fréquence à laquelle chaque filtre de la série déphase sont entrée de 90 degrés.

kord -- le nombre d'étages passe-tout en série. Ce sont des filtres du premier ordre et il peut y en avoir de 1 à 4999.

[Note] Note

Bien que kord soit présenté au taux-k, il n'est en fait lu qu'à l'initialisation. Ainsi, si l'on utilise un argument de taux-k, il faut lui affecter une valeur avec init.

kfeedback -- quantité du signal de sortie qui est réinjectée dans l'entrée de la chaîne passe-tout. Plus la rétroaction est importante et plus il y aura d'encoches proéminentes dans le spectre de la sortie. kfeedback doit être compris entre -1 et +1 pour la stabilité.

phaser1 implémente iord sections passe-tout du premier ordre, connectées en série, partageant toutes le même coefficient. Chaque section passe-tout peut être représentée par l'équation aux différences suivante :


y(n) = C * x(n) + x(n-1) - C * y(n-1)

où x(n) est l'entrée, x(n-1) est l'entrée précédente, y(n) est la sortie, y(n-1) est la sortie précédente et C est un coefficient qui est calculé à partir de la valeur de kfreq en utilisant une transformée en z bilinéaire.

En faisant varier kfreq lentement et en mélangeant la sortie globale de la chaîne passe-tout à l'entrée, on obtient l'effet "phase shifter" classique, avec des encoches se déplaçant en fréquence dans les deux directions. On obtient les meilleurs résultats avec iord compris entre 4 et 16. Lorsque l'entrée est mélangée avec la sortie, 1 encoche est générée pour chaque couple d'étages passe-tout ; ainsi avec iord = 6, il y aura 3 encoches dans la sortie. Avec des valeurs plus importantes de iord, en modulant kfreq on obtiendra une forme de modulation non-linéaire de la hauteur.

Exemples

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

Exemple 602. Exemple de l'opcode phaser1.

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 phaser1.wav -W ;;; for file output any platform
</CsOptions>
<CsInstruments>

sr = 44100
kr = 4410
ksmps = 10
nchnls = 1

; demonstration of phase shifting abilities of phaser1.
instr 1
  ; Input mixed with output of phaser1 to generate notches.
  ; Shows the effects of different iorder values on the sound
  idur   = p3 
  iamp   = p4 * .05
  iorder = p5        ; number of 1st-order stages in phaser1 network.
                     ; Divide iorder by 2 to get the number of notches.
  ifreq  = p6        ; frequency of modulation of phaser1
  ifeed  = p7        ; amount of feedback for phaser1

  kamp   linseg 0, .2, iamp, idur - .2, iamp, .2, 0

  iharms = (sr*.4) / 100

  asig   gbuzz 1, 100, iharms, 1, .95, 2  ; "Sawtooth" waveform modulation oscillator for phaser1 ugen.
  kfreq  oscili 5500, ifreq, 1
  kmod   = kfreq + 5600

  aphs   phaser1 asig, kmod, iorder, ifeed

  out    (asig + aphs) * iamp
endin


</CsInstruments>
<CsScore>

; inverted half-sine, used for modulating phaser1 frequency
f1 0  16384 9 .5 -1 0
; cosine wave for gbuzz
f2 0  8192 9 1 1 .25

; phaser1
i1 0  5 7000 4  .2 .9
i1 6  5 7000 6  .2 .9
i1 12 5 7000 8  .2 .9
i1 18 5 7000 16 .2 .9
i1 24 5 7000 32 .2 .9
i1 30 5 7000 64 .2 .9
e


</CsScore>
</CsoundSynthesizer>


Historique Technique

On trouve dans Hartmann [1] une description générale des différences entre flanging et phasing. On peut trouver une implémentation ancienne de filtres passe-tout du premier ordre connectés en série dans Beigel [2], dans laquelle la transormation en z bilinéaire est utilisée pour déterminer la fréquence du déphasage de chaque étage. Cronin [3] présente une implémentation similaire pour un réseau déphaseur à quatre étages. Chamberlin [4] et Smith [5] discutent tous deux de l'utilisation de sections passe-tout du deuxième ordre pour un meilleur contrôle de la profondeur, de la largeur et de la fréquence des encoches.

Références

  1. Hartmann, W.M. "Flanging and Phasers." Journal of the Audio Engineering Society, Vol. 26, No. 6, pp. 439-443, juin 1978.

  2. Beigel, Michael I. "A Digital 'Phase Shifter' for Musical Applications, Using the Bell Labs (Alles-Fischer) Digital Filter Module." Journal of the Audio Engineering Society, Vol. 27, No. 9, pp. 673-676, septembre 1979.

  3. Cronin, Dennis. "Examining Audio DSP Algorithms." Dr. Dobb's Journal, juillet 1994, p. 78-83.

  4. Chamberlin, Hal. Musical Applications of Microprocessors. Second edition. Indianapolis, Indiana: Hayden Books, 1985.

  5. Smith, Julius O. "An Allpass Approach to Digital Phasing and Flanging." Proceedings of the 1984 ICMC, p. 103-108.

Voir aussi

phaser2

D'autres informations au sujet des phaseurs sur Wikipedia : http://en.wikipedia.org/wiki/Phaser_(effect)

Crédits

Auteur : Sean Costello
Seattle, Washington
1999

Novembre 2002. Ajout d'une note sur le paramètre kord, grâce à Rasmus Ekman.

Nouveau dans la version 4.0 de Csound.