pvsdemix

pvsdemix — Séparation spectrale de sources stéréo basée sur l'azimut.

Description

Séparation spectrale de sources stéréo basée sur l'azimut, avec pour résultat l'annulation d'une spatialisation. Cet opcode implémente l'algorithme de Discrimination Azimutale et Resynthèse (ADRess) développé par Dan Barry (Barry et Al. "Sound Source Separation Azimuth Discrimination and Resynthesis". DAFx'04, Univ. de Naples). La séparation de sources, ou démixage, est contrôlée par deux paramètres : une position d'azimut (kpos) et une largeur de sous-espace (kwidth). Le premier est utilisé pour localiser les crêtes spectrales des sources individuelles dans un mélange stéréo, tandis que le second élargit l'espace de recherche en incluant/excluant les crêtes autour de kpos. Ces deux paramètres peuvent être utilisés interactivement pour extraire les sources sonores d'un mélange stéréo. L'algorithme est particulièrement efficace avec les enregistrements de studio dans lesquels des instruments différents occupent des positions spatiales différentes ; c'est en fait un algorithme de d'annulation de spatialisation.

[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.

Syntaxe

fsig pvsdemix fleft, fright, kpos, kwidth, ipoints

Exécution

fsig -- flot pv de sortie

fleft -- flot pv d'entrée du canal de gauche.

fright -- flot pv d'entrée du canal de droite.

kpos -- la position centrale de la cible d'azimut qui sera démixée, de gauche à droite (-1 <= kpos <= 1). C'est l'inverse d'un contrôleur de pan-pot.

kwidth -- la largeur du sous-espace d'azimut qui détermine le nombre de points autour de kpos qui seront utilisés dans le traitement de démixage. (1 <= kwidth <= ipoints)

ipoints -- nombre total de points discrets qui vont diviser chaque côté de l'image stéréo. Ceci affecte au final la résolution du traitement.

Exemples

L'exemple ci-dessous prend une entrée stéréo et la passe dans un traitement de démixage qui révèle une source située à ipos +/- iwidth points. On peut contrôler ces paramètres en temps réel (par exemple en utilisant des widgets FLTK ou le MIDI) pour une recherche interactive de sources sonores.

[Note] Note
En ce qui concerne l'azimut kpos, il y a une image isolée près de l'azimut 0 qui, lorsque la source a une bonne intensité, peut être masquée.

Exemple 823. Exemples

ifftsize = 1024  
iwtype   = 1     /* cleaner with hanning window      */
ipos     = -0.8  /* to the left of the stereo image  */
iwidth   = 20    /* use peaks of 20 points around it */

al,ar  soundin   "sinput.wav"

flc    pvsanal   al, ifftsize, ifftsize/4, ifftsize, iwtype
frc    pvsanal   ar, ifftsize, ifftsize/4, ifftsize, iwtype
fdm    pvsdemix  flc, frc, kpos, kwidth, 100
adm    pvsynth   fdm
   
       outs      adm, adm


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

Exemple 824. Exemple de l'opcode pvsdemix.

 <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 pvsdemix.wav -W ;;; for file output any platform
</CsOptions>
<CsInstruments>

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

instr 1     
ifftsize = 2048 
iwtype   = 1   
kpos  = p4

asig1 diskin2 "fox.wav",1,0,1
asig2 diskin2 "beats.wav",1,0,1
aL, aR pan2 asig1,0.25
aL1, aR1 pan2 asig2,0.75

if p5 == 0 then
    outs aL1+aL, aR1+aR
else
    flc    pvsanal   aL1+aL, ifftsize, ifftsize/4, ifftsize, iwtype
    frc    pvsanal   aR1+aR, ifftsize, ifftsize/4, ifftsize, iwtype
    fdm    pvsdemix  flc, frc,kpos,20,100
    adm    pvsynth   fdm
    adm     *= 0.5
    outs adm, adm
endif

endin

</CsInstruments>
<CsScore>

;         pan   choice
i 1 0 5    0      0     ; bypass
i 1 5 5  -0.5     1     ; fox
i 1 10 5  0.5     1     ; beats

e
</CsScore>
</CsoundSynthesizer>


Crédits

Auteur : Victor Lazzarini
Janvier 2005

Nouveau greffon dans la version 5

Janvier 2005.