ptrack

ptrack — Détecte la hauteur d'un signal.

Description

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.

Syntaxe

kcps, kamp ptrack asig, ihopsize[,ipeaks]

Initialisation

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

Exécution

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.

Exemples

Voici en exemple de l'opcode ptrack. Il utilise le fichier ptrack.csd.

Exemple 640. 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>


Crédits

Auteur : Victor Lazzarini
NUI, Maynooth.
Maynooth, Irlande
Mars 2007

Nouveau dans la version 5.05 de Csound.