specptrk

spectrk — Estime la hauteur du ton complexe le plus proéminent dans le spectre.

Description

Estime la hauteur du ton complexe le plus proéminent dans le spectre.

Syntaxe

koct, kamp specptrk wsig, kvar, ilo, ihi, istr, idbthresh, inptls, \
      irolloff [, iodd] [, iconfs] [, interp] [, ifprd] [, iwtflg]

Initialisation

ilo, ihi, istr -- conditionneurs de l'intervalle des hauteurs (grave, aigu et valeur de départ) exprimés sous le forme octave point partie décimale.

idbthresh -- seuil d'énergie (en décibels) pour que le suivi de hauteur ait lieu. Une fois commencé, le suivi continue jusqu'à ce que l'énergie soit inférieure à la moitié du seuil (6 dB plus bas), et ensuite les sorties koct et kamp restent à zéro jusqu'à ce que le seuil soit à nouveau surpassé. idbthresh est une valeur repère. A l'initialisation il est d'abord converti au mode idbout du spectre source (et le point 6 dB plus bas devient 0.5, 0.25, ou 1/(racine carrée de 2) pour les modes 0, 2 et 3). Les valeurs sont ensuite pondérées pour permettre la somme pondérée des partiels utilisée durant la corrélation. Le seuillage effectif est réalisant en utilisant la valeur interne pondérée et sommée kamp qui apparait comme second paramètre de sortie.

inptls, irolloff -- nombre d'harmoniques utilisés comme modèle pour la détection de hauteur basée sur le spectre, et pente d'amplitude pour l'ensemble exprimée sous la forme d'une fraction par octave (linéaire, donc ne pas descendre dans les valeurs négatives). Comme les harmoniques et la pente peuvent affecter le suivi de hauteur, il est utile d'expérimenter : essayer 4 ou 5 harmoniques avec une pente de 0.6 comme réglages initiaux ; monter jusqu'à 10 ou 12 harmoniques avec une pente de 0.75 pour des timbres complexes comme celui du basson (faible fondamental). Le temps de calcul dépend du nombre d'harmoniques cherchés. Le nombre maximum est 16.

iodd (facultatif) -- s'il est différent de zéro, seuls les harmoniques impairs sont employés dans l'ensemble ci-dessus (par exemple si inptls vaut 4, les harmoniques 1, 3, 5, 7 seront employés). Ceci améliore le suivi de certains instruments comme la clarinette. La valeur par défaut est 0 (employer tous les harmoniques).

iconfs (facultatif) -- nombre de confirmations requises pour que le suiveur de hauteur saute d'une octave, au prorata de fractions d'une octave (ainsi la valeur 12 implique qu'un changement d'un demi-ton nécessite 1 confirmation (deux succès) au spectre générant iprd). Ce paramètre limite les analyses de hauteur faussées tel que les erreurs d'octave. Une valeur de 0 signifie qu'aucune confirmation n'est requise ; la valeur par défaut est 10.

interp (facultatif) -- s'il est différent de zéro, chaque signal de sortie (koct, kamp) est interpolé entre les trames entrantes de wsig. La valeur par défaut est 0 (répéter les valeurs du signal entre les trames).

ifprd (facultatif) -- s'il est différent de zéro, le spectre calculé en interne des fondamentaux candidats est affiché. La valeur par défaut est 0 (pas d'affichage).

iwtftg (facultatif) -- indicateur de pause. S'il est différent de zéro, chaque affichage est maintenu jusqu'à ce que l'utilisateur le libère. La valeur par défaut est 0 (pas de pause).

Exécution

A l'initialisation de la note, cette unité crée un modèle de inptls harmoniques (harmoniques impairs si iodd est différent de zéro) avec une pente d'amplitude valant irolloff par octave. A chaque nouvelle trame de wsig, le spectre est mis en corrélation croisée avec ce modèle pour fournir un spectre en interne de fondamentaux candidats (facultativement affichés). Une paire hauteur/amplitude probable (koct, kamp, en octave point partie décimale et en idbout additionnés) est ensuite estimée. koct ne varie pas du koct précédent de plus ou moins kvar unités décimales d'octave. Il est aussi contraint à rester dans l'intervalle ilo -- ihi (hauteur grave et hauteur aigue en octave point valeur décimale ). kvar peut être dynamique, par exemple les attaques dépendant des amplitudes. La résolution de hauteur utilise ifrqs bins/octave du spectre d'origine, avec interpolation parabolique entre bins adjacents. Les réglages suivants, racine carrée de la magnitude, ifrqs = 24, iq = 15 devraient capturer toutes les inflexions intéressantes. Entre les trames, la sortie est soit répétée soit interpolée au taux-k. (Voir spectrum.)

Exemples

  a1, a2   ins                                                           ; read a stereo clarinet input
  krms     rms        a1, 20                                             ; find a monaural rms value
  kvar     =          0.6 + krms/8000                                    ; & use to gate the pitch variance
  wsig     spectrum   a1, 0.01, 7, 24, 15, 0, 3                          ; get a 7-oct spectrum, 24 bibs/oct
           specdisp   wsig, 0.2                                          ; display this and now estimate
  koct, ka spectrk    wsig, kvar, 7.0, 10, 9, 20, 4, 0.7, 1, 5, 1, 0.2   ; the pch and amp
  aosc     oscil      ka * ka * 10, cpsoct(koct), 2                      ; & generate \ new tone with these
  koct     =          (koct < 7.0 ? 7.0 : koct)                          ; replace non pitch with low C
           display    koct - 7.0, 0.25, 20                               ; & display the pitch track
           display    ka, 0.25, 20                                       ; plus the summed root mag
           outs       a1, aosc                                           ; output 1 original and 1 new track