-iadc -odac -dm0
; CSound parameters
sr = 44100 ; Sample rate
ksmps = 20 ; Number of audio samples in each control cycle
nchnls = 2 ; Number of channels (2=stereo)
0dbfs = 1 ; Maximum amplitude
; Delay parameters
gkporttime init 0.3 ; Portamento time
;gkdlt init 5 ; Max delay
;gkmix init .5 ; Dry/wet
;gkfeedamt init .95 ; Feedback ratio
;gkamp init .7 ; Output amplitude rescaling
;gkingain init .5 ; Input gain
;gkOnOff init 1 ; Input on off
;FLTK GUI interface
FLcolor 200, 200, 255, 0, 0, 0
FLpanel "M I L C H L O D E", 500, 300, 0, 0, 0, 1
gkOnOff,ihOnOff FLbutton "Input On/Off", 1, 0, 22, 180, 25, 5, 5, 0, 1, 0, -1
; Sliders
gkdlt,ihdlt FLslider "Delay Time (sec)", .001, 5, 0, 23, -1, 490, 25, 5, 50
gkmix,ihmix FLslider "Dry/Wet Mix", 0, 1, 0, 23, -1, 490, 25, 5, 100
gkfeedamt,ihfeedamt FLslider "Feedback Ratio", 0, 1, 0, 23, -1, 490, 25, 5, 150
gkamp,ihamp FLslider "Output Amplitude Rescaling", 0, 1, 0, 23, -1, 490, 25, 5, 200
gkingain,ihingain FLslider "Input Gain", 0, 1, 0, 23, -1, 140, 20, 350, 5
ih FLbox "Keys: ", 1, 5, 14, 490, 20, 0, 250
;Set defaults
FLsetVal_i 1, ihOnOff
FLsetVal_i .5, ihingain
FLsetVal_i 4, ihdlt
FLsetVal_i 0.5, ihmix
FLsetVal_i 0.95, ihfeedamt
FLsetVal_i .7, ihamp
FLpanel_end ;End of GUI
FLrun ;Run the FLTK thread
; Instr 1 is the source
instr 1
; Turn off with the switch
if gkOnOff=0 then
turnoff
endif
; Get input from mic/line
asigL, asigR ins
gasigL = asigL * gkingain
gasigR = asigR * gkingain
endin
; Instr 2 is the delay line
instr 2
kporttime linseg 0, .001, 1, 1, 1 ; A short envelope
kporttime = kporttime * gkporttime ; TODO: remove this
kdlt portk gkdlt, kporttime ; Apply portamento
adlt interp kdlt ; Interpolate
;Left channel
abufferL delayr 5 ;Buffer
adelsigL deltap3 adlt ;Tap
delayw gasigL + (adelsigL * gkfeedamt) ;Feedback
;Right channel
abufferR delayr 5 ;Buffer
adelsigR deltap3 adlt ;Tap
delayw gasigR + (adelsigR * gkfeedamt) ;Feedback
aL ntrpol gasigL, adelsigL, gkmix
aR ntrpol gasigR, adelsigR, gkmix
outs aL * gkamp, aR * gkamp ; Mix wet/dry
clear gasigL, gasigR ; Clear global audio sends
endin
i 2 0 -1 ;Instrument 2 plays a held note
f 0 3600 ;Keep performance going