ptrack — Détecte la hauteur d'un signal.
ptrack prend un signal en entrée, le divise en blocs de taille ihopsize et extrait, par une méthode de TFCT, la hauteur, qui est une estimation de sa fréquence fondamentale, et une estimation de l'amplitude totale du signal en dB par rapport à l'échelle totale (0 dB). La méthode comporte une taille de fenêtre d'analyse de 2*ihopsize échantillons (avec un recouvrement d'1/2 fenêtre), qui doit être une puissance de deux, entre 128 et 8192 (taille des sauts entre 64 et 4096). Plus les fenêtres sont courtes et meilleure est la précision temporelle, mais avec une précision en fréquence moins bonne (spécialement pour des fondamentales graves). Cet opcode est basé sur un algorithme original de M. Puckette.
ihopsize -- taille des "sauts" d'analyse, en échantillons, devant être une puissance de deux (min 64, max 4096). C'est la durée entre deux mesures.
ipeaks, ihi -- nombre de pics spectraux à utiliser dans l'analyse. 20 par défaut (facultatif).
kcps -- hauteur estimée en Hz.
kamp -- amplitude estimée en dB par rapport à l'échelle totale (0 dB) (c-à-d toujours <= 0).
ptrack analyse le signal d'entrée, asig, pour retourner une paire hauteur/amplitude, pour le fondamental d'un signal monophonique. La sortie est mise à jour toutes les sr/ihopsize secondes.
Voici en exemple de l'opcode ptrack. Il utilise le fichier ptrack.csd.
Exemple 796. Exemple de l'opcode ptrack.
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 ptrack.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> sr = 44100 ksmps = 32 0dbfs = 1 nchnls = 2 instr 1 ihop = p4 aout diskin2 "fox.wav",1, 0, 1 kf,ka ptrack aout, ihop ; pitch track with different hopsizes kcps port kf, 0.01 ; smooth freq kamp port ka, 0.01 ; smooth amp ; drive an oscillator asig poscil ampdb(kamp)*0dbfs, kcps, 1 outs asig, asig endin </CsInstruments> <CsScore> ; simple sine wave f 1 0 4096 10 1 i 1 0 5 128 i 1 6 5 512 i 1 12 5 1024 e </CsScore> </CsoundSynthesizer>