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 460. 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
; Audio out   Audio in    No display
-odac           -iadc     -d     ;;;RT audio I/O
</CsOptions>
<CsInstruments>

sr= 44100
ksmps = 16
nchnls= 1

;Example by Victor Lazzarini 2007

instr 1
  a1 inch 1              ; take an input signal
  kf,ka ptrack a1, 512   ; pitch track with winsize=1024
  kcps port kf, 0.01     ; smooth freq
  kamp port ka, 0.01     ; smooth amp

  ; drive an oscillator
  aout oscili ampdb(kamp)*0dbfs, kcps, 1

  out  aout
endin

</CsInstruments>
<CsScore>
; simple sine wave
f 1 0 4096 10 1

i 1 0 3600
e
</CsScore>
</CsoundSynthesizer>


Crédits

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

Nouveau dans la version 5.05 de Csound.