harmon — Analyse une entrée audio et génère des voix harmoniques synchrones.
imode -- mode d'interprétation des entrées de génération de fréquence kgenfreq1, kgenfreq2. 0 : les valeurs entrées sont des rapports de la fréquence analysée du signal audio. 1 : les valeurs entrées sont les fréquences demandées en Hz.
iminfrq -- la fréquence la plus basse en Hz attendue dans l'entrée audio. Ce paramètre détermine la quantité de signal en entrée qui est enregistrée pour l'analyse courante et fixe une limite inférieure au détecteur de hauteur interne.
iprd -- période d'analyse (en secondes). Comme l'analyse de hauteur interne peut prendre du temps, l'entrée est typiquement analysée seulement toutes les 20 à 50 ms.
kestfrq -- fréquence estimée de l'entrée.
kmaxvar -- variance maximale (valeur attendue entre 0 et 1).
kgenfreq1 -- la première fréquence générée.
kgenfreq2 -- la seconde fréquence générée.
Cette unité est un harmoniseur, capable d'ajouter jusqu'à deux voix supplémentaires avec la même amplitude et le même spectre que l'entrée. L'analyse de l'entrée est facilitée par deux éléments : une estimation de la fréquence de l'entrée kestfrq (en Hz) et une variance fractionnaire maximale kmaxvar autour de cette estimation, qui sert à limiter la taille de la recherche. Une fois la fréquence réelle de l'entrée déterminée, la forme de pulsation la plus récente est utilisée pour générer les autres voix aux fréquences demandées.
Les trois entrées de fréquence peuvent être dérivées de diverses manières depuis un fichier de partition ou depuis une source MIDI. La première est la hauteur attendue, avec un paramètre de variance permettant les inflexions ou les approximations ; si la hauteur attendue vaut zéro l'harmoniseur sera silencieux. Les seconde et troisième hauteurs contrôlent les fréquences de sortie ; si l'une d'elles vaut zéro, l'harmoniseur ne générera que la fréquence demandée différente de zéro ; si les deux sont nulles, l'harmoniseur sera silencieux. Lorsque la fréquence demandée est plus haute que l'entrée, le procédé demande plus de calculs à cause de la superposition des pulsations en sortie. Pour des raisons d'efficacité, ceci est actuellement limité, ce qui a pour résultat de ne permettre à tout moment qu'une seule voix plus haute que l'entrée.
Cette unité est utile pour fournir à la demande un effet de chorus en fond, ou bien pour corriger la hauteur d'une voix un peu fausse en entrée. Il n'y a pratiquement pas de délai entre l'entrée et la sortie. La sortie ne comprend que les parties générées sans l'entrée.
Voici un exemple de l'opcode harmon. Il utilise le fichier harmon.csd.
Exemple 432. Exemple de l'opcode harmon.
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 harmon.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> sr = 44100 ksmps = 32 nchnls = 2 0dbfs = 1 instr 1 aout diskin2 "sing.wav", 1 kestfrq = p4 ;different estimated frequency kmaxvar = 0.1 imode = 1 iminfrq = 100 iprd = 0.02 asig harmon aout, kestfrq, kmaxvar, kestfrq*.5, kestfrq*4, \ imode, iminfrq, iprd outs (asig + aout)*.6, (asig + aout)*.6 ;mix dry&wet signal endin </CsInstruments> <CsScore> i 1 0 2.7 100 i 1 + . 200 i 1 + . 500 e </CsScore> </CsoundSynthesizer>