pvscross — Réalise une synthèse croisée entre deux sources fsig.
L'opération de cet opcode est identique à celle de pvcross sauf que l'on utilise des fsigs plutôt que des fichiers d'analyse, et qu'il n'y a pas de préservation de l'enveloppe spectrale. Les amplitudes de fsrc et de fdest (en utilisant les facteurs d'échelle kamp1 pour fsrc et kamp2 pour fdest) sont appliquées aux fréquences de fsrc. kamp1 et kamp2 doivent rester dans l'intervalle entre 0 et 1.
Avec cet opcode, on peut réaliser une synthèse croisée sur une entrée audio temps réel, en utilisant pvsanal pour générer fsrc et fdest. Ils doivent avoir le même format.
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. |
Voici un exemple de l'opcode pvscross. Il utilise le fichier pvscross.csd.
Exemple 822. Exemple de l'opcode pvscross.
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 pvscross.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> sr = 44100 ksmps = 32 nchnls = 2 0dbfs = 1 ; by Menno Knevel 2021, after an example by joachim heintz 2009 instr 1 ipermut = p4 ; 1 = change order of soundfiles ifftsize = 1024 ioverlap = ifftsize / 4 iwinsize = ifftsize iwinshape = 1 ; von-Hann window Sfile1 = "oboe.aiff" Sfile2 = "finneganswake1.flac" ain1 = diskin2:a(Sfile1, .5, 0, 1) ain2 = diskin2:a(Sfile2, 1, 0, 1) ; the wave plays 4 x faster and higher fftin1 = pvsanal(ain1, ifftsize, ioverlap, iwinsize, iwinshape) ; fft-analysis of file 1 fftin2 = pvsanal(ain2, ifftsize, ioverlap, iwinsize, iwinshape) ; fft-analysis of file 2 ktrans = linseg(0, p3*.2, 0, p3*.6, p5, p3*.2, p5) ; transitions if ipermut == 1 then fcross = pvscross(fftin2, fftin1, ktrans, 1 - ktrans) else fcross = pvscross(fftin1, fftin2, ktrans, 1 - ktrans) endif aout = pvsynth(fcross) outs(aout, aout) endin </CsInstruments> <CsScore> ; use only first portion of sample (=p5) i 1 0 12.7 0 0 ; frequencies from the oboe, no transition i 1 14 12.7 1 0 ; frequencies from the voice, no transition ; transition over total sample (=p5) i 1 28 12.7 0 1 ; frequencies from the oboe, amplitude transition from voice to oboe i 1 42 12.7 1 1 ; frequencies from the voice, amplitude transition from oboe to voice e </CsScore> </CsoundSynthesizer>