pvsosc

pvsosc — Simulateur d'oscillateur basé sur PVS.

Description

Génère des spectres de signal périodique au format AMP-FREQ, avec le choix parmi quatre type de forme d'onde :

  1. pseudo dent de scie (harmoniques en 1/n, où n est le numéro de l'harmonique)
  2. pseudo carrée (comme la précédente mais seulement avec les harmoniques de rang impair)
  3. impulsion (tous les harmoniques avec le même poids)
  4. cosinus

Les formes d'onde complexes (c'est-à-dire tous les types sauf le cosinus) contiennent tous les harmoniques jusqu'à la fréquence de Nyquist. Cela fait de pvsosc une option pour la génération de formes d'onde périodiques à bande limitée. De plus, on peut changer de type en utilisant une variable de taux-k.

Syntaxe

fsig pvsosc kamp, kfreq, ktype, isize [,ioverlap] [, iwinsize] [, iwintype] [, iformat]

Initialisation

fsig -- flot pv de sortie mis à zéro.

isize -- taille de la trame d'analyse.

ioverlap -- (Facultatif) taille du saut, vaut isize/4 par défaut.

iwinsize -- (Facultatif) taille de fenêtre, vaut isize par défaut.

iwintype -- (Facultatif) type de fenêtre, Hanning par défaut. On a actuellement le choix entre :

  • 0 = fenêtre de Hamming

  • 1 = fenêtre de von Hann

iformat -- (Facultatif) format des données, 0 par défaut ce qui produit des données AMP:FREQ. C'est actuellement la seule option.

Exécution

kamp -- amplitude du signal. Noter que l'amplitude effective du signal peut varier légèrement autour de cette valeur en fonction du type de forme d'onde et de la fréquence. Généralement, l'amplitude a tendance à dépasser kamp pour les hautes fréquences (> 1000 Hz) et à être inférieure pour les basses fréquences. De plus, à cause du traitement par recouvrement-addition, lorsque l'on fait la resynthèse avec pvsynth, les glissements de fréquence causeront une fluctuation de l'amplitude autour de kamp.

kfreq -- fréquence fondamentale en Hz.

ktype -- type d'onde : 1. pseudo dent de scie, 2. pseudo carrée, 3. impulsion, et tout autre valeur pour cosine.

Exemples

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

Exemple 850. Exemple de l'opcode pvsosc

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  
-odac  -m0 ;;;realtime audio out
; For Non-realtime ouput leave only the line below:
; -o pvsosc.wav -W ;;; for file output any platform
</CsOptions>
<CsInstruments>

sr = 44100 
ksmps = 32 
0dbfs  = 1 
nchnls = 2

; example by Menno Knevel 2021

instr 1 ; a band-limited sawtooth-wave oscillator

prints "\nsawtooth-wave\n"		
fsig pvsosc   .5, 440, 1, 1024          ; generate wave spectral signal
asig pvsynth fsig                       ; resynthesise it
     outs asig, asig
endin

instr 2 ; a band-limited square-wave oscillator	

prints "\nsquare-wave\n"	
fsig pvsosc   .5, 440, 2, 1024          ; generate wave spectral signal
asig pvsynth fsig                       ; resynthesise it
     outs asig, asig
endin


instr 3 ; a pulse oscillator

prints "\npulse-wave\n"		
fsig pvsosc   .5, 440, 3, 1024          ; generate wave spectral signal
asig pvsynth fsig                       ; resynthesise it
     outs asig, asig
endin

instr 4 ; a cosine-wave oscillator

prints "\ncosine-wave\n\n"			
fsig pvsosc   .5, 440, 4, 1024          ; generate wave spectral signal
asig pvsynth fsig                       ; resynthesise it
     outs asig, asig
endin

instr 5 ;cycle

ktyp randh 2, 10
fsig pvsosc   .5, 440, int(ktyp+3), 1024 ; make it to go from 1-4
printks2 "\ncycle through all waves...: %d\n", int(ktyp+3)
asig pvsynth fsig                    
     outs asig, asig
endin

</CsInstruments>
<CsScore>

i 1 0 1
i 2 2 1
i 3 4 1
i 4 6 1
i 5 10 4
e
</CsScore>
</CsoundSynthesizer>


Voir aussi

pvsanal, pvsynth, pvsadsyn

Crédits

Auteur : Victor Lazzarini
Août 2006