; Septieme-blues.orc
; Anthony Kozar
; July 2006
; On the web at
; Email
; NOTE: at the time of my posting this file, the pans opcode
; is not yet in canonical Csound (but is on OS 9), so I've
; added the UDO substitute. You may need to remove the UDO
; code with future versions of Csound for this to work.
; Intruments 1, 98, and pans UDO by Anthony Kozar.
; Instrument 99 is the work of another Csounder (see below for source).
; I am placing the portions of this Csound orchestra file
; that are my original work into the public domain. I
; therefore waive all copyright interest in those portions.
sr = 44100
nchnls = 2
;; draft values
;; kr = 4410
;; ksmps = 10
;; final values
kr = 44100
ksmps = 1
#define OSCOP # poscil # ; oscil, oscili, oscil3, or poscil (not poscil3)
#define RNDPHS # rnd(1) # ; replace with 0 for in-phase oscillators
ga1 init 0
ga2 init 0
; stereo version of pan
opcode pans, aa, akioo
asig, kx, ifn, imode, ioffset xin
ky init 1 ;; this should be size of ifn table if imode = 0
aleft, aright, a3, a4 pan asig, kx, ky, ifn, imode, ioffset
xout aleft, aright
endop
; simple table-lookup oscillator instrument with 2nd oscillator for envelope
; the 2nd oscillator will be played for exactly one period
; also has constant pan position and reverb sends
instr 1
idur = p3
iamp = p4
ifreq = p5
ipan = p6
irvrb = p7
ifnum = p8
ienvnum = p9
ipannum = p10
aenv $OSCOP iamp, 1/idur, ienvnum ; envelope oscillator
asig $OSCOP aenv, ifreq, ifnum, $RNDPHS
al, ar pans asig, ipan, ipannum, 1
ga1 = ga1 + al*irvrb
ga2 = ga2 + ar*irvrb
outs al, ar
endin
; Sean Costello FDN reverb
; (opcode implementation by Istvan Varga)
instr 98
irevfactor = p4
ilowpass = p5
ioutputscale = p6
denorm ga1, ga2
alr, arr reverbsc ga1, ga2, irevfactor, ilowpass, sr, 0.2
outs alr*ioutputscale, arr*ioutputscale
ga1 = 0
ga2 = 0
endin
;; Stanford Reverb
;; Available from the Csound FTP site at Bath Univ.
;; ftp://earth.cs.bath.ac.uk/pub/dream/documentation/orchestras+scores/reverbs/stanford
;instr 99
;
; irevfactor = p4
; ilowpass = 9000
; ioutputscale = p5
;
; idel1 = 1237.000/sr
; idel2 = 1381.000/sr
; idel3 = 1607.000/sr
; idel4 = 1777.000/sr
; idel5 = 1949.000/sr
; idel6 = 2063.000/sr
; idel7 = 307.000/sr
; idel8 = 97.000/sr
; idel9 = 71.000/sr
; idel10 = 53.000/sr
; idel11 = 47.000/sr
; idel12 = 37.000/sr
; idel13 = 31.000/sr
;
; icsc1 = .822 * irevfactor
; icsc2 = .802 * irevfactor
; icsc3 = .773 * irevfactor
; icsc4 = .753 * irevfactor
; icsc5 = .753 * irevfactor
; icsc6 = .753 * irevfactor
;
; icsc7 = .7 * irevfactor
;
; acomb1 comb ga1, icsc1, idel1
; acomb2 comb ga1, icsc2, idel2
; acomb3 comb ga1, icsc3, idel3
; acomb4 comb ga1, icsc4, idel4
; acomb5 comb ga1, icsc5, idel5
; acomb6 comb ga1, icsc6, idel6
;
; acomball = acomb1 + acomb2 + acomb3 + acomb4 + acomb5 + acomb6
;
; allp1 alpass acomball, icsc7, idel7
; allp2 alpass allp1, icsc7, idel8
; allp3 alpass allp2, icsc7, idel9
; alow tone allp3, ilowpass
; allp4 alpass alow, icsc7, idel10
; allp5 alpass allp4, icsc7, idel12
; arevout1 = allp5 * ioutputscale
;
; acomb1 comb ga2, icsc1, idel1
; acomb2 comb ga2, icsc2, idel2
; acomb3 comb ga2, icsc3, idel3
; acomb4 comb ga2, icsc4, idel4
; acomb5 comb ga2, icsc5, idel5
; acomb6 comb ga2, icsc6, idel6
;
; acomball = acomb1 + acomb2 + acomb3 + acomb4 + acomb5 + acomb6
;
; allp1 alpass acomball, icsc7, idel7
; allp2 alpass allp1, icsc7, idel8
; allp3 alpass allp2, icsc7, idel9
; alow tone allp3, ilowpass
; allp4 alpass alow, icsc7, idel10
; allp6 alpass allp4,icsc7, idel13
; arevout2 = allp6 * ioutputscale
;
; outs arevout1, arevout2
;
; ga1 = 0
; ga2 = 0
;
;endin