|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- main.csd
- Pete Shadbolt.2014
- Based on code by Iain McCurdy, 2006
- ksmps MAY NEED TO BE LOW (AND kr THEREFORE HIGH) WHEN WORKING WITH SHORT DELAY TIMES DEFINED INITIALLY AT KRATE
- TODO: implement octave down/up (like old delay pedal), key control, panic button
-
- <CsoundSynthesizer>
-
- <CsOptions>
- -iadc -odac -dm0
- </CsOptions>
-
- <CsInstruments>
-
- 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
- gkporttime = 0.3; portamento time
-
- ;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", -1, 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
-
- ; Sense keyboard
- kKey FLkeyIn
- kChanged changed kKey
- printk2 kKey
- ;if kKey=112&&kChanged=1 then
- ;printf_i "awd"
- ;FLsetVal_i 0.0, gkfeedamt
- ;endif
-
- 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
-
- </CsInstruments>
-
- <CsScore>
- i 2 0 -1 ;Instrument 2 plays a held note
-
- f 0 3600 ;Keep performance going
- </CsScore>
-
- </CsoundSynthesizer>
|