partials — Analyse spectrale par suivi des partiels.
L'opcode partials prend en entrée deux flots de signal PV contenant les signaux AMP_FREQ et AMP_PHASE (comme ils sont générés par exemple par pvsifd ou dans le premier cas par pvsanal) et réalise une estimation et un suivi de partiels selon la méthode décrite dans Lazzarini et al, "Time-stretching using the Instantaneous Frequency Distribution and Partial Tracking", Proc. of ICMC05, Barcelone. Il génère un flot de signal PV TRACKS, contenant l'amplitude, la fréquence, la phase et un ID de piste pour chaque piste en sortie. Ce type de signal contient un nombre variable de pistes de sortie, limité par le nombre total de bins d'analyse contenus dans les entrées (tailleTFR/2 + 1 bin). La seconde entrée (AMP_PHASE) est facultative, car elle peut prendre le même signal que la première entrée. Cependant, dans ce cas, toute l'information de phase vaut NULL et l'on ne peut pas réaliser de resynthèse en utilisant l'information de phase.
ftrks -- flot pv de sortie au format TRACKS
ffr -- flot pv d'entrée au format AMP_FREQ
fphs -- flot pv d'entrée au format AMP_PHASE
kthresh -- seuil d'analyse, compris entre -1 et 1. S'il n'est pas négatif, le seuil d'analyse est relatif à la magnitude maximale dans chaque trame d'analyse (ktresh * max_magnitude). S'il est négatif, la valeur de seuil maximale est relative à 0dbfs (ktresh * 0dbfs). Les pistes de niveau inférieur au seuil sont ignorées.
kminpoints -- nombre minimal de points temporels pour qu'une crête détectée engendre une piste (1 est le minimum). Comme cet opcode travaille avec des flots de signal, les nombres plus importants augmentent le délai entre l'entrée et la sortie car il faut attendre que le nombre minimum de points nécessaires soient acquis.
kmaxgap -- écart maximum entre les points temporels pour la poursuite de la piste (> 0). Les pistes sans suite après kmaxgap sont ignorées.
imaxtracks -- nombre maximal de pistes d'analyse (nombre de bins >= imaxtracks)
Voici un exemple de l'opcode partials. Il utilise le fichier partials.csd.
Exemple 728. Exemple de l'opcode partials.
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 real audio input is needed too ; For Non-realtime ouput leave only the line below: ; -o partials.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> sr = 44100 ksmps = 32 nchnls = 2 0dbfs = 1 instr 1 ain diskin2 "fox.wav", 1 fs1,fsi2 pvsifd ain,2048,512,1 ; ifd analysis fst partials fs1,fsi2,.003,1,3,500 ; partial tracking aout resyn fst, 1, 1.5, 500, 1 ; resynthesis (up a 5th) outs aout, aout endin </CsInstruments> <CsScore> f 1 0 4096 10 1 i 1 0 2.8 e </CsScore> </CsoundSynthesizer>
L'exemple ci-dessus montre le suivi de partiel d'un signal d'analyse ifd et sa resynthèse additive par phase cubique avec transposition de hauteur.