harmon2

harmon2 — Analyse une entrée audio et génère des voix harmoniques synchrones avec préservation des formants.

Description

Génère des voix harmoniques avec préservation des formants.

Syntaxe

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]

Initialisation

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.

Exécution

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.

Exemples

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>


Crédits

Auteur : Barry L. Vercoe
M.I.T., Cambridge, Mass
2006

Nouveau dans la version 5.04