diff options
Diffstat (limited to 'FileMixASC.csd')
-rwxr-xr-x | FileMixASC.csd | 360 |
1 files changed, 360 insertions, 0 deletions
diff --git a/FileMixASC.csd b/FileMixASC.csd new file mode 100755 index 0000000..3578936 --- /dev/null +++ b/FileMixASC.csd @@ -0,0 +1,360 @@ +; FileMixASC (2010) for realtime Csound5 - by Arthur B. Hunkins +; ASCII keyboard control (no MIDI); 1-4 files +; 1-4 controls/parameters per file (amp, band-pass peak freq, peak gain, speed/freq) +; Files may be mono or stereo; can have different sample rates, may be a variety of +; uncompressed types including WAV and AIFF; also Ogg/Vorbis (with Sugar 0.86/ +; Blueberry or later) but not MP3. +; They must be named soundin.1 (through soundin.4), and in the same folder as this file. + +<CsoundSynthesizer> +<CsOptions> + +-odac -+rtaudio=alsa -m0d --expression-opt -b128 -B2048 + +</CsOptions> +<CsInstruments> + +sr = 44100 +; change sample rate to 48000 if 44100 gives no audio. (Necessary for Intel Classmate PC.) +ksmps = 100 +nchnls = 2 + +gifile chnexport "files", 1 +gistrt chnexport "random", 1 +gidel chnexport "delay", 1 +gifade chnexport "fade", 1 +giloop chnexport "loop", 1 +giparm chnexport "parms", 1 +gkasc chnexport "ascii", 1 + + seed 0 +gkasc init 0 +gktime init .1 +gkamp2 init 0 +gkamp3 init 0 +gkamp4 init 0 +gkamp5 init 0 +gkpfrq2 init 256 +gkpfrq3 init 256 +gkpfrq4 init 256 +gkpfrq5 init 256 +gkpgan2 init .25 +gkpgan3 init .25 +gkpgan4 init .25 +gkpgan5 init .25 +gksped2 init 1 +gksped3 init 1 +gksped4 init 1 +gksped5 init 1 +gktrig init 0 + +gitemp ftgen 2, 0, 512, -5, 200, 512, sr / 13.2 + + instr 1 + + if (gidel == 0) || ((gkasc != 116) && (gkasc != 121)) goto skip +gktrig = 1 + kgoto end +skip: + if (gkasc != 96) goto skip1 +gktime = .1 + kgoto end +skip1: + if ((gkasc < 48) || (gkasc > 57)) goto skip2 +gktime = gkasc - 48 +gktime = (gkasc == 48? gktime + 10: gktime) + kgoto end +skip2: + if (gkasc != 103) && (gkasc != 104) goto skip3 +gkamp2 = 0 +gkamp3 = 0 +gkamp4 = 0 +gkamp5 = 0 + kgoto end +skip3: + if (gkasc != 118) && (gkasc != 98) && (gkasc != 110) goto skip4 +gktime = .1 +gkamp2 = 0 +gkamp3 = 0 +gkamp4 = 0 +gkamp5 = 0 +gkpfrq2 = 256 +gkpfrq3 = 256 +gkpfrq4 = 256 +gkpfrq5 = 256 +gkpgan2 = .25 +gkpgan3 = .25 +gkpgan4 = .25 +gkpgan5 = .25 +gksped2 = 1 +gksped3 = 1 +gksped4 = 1 +gksped5 = 1 + kgoto end +skip4: + if (gkasc != 97) goto skip5 +gkamp2 = gkamp2 + .5 +gkamp2 = (gkamp2 > 1? 1: gkamp2) + kgoto end +skip5: + if (gkasc != 115) goto skip6 +gkamp3 = gkamp3 + .5 +gkamp3 = (gkamp3 > 1? 1: gkamp3) + kgoto end +skip6: + if (gkasc != 100) goto skip7 +gkamp4 = gkamp4 + .5 +gkamp4 = (gkamp4 > 1? 1: gkamp4) + kgoto end +skip7: + if (gkasc != 102) goto skip8 +gkamp5 = gkamp5 + .5 +gkamp5 = (gkamp5 > 1? 1: gkamp5) + kgoto end +skip8: + if (gkasc != 65) goto skip9 +gkamp2 = gkamp2 - .5 +gkamp2 = (gkamp2 < 0? 0: gkamp2) + kgoto end +skip9: + if (gkasc != 83) goto skip10 +gkamp3 = gkamp3 - .5 +gkamp3 = (gkamp3 < 0? 0: gkamp3) + kgoto end +skip10: + if (gkasc != 68) goto skip11 +gkamp4 = gkamp4 - .5 +gkamp4 = (gkamp4 < 0? 0: gkamp4) + kgoto end +skip11: + if (gkasc != 70) goto skip12 +gkamp5 = gkamp5 - .5 +gkamp5 = (gkamp5 < 0? 0: gkamp5) + kgoto end +skip12: + if giparm == 1 goto end + if (gkasc != 113) goto skip13 +gkpfrq2 = gkpfrq2 + 128 +gkpfrq2 = (gkpfrq2 > 512? 512: gkpfrq2) + kgoto end +skip13: + if (gkasc != 119) goto skip14 +gkpfrq3 = gkpfrq3 + 128 +gkpfrq3 = (gkpfrq3 > 512? 512: gkpfrq3) + kgoto end +skip14: + if (gkasc != 101) goto skip15 +gkpfrq4 = gkpfrq4 + 128 +gkpfrq4 = (gkpfrq4 > 512? 512: gkpfrq4) + kgoto end +skip15: + if (gkasc != 114) goto skip16 +gkpfrq5 = gkpfrq5 + 128 +gkpfrq5 = (gkpfrq5 > 512? 512: gkpfrq5) + kgoto end +skip16: + if (gkasc != 81) goto skip17 +gkpfrq2 = gkpfrq2 - 128 +gkpfrq2 = (gkpfrq2 < 0? 0: gkpfrq2) + kgoto end +skip17: + if (gkasc != 87) goto skip18 +gkpfrq3 = gkpfrq3 - 128 +gkpfrq3 = (gkpfrq3 < 0? 0: gkpfrq3) + kgoto end +skip18: + if (gkasc != 69) goto skip19 +gkpfrq4 = gkpfrq4 - 128 +gkpfrq4 = (gkpfrq4 < 0? 0: gkpfrq4) + kgoto end +skip19: + if (gkasc != 82) goto skip20 +gkpfrq5 = gkpfrq5 - 128 +gkpfrq5 = (gkpfrq5 < 0? 0: gkpfrq5) + kgoto end +skip20: + if giparm == 2 goto end + if (gkasc != 106) goto skip21 +gkpgan2 = gkpgan2 + .225 +gkpgan2 = (gkpgan2 > .7? .7: gkpgan2) + kgoto end +skip21: + if (gkasc != 107) goto skip22 +gkpgan3 = gkpgan3 + .225 +gkpgan3 = (gkpgan3 > .7? .7: gkpgan3) + kgoto end +skip22: + if (gkasc != 108) goto skip23 +gkpgan4 = gkpgan4 + .225 +gkpgan4 = (gkpgan4 > .7? .7: gkpgan4) + kgoto end +skip23: + if (gkasc != 59) goto skip24 +gkpgan5 = gkpgan5 + .225 +gkpgan5 = (gkpgan5 > .7? .7: gkpgan5) + kgoto end +skip24: + if (gkasc != 74) goto skip25 +gkpgan2 = gkpgan2 - .225 +gkpgan2 = (gkpgan2 < .25? .25: gkpgan2) + kgoto end +skip25: + if (gkasc != 75) goto skip26 +gkpgan3 = gkpgan3 - .225 +gkpgan3 = (gkpgan3 < .25? .25: gkpgan3) + kgoto end +skip26: + if (gkasc != 76) goto skip27 +gkpgan4 = gkpgan4 - .225 +gkpgan4 = (gkpgan4 < .25? .25: gkpgan4) + kgoto end +skip27: + if (gkasc != 58) goto skip28 +gkpgan5 = gkpgan5 - .225 +gkpgan5 = (gkpgan5 < .25? .25: gkpgan5) + kgoto end +skip28: + if giparm == 3 goto end + if (gkasc != 117) goto skip29 +gksped2 = gksped2 + .05 +gksped2 = (gksped2 > 1.1? 1.1: gksped2) + goto end +skip29: + if (gkasc != 105) goto skip30 +gksped3 = gksped3 + .05 +gksped3 = (gksped3 > 1.1? 1.1: gksped3) + goto end +skip30: + if (gkasc != 111) goto skip31 +gksped4 = gksped4 + .05 +gksped4 = (gksped4 > 1.1? 1.1: gksped4) + goto end +skip31: + if (gkasc != 112) goto skip32 +gksped5 = gksped5 + .05 +gksped5 = (gksped5 > 1.1? 1.1: gksped5) + goto end +skip32: + if (gkasc != 85) goto skip33 +gksped2 = gksped2 - .05 +gksped2 = (gksped2 < .9? .9: gksped2) + goto end +skip33: + if (gkasc != 73) goto skip34 +gksped3 = gksped3 - .05 +gksped3 = (gksped3 < .9? .9: gksped3) + goto end +skip34: + if (gkasc != 79) goto skip35 +gksped4 = gksped4 - .05 +gksped4 = (gksped4 < .9? .9: gksped4) + goto end +skip35: + if (gkasc != 80) goto end +gksped5 = gksped5 - .05 +gksped5 = (gksped5 < .9? .9: gksped5) +end: + +gkasc = 0 + + endin + + instr 2, 3, 4, 5 + + if p1 > 2 igoto skip + if gifile == 1 igoto skip + event_i "i", 3, 0, 3600 + if gifile == 2 igoto skip + event_i "i", 4, 0, 3600 + if gifile == 3 igoto skip + event_i "i", 5, 0, 3600 +skip: + if p1 > 2 goto skip1 +k1 = gkamp2 +k2 = gkpfrq2 +k3 = gkpgan2 +k4 = gksped2 + goto skip2 +skip1: + if p1 > 3 goto skip3 +k1 = gkamp3 +k2 = gkpfrq3 +k3 = gkpgan3 +k4 = gksped3 + goto skip2 +skip3: + if p1 > 4 goto skip4 +k1 = gkamp4 +k2 = gkpfrq4 +k3 = gkpgan4 +k4 = gksped4 + goto skip2 +skip4: +k1 = gkamp5 +k2 = gkpfrq5 +k3 = gkpgan5 +k4 = gksped5 +skip2: +kamp lineto k1, gktime +kamp2 table kamp * 512, 1 +kamp2 port kamp2, .01 +ifile = p1 - 1 +ichans filenchnls ifile +ilen filelen ifile +ipeak filepeak ifile +imult = 8190 / ipeak +kamp2 = kamp2 * imult +irand unirand ilen * .75 + +istart = (gistrt == 0? irand: 0) + +kbase lineto k4, gktime +kbase = (giparm == 4? kbase: 1) + if (gidel == 1) && (gktrig == 0) goto end + +iloop = (giloop == 1? 0: 1) + + if ichans == 2 goto skip5 +a1 diskin2 ifile, kbase, istart, iloop + if giparm == 1 goto skip7 + goto skip6 +skip5: +a1, a2 diskin2 ifile, kbase, istart, iloop + if giparm == 1 goto skip7 +skip6: +kfreq lineto k2, gktime +kfreq table kfreq, 2 +kfreq port kfreq, .01 +kres lineto k3, gktime +kres = (giparm > 2? kres: .25) +a3,a4,a5 svfilter a1, kfreq, kres + if ichans == 1 goto skip7 +a6,a7,a8 svfilter a2, kfreq, kres +skip7: +ifade = gifade + if gifade > 0 goto skip8 +ifade tab_i gifade + 3, 3 +skip8: +kamp3 linseg (gidel == 0? 1: 0), ifade, 1, (iloop == 0? ilen - (ifade * 2) - istart: .01), 1, (iloop == 0? ifade: .01), (iloop == 0? 0: 1) +kamp2 = kamp2 * kamp3 + if giparm > 1 goto skip9 + outs a1 * kamp2, (ichans == 1? a1: a2) * kamp2 + goto end +skip9: + outs a5 * kamp2, (ichans == 1? a5: a8) * kamp2 +end: + endin + +</CsInstruments> + +<CsScore> + +f 1 0 512 16 0 512 .8 1 +f 3 0 4 -2 .01 .1 .5 .0001 +i 1 0 3600 +i 2 0 3600 + +e + +</CsScore> +</CsoundSynthesizer> |