Imran Rashid
4/30/01
Note that this is not a polished presentation at all -- this is just some notes of mine to help future developers.
My original idea was to take notes on all the things I did with CSOUND, to make it easier for other people to understand CSOUND. But I realized, there are really lots of good tutorials out there on the web. There isn't any point to me writing something which others have already done a very good job of. But I will point you to some good websites.
There is a very good tutorial at http://www.csounds.com/tutorials/toots/index.html.
Also, check out http://www.lakewoodsound.com/csound and http://www.csounds.com for more CSound related info.
Basically, all I did was work through the tutorials above. Then I made a bunch of different test files, playing around with all of the different parameters. Playing around with it is really the important part -- its amazing how changing a few of those numbers around creates completely different sounds.
Here's the orchestra file I used, though its not anything special, so I'd advise starting from scratch rather than using what I have as a base:
instr 1
k1 linen 1000, .02, p3, .08
a1 oscil k1, cpspch(p4), 1
out a1
endin
instr 2
a1 oscil 2500, cpspch(p4), 1
out a1
endin
instr 3
ifunc = 1 ; select the basic waveform
irel = 0.01 ; set vibrato release time
idel1 = p3 * .8 ; calculate initial delay (% of dur)
isus = p3 - (idel1 + irel) ; calculate remaining duration
iamp = 7000
iscale = iamp * .333 ;
inote = cpspch(p4) ; p4=freq
k3 linseg 0, idel1, 9, isus, 9, irel, 0 ;
k2 oscil k3, 6, 1 ;
k1 linen iscale, .03, p3, .07 ;
a3 oscil k1, inote*.999+k2, ifunc ;
a2 oscil k1, inote*1.001+k2, ifunc ;
a1 oscil k1, inote+k2, ifunc
out a1+a2+a3
endin
instr 4
ifunc = 2 ; select the basic waveform
irel = 0.01 ; set vibrato release time
idel1 = p3 * .8 ; calculate initial delay (% of dur)
isus = p3 - (idel1 + irel) ; calculate remaining duration
iamp = 2000
iscale = iamp * .333 ;
inote = cpspch(p4) ; p4=freq
k3 linseg 0, idel1, 9, isus, 9, irel, 0 ;
k2 oscil k3, 6, 1 ;
k1 linen iscale, .03, p3, .07 ;
a3 oscil k1, inote*.999+k2, ifunc ;
a2 oscil k1, inote*1.001+k2, ifunc ;
a1 oscil k1, inote+k2, ifunc
out a1+a2+a3
endin
instr 5
k1 linen 1000, .02, p3, .08
a1 oscil k1, cpspch(p4), 1
out a1
endin