GEN09

GEN09 — Génère des formes d'ondes complexes obtenues par une somme pondérée de sinus.

Description

Ce sous-programmme génère des formes d'ondes complexes obtenues par une somme pondérée de sinus. La spécification de chaque partiel nécessite 3 p-champs avec GEN09.

Syntaxe

f # date taille 9 pna ampa phsa pnb ampb phsb ...

Initialisation

taille -- nombre de points dans la table. Doit être une puissance de 2 ou une puissance-de-2 plus 1 (voir l'instruction f).

pna, pnb, etc. -- numéro de partiel (par rapport à un fondamental qui occuperait taille positions par période) des sinus a, sinus b, etc. Doit être positif, mais pas nécessairement un nombre entier, c'est-à-dire que des partiels non harmoniques sont autorisés. Les partiels peuvent être dans n'importe quel ordre.

ampa, ampb, etc. -- amplitude des partiels pna, pnb, etc. Ce sont des amplitudes relatives, car la forme d'onde complexe peut être reproportionnée à posteriori. On peut utiliser des valeurs négatives pour signifier une opposition de phase (180 degrés).

phsa, phsb, etc. -- phase initiale des partiels pna, pnb, etc., exprimée en degrés (0-360).

[Note] Note

  • Ces sous-programmes génèrent des fonctions stockées qui sont la somme de sinus de différentes fréquences. Les deux restrictions majeures de GEN10 qui sont des partiels harmoniques et en phase ne s'appliquent pas à GEN09 ou à GEN19.

  • Dans chaque cas, l'onde complexe, une fois calculée, est reproportionnée à l'unité si p4 est positif. Un p4 négatif empêchera cette opération.

Exemples

Voici un exemple simple de la routine GEN09. Il utilise le fichier gen09.csd. Il génèrera une onde cosinus, une onde sinusoïdale avec une phase initiale de 90 degrés. Voici son graphe :

Graphe de la forme d'onde générée par GEN09.

Graphe de la forme d'onde générée par GEN09.

Exemple 616. Un exemple simple de la routine GEN09.

Voir les sections Audio en Temps Réel et Options de 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
-odac           -iadc    ;;;RT audio I/O
; For Non-realtime ouput leave only the line below:
; -o gen09.wav -W ;;; for file output any platform
</CsOptions>
<CsInstruments>

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

; Instrument #1.
instr 1
  kamp = 30000
  kcps = 440
  ifn = 1

  ; Play the waveform stored in Table #1.
  a1 oscil kamp, kcps, ifn
  out a1
endin


</CsInstruments>
<CsScore>

; Table #1: a cosine wave (using GEN09).
; This is a sine wave with an initial phase of 90 degrees.
f 1 0 16384 9 1 1 90

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


</CsScore>
</CsoundSynthesizer>


Voici un autre exemple de la routine GEN09. Il utilise le fichier gen09square.csd. Il combine les partiels 1, 3 et 9 avec les intensités relatives qu'ils ont dans une onde carrée, sauf que le partiel 9 est inversé. La fonction sera normalisée. Voici le graphe :

Graphe de la forme d'onde générée par GEN09.

Graphe de la forme d'onde générée par GEN09.

Exemple 617. Une onde carrée générée par la routine GEN09.

<CsoundSynthesizer>
<CsOptions>
; Select audio/midi flags here according to platform
; Audio out   Audio in
-odac           -iadc    ;;;RT audio I/O
; For Non-realtime ouput leave only the line below:
; -o gen09square.wav -W ;;; for file output any platform
</CsOptions>
<CsInstruments>

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

; Instrument #1.
instr 1
  kamp = 30000
  kcps = 440
  ifn = 1

  ; Play the waveform stored in Table #1.
  a1 oscil kamp, kcps, ifn
  out a1
endin


</CsInstruments>
<CsScore>

; Table #1: an approximation of a square wave (using GEN09).
f 1 0 16384 9 1 3 0 3 1 0 9 0.3333 180

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


</CsScore>
</CsoundSynthesizer>


Voir Aussi

GEN10, GEN19

Crédits

L'exemple simple a été écrit par Kevin Conder.