;------------------------------------------------------------------------- ; ; Threnody ; by Dave Seidel (dave at mysterybear dot net) ; http://mysterybear.net ; ; Copyright 2006, Dave Seidel. Some rights reserved. ; This work is licensed under a Creative Commons "Attribution" License. ; http://creativecommons.org/licenses/by/2.5/ ; ; Written with Csound 5.01.0 beta on Windows XP. ; ;------------------------------------------------------------------------- -g -W -o Threnody.wav ;------------------------------------------------------------------------- ; globals ;------------------------------------------------------------------------- sr = 44100 kr = 441 ksmps = 100 nchnls = 2 ;------------------------------------------------------------------------- ; global reverb sends ;------------------------------------------------------------------------- gaL init 0 gaR init 0 ;--------------------------------------------------------------------------- ; global reverb instrument ;--------------------------------------------------------------------------- instr 1 aL, aR reverbsc gaL, gaR, p4, p5, sr/1.5, p6, 0 outs gaL+aL, gaR+aR ; outs gaL, gaR gaL = 0 gaR = 0 endin ;--------------------------------------------------------------------------- ; oscillator with additive pitch jittering ;--------------------------------------------------------------------------- instr 2 idur = p3 ; duration iamp = p4 ; amplitude ifn = p5 ; function table number (waveform) ifreq = p6 ; base pitch ilr = p7 ; 1.0 = left <-> 0.0 = right idelta = ifreq*p8 ; p8 is percentage of freq to vary irise = p9 ifall = p10 print ifreq, idelta aenv linen iamp, irise, idur, ifall kjit jspline idelta, 1, 3 aout poscil aenv, ifreq+kjit, ifn gaL = gaL+(aout*ilr) gaR = gaR+(aout*(1-ilr)) endin ;--------------------------------------------------------------------------- ; oscillator with multiplicative pitch jittering ;--------------------------------------------------------------------------- instr 3 idur = p3 ; duration iamp = p4 ; amplitude ifn = p5 ; function table number (waveform) ifreq = p6 ; base pitch ilr = p7 ; 1.0 = left <-> 0.0 = right idelta = p8 ; range of frequency variation irise = p9 ifall = p10 print ifreq, idelta aenv linen iamp, irise, idur, ifall kjit jspline idelta, 1, 3 aout poscil aenv, ifreq*kjit, ifn gaL = gaL+(aout*ilr) gaR = gaR+(aout*(1-ilr)) endin ;--------------------------------------------------------------------------- ; score ;--------------------------------------------------------------------------- ; successively smaller ratios (i.e., the harmonic series) starting at 30 Hz #define A1 #[ 30 * (2/1) ]# #define B1 #[ $A1. * (3/2) ]# #define C1 #[ $B1. * (4/3) ]# #define D1 #[ $C1. * (5/4) ]# #define E1 #[ $D1. * (6/5) ]# #define F1 #[ $E1. * (7/6) ]# #define G1 #[ $F1. * (8/7) ]# #define H1 #[ $G1. * (9/8) ]# #define I1 #[ $H1. * (10/9) ]# #define J1 #[ $I1. * (11/10) ]# ; successively smaller ratios (i.e., the harmonic series) starting at 120 Hz #define A2 #[ 120 * (2/1) ]# #define B2 #[ $A2. * (3/2) ]# #define C2 #[ $B2. * (4/3) ]# #define D2 #[ $C2. * (5/4) ]# #define E2 #[ $D2. * (6/5) ]# #define F2 #[ $E2. * (7/6) ]# #define G2 #[ $F2. * (8/7) ]# #define H2 #[ $G2. * (9/8) ]# #define I2 #[ $H2. * (10/9) ]# #define J2 #[ $I2. * (11/10) ]# ; length of piece in seconds (but see "t" statement below) #define DURATION #[60*4]# ; sine wave f 1 0 262144 10 1 ; linear bidirectional wave (from Timewave Zero/One), normalized and then smoothed with cubic spline curves #define LL #262144# #define L #[$LL./64]# f 10 0 $LL. -8 3 $L. -1 $L. 0 $L. 0 $L. 0 $L. -1 $L. -2 $L. 0 $L. -2 $L. 0 $L. 2 $L. -2 $L. -2 $L. 0 $L. -2 $L. -2 $L. 2 $L. -1 $L. 0 $L. -1 $L. -2 $L. -2 $L. -2 $L. -1 $L. 0 $L. -2 $L. 2 $L. -2 $L. 2 $L. -1 $L. -2 $L. -1 $L. 0 $L. 0 $L. 0 $L. -2 $L. 0 $L. 2 $L. 0 $L. -1 $L. -2 $L. 0 $L. -2 $L. -1 $L. 0 $L. -1 $L. -2 $L. -1 $L. 0 $L. 0 $L. 0 $L. -3 $L. 2 $L. -2 $L. -2 $L. -1 $L. 0 $L. -1 $L. -2 $L. -3 $L. 2 $L. -1 $L. 2 $L. -1 $L. f 11 0 $LL. -8 1 $L. -2 $L. 3 $L. 2 $L. 1 $L. 0 $L. 1 $L. 2 $L. 2 $L. -2 $L. 3 $L. 0 $L. 0 $L. 0 $L. 1 $L. 2 $L. 1 $L. 0 $L. 1 $L. 2 $L. 0 $L. 2 $L. 1 $L. 0 $L. -2 $L. 0 $L. 2 $L. 0 $L. 0 $L. 0 $L. 1 $L. 2 $L. 1 $L. -2 $L. 2 $L. -2 $L. 2 $L. 0 $L. 1 $L. 2 $L. 2 $L. 2 $L. 1 $L. 0 $L. 1 $L. -2 $L. 2 $L. 2 $L. 0 $L. 2 $L. 2 $L. -2 $L. 0 $L. 2 $L. 0 $L. 2 $L. 1 $L. 0 $L. 0 $L. 0 $L. 2 $L. -2 $L. 1 $L. -2 $L. ; tempo t 0 45 ; global reverb i 1 0 [$DURATION.+6] .95 15360 .2 ; drones i 2 0 $DURATION. 550 10 30 0 .03 30 10 i 2 . . . 11 30 0 . . . i 2 0 . . 1 30 0 . . . i 2 . . . 10 $A1. .1 . . . i 2 . . . 11 $A1. .1 . . . i 2 . . . 1 $A1. .1 . . . i 2 . . . 10 $B1. .2 . . . i 2 . . . 11 $B1. .2 . . . i 2 . . . 1 $B1. .2 . . . i 2 . . . 10 $C1. .3 . . . i 2 . . . 11 $C1. .3 . . . i 2 . . . 1 $C1. .3 . . . i 2 . . . 10 $D1. .4 . . . i 2 . . . 11 $D1. .4 . . . i 2 . . . 1 $D1. .4 . . . i 2 . . . 10 $E1. .5 . . . i 2 . . . 11 $E1. .5 . . . i 2 . . . 1 $E1. .5 . . . i 2 . . . 10 $F1. .6 . . . i 2 . . . 11 $F1. .6 . . . i 2 . . . 1 $F1. .6 . . . i 2 . . . 10 $G1. .7 . . . i 2 . . . 11 $G1. .7 . . . i 2 . . . 1 $G1. .7 . . . i 2 . . . 10 $H1. .8 . . . i 2 . . . 11 $H1. .8 . . . i 2 . . . 1 $H1. .8 . . . i 2 . . . 10 $I1. .9 . . . i 2 . . . 11 $I1. .9 . . . i 2 . . . 1 $I1. .9 . . . i 2 . . . 10 $J1. 1 . . . i 2 . . . 11 $J1. 1 . . . i 2 . . . 1 $J1. 1 . . . ; "voices", staggered entrances i 3 60 [$DURATION.- 70] 960 1 120 0 1 3 5 i 3 70 [$DURATION.- 80] . 1 $A2. .1 . . . i 3 80 [$DURATION.- 90] . 1 $B2. .2 . . . i 3 90 [$DURATION.-100] . 1 $C2. .3 . . . i 3 100 [$DURATION.-110] . 1 $D2. .4 . . . i 3 110 [$DURATION.-120] . 1 $E2. .5 . . . i 3 120 [$DURATION.-130] . 1 $F2. .6 . . . i 3 130 [$DURATION.-140] . 1 $G2. .7 . . . i 3 140 [$DURATION.-150] . 1 $H2. .8 . . . i 3 150 [$DURATION.-160] . 1 $I2. .9 . . . i 3 160 [$DURATION.-170] . 1 $J2. 1 . . . e