harmon2 — Analyse une entrée audio et génère des voix harmoniques synchrones avec préservation des formants.
ares harmon2 asig, koct, kfrq1, kfrq2, icpsmode, ilowest[, ipolarity]
ares harmon3 asig, koct, kfrq1, \
kfrq2, kfrq3, icpsmode, ilowest[, ipolarity]
ares harmon4 asig, koct, kfrq1, \
kfrq2, kfrq3, kfrq4, icpsmode, ilowest[, ipolarity]
icpsmode -- mode d'interprétation des entrées de génération de fréquence kfrq1, kfrq2, kfrq3 et kfrq4 : 0 : les valeurs entrées sont des rapports de l'équivalent en fréquence (Hz) de koct. 1 : les valeurs entrées sont les fréquences demandées en Hz.
ilowest -- valeur la plus basse de koct pour laquelle des voix harmoniques seront générées.
ipolarity -- polarité de l'entrée asig, 1 = pulsations glottales positives, 0 = négatives. La valeur par défaut est 1.
Harmon2, harmon3 et harmon4 sont des harmoniseurs très performants, capables de générer jusqu'à quatre copies transposées de l'entrée asig avec préservation des formants. L'algorithme de transposition nécessite une estimation précise (koct, en unités décimales d'oct) de la hauteur de asig, normallement obtenue par un détecteur de hauteur indépendant comme specptrk. L'algorithme isole ensuite la pulsation pleine la plus récente dans asig et l'utilise pour générer les autres voix avec les taux de pulsation requis.
Si la fréquence (ou le rapport) présenté pour kfrq1, kfrq2, kfrq3 ou kfrq4 vaut zéro, aucun signal n'est généré pour cette voix. S'il y en a qui sont différents de zéro, mais que l'entrée koct est inférieure à la valeur ilowest, alors cette voix sortira une copie directe de l'entrée asig. En conséquence, les données arrivant sur les entrées de taux-k peuvent au choix activer ou désactiver les voix générées, passer une copie directe d'une source fricative non voisée ou harmoniser la source en fonction d'un algorithme construit. La transition d'un mode à l'autre est progressive, ce qui donne une alternance continue entre les sons voisés (harmonisés) et les fricatives non-voisées d'une entrée parlée ou chantée.
harmon2, harmon3, harmon4 sont spécialement adaptés à la sortie de specptrk. Ce dernier génère des données de hauteur en format décimal d'octave ; il retourne également sa valeur de base si aucune hauteur n'est identifiée (comme dans un bruit de fricative) et émet zéro si l'énergie tombe en-dessous du seuil, si bien que harmon2, harmon3, harmon4 peuvent être réglés pour passer le signal direct dans les deux cas. Naturellement, on pourrait utiliser n'importe quelle autre forme d'estimation de la hauteur. Comme les détecteurs de hauteur subissent habituellement un léger retard lors d'une estimation précise (pour specptrk le retard est imposé par l'unité spectrum), il est normal de retarder le signal audio de la même durée pour que harmon2, harmon3, harmon4 puissent travailler à partir d'une estimation synchrone.
Voici un exemple de l'opcode harmon2. Il utilise le fichier harmon.csd.
Exemple 433. Exemple de l'opcode harmon2.
a1,a2 ins ; récupère l'entrée mic w1 spectrum a1, .02, 7, 24, 12, 1, 3 ; et l'examine koct,kamp specptrk w1, 1, 6.5, 9.5, 7.5, 10, 7, .7, 0, 3, 1 a3 delay a1, .065 ; retarde ptrk a4 harmon2 a3, koct, 1.25, 0.75, 0, 6.9 ; sort une harmonie fixe 6-4 outs a3, a4 ; ainsi que l'original
Voici un exemple complet de l'opcode harmon3. Il utilise le fichier harmon3.csd.
Exemple 434. Exemple de l'opcode harmon3.
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 harmon3.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> sr = 44100 ksmps = 32 nchnls = 2 0dbfs = 1 instr 1 ilow = p4 ;lowest value to harmonize aout diskin2 "sing.wav", 1, 0, 1 koct, kamp pitch aout, .01, 6, 10, 10 ;track pitch asig harmon3 aout, koct, .9, 1.5, 0.7, 0, ilow outs (asig + aout)*.4, (asig + aout)*.4 ;mix dry&wet signal endin </CsInstruments> <CsScore> i1 0 2.2 8.8 i1 3 2.2 8.2 i1 6 2.2 7.0 e </CsScore> </CsoundSynthesizer>