File: StochasticGrains2

package info (click to toggle)
cecilia 2.0.5-2.2
  • links: PTS
  • area: main
  • in suites: squeeze, wheezy
  • size: 4,452 kB
  • ctags: 833
  • sloc: tcl: 9,786; sh: 1,097; makefile: 69; csh: 13
file content (107 lines) | stat: -rwxr-xr-x 3,394 bytes parent folder | download | duplicates (3)
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
<info>
Stochastic Granular Synthesizer with fm grains
Stereo only!

Mathieu Bezkorowajny &  Jean Piche, 1996-97
</info>
<tk_interface>
cslider no_of_grains  -label "Number of grains" -ra i  -res 1 -min 2 -max 25 -init 4
cslider duree_totale -label "Total Duration" -ra i -unit sec.   -res .01 -min 0.1 -max 240 -init 30
cslider seed  -label  "Random Seed"  -ra i -res  .001 -min 0 -max 1 -init .51 

cpopup waveform -label "Waveform"  -val "sine grapher"
cgraph 	waveshape  -label "Waveshape"   -min -1 -max 1 -init 0 -gen 2
cgraph 	enveloppe  -label  "Envelope Shape"  -rel  log  -min .0001 -max 1 -init .5 -gen 23 \
				-func "0 .0001 .001 1 .1 .7 .7 .6 1 .0001"
cgraph 	indexenveloppe   -label "Index Envelope\nShape" -rel log  -min .0001 -max 1 -init .5 -gen 27 \
				-func "0 .6 .1 .051 1 .0001"

csepar
cgraph 	freqmax -label "Maximum Frequency" -unit Hz -rel log -min 20 -max 20000 -init 10000 
cgraph 	freqmin  -label "Minimum Frequency"  -unit Hz -rel log -min 20 -max 20000 -init 100 
csepar
cgraph 	speedmax   -label "Maximum Speed" -unit Hz -rel log -min .01  -max 100  -init 10 
cgraph 	speedmin   -label "Minimum Speed" -unit Hz -rel log  -min .01  -max 100 -init  1 
csepar
cgraph        intensitymax   -label "Maximum Intensity"   -un db -min  30 -max 90  -init 80.0
cgraph        intensitymin   -label "Minimum Intensity" -un db -min 30 -max 90 -init  50.0
csepar
cgraph  	spatial  -label "Panning" -min 0 -max 1 -init 1 
csepar
cgraph       	density	 -label "Density"  -min 0 -max 1 -init .5 
csepar
cgraph       	carrier	 -label "Carrier Frequency\nMultiplier" -rel log -min 0.03 -max 10 -init 1.0 
cgraph       	mod	 -label "Modulator Frequency\nMultiplier" -rel log -min 0.03 -max 10 -init 1.05
cgraph       	maxindex	 -label "Maximum Index" -rel log -min 5 -max 100 -init 15
</tk_interface>
<mono>

</mono>
<stereo>
instr  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
   
kidur init .1
iseed	= [seed]*p1
kpdur 	rand 1, iseed*.243 
kpfreq 	rand 1, iseed*.734 
kpint 	 exprand 4
kppan 	rand 1, iseed*.634 
kpjou 	rand 1, iseed*.824 
kpphs 	rand 1, iseed*.951

kgfs 	=	gkfreqmax 
kgfi 	=	gkfreqmin 
kgvs 	=	gkspeedmax 
kgvi 	=	gkspeedmin
kgis 	=	ampdb(gkintensitymax)
kgii 	=	ampdb(gkintensitymin)
kgps 	=	gkspatial  
kgjs 	=	gkdensity 
kidur	= 	int( kr/ exp( log(kgvi) + (abs(kpdur) * (log(kgvs)-log(kgvi)))))/kr


chicoutimi:
	idur 		=  	i(kidur)+1/kr
	ifreq		=	exp(log(i(kgfi))+abs(i(kpfreq))*(log(i(kgfs))-log(i(kgfi))))
	ipan		=	i(kppan)
	ijou		=	abs(i(kpjou))
	idens		=	i(kgjs)
	iphs		=	abs(i(kpphs))
	ispa		=	i(kgps)
	iinten 		= 	exp(log(i(kgii))+abs(i(kpint/6))*(log(i(kgis))-log(i(kgii))))
	iamp 		=	(ijou < idens?iinten:0)
	itabb		=	i(gkwaveform)+1
	icar		=	i(gkcarrier)
	imod		=	i(gkmod)
	timout 0, idur, montreal
		reinit chicoutimi

montreal:
aline	line 0.0001, idur, 1
klin	oscil gkmaxindex, 1/idur, 27

  asog 		foscil		iamp, ifreq, icar, imod, klin, itabb, iphs
;asag 		foscil		iamp, ifreq*1.01, icar*1.01, imod*.99, klin, itabb, iphs
aenv		table		aline, 23, 1

outs 		aenv*(asog)*((1+ipan*ispa)), aenv*(asog) *((1-ipan*ispa))  

	endin
</stereo>
<quad>

</quad>
<score>
#tcl
proc makeScore {} {
	global value

	set thescore " f1 0 8192 10 1 0 0\n"
	for {set num 1} {$num <= $value(no_of_grains)} {incr num 1} {
		    append thescore "i$num 0.002 $value(duree_totale)\n"
	}
	return $thescore
}

makeScore
</score>