Note | |
---|---|
Ces opcodes sont un composant facultatif de Csound5. Pour savoir s'ils sont installés utilisez la commande 'csound -z' qui donne la liste des opcodes disponibles. |
La famille des opcodes Loris encapsule : lorisread qui importe un ensemble de partiels à largeur de bande adaptée depuis un fichier de données au format SDIF, en appliquant, au taux de contrôle, des enveloppes de pondération de fréquence, d'amplitude et de largeur de bande, et qui stocke les partiels modifiés en mémoire ; lorismorph, qui opère une transformation (morphing) entre deux ensembles stockés de partiels à largeur de bande adaptée et stocke un nouvel ensemble de partiels représentant le son transformé. La transformation est réalisée en en interpolant linéairement les enveloppes des paramètres (fréquence, amplitude, et largeur de bande, ou aspect bruiteux) des partiels à largeur de bande adaptée selon des fonctions de transformation de la fréquence, de l'amplitude et de la largeur de bande, variant au taux de contrôle ; lorisplay, qui restitue un ensemble de partiels à largeur de bande adaptée en utilisant la méthode de Synthèse Additive à Largeur de Bande Adaptée implémentée dans le logiciel Loris, avec application d'enveloppes de pondération de fréquence, d'amplitude, et de largeur de bande, variant au taux de contrôle.
Pour plus d'information sur la transformation du son et sa manipulation avec Loris et le Modèle Additif à Largeur de Bande Adaptée Réassignée, visiter le site web de Loris à www.cerlsoundgroup.org/Loris.
Exemple 1344. Jouer les partiels sans modification
; ; Joue les partiels dans clarinet.sdif ; de 0 à 3 sec avec un temps de transition de 1 ms ; et sans modification de fréquence, d'amplitude, ; ou de largeur de bande. ; instr 1 ktime linseg 0, p3, 3.0 ; fonction linéaire du temps de 0 à 3 secondes lorisread ktime, "clarinet.sdif", 1, 1, 1, 1, .001 asig lorisplay 1, 1, 1, 1 out asig endin
Exemple 1345. Ajouter une intonation et un vibrato
; Joue les partiels dans clarinet.sdif ; de 0 à 3 sec avec un temps de transition de 1 ms ; ajout d'une intonation et d'un vibrato, accroissement ; du "souffle" (aspect bruiteux) et de l'amplitude ; générale, et ajout d'un filtre passe-haut. ; instr 2 ktime linseg 0, p3, 3.0 ; fonction linéaire du temps de 0 à 3 secondes ; calcule le rapport de fréquence pour l'intonation ; (la hauteur originale était sol#3) ifscale = cpspch(p4)/cpspch(8.08) ; faire une enveloppe de vibrato kvenv linseg 0, p3/6, 0, p3/6, .02, p3/3, .02, p3/6, 0, p3/6, 0 kvib oscil kvenv, 4, 1 ; table 1, sinusoid kbwenv linseg 1, p3/6, 1, p3/6, 2, 2*p3/3, 2 lorisread ktime, "clarinet.sdif", 1, 1, 1, 1, .001 a1 lorisplay 1, ifscale+kvib, 2, kbwenv a2 atone a1, 1000 ; filtre passe-haut, coupure à 1000 Hz out a2 endin
L'instrument du premier exemple synthétise un son de clarinette en utilisant du début à la fin les
partiels dérivés de l'analyse à bande adaptée réassignée d'un son de clarinette de trois secondes, stockés
dans le fichier clarinet.sdif
. L'instrument de l'exemple 2 ajoute une intonation et
un vibrato au son de clarinette synthétisé par l'instrument 1, renforce son amplitude et son aspect
bruiteux, et applique un filtre passe-haut au résultat. La partition suivante peut être utilisée pour
tester les deux instruments décrits ci-dessus.
; créer une sinus dans la table 1 f 1 0 4096 10 1 ; jouer instr 1 ; début dur i 1 0 3 i 1 + 1 i 1 + 6 s ; jouer instr 2 ; début dur hauteur i 2 1 3 8.08 i 2 3.5 1 8.04 i 2 4 6 8.00 i 2 4 6 8.07 e
Exemple 1346. Transformation de partiels
; Transforme les partiels de clarinet.sdif vers ; les partiels de flute.sdif sur la durée de la ; partie tenue des deux notes (de 0,2 à 2,0 secondes ; pour la clarinette, et de 0,5 à 2,1 secondes ; pour la flûte). Les portions d'attaque et de ; chute dans le son transformé sont spécifiées ; par les paramètres p4 et p5, respectivement. ; Le temps de transformation est le temps entre ; l'attaque et la chute. Les partiels de la ; clarinette sont transposés pour s'accorder à ; la hauteur de la note de la flûte (ré au-dessus ; du do médium). ; instr 1 ionset = p4 idecay = p5 itmorph = p3 - (ionset + idecay) ipshift = cpspch(8.02)/cpspch(8.08) ; fonction temporelle de la clarinette, transformation de 0,2 à 2,0 secondes ktcl linseg 0, ionset, .2, itmorph, 2.0, idecay, 2.1 ; fonction temporelle de la flûte, transformation de 0,5 à 2,1 secondes ktfl linseg 0, ionset, .5, itmorph, 2.1, idecay, 2.3 kmurph linseg 0, ionset, 0, itmorph, 1, idecay, 1 lorisread ktcl, "clarinet.sdif", 1, ipshift, 2, 1, .001 lorisread ktfl, "flute.sdif", 2, 1, 1, 1, .001 lorismorph 1, 2, 3, kmurph, kmurph, kmurph asig lorisplay 3, 1, 1, 1 out asig endin
Exemple 1347. Plus de transformation
; Transforme les partiels de trombone.sdif vers les ; partiels de meow.sdif. Les dates de début et de fin ; de la transformation sont spécifiées par les ; paramètres p4 et p5, respectivement. La transformation ; a lieu sur la deuxième des quatre notes dans chaque ; son, de 0,75 à 1,2 secondes pour le trombone flatterzung, ; et de 1,7 à 2,2 secondes pour le miaulement de chat. ; Des fonctions de transformation différentes sont ; utilisées pour les enveloppes de fréquence et ; d'amplitude, afin que l'amplitude des partiels ; ait une transition plus rapide du trombone au ; chat que les fréquences. (Les enveloppes de largeur ; de bande utilisent la même fonction de transformation ; que les amplitudes). ; instr 2 ionset = p4 imorph = p5 - p4 irelease = p3 - p5 kttbn linseg 0, ionset, .75, imorph, 1.2, irelease, 2.4 ktmeow linseg 0, ionset, 1.7, imorph, 2.2, irelease, 3.4 kmfreq linseg 0, ionset, 0, .75*imorph, .25, .25*imorph, 1, irelease, 1 kmamp linseg 0, ionset, 0, .75*imorph, .9, .25*imorph, 1, irelease, 1 lorisread kttbn, "trombone.sdif", 1, 1, 1, 1, .001 lorisread ktmeow, "meow.sdif", 2, 1, 1, 1, .001 lorismorph 1, 2, 3, kmfreq, kmamp, kmamp asig lorisplay 3, 1, 1, 1 out asig endin
L'instrument dans le premier exemple effectue une transformation du son entre une note de
clarinette et une note de flûte en utilisant les partiels à bande adaptée réassignée stockés dans
clarinet.sdif
et dans flute.sdif
.
La transformation est effectuée sur les portions tenues des notes, 0,2 à 2,0 secondes dans le cas de la note de clarinette et 0,5 à 2,1 secondes dans le cas de la note de flûte. Les fonctions d'index temporel, ktcl et ktfl, alignent les portions d'attaque et de chute des notes avec les temps d'attaque et de chute du son transformé, spécifiées respectivement par les paramètres p4 et p5. L'attaque du son transformé est entièrement composée des données de partiel de la clarinette, et la chute est entièrement composée de données de la flûte. Les partiels de la clarinette sont transposés pour s'accorder à la hauteur de la note de flûte (ré au-dessus du do médium).
L'instrument dans le second exemple effectue une transformation du son entre une note de trombone
flatterzung et un miaulement de chat en utilisant les partiels à bande adaptée réassignée stockés dans
trombone.sdif
et meow.sdif
. Les données dans ces fichiers SDIF
ont été réparties par canaux et séparées pour établir une correspondance entre partiels.
Les deux ensembles de partiels sont importés et stockés dans des positions mémoire étiquetées 1 et 2, respectivement. Les deux sons originaux ont quatre notes, et la transformation est effectuée sur la seconde note de chaque son (de 0,75 à 1,2 secondes pour le trombone flatterzung, et de 1,7 à 2,2 secondes pour le miaulement de chat). Les fonctions d'index temporel, kttbn et ktmeow, alignent ces segments des ensembles de partiels source et cible avec les paramètres spécifiés pour la durée du début, de la fin, et totale de la transformation. Deux fonctions de transformation différentes sont utilisées, afin que les amplitudes des partiels et les coefficients de largeur de bande se transforment rapidement des valeurs du trombone aux valeurs du miaulement de chat, tandis que les fréquences opèrent une transition plus graduelle. Les partiels transformés sont stockés dans la position mémoire étiquetée 3 et restitués par l'instruction lorisplay qui suit. Ils auraient pu aussi être utilisés comme source pour une autre transformation dans un instrument de transformation à trois étapes. La partition suivante peut être utilisée pour tester les deux instruments décrits ci-dessus.
; jouer instr 1 ; début dur attaque chute i 1 0 3 .25 .15 i 1 + 1 .10 .10 i 1 + 6 1. 1. s ; jouer instr 2 ; début dur début_morph fin_morph i 2 0 4 .75 2.75 e
Cette implémentation des générateurs unitaires Loris a été écrite par Kelly Fitz (loris@cerlsoundgroup.org).
Elle est construite d'après une implémentation prototype du générateur unitaire lorisplay écrite par Corbin Champion, et basée sur la méthode de Synthèse Additive à Largeur de Bande Adaptée et sur les algorithmes de transformation du son implémentés dans la bibliothèque Loris pour la modélisation et la manipulation du son. Les opcodes ont été ensuite adaptés en greffon pour Csound 5 par Michael Gogins.