pvshift — Décale les composantes de fréquence d'un flot pv, étirant/compressant son spectre.
fsig -- flot pv de sortie
fsigin -- flot pv d'entrée
kshift -- quantité de décalage (en Hz, positive ou négative).
klowest -- fréquence la plus basse à décaler.
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).
Cet opcode décale les composantes d'un flot pv à partir d'une certaine fréquence, vers le haut ou vers le bas, d'une quantité fixe (en Hz). On peut l'utiliser pour transformer un spectre harmonique en un spectre inharmonique. L'indicateur kkeepform peut être utilisé pour essayer de préserver les formants pour des modifications du spectre intéressantes et inhabituelles.
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. |
Exemple 837. Exemples
asig in ; get the signal in fsig pvsanal asig, 1024, 256, 1024, 1 ; analyse it ftps pvshift fsig, 100, 0 ; add 100 Hz to each component atps pvsynth ftps ; synthesise it
En fonction de l'entrée, ceci transformera un son à hauteur définie en un son inharmonique comme celui d'une cloche.
Voici un exemple de l'opcode pvshift. Il utilise le fichier pvshift.csd.
Exemple 838. Exemple de l'opcode pvshift.
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 -odac ;;;realtime audio out ;-iadc ;;;uncomment -iadc if realtime audio input is needed too ; For Non-realtime ouput leave only the line below: ; -o pvshift.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 ishift = p4 ; shift amount in Hz ilowest = p5 ; lowest frequency to be shifted ikeepform = p6 ; 0=no formant keeping, 1=keep by amps, 2=keep by spectral envelope 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 file fshift pvshift fftin, ishift, ilowest, ikeepform; shift frequencies aout pvsynth fshift; resynthesize outs aout, aout endin </CsInstruments> <CsScore> i 1 0 2.757 0 0 0; no shift at all i 1 3 2.757 100 0 0; shift all frequencies by 100 Hz i 1 6 2.757 200 0 0; by 200 Hz i 1 9 2.757 200 0 1; keep formants by method 1 i 1 12 2.757 200 0 2; by method 2 i 1 15 2.757 200 1000 0; shift by 200 Hz but just above 1000 Hz i 1 18 2.757 1000 500 0; shift by 1000 Hz above 500 Hz i 1 21 2.757 1000 300 0; above 300 Hz e </CsScore> </CsoundSynthesizer>