Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/ChimePlayAuto.csd
blob: 2553e08f3aa6c9c22ac0bf03b0dceacb18665bf0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
; CHIMEPLAYAUTO (2012) for realtime Csound5 - by Arthur B. Hunkins
;   A custom autoplay version of SAMPLEPLAY for chime and bell samples (up to 8)
; ChimePlayAuto.csd - no MIDI device required
; 0-1 background loop, 1-8 single-shot samples of minimum 3-second duration
;   Files may be mono or stereo, must have same Sample Rate and agree with this SR.
; Choice of two chime sets; both default sets include 6 chimes and an ambient loop. 
;   Background loop must be named soundin.0 (set 1) or soundin.10 (set 2),
;   and samples labeled soundin.1 and up (set 1), or soundin.11 and up (set 2).
;   They must be placed 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 (or 32000 if necessary) when 44100 gives no audio.
; (Necessary for Intel Classmate PC and some other systems.)
ksmps   = 100
nchnls  = 2

        seed    0
gifirst init    1
gilen   init    0

gibackgnd chnexport "Loop", 1
gibgmax   chnexport "Bgmax", 1
gistfade  chnexport "Stfade", 1
gisamps   chnexport "Samps", 1
gisset    chnexport "Sset", 1
girndsamp chnexport "Rndsamp", 1
girndrang chnexport "Rndrange", 1
gisampdur chnexport "Sampdur", 1
gipanpos  chnexport "Panpos", 1
gitotdur  chnexport "Totaldur", 1

gimindur1 chnexport "Min1", 1
gimaxdur1 chnexport "Max1", 1
gimindur2 chnexport "Min2", 1
gimaxdur2 chnexport "Max2", 1
gimindur3 chnexport "Min3", 1
gimaxdur3 chnexport "Max3", 1
gimindur4 chnexport "Min4", 1
gimaxdur4 chnexport "Max4", 1
gimindur5 chnexport "Min5", 1
gimaxdur5 chnexport "Max5", 1
gimindur6 chnexport "Min6", 1
gimaxdur6 chnexport "Max6", 1
gimindur7 chnexport "Min7", 1
gimaxdur7 chnexport "Max7", 1
gimindur8 chnexport "Min8", 1
gimaxdur8 chnexport "Max8", 1

	instr 1

kflag   init   0
kflag1  init   0
kflag2  init   0
kflag3  init   0
kflag4  init   0
kflag5  init   0
kflag6  init   0
kflag7  init   0
kflag8  init   0
ktime1  init   0
ktime2  init   0
ktime3  init   0
ktime4  init   0
ktime5  init   0
ktime6  init   0
ktime7  init   0
ktime8  init   0
kinst3  init   3
kinst4  init   4
kinst5  init   5
kinst6  init   6
kinst7  init   7
kinst8  init   8
kinst9  init   9
kinst10 init   10
gidur   =      (gitotdur == 0? 30: gitotdur * 60)
gktime  times
ibase   =       (gisset == 0? 0: 10)
        if gisamps == 0 igoto skip
ilen3   filelen 1 + ibase       
gilen   =       ilen3
        if gisamps == 1 igoto skip
ilen4   filelen 2 + ibase
gilen   =       (ilen4 > gilen? ilen4: gilen)
        if gisamps == 2 igoto skip        
ilen5   filelen 3 + ibase
gilen   =       (ilen5 > gilen? ilen5: gilen)
        if gisamps == 3 igoto skip        
ilen6   filelen 4 + ibase
gilen   =       (ilen6 > gilen? ilen6: gilen)
        if gisamps == 4 igoto skip        
ilen7   filelen 5 + ibase
gilen   =       (ilen7 > gilen? ilen7: gilen)
        if gisamps == 5 igoto skip        
ilen8   filelen 6 + ibase
gilen   =       (ilen8 > gilen? ilen8: gilen)
        if gisamps == 6 igoto skip        
ilen9   filelen 7 + ibase
gilen   =       (ilen9 > gilen? ilen9: gilen)
        if gisamps == 7 igoto skip        
ilen10  filelen 8 + ibase
gilen   =       (ilen10 > gilen? ilen10: gilen)
skip:        
        if ((gibackgnd == 0) || (kflag == 1)) goto skip2
kinstr  =       (gisset == 0? 2: 12)
        event  "i", kinstr, 0, gidur        
kflag   =      1
skip2:
        if gisamps == 0 goto end
ifade   =      (gibackgnd == 0? 0: gistfade)
        if gktime > (gidur - ifade - gilen) goto end        
        if gktime < ifade goto end
        if kflag1 == 1 goto skip3
k1      random gimindur1, gimaxdur1
ktime1  =      gktime + k1
kflag1  =      1
skip3:
        if gktime < ktime1 goto skip4
klen    =      (gisampdur < 3? ilen3: gisampdur) 
        event  "i", kinst3, 0, klen
kflag1  =      0
skip4:        
        if gisamps < 2 goto end      
        if kflag2 == 1 goto skip5
k2      random gimindur2, gimaxdur2
ktime2  =      gktime + k2
kflag2  =      1
skip5:
        if gktime < ktime2 goto skip6
klen    =      (gisampdur < 3? ilen4: gisampdur) 
        event  "i", kinst4, 0, klen
kflag2  =      0
skip6:        
        if gisamps < 3 goto end      
        if kflag3 == 1 goto skip7
k3      random gimindur3, gimaxdur3
ktime3  =      gktime + k3
kflag3  =      1
skip7:
        if gktime < ktime3 goto skip8
klen    =      (gisampdur < 3? ilen5: gisampdur) 
        event  "i", kinst5, 0, klen
kflag3  =      0
skip8:        
        if gisamps < 4 goto end      
        if kflag4 == 1 goto skip9
k4      random gimindur4, gimaxdur4
ktime4  =      gktime + k4
kflag4  =      1
skip9:
        if gktime < ktime4 goto skip10
klen    =      (gisampdur < 3? ilen6: gisampdur) 
        event  "i", kinst6, 0, klen
kflag4  =      0
skip10:        
        if gisamps < 5 goto end      
        if kflag5 == 1 goto skip11
k5      random gimindur5, gimaxdur5
ktime5  =      gktime + k5
kflag5  =      1
skip11:
        if gktime < ktime5 goto skip12
klen    =      (gisampdur < 3? ilen7: gisampdur) 
        event  "i", kinst7, 0, klen
kflag5  =      0
skip12:        
        if gisamps < 6 goto end      
        if kflag6 == 1 goto skip13
k6      random gimindur6, gimaxdur6
ktime6  =      gktime + k6
kflag6  =      1
skip13:
        if gktime < ktime6 goto skip14
klen    =      (gisampdur < 3? ilen8: gisampdur) 
        event  "i", kinst8, 0, klen
kflag6  =      0
skip14:        
        if gisamps < 7 goto end      
        if kflag7 == 1 goto skip15
k7      random gimindur7, gimaxdur7
ktime7  =      gktime + k7
kflag7  =      1
skip15:
        if gktime < ktime7 goto skip16
klen    =      (gisampdur < 3? ilen9: gisampdur) 
        event  "i", kinst9, 0, klen
kflag7  =      0
skip16:        
        if gisamps < 8 goto end      
        if kflag8 == 1 goto skip17
k8      random gimindur8, gimaxdur8
ktime8  =      gktime + k8
kflag8  =      1
skip17:
        if gktime < ktime8 goto end
klen    =      (gisampdur < 3? ilen10: gisampdur) 
        event  "i", kinst10, 0, klen
kflag8  =      0

end:    endin

        instr 2, 12

isamp   =       p1 - 2
ichans  filenchnls isamp
ibgmax =       gibgmax * .1   
kamp    linseg  0, gistfade, ibgmax, gidur - (gistfade * 2), ibgmax, gistfade, 0 
        if ichans == 2 goto skip
aout    diskin2 isamp, 1, 0, 1
        outs    aout * kamp, aout * kamp
        goto end
skip:
a1, a2  diskin2 isamp, 1, 0, 1
        outs    a1 * kamp, a2 * kamp

end:    endin

        instr 3, 4, 5, 6, 7, 8, 9, 10

isamp   =       (gisset == 0? p1 - 2: p1 + 8)
ichans  filenchnls isamp
ilen    filelen isamp
ilen    =       ((gisampdur == 2) || (gisampdur > ilen)? ilen: gisampdur)
;gilen   =       (ilen > gilen? ilen: gilen)
        if girndsamp > 0 goto skip
iamp    =      1
        goto skip2
skip:
iamp    random girndrang * .01, 1
iamp    =      (gifirst == 1? 1: iamp)
gifirst =      0
skip2:        
        if gipanpos = 0 goto skip3
ipan    linrand 1
        goto skip4
skip3:
ipan    =       .5
skip4:
kamp    linseg  0, .025, iamp * .5, p3 - 2.025, iamp * .5, 2, 0
        if ichans == 2 goto skip5
aout    diskin2 isamp, 1
a1,a2,a3,a4 pan aout, ipan, 1, 1, 1
        outs    a1 * kamp, a2 * kamp
        goto end
skip5:
aout,aout2 diskin2 isamp, 1
a1,a2,a3,a4 pan aout, ipan, 1, 1, 1
a5,a6,a7,a8 pan aout2, ipan, 1, 1, 1
        outs    (a1 + a5) * kamp, (a2 + a6) * kamp
                
end:    endin
       
</CsInstruments>

<CsScore>

f1 0 8193 9 .25 1 0
i1 0 3600

e

</CsScore>
</CsoundSynthesizer>