tempest

tempest — Estime le tempo de motifs de pulsation dans un signal de contrôle.

Description

Estime le tempo de motifs de pulsation dans un signal de contrôle.

Syntaxe

ktemp tempest kin, iprd, imindur, imemdur, ihp, ithresh, ihtim, ixfdbak, \
      istartempo, ifn [, idisprd] [, itweek]

Initialisation

iprd -- durée entre les analyses (en secondes). Typiquement autour de 0.02 secondes.

imindur -- durée minimale (en secondes) pour servir d'unité de tempo. Typiquement autour de 0.2 secondes.

imemdur -- durée (en secondes) du tampon de mémoire à court-terme kin parcouru pour trouver des motifs périodiques. Typiquement autour de 3 secondes.

ihp -- point à mi-puissance (en Hz) d'un filtre passe-bas utilisé pour lisser l'entrée kin avant tout autre traitement. Cela tend à supprimer l'activité beaucoup plus rapide. Typiquement 2 Hz.

ithresh -- seuil d'intensité autour duquel le signal kin filtré est centré et tronqué avant d'être placé dans le tampon à court-terme comme donnée pertinente pour le tempo. Typiquement au niveau du bruit de fond du signal entrant.

ihtim -- mi-durée (en secondes) d'un filtre interne masque de précédence qui masque les nouvelles données de kin en présence de données récentes plus fortes. Typiquement autour de 0.005 secondes.

ixfdbak -- proportion de valeur anticipée de cette unité à mélanger avec le signal entrant kin avant tout autre traitement. Typiquement autour de 0.3.

istartempo -- tempo initial (en pulsations par minute). Typiquement 60.

ifn -- numéro de table d'une fonction stockée (dessinée de gauche à droite) par laquelle la mémoire à court-terme est atténuée au court du temps.

idisprd (facultatif) -- s'il est différent de zéro, les tampons à court-terme passé et futur sont affichés toutes les idisprd secondes (normallement un multiple de iprd). La valeur par défaut est 0 (pas d'affichage).

itweek (facultatif) -- règlage fin de cette unité afin qu'elle reste stable durant l'analyse d'évènements contrôlés par sa propre sortie. La valeur par défaut est 1 (pas de changement).

Exécution

tempest recherche dans kin une périodicité d'amplitude et estime le tempo courant. L'entrée passe d'abord par un filtre passe-bas, puis elle est centrée et tronquée et le résultat est placé dans un tampon de mémoire à court-terme (atténué dans le temps) où il est analysé à la recherche de périodicité, au moyen d'une forme d'autocorrélation. La période, exprimée comme un tempo en pulsations par minute, est retournée dans ktemp. La période est aussi utilisée en interne pour prédire les motifs d'amplitude futurs, et ceux-ci sont placés dans un tampon adjacent à celui de l'entrée. On peut afficher périodiquement les deux tampons adjacents et les valeurs prédites facultativement mélangées avec le signal entrant pour simuler les valeurs attendues.

Cette unité est utile pour détecter les caractéristiques métriques d'un signal de taux-k (par exemple la valeur quadratique moyenne d'un signal audio ou la dérivée seconde d'un geste conducteur), avant de l'envoyer à une instruction tempo.

Exemples

Voici un exemple de l'opcode tempest. Il utilise les fichiers tempest.csd et beats.wav.

Exemple 1092. Exemple de l'opcode tempest.

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
-odac           -iadc    ;;;RT audio I/O
; For Non-realtime ouput leave only the line below:
; -o tempest.wav -W ;;; for file output any platform
</CsOptions>
<CsInstruments>

; Initialize the global variables.
sr = 44100
kr = 4410
ksmps = 10
nchnls = 1

; Instrument #1.
instr 1
  ; Use the "beats.wav" sound file.
  asig soundin "beats.wav"
  ; Extract the pitch and the envelope.
  kcps, krms pitchamdf asig, 150, 500, 200

  iprd = 0.01
  imindur = 0.1
  imemdur = 3
  ihp = 1
  ithresh = 30
  ihtim = 0.005
  ixfdbak = 0.05
  istartempo = 110
  ifn = 1

  ; Estimate its tempo.
  k1 tempest krms, iprd, imindur, imemdur, ihp, ithresh, ihtim, ixfdbak, istartempo, ifn
  printk2 k1

  out asig
endin


</CsInstruments>
<CsScore>

; Table #1, a declining line.
f 1 0 128 16 1 128 1

; Play Instrument #1 for two seconds.
i 1 0 2
e


</CsScore>
</CsoundSynthesizer>


Le tempo du fichier audio « beats.wav » est de 120 pulsations par minute. Dans cet exemple, tempest imprimera sa meilleure estimation durant la lecture du fichier. Sa sortie contiendra des lignes comme celles-ci :

. i1   118.24654
. i1   121.72949