Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/OurMusicMIDI.csd
diff options
context:
space:
mode:
Diffstat (limited to 'OurMusicMIDI.csd')
-rw-r--r--OurMusicMIDI.csd160
1 files changed, 160 insertions, 0 deletions
diff --git a/OurMusicMIDI.csd b/OurMusicMIDI.csd
new file mode 100644
index 0000000..d1b311e
--- /dev/null
+++ b/OurMusicMIDI.csd
@@ -0,0 +1,160 @@
+; OurMusic (2009) for Sugar and Sugar-on-a-Stick - by Arthur B. Hunkins
+; OurMusicMIDI.csd - requires MIDI device with 8 - 11 pots/sliders,
+; alternatively, 8 - 10 pots/sliders with 10 MIDI notes
+
+<CsoundSynthesizer>
+<CsOptions>
+
+-odac -+rtaudio=alsa -+rtmidi=alsa -M hw:1,0 -m0d --expression-opt -b128 -B2048 -+raw_controller_mode=1
+
+</CsOptions>
+<CsInstruments>
+
+sr = 32000
+ksmps = 100
+nchnls = 2
+
+ massign 0, 0
+ seed 0
+
+gichan chnexport "chan", 1
+gictrl1 chnexport "ctrl", 1
+giharm chnexport "harm", 1
+gihctrl chnexport "harctrl", 1
+gihmidi chnexport "harmidi", 1
+gipan chnexport "pan", 1
+gipctrl chnexport "panctrl", 1
+gidepth chnexport "depth", 1
+gidctrl chnexport "depctrl", 1
+
+ga1 init 0
+ga2 init 0
+gkharm init 1
+
+ instr 1, 2, 3, 4, 5, 6, 7, 8
+
+ if (gidepth == 0) || (p1 > 1) goto skip
+ event_i "i", 9, 0, 3600
+skip:
+ if (giharm != 3) || (p1 > 1) || (gichan == 0) goto skip2
+kstat,kchan,kd1,kd2 midiin
+ if kchan != gichan goto skip2
+ if ((kstat != 144) || (kd2 == 0)) goto skip2
+ if ((kd1 < gihmidi) || (kd1 > (gihmidi + 9))) goto skip2
+gkharm = kd1 - gihmidi + 1
+skip2:
+kpan init 0
+kold init 0
+indx = p1 - 1
+ictrl = gictrl1 + indx
+kamp2 ctrl7 (gichan > 0? gichan: p1), (gichan > 0? ictrl: 7), 0, 1
+kamp table kamp2 * 512, 1
+kamp = (kamp2 == 0? 0: kamp)
+kamp port kamp, .01
+ktrig trigger kamp2, .01, 0
+ if ktrig == 0 goto skip3
+ if giharm == 1 goto back
+ if giharm == 2 goto skip4
+ if giharm == 3 goto skip5
+imult tab_i indx, 3
+kmult = imult
+ kgoto skip6
+back:
+kmult random 1, 10.99
+kmult = (p1 == 1? 1: int(kmult))
+ if (kmult == kold) && (p1 > 1) goto back
+kold = kmult
+ kgoto skip6
+skip4:
+kmult ctrl7 (gichan > 0? gichan: 9), (gichan > 0? gihctrl: 7), 1, 10.99
+kmult = (p1 == 1? 1: int(kmult))
+ kgoto skip6
+skip5:
+kmult = (p1 == 1? 1: gkharm)
+gkharm = kmult
+skip6:
+ if gipan == 1 goto skip7
+kpan rnd31 .5, .7
+kpan = (p1 > 1? kpan: 0)
+ kgoto skip8
+skip7:
+gkpan ctrl7 (gichan > 0? gichan: 10), (gichan > 0? gipctrl: 7), -.5, .5
+ if p1 > 1 goto skip9
+kpan = 0
+gkpan2 = gkpan
+gkflag = 1
+ kgoto skip8
+skip9:
+kpan = (((gkpan2 == gkpan) && (gkflag == 1))? 0: gkpan)
+gkpan2 = gkpan
+gkflag = (kpan == 0? 1: 0)
+skip8:
+ if gidepth == 0 goto skip3
+ if gidepth == 1 goto skip10
+gkdepth ctrl7 (gichan > 0? gichan: 11), (gichan > 0? gidctrl: 7), 0, .9
+ if p1 > 1 goto skip11
+kdepth = 0
+gkdep2 = gkdepth
+gkflag2 = 1
+ kgoto skip3
+skip11:
+kdepth = (((gkdep2 == gkdepth) && (gkflag2 == 1))? 0: gkdepth)
+gkdep2 = gkdepth
+gkflag2 = (kdepth == 0? 1: 0)
+ kgoto skip3
+skip10:
+kdepth unirand .9
+kdepth = (p1 > 1? kdepth: 0)
+skip3:
+kmod2 rspline 1.4, 2, 1.5, 2.5
+kmod rspline .85, 1, 20, 25
+kfreq jspline .25, 1, 2
+kpw jspline p7, 1, 2
+ if (gidepth == 0) || (p1 == 1) goto skip12
+kamp = kamp * (1 - (kdepth * .3))
+skip12:
+aout vco2 p4 * kamp * kmod * kmod2, (kmult * 55) + (p1 > 1? kfreq: 0), p5, p6 + kpw
+kamp2 port kamp2, .01
+a1,a2,a3,a4 pan aout, .5 + (kamp2 * kpan), 1, 2, 1
+ if (gidepth == 0) || (p1 == 1) goto skip13
+ga1 = ga1 + (a1 * kdepth)
+ga2 = ga2 + (a2 * kdepth)
+a1a = a1 * (1 - kdepth)
+a2a = a2 * (1 - kdepth)
+ outs a1a - (.02 * a2a), a2a - (.02 * a1a)
+ goto fin
+skip13:
+ outs a1 - (.02 * a2), a2 - (.02 * a1)
+
+fin: endin
+
+ instr 9
+
+aL, aR reverbsc ga1, ga2, .95, 800, sr, .25
+ outs aL * .4, aR * .4
+
+ga1 = 0
+ga2 = 0
+
+ endin
+
+</CsInstruments>
+
+<CsScore>
+
+f1 0 512 16 1 511 2.2 1000
+f2 0 8193 7 0 8193 1
+f3 0 8 -2 1 2 3 5 7 8 9 10
+i1 0 3600 6000 4 .5 .015
+i2 0 3600 800 2 .6 .02
+i3 0 3600 1400 2 .7 .02
+i4 0 3600 1400 2 .8 .02
+i5 0 3600 3100 4 .6 .028
+i6 0 3600 3500 4 .7 .028
+i7 0 3600 2800 4 .8 .028
+i8 0 3600 2400 4 .9 .028
+
+e
+
+</CsScore>
+</CsoundSynthesizer>