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 294. 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 ; Audio out Audio in No messages -odac -iadc -d ;;;RT audio I/O ; For Non-realtime ouput leave only the line below: ; -o harmon.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 ; The frequency of the base note. inote = 440 ; Generate the base note. avco vco 20000, inote, 1 kestfrq = inote kmaxvar = 0.4 ; Calculate frequencies 3 semitones above and ; below the base note. kgenfreq1 = inote * semitone(3) kgenfreq2 = inote * semitone(-3) imode = 1 iminfrq = inote - 200 iprd = 0.1 ; Generate the harmony notes. a1 harmon avco, kestfrq, kmaxvar, kgenfreq1, kgenfreq2, \ imode, iminfrq, iprd out a1 endin </CsInstruments> <CsScore> ; Table #1, a sine wave. f 1 0 16384 10 1 ; Play Instrument #1 for two seconds. i 1 0 2 e </CsScore> </CsoundSynthesizer>