1; CHIMEPAD (2012) for realtime Android Csound - by Arthur B. Hunkins
2;   A custom version of CHIMEPLAY for chime and other natural sound samples
3; Requires Android OS 2.3 or higher and CsoundApp-5.18.apk (or higher) installed
4    Downloadable from http://sourceforge.net/projects/csound/files/csound5/Android/
5    Run CSD Player and Browse to this file; select one of the two sets before starting.
6; 0-1 background loop, 1-5 single-shot samples per sound set
7;   Only WAV files are permitted.
8; Each default sound set includes 5 chimes and an ambient loop.
9;   Background loop must be named 0.wav (set 1) or 10.wav (set 2),
10;   and samples labeled 1.wav and up (set 1), or 11.wav and up (set 2).
11;   All soundfiles must be in the same folder as this file (suggestion: Music folder).
12; Users are encouraged to create their own sound sets from natural sources.
13; For more info, including a sample performance outline, see: ChimePadReadMe.txt
14
15<CsoundSynthesizer>
16<CsOptions>
17
18-odac -dm3 --expression-opt --sample-accurate
19
20</CsOptions>
21<CsInstruments>
22
23
24sr      = 8000
25ksmps   = 100
26nchnls  = 2
27
28gkamp   init   1
29gkpan   init   .5
30
31	instr 1
32
33kflag   init   0
34kflag1  init   0
35kflag2  init   0
36kflag3  init   0
37kflag4  init   0
38kflag5  init   0
39ktime1  init   0
40ktime2  init   0
41ktime3  init   0
42ktime4  init   0
43ktime5  init   0
44ktime   times
45iset    chnget "slider1"
46        if (iset > .75) || (iset < .25) then
47gidecay =         2
48        else
49gidecay =         .025
50        endif
51        if iset > .5 then
52Sfile0  =         "10.wav"
53ins0    =         12
54Sfile1  =         "11.wav"
55ins1    =         13
56Sfile2  =         "12.wav"
57ins2    =         14
58Sfile3  =         "13.wav"
59ins3    =         15
60Sfile4  =         "14.wav"
61ins4    =         16
62Sfile5  =         "15.wav"
63ins5    =         17
64        else
65Sfile0  =         "0.wav"
66ins0    =         2
67Sfile1  =         "1.wav"
68ins1    =         3
69Sfile2  =         "2.wav"
70ins2    =         4
71Sfile3  =         "3.wav"
72ins3    =         5
73Sfile4  =         "4.wav"
74ins4    =         6
75Sfile5  =         "5.wav"
76ins5    =         7
77        endif
78i0      filevalid Sfile0
79i1      filevalid Sfile1
80        if i1 == 1 then
81i1a     filelen   Sfile1
82        endif
83i2      filevalid Sfile2
84        if i2 == 1 then
85i2a     filelen   Sfile2
86        endif
87i3      filevalid Sfile3
88        if i3 == 1 then
89i3a     filelen   Sfile3
90        endif
91i4      filevalid Sfile4
92        if i4 == 1 then
93i4a     filelen   Sfile4
94        endif
95i5      filevalid Sfile5
96        if i5 == 1 then
97i5a     filelen   Sfile5
98        endif
99        if (i0 == 0) || (kflag == 1) goto skip
100        event  "i", ins0, 0, -1
101kflag   =       1
102skip:
103kamp    chnget  "trackpad.y"
104gkamp   =       (kamp > 0? kamp: gkamp)
105kpan    chnget  "trackpad.x"
106gkpan   =       (kpan > 0? kpan: gkpan)
107kfreq   chnget  "slider2"
108        if kfreq < .05 then
109kflag1  =       0
110kflag2  =       0
111kflag3  =       0
112kflag4  =       0
113kflag5  =       0
114        endif
115        if i1 > 0 then
116k1      chnget  "butt1"
117k1a     trigger k1, .5, 0
118        if k1a > 0 then
119        event   "i", ins1, 0, i1a
120        kgoto end
121        endif
122        if kfreq >= .05 then
123        if kflag1 == 0 then
124krand1  random  2, 2 + (kfreq * 18)
125ktime1  =       ktime + krand1
126kflag1  =       1
127        kgoto end
128        endif
129        if ktime >= ktime1 then
130        event   "i", ins1, 0, i1a
131kflag1  =       0
132        kgoto end
133        endif
134        endif
135        endif
136        if i2 > 0 then
137k2      chnget  "butt2"
138k2a     trigger k2, .5, 0
139        if k2a > 0 then
140        event   "i", ins2, 0, i2a
141        kgoto end
142        endif
143        if kfreq >= .05 then
144        if kflag2 == 0 then
145krand2  random  2, 2 + (kfreq * 18)
146ktime2  =       ktime + krand2
147kflag2  =       1
148        kgoto end
149        endif
150        if ktime >= ktime2 then
151        event   "i", ins2, 0, i2a
152kflag2  =       0
153        kgoto end
154        endif
155        endif
156        endif
157        if i3 > 0 then
158k3      chnget  "butt3"
159k3a     trigger k3, .5, 0
160        if k3a > 0 then
161        event   "i", ins3, 0, i3a
162        kgoto end
163        endif
164        if kfreq >= .05 then
165        if kflag3 == 0 then
166krand3  random  2, 2 + (kfreq * 18)
167ktime3  =       ktime + krand3
168kflag3  =       1
169        kgoto end
170        endif
171        if ktime >= ktime3 then
172        event   "i", ins3, 0, i3a
173kflag3  =       0
174        kgoto end
175        endif
176        endif
177        endif
178        if i4 > 0 then
179k4      chnget  "butt4"
180k4a     trigger k4, .5, 0
181        if k4a > 0 then
182        event   "i", ins4, 0, i4a
183        kgoto end
184        endif
185        if kfreq >= .05 then
186        if kflag4 == 0 then
187krand4  random  2, 2 + (kfreq * 18)
188ktime4  =       ktime + krand4
189kflag4  =       1
190        kgoto end
191        endif
192        if ktime >= ktime4 then
193        event   "i", ins4, 0, i4a
194kflag4  =       0
195        kgoto end
196        endif
197        endif
198        endif
199        if i5 > 0 then
200k5      chnget  "butt5"
201k5a     trigger k5, .5, 0
202        if k5a > 0 then
203        event   "i", ins5, 0, i5a
204        kgoto end
205        endif
206        if kfreq >= .05 then
207        if kflag5 == 0 then
208krand5  random  2, 2 + (kfreq * 18)
209ktime5  =       ktime + krand5
210kflag5  =       1
211        kgoto end
212        endif
213        if ktime >= ktime5 then
214        event   "i", ins5, 0, i5a
215kflag5  =       0
216        kgoto end
217        endif
218        endif
219        endif
220
221end:    endin
222
223        instr 2, 12
224
225kamp    init   0
226        if p1 == 2 then
227Sfile   =       "0.wav"
228        else
229Sfile   =       "10.wav"
230        endif
231ichans  filenchnls Sfile
232kamp	chnget "slider5"
233skip4:
234        if ichans == 2 goto skip5
235aout    diskin2 Sfile, 1, 0, 1
236        outs    aout * kamp * 4, aout * kamp * 4
237        goto end
238skip5:
239a1, a2  diskin2 Sfile, 1, 0, 1
240        outs    a1 * kamp * 4, a2 * kamp * 4
241
242end:    endin
243
244        instr 3, 4, 5, 6, 7, 13, 14, 15, 16, 17
245
246iamp    =       i(gkamp)
247iramp   chnget  "slider4"
248iramp2  =       1 - iramp
249iramp2  random  iramp2, 1
250iamp    =       (iramp < .05? iamp: iramp2)
251ipan    =       i(gkpan)
252irpan   chnget  "slider3"
253irpan2  =       irpan * .5
254irpan2  random  -irpan2, irpan2
255ipan    =       (irpan < .05? ipan: .5 + irpan2)
256        if p1 == 3 then
257Sfile   =       "1.wav"
258        elseif p1 == 4 then
259Sfile   =       "2.wav"
260        elseif p1 == 5 then
261Sfile   =       "3.wav"
262        elseif p1 == 6 then
263Sfile   =       "4.wav"
264        elseif p1 == 7 then
265Sfile   =       "5.wav"
266        elseif p1 == 13 then
267Sfile   =       "11.wav"
268        elseif p1 == 14 then
269Sfile   =       "12.wav"
270        elseif p1 == 15 then
271Sfile   =       "13.wav"
272        elseif p1 == 16 then
273Sfile   =       "14.wav"
274        else
275Sfile   =       "15.wav"
276        endif
277ichans  filenchnls Sfile
278kamp    linseg  0, .025, iamp, p3 - .025 - gidecay, iamp, gidecay, 0
279        if ichans == 2 goto skip
280aout    diskin2 Sfile, 1
281a1,a2,a3,a4 pan aout, ipan, 1, 1, 1
282        outs    a1 * kamp, a2 * kamp
283        goto end
284skip:
285aout,aout2 diskin2 Sfile, 1
286a1,a2,a3,a4 pan aout, ipan, 1, 1, 1
287a5,a6,a7,a8 pan aout2, ipan, 1, 1, 1
288        outs    (a1 + a5) * kamp, (a2 + a6) * kamp
289
290end:    endin
291
292</CsInstruments>
293
294<CsScore>
295
296f1 0 8193 9 .25 1 0
297i1 0 36000
298
299e
300
301</CsScore>
302</CsoundSynthesizer>
303