lorismorph — réalise un morphing de deux ensembles stockés de partiels à largeur de bande améliorée et stocke un nouvel ensemble de partiels représentant le son transformé. Le morphing est réalisé par interpolation linéaire des enveloppes des paramètres (fréquence, amplitude et largeur de bande ou caractère bruiteux) des partiels à largeur de bande améliorée selon des fonctions de transformation de fréquence, d'amplitude et de largeur de bande au taux de contrôle.
lorismorph réalise le morphing de deux ensembles stockés de partiels à largeur de bande améliorée et stocke un nouvel ensemble de partiels représentant le son transformé. Le morphing est réalisé par interpolation linéaire des enveloppes des paramètres (fréquence, amplitude et largeur de bande ou caractère bruiteux) des partiels à largeur de bande améliorée selon des fonctions de transformation de fréquence, d'amplitude et de largeur de bande au taux de contrôle.
istoreidx, ireadidx, isrcidx, itgtidx sont des étiquettes qui identifient un ensemble stocké de partiels à largeur de bande améliorée. lorisread importe les partiels depuis un fichier SDIF et les stocke avec l'étiquette entière istoreidx. lorismorph réalise un morphing des ensembles de partiels étiquetés isrcidx et itgtidx, et stocke les partiels résultants avec l'étiquette entière istoreidx. lorisplay restitue les partiels stockés avec l'étiquette ireadidx. Les étiquettes ne sont utilisées qu'à l'initialisation de la note, et l'on peut les réutiliser sans coût supplémentaire ou bénéfice en efficacité, et sans introduire d'interaction entre les instruments ou leurs instances.
lorismorph génère un ensemble de partiels à largeur de bande améliorée en effectuant le morphing de deux ensembles de partiels stockés, les partiels sources et cibles, qui peuvent avoir été importés au moyen de lorisread, ou générés par un autre générateur unitaire, y compris une autre instance de lorismorph. Le morphing est réalisé en interpolant les paramètres (étiquetés) des partiels correspondants dans les deux sources sonores. Le morphing sonore est décrit par trois enveloppes de morphing au taux de contrôle. kfreqmorphenv décrit l'interpolation des valeurs de fréquence des partiels dans les deux sources sonores. Lorsque kfreqmorphenv vaut 0, les fréquences des partiels sont obtenues à partir des partiels stockés à isrcidx. Lorsque kfreqmorphenv vaut 1, les fréquences des partiels sont obtenues à partir des partiels à itgtidx. Lorsque kfreqmorphenv est compris entre 0 et 1, les fréquences des partiels sont interpolées entre les partiels sources et cibles correspondants. Les interpolations de l'amplitude et de la largeur de bande (caractère bruiteux) des partiels sont décrites de manière similaire par kampmorphenv et par kbwmorphenv.
Voici un exemple de l'opcode lorismorph. Il utilise le fichier lorismorph.csd.
Exemple 1348. Exemple de l'opcode lorismorph.
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 lorismorph.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> sr = 44100 ksmps = 32 nchnls = 2 0dbfs = 1 ; clarinet.sdif and meow.sdif can be found in /manual/examples ; Morph the partials in meow.sdif into the partials in clarinet.sdif over the duration of ; the sustained portion of the two tones (from .2 to 2.0 seconds in the meow, and from ; .5 to 2.1 seconds in the clarinet). The onset and decay portions in the morphed sound are ; specified by parameters p4 and p5, respectively. The morphing time is the time between the ; onset and the decay. The meow partials are shfited in pitch to match the pitch of the clarinet ; tone (D above middle C). instr 1 ionset = p4 idecay = p5 itmorph = p3 - (ionset + idecay) ipshift = cpspch(8.02)/cpspch(8.08) ktme linseg 0, ionset, .2, itmorph, 2.0, idecay, 2.1 ; meow time function, morph from .2 to 2.0 seconds ktcl linseg 0, ionset, .5, itmorph, 2.1, idecay, 2.3 ; clarinet time function, morph from .5 to 2.1 seconds kmurph linseg 0, ionset, 0, itmorph, 1, idecay, 1 lorisread ktme, "meow.sdif", 1, ipshift, 2, 1, .001 lorisread ktcl, "clarinet.sdif", 2, 1, 1, 1, .001 lorismorph 1, 2, 3, kmurph, kmurph, kmurph asig lorisplay 3, 1, 1, 1 outs asig, asig endin ; Morph the partials in clarinet.sdif into the partials in meow.sdif. The start and end times ; for the morph are specified by parameters p4 and p5, respectively. The morph occurs over the ; second of four pitches in each of the sounds, from .75 to 1.2 seconds in the flutter-tongued ; clarinet tone, and from 1.7 to 2.2 seconds in the cat's meow. Different morphing functions are ; used for the frequency and amplitude envelopes, so that the partial amplitudes make a faster ; transition from clarinet to cat than the frequencies. (The bandwidth envelopes use the same ; morphing function as the amplitudes.) instr 2 ionset = p4 imorph = p5 - p4 irelease = p3 - p5 ktclar 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 ktclar, "clarinet.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 outs asig, asig endin </CsInstruments> <CsScore> ; strt dur onset decay i 1 0 3 .25 .15 i 1 + 1 .10 .10 i 1 + 6 1. 1. ; strt dur morph_start morph_end i 2 9 4 .75 2.75 e </CsScore> </CsoundSynthesizer>
Cette implémentation des générateurs unitaires Loris a été écrite par Kelly Fitz (loris@cerlsoundgroup.org). Elle est modèlisée sur un prototype d'implémentation du générateur unitaire lorisplay écrit par Corbin Champion, et basé sur la méthode de synthèse additive à largeur de bande améliorée et sur les algorithmes de métamorphose sonore implémentés dans la bibliothèque Loris pour la modélisation et la manipulation du son. Les opcodes ont été ensuite adaptés sous la forme d'un greffon de Csound 5 par Michael Gogins.