; 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
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
; 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