pitch — Trace la hauteur d'un signal.
En utilisant les mêmes techniques que spectrum et specptrk, pitch trace la hauteur du signal sous la forme octave point décimal ainsi que l'amplitude en dB.
koct, kamp pitch asig, iupdte, ilo, ihi, idbthresh [, ifrqs] [, iconf] \
[, istrt] [, iocts] [, iq] [, inptls] [, irolloff] [, iskip]
iupdte -- longueur en secondes de la période de mise à jour des sorties.
ilo, ihi -- intervalle dans lequel la hauteur est détectée, exprimé en octave point décimal.
idbthresh -- amplitude, exprimée en décibels, nécessaire pour que la hauteur soit détectée. Une fois démarré, continue jusqu'à une diminution de 6 dB.
ifrqs (facultatif) -- nombre de divisions de l'octave. Vaut 12 par défaut et est limité à 120.
iconf (facultatif) -- nombre de conformations nécessaires pour un saut d'octave. Vaut 10 par défaut.
istrt (facultatif) -- hauteur initiale pour le détecteur. La valeur par défaut est (ilo + ihi)/2.
iocts (facultatif) -- nombre de décimations d'octave dans le spectre. Vaut 6 par défaut.
iq (facultatif) -- Q des filtres d'analyse. Vaut 10 par défaut.
inptls (facultatif) -- nombre d'harmoniques utilisés pour la concordance. Le temps de calcul augmente avec le nombre d'harmoniques. Vaut 4 par défaut.
irolloff (facultatif) -- roll-off d'amplitude pour l'ensemble de filtres exprimé en fraction par octave. Les valeurs doivent être positives. Vaut 0.6 par défaut.
iskip (facultatif) -- s'il est non nul, l'initialisation est ignorée. Vaut 0 par défaut.
koct -- La sortie de hauteur, donnée dans le format octave point décimal.
kamp -- La sortie d'amplitude.
pitch analyse le signal d'entrée, asig, pour donner en sortie une paire hauteur/amplitude pour la fréquence la plus forte dans le signal. La valeur est mise à jour toutes les iupdte secondes.
Le nombre d'harmoniques et la fraction de roll-off pouvant affecter la détection de hauteur, il peut être nécessaire d'expérimenter. Les valeurs suggérées vont de 4 à 5 harmoniques avec un roll-off de 0.6 jusqu'à 10 à 12 harmonques avec un roll-off de 0.75 pour les timbres complexes ayant un fondamental faible.
Voici un exemple de l'opcode pitch. Il utilise les fichiers pitch.csd et mary.wav.
Exemple 439. Exemple de l'opcode pitch.
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 messages -odac -iadc -d ;;;RT audio I/O ; For Non-realtime ouput leave only the line below: ; -o pitch.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> ; Initialize the global variables. sr = 44100 kr = 44100 ksmps = 1 nchnls = 1 ; Instrument #1 - play an audio file without effects. instr 1 asig soundin "mary.wav" out asig endin ; Instrument #2 - track the pitch of an audio file. instr 2 iupdte = 0.01 ilo = 7 ihi = 9 idbthresh = 10 ifrqs = 12 iconf = 10 istrt = 8 asig soundin "mary.wav" ; Follow the audio file, get its pitch and amplitude. koct, kamp pitch asig, iupdte, ilo, ihi, idbthresh, ifrqs, iconf, istrt ; Re-synthesize the audio file with a different sounding waveform. kamp2 = kamp * 10 kcps = cpsoct(koct) a1 oscil kamp2, kcps, 1 out a1 endin </CsInstruments> <CsScore> ; Table #1: A different sounding waveform. f 1 0 32768 11 7 3 .7 ; Play Instrument #1, the audio file, for three seconds. i 1 0 3 ; Play Instrument #2, the "re-synthesized" waveform, for three seconds. i 2 3 3 e </CsScore> </CsoundSynthesizer>