; Lament I ; Michel Koppelaar ; ; This is a short study inspired by the combination tone studies by Dave Seidel ; (http://mysterybear.net/). It reminds me of the one-note pieces by Giacinto ; Scelsi. -r48000 -k4800 -odac -d nchnls = 2 ; table 1: sine wave gift1 ftgen 1, 0, 4096, 10, 1 ; table 2: waveshape used by the extra oscillators gift2 ftgen 2, 0, 4096, 10, 1, .5, 0, .5, 0, .3 ; reverb globals garevl init 0 garevr init 0 instr 1 idur = p3 ; duration ifreq = p4 ; frequency ; create gliding pitch signal to be used as the second tone kmod lfo 1, 5 / idur kglidingfreq linseg ifreq, idur * 0.25, ifreq, idur * 0.15, ifreq * 1.1429, idur * 0.6, ifreq kglidingfreq = kglidingfreq + kglidingfreq * 0.005 * kmod kenv linseg 0, 3, 1, idur - 8, 1, 4, 0 ; compute a few difference tones kdiff0 = kglidingfreq - ifreq kdiff1 = ifreq * 2 - kglidingfreq kdiff2 = ifreq * 3 - kglidingfreq * 2 kdiff3 = ifreq * 4 - kglidingfreq * 3 kdiff4 = ifreq * 5 - kglidingfreq * 4 kdiff5 = ifreq * 6 - kglidingfreq * 5 ; compute a few sum tones ksum0 = ifreq + kglidingfreq ksum1 = ifreq * 2 + kglidingfreq ksum2 = ifreq * 3 + kglidingfreq ksum3 = ifreq + kglidingfreq * 2 ksum4 = ifreq * 2 + kglidingfreq * 2 ; set up oscillators for all frequencies abasefreq oscil 1, ifreq, 1 adiff0 oscil 1, kdiff0, 1 adiff1 oscil 1, kdiff1, 1 adiff2 oscil 1, kdiff2, 1 adiff3 oscil 1, kdiff3, 1 adiff4 oscil 1, kdiff4, 1 adiff5 oscil 1, kdiff5, 1 asum0 oscil 1, ksum0, 1 asum1 oscil 1, ksum1, 1 asum2 oscil 1, ksum2, 1 asum3 oscil 1, ksum3, 1 asum4 oscil 1, ksum4, 1 ; a few extra oscillators to make the sound a bit more stable aextra1 oscil 1, ifreq, 2 aextra2 oscil 1, ifreq, 2, .1 aextra3 oscil 1, ifreq / 2, 2 aextra4 oscil 1, ifreq / 2, 2, .1 ; mix signals aoutl = abasefreq * 1 + .3 * adiff0 + .2 * adiff2 + .2 * adiff3 +\ .3 * asum1 + .1 * asum3 + .1 * asum4 +\ aextra1 * .15 + aextra3 * .1 aoutr = abasefreq * 1 + .3 * adiff1 + .2 * adiff4 + + .1 * adiff5 +\ .2 * asum0 + .1 * asum2 +\ aextra2 * .15 + aextra4 * .1 ; pan signal kpan expseg .6, idur, .4 ; amplify aoutl = aoutl * kenv * 6000 aoutr = aoutr * kenv * 6000 ; add delay adell delay aoutl, 0.05 adelr delay aoutr, 0.05 aoutl = aoutl + 0.1 * adell aoutr = aoutr + 0.1 * adelr ; output outs aoutl * kpan, aoutr * (1 - kpan) ; set reverb garevl = aoutl * kpan * .1 garevr = aoutr * (1 - kpan) * .1 endin ; global reverb instrument instr 1024 arevsigl reverb garevl, 5 arevsigr reverb garevr, 5 outs arevsigl, arevsigr garevl = 0 garevr = 0 endin i1024 0 260 i1 0 255 50 i1 10 200 50 i1 10 50 200 i1 10 50 300 i1 30 30 140 i1 30 50 320 i1 70 20 50 i1 70 50 200 i1 70 50 300 i1 70 70 550 i1 80 30 140 i1 85 20 275 i1 130 50 400 i1 130 80 433 i1 130 50 500 i1 140 30 853 i1 160 40 300 i1 160 40 200 i1 180 25 162.5 i1 200 50 25 i1 200 50 80 i1 230 25 50