; Select audio/midi flags here according to platform
-odac ;;;realtime audio out
;-iadc ;;;uncomment -iadc if RT audio input is needed too
; For Non-realtime ouput leave only the line below:
; -o i_statement.wav -W ;;; for file output any platform
sr = 44100
ksmps = 32
nchnls = 2
0dbfs = 1
instr 10
icps init cpspch(p4) ; Get target pitch from score event
iportime init abs(p3)/7 ; Portamento time dep on note length
iamp0 init p5 ; Set default amps
iamp1 init p5
iamp2 init p5
itie tival ; Check if this note is tied,
if itie == 1 igoto nofadein ; if not fade in
iamp0 init 0
nofadein:
if p3 < 0 igoto nofadeout ; Check if this note is held, if not fade out
iamp2 init 0
nofadeout:
; Now do amp from the set values:
kamp linseg iamp0, .03, iamp1, abs(p3)-.03, iamp2
; Skip rest of initialization on tied note:
tigoto tieskip
kcps init icps ; Init pitch for untied note
kcps port icps, iportime, icps ; Drift towards target pitch
kpw oscil .4, rnd(1), 1, rnd(.7) ; A simple triangle-saw oscil
ar vco kamp, kcps, 3, kpw+.5, 1, 1/icps
; (Used in testing - one may set ipch to cpspch(p4+2)
; and view output spectrum)
; ar oscil kamp, kcps, 1
outs ar, ar
tieskip: ; Skip some initialization on tied note
endin
f1 0 8192 10 1 ; Sine
i10.1 0 -1 7.00 .15
i10.2 0 -1 7.04
i10.3 0 -1 7.07
i10.1 1 -1 8.00
i10.2 1 -1 8.04
i10.3 1 -1 8.07
i10.1 2 1 7.11
i10.2 2 1 8.04
i10.3 2 1 8.07
e