pvscale

pvscale — Met à l'échelle les composantes de fréquence d'un flot pv.

Description

Met à l'échelle les composantes de fréquence d'un flot pv, ce qui provoque une transposition de hauteur. Les amplitudes peuvent être modifiées afin de préserver les formants.

Syntaxe

fsig pvscale fsigin, kscal[, kkeepform, kgain, kcoefs]

Exécution

fsig -- flot pv de sortie

fsigin -- flot pv d'entrée

kscal -- facteur de mise à l'échelle.

kkeepform -- tente de préserver les formants du signal d'entrée ; 0 : ne pas garder les formants ; 1 : conserve les formants en utilisant une méthode de cepstre décalé ; 2 : conserve les formants en utilisant une méthode avec une véritable enveloppe (vaut 0 par défaut).

kgain -- modification d'amplitude (1 par défaut).

kcoefs -- nombre de coefficients du cepstre utilisés pour la préservation des formants (vaut 80 par défaut).

La qualité de la transposition de hauteur sera améliorée par l'utilisation d'une fenêtre de Hanning dans l'analyse pvoc. La méthode 1 de préservation de formants est moins intensive que la méthode 2, qui, elle, pourrait ne pas convenir à une utilisation en temps réel.

[Avertissement] Avertissement

Il est dangereux d'utiliser la même variable-f à la fois comme entrée et comme sortie des opcodes pvs. Ceci peut produire un comportement indéfini de certains de ces opcodes. Utilisez une variable différente à gauche et à droite de l'opcode.

Exemples

Exemple 817. Exemples

asig  in                                 ; get the signal in

fsig  pvsanal   asig, 1024, 256, 1024, 1 ; analyse it
ftps  pvscale   fsig, 1.5, 1, 1          ; transpose it keeping formants
atps  pvsynth   ftps                     ; synthesise it

adp   delayr    0.1                      ; delay original signal
adel  deltapn   1024                     ; by 1024 samples
      delayw    asig
      out       atps + adel              ; add tranposed and original


L'exemple ci-dessus montre un harmoniseur vocal. Le délai est nécessaire pour aligner les signaux temporellement, car le traitement d'analyse-synthèse implique un délai de 1024 échantillons entre l'entrée d'analyse et la sortie de synthèse.

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

Exemple 818. Exemple de l'opcode pvscale.

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

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

;; example written by joachim heintz 2009

instr 1
ifftsize	= 1024
ioverlap	= ifftsize / 4
iwinsize	= ifftsize
iwinshape	= 1; von-Hann window
Sfile		= "fox.wav"
ain		soundin	Sfile
fftin		pvsanal	ain, ifftsize, ioverlap, iwinsize, iwinshape; fft-analysis of the audio-signal
fftblur	    pvscale	fftin, p4, p5, p6; scale
aout		pvsynth	fftblur; resynthesis
outs		aout*.5, aout*.5
endin

</CsInstruments>
<CsScore>
i 1 0 3 1 0 1   ; original sound
i 1 3 3 1.5 0 2 ; fifth higher without ...
i 1 6 3 1.5 1 2 ; ... and with different ...
i 1 9 3 1.5 2 5 ; ... kinds of formant preservation
e
</CsScore>
</CsoundSynthesizer>


Voir aussi

pvsanal, pvsynth, pvsadsyn

Crédits

Auteur : Victor Lazzarini
Novembre 2004

Nouveau greffon dans la version 5

Novembre 2004.