; design by Ludikidee ; ludo@ludikidee.com sr = 44100 kr = 4410 ksmps = 10 nchnls = 2 instr 1 kstr init 0 kmm init 1 klen init 1 kpch_pnt init 2 kstr_ind init 2 ; index 0 & index 1 used for kmm & klen kdur_ind init 0 kitv_ind init 1 ; index 0 used for ipch_f kpan_ind init 0 kamp_ind init 0 kmod_ind init 0 kdev_ind init 0 kadj_ind init 0 kstr_find init 0 kdur_find init 0 kitv_find init 0 kpan_find init 0 kamp_find init 0 kmod_find init 0 kdev_find init 0 kadj_find init 0 krdy_ch4 init 0 krdy_ch6 init 0 krdy_ch8 init 0 krdy_ch10 init 0 krdy_ch12 init 0 krdy_ch14 init 0 krdy_ch16 init 0 krdy_ch18 init 0 krdy_ch20 init 0 krdy_ch22 init 0 kgtempo oscil 1 , 1/p3 , 30 ; k-global tempo kgamp oscil 1 , 1/p3 , 31 ; k-global amp from ppp tot fff chamber1: ;--------------------------------------------- ; start chamber timout 0, i(kstr) , chamber2 kin = 1 kout = 0 istr_f table i(kstr_find) , 1001 idur_f table i(kdur_find) , 1002 iitv_f table i(kitv_find) , 1003 ipan_f table i(kpan_find) , 1004 ; additional parameters: iamp_f table i(kamp_find) , 1005 ; not used imod_f table i(kmod_find) , 1006 ; yet idev_f table i(kdev_find) , 1007 ; iadj_f table i(kadj_find) , 1008 ; to adjust the start-times-rhtyhm, not used here kstr_fend table kstr_find + 1 , 1001 kdur_fend table kdur_find + 1 , 1002 kitv_fend table kitv_find + 1 , 1003 kpan_fend table kpan_find + 1 , 1004 kamp_fend table kamp_find + 1 , 1005 kmod_fend table kmod_find + 1 , 1006 kdev_fend table kdev_find + 1 , 1007 kadj_fend table kadj_find + 1 , 1008 kmm table 0 , istr_f ; metronome indication klen table 1 , istr_f ; Chris Walshaw's abc-style L field ipch_f table 0 , iitv_f ; which scale table, read from the interval (itv) table kscl_n table 0 , ipch_f ; number of tones in de scale table kstr table kstr_ind , istr_f kadj table kadj_ind , iadj_f kdur_ch4 table kdur_ind , idur_f kitv_ch4 table kitv_ind , iitv_f kpan_ch4 table kpan_ind , ipan_f kamp_ch4 table kamp_ind , iamp_f kmod_ch4 table kmod_ind , imod_f kdev_ch4 table kdev_ind , idev_f kstr_nxt table kstr_ind + 1 , istr_f ;zero means second note kdur_nxt table kdur_ind + 1 , idur_f kitv_nxt table kitv_ind + 1 , iitv_f kpan_nxt table kpan_ind + 1 , ipan_f kamp_nxt table kamp_ind + 1 , iamp_f kmod_nxt table kmod_ind + 1 , imod_f kdev_nxt table kdev_ind + 1 , idev_f kfix = ( kitv_ch4 >= 300 ? kitv_ch4 * .01 : 0 ) kitv_ch4 = ( kitv_ch4 >= 300 ? 0 : kitv_ch4 ) ; >= 300 means fix pitch and read as pch-class kforward = ( kpch_pnt + kitv_ch4 > kscl_n ? kitv_ch4 - kscl_n : kitv_ch4 ) kreverse = ( kpch_pnt + kitv_ch4 < 1 ? kitv_ch4 + kscl_n : kitv_ch4 ) knterval = ( kitv_ch4 > 0 ? kforward : kreverse ) kpch_ch4 table kpch_pnt + knterval , ipch_f kpch_ch4 = ( kfix == 0 ? kpch_ch4 : kfix ) ;raising indeces knew_ch4 = ( kstr >= 0 && krdy_ch4 <= 0 ? 1 : 0 ) ;no new note when kstr < 0 (a rest) kpch_pnt = ( kstr_nxt == 0 && krdy_ch4 <= 0 ? kpch_pnt + knterval : kpch_pnt ) kstr_ind = ( kstr_nxt == 0 && krdy_ch4 <= 0 ? kstr_ind + 1 : kstr_ind ) kdur_ind = ( kstr_nxt == 0 && krdy_ch4 <= 0 ? (kdur_nxt == -200 ? 0 : kdur_ind + 1) : kdur_ind ) kitv_ind = ( kstr_nxt == 0 && krdy_ch4 <= 0 ? (kitv_nxt == -300 ? 1 : kitv_ind + 1) : kitv_ind ) kpan_ind = ( kstr_nxt == 0 && krdy_ch4 <= 0 ? (kpan_nxt == -400 ? 0 : kpan_ind + 1) : kpan_ind ) kamp_ind = ( kstr_nxt == 0 && krdy_ch4 <= 0 ? (kamp_nxt == -500 ? 0 : kamp_ind + 1) : kamp_ind ) kmod_ind = ( kstr_nxt == 0 && krdy_ch4 <= 0 ? (kmod_nxt == -600 ? 0 : kmod_ind + 1) : kmod_ind ) kdev_ind = ( kstr_nxt == 0 && krdy_ch4 <= 0 ? (kdev_nxt == -700 ? 0 : kdev_ind + 1) : kdev_ind ) kin = ( kstr_nxt == 0 && krdy_ch4 <= 0 ? kin + 1 : kin ) kout = ( krdy_ch4 <= 0 ? kout + 1 : kout ) ; when there is a chord, kin increments until it holds the number of tones ; the chord request. When there is only one single note, kin remains 1. ; kout starts at zero and tracks how many notes have been given away. ; when kin == kout this means that al the notes (1 or more) ; have found a free, non-being-still-in-timout chamber to play ; the requested parameters. ; krdy_chN stands for kready of chamber no N. If a note overlaps, then ; it's kdur_chN is greater than current kstr. But a note can be two, ; three or more times is greater than kstr. So this chamber substracts ; kstr from krdy_chN to see if a sound-chamber (no 4, 6, 8, 10) has ; stopped overlapping, and can be used again. If not, the indeces will ; not be raised and the next chamber will be checked in the same ; fashion. In this way all the _chN parameters are distributed over the ; available chambers. kdur_ch6 table kdur_ind , idur_f kitv_ch6 table kitv_ind , iitv_f kpan_ch6 table kpan_ind , ipan_f kamp_ch6 table kamp_ind , iamp_f kmod_ch6 table kmod_ind , imod_f kdev_ch6 table kdev_ind , idev_f kstr_nxt table kstr_ind + 1 , istr_f ;zero means second or a third note kdur_nxt table kdur_ind + 1 , idur_f kitv_nxt table kitv_ind + 1 , iitv_f kpan_nxt table kpan_ind + 1 , ipan_f kamp_nxt table kamp_ind + 1 , iamp_f kmod_nxt table kmod_ind + 1 , imod_f kdev_nxt table kdev_ind + 1 , idev_f kfix = ( kitv_ch6 >= 300 ? kitv_ch6 * .01 : 0 ) kitv_ch6 = ( kitv_ch6 >= 300 ? 0 : kitv_ch6 ) ; >= 300 means fix pitch and read as pch-class kforward = ( kpch_pnt + kitv_ch6 > kscl_n ? kitv_ch6 - kscl_n : kitv_ch6 ) kreverse = ( kpch_pnt + kitv_ch6 < 1 ? kitv_ch6 + kscl_n : kitv_ch6 ) knterval = ( kitv_ch6 > 0 ? kforward : kreverse ) kpch_ch6 table kpch_pnt + knterval , ipch_f kpch_ch6 = ( kfix == 0 ? kpch_ch6 : kfix ) ;raising indeces knew_ch6 = ( kstr >= 0 && krdy_ch6 <= 0 && kin > kout ? 1 : 0 ) kpch_pnt = ( kstr_nxt == 0 && krdy_ch6 <= 0 ? kpch_pnt + knterval : kpch_pnt ) kstr_ind = ( kstr_nxt == 0 && krdy_ch6 <= 0 ? kstr_ind + 1 : kstr_ind ) kdur_ind = ( kstr_nxt == 0 && krdy_ch6 <= 0 ? (kdur_nxt == -200 ? 0 : kdur_ind + 1) : kdur_ind ) kitv_ind = ( kstr_nxt == 0 && krdy_ch6 <= 0 ? (kitv_nxt == -300 ? 1 : kitv_ind + 1) : kitv_ind ) kpan_ind = ( kstr_nxt == 0 && krdy_ch6 <= 0 ? (kpan_nxt == -400 ? 0 : kpan_ind + 1) : kpan_ind ) kamp_ind = ( kstr_nxt == 0 && krdy_ch6 <= 0 ? (kamp_nxt == -500 ? 0 : kamp_ind + 1) : kamp_ind ) kmod_ind = ( kstr_nxt == 0 && krdy_ch6 <= 0 ? (kmod_nxt == -600 ? 0 : kmod_ind + 1) : kmod_ind ) kdev_ind = ( kstr_nxt == 0 && krdy_ch6 <= 0 ? (kdev_nxt == -700 ? 0 : kdev_ind + 1) : kdev_ind ) kin = ( kstr_nxt == 0 && krdy_ch6 <= 0 ? kin + 1 : kin ) kout = ( krdy_ch6 <= 0 ? kout + 1 : kout ) kdur_ch8 table kdur_ind , idur_f kitv_ch8 table kitv_ind , iitv_f kpan_ch8 table kpan_ind , ipan_f kamp_ch8 table kamp_ind , iamp_f kmod_ch8 table kmod_ind , imod_f kdev_ch8 table kdev_ind , idev_f kstr_nxt table kstr_ind + 1 , istr_f ; zero means a second, third or fourth note kdur_nxt table kdur_ind + 1 , idur_f kitv_nxt table kitv_ind + 1 , iitv_f kpan_nxt table kpan_ind + 1 , ipan_f kamp_nxt table kamp_ind + 1 , iamp_f kmod_nxt table kmod_ind + 1 , imod_f kdev_nxt table kdev_ind + 1 , idev_f kfix = ( kitv_ch8 >= 300 ? kitv_ch8 * .01 : 0 ) kitv_ch8 = ( kitv_ch8 >= 300 ? 0 : kitv_ch8 ) ; >= 300 means fix pitch and read as pch-class kforward = ( kpch_pnt + kitv_ch8 > kscl_n ? kitv_ch8 - kscl_n : kitv_ch8 ) kreverse = ( kpch_pnt + kitv_ch8 < 1 ? kitv_ch8 + kscl_n : kitv_ch8 ) knterval = ( kitv_ch8 > 0 ? kforward : kreverse ) kpch_ch8 table kpch_pnt + knterval , ipch_f kpch_ch8 = ( kfix == 0 ? kpch_ch8 : kfix ) ;raising indeces knew_ch8 = ( kstr >= 0 && krdy_ch8 <= 0 && kin > kout ? 1 : 0 ) kpch_pnt = ( kstr_nxt == 0 && krdy_ch8 <= 0 ? kpch_pnt + knterval : kpch_pnt ) kstr_ind = ( kstr_nxt == 0 && krdy_ch8 <= 0 ? kstr_ind + 1 : kstr_ind ) kdur_ind = ( kstr_nxt == 0 && krdy_ch8 <= 0 ? (kdur_nxt == -200 ? 0 : kdur_ind + 1) : kdur_ind ) kitv_ind = ( kstr_nxt == 0 && krdy_ch8 <= 0 ? (kitv_nxt == -300 ? 1 : kitv_ind + 1) : kitv_ind ) kpan_ind = ( kstr_nxt == 0 && krdy_ch8 <= 0 ? (kpan_nxt == -400 ? 0 : kpan_ind + 1) : kpan_ind ) kamp_ind = ( kstr_nxt == 0 && krdy_ch8 <= 0 ? (kamp_nxt == -500 ? 0 : kamp_ind + 1) : kamp_ind ) kmod_ind = ( kstr_nxt == 0 && krdy_ch8 <= 0 ? (kmod_nxt == -600 ? 0 : kmod_ind + 1) : kmod_ind ) kdev_ind = ( kstr_nxt == 0 && krdy_ch8 <= 0 ? (kdev_nxt == -700 ? 0 : kdev_ind + 1) : kdev_ind ) kin = ( kstr_nxt == 0 && krdy_ch8 <= 0 ? kin + 1 : kin ) kout = ( krdy_ch8 <= 0 ? kout + 1 : kout ) kdur_ch10 table kdur_ind , idur_f kitv_ch10 table kitv_ind , iitv_f kpan_ch10 table kpan_ind , ipan_f kamp_ch10 table kamp_ind , iamp_f kmod_ch10 table kmod_ind , imod_f kdev_ch10 table kdev_ind , idev_f kstr_nxt table kstr_ind + 1 , istr_f kdur_nxt table kdur_ind + 1 , idur_f kitv_nxt table kitv_ind + 1 , iitv_f kpan_nxt table kpan_ind + 1 , ipan_f kamp_nxt table kamp_ind + 1 , iamp_f kmod_nxt table kmod_ind + 1 , imod_f kdev_nxt table kdev_ind + 1 , idev_f kfix = ( kitv_ch10 >= 300 ? kitv_ch10 * .01 : 0 ) kitv_ch10 = ( kitv_ch10 >= 300 ? 0 : kitv_ch10 ) ; >= 300 means fix pitch and read as pch-class kforward = ( kpch_pnt + kitv_ch10 > kscl_n ? kitv_ch10 - kscl_n : kitv_ch10 ) kreverse = ( kpch_pnt + kitv_ch10 < 1 ? kitv_ch10 + kscl_n : kitv_ch10 ) knterval = ( kitv_ch10 > 0 ? kforward : kreverse ) kpch_ch10 table kpch_pnt + knterval , ipch_f kpch_ch10 = ( kfix == 0 ? kpch_ch10 : kfix ) ;raising indeces knew_ch10 = ( kstr >= 0 && krdy_ch10 <= 0 && kin > kout ? 1 : 0 ) kpch_pnt = ( kstr_nxt == 0 && krdy_ch10 <= 0 ? kpch_pnt + knterval : kpch_pnt ) kstr_ind = ( kstr_nxt == 0 && krdy_ch10 <= 0 ? kstr_ind + 1 : kstr_ind ) kdur_ind = ( kstr_nxt == 0 && krdy_ch10 <= 0 ? (kdur_nxt == -200 ? 0 : kdur_ind + 1) : kdur_ind ) kitv_ind = ( kstr_nxt == 0 && krdy_ch10 <= 0 ? (kitv_nxt == -300 ? 1 : kitv_ind + 1) : kitv_ind ) kpan_ind = ( kstr_nxt == 0 && krdy_ch10 <= 0 ? (kpan_nxt == -400 ? 0 : kpan_ind + 1) : kpan_ind ) kamp_ind = ( kstr_nxt == 0 && krdy_ch10 <= 0 ? (kamp_nxt == -500 ? 0 : kamp_ind + 1) : kamp_ind ) kmod_ind = ( kstr_nxt == 0 && krdy_ch10 <= 0 ? (kmod_nxt == -600 ? 0 : kmod_ind + 1) : kmod_ind ) kdev_ind = ( kstr_nxt == 0 && krdy_ch10 <= 0 ? (kdev_nxt == -700 ? 0 : kdev_ind + 1) : kdev_ind ) kin = ( kstr_nxt == 0 && krdy_ch10 <= 0 ? kin + 1 : kin ) kout = ( krdy_ch10 <= 0 ? kout + 1 : kout ) kdur_ch12 table kdur_ind , idur_f kitv_ch12 table kitv_ind , iitv_f kpan_ch12 table kpan_ind , ipan_f kamp_ch12 table kamp_ind , iamp_f kmod_ch12 table kmod_ind , imod_f kdev_ch12 table kdev_ind , idev_f kstr_nxt table kstr_ind + 1 , istr_f ; zero means a second, third or fourth note kdur_nxt table kdur_ind + 1 , idur_f kitv_nxt table kitv_ind + 1 , iitv_f kpan_nxt table kpan_ind + 1 , ipan_f kamp_nxt table kamp_ind + 1 , iamp_f kmod_nxt table kmod_ind + 1 , imod_f kdev_nxt table kdev_ind + 1 , idev_f kfix = ( kitv_ch12 >= 300 ? kitv_ch12 * .01 : 0 ) kitv_ch12 = ( kitv_ch12 >= 300 ? 0 : kitv_ch12 ) ; >= 300 means fix pitch and read as pch-class kforward = ( kpch_pnt + kitv_ch12 > kscl_n ? kitv_ch12 - kscl_n : kitv_ch12 ) kreverse = ( kpch_pnt + kitv_ch12 < 1 ? kitv_ch12 + kscl_n : kitv_ch12 ) knterval = ( kitv_ch12 > 0 ? kforward : kreverse ) kpch_ch12 table kpch_pnt + knterval , ipch_f kpch_ch12 = ( kfix == 0 ? kpch_ch12 : kfix ) ;raising indeces knew_ch12 = ( kstr >= 0 && krdy_ch12 <= 0 && kin > kout ? 1 : 0 ) kpch_pnt = ( kstr_nxt == 0 && krdy_ch12 <= 0 ? kpch_pnt + knterval : kpch_pnt ) kstr_ind = ( kstr_nxt == 0 && krdy_ch12 <= 0 ? kstr_ind + 1 : kstr_ind ) kdur_ind = ( kstr_nxt == 0 && krdy_ch12 <= 0 ? (kdur_nxt == -200 ? 0 : kdur_ind + 1) : kdur_ind ) kitv_ind = ( kstr_nxt == 0 && krdy_ch12 <= 0 ? (kitv_nxt == -300 ? 1 : kitv_ind + 1) : kitv_ind ) kpan_ind = ( kstr_nxt == 0 && krdy_ch12 <= 0 ? (kpan_nxt == -400 ? 0 : kpan_ind + 1) : kpan_ind ) kamp_ind = ( kstr_nxt == 0 && krdy_ch12 <= 0 ? (kamp_nxt == -500 ? 0 : kamp_ind + 1) : kamp_ind ) kmod_ind = ( kstr_nxt == 0 && krdy_ch12 <= 0 ? (kmod_nxt == -600 ? 0 : kmod_ind + 1) : kmod_ind ) kdev_ind = ( kstr_nxt == 0 && krdy_ch12 <= 0 ? (kdev_nxt == -700 ? 0 : kdev_ind + 1) : kdev_ind ) kin = ( kstr_nxt == 0 && krdy_ch12 <= 0 ? kin + 1 : kin ) kout = ( krdy_ch12 <= 0 ? kout + 1 : kout ) kdur_ch14 table kdur_ind , idur_f kitv_ch14 table kitv_ind , iitv_f kpan_ch14 table kpan_ind , ipan_f kamp_ch14 table kamp_ind , iamp_f kmod_ch14 table kmod_ind , imod_f kdev_ch14 table kdev_ind , idev_f kstr_nxt table kstr_ind + 1 , istr_f ; zero means a second, third or fourth note kdur_nxt table kdur_ind + 1 , idur_f kitv_nxt table kitv_ind + 1 , iitv_f kpan_nxt table kpan_ind + 1 , ipan_f kamp_nxt table kamp_ind + 1 , iamp_f kmod_nxt table kmod_ind + 1 , imod_f kdev_nxt table kdev_ind + 1 , idev_f kfix = ( kitv_ch14 >= 300 ? kitv_ch14 * .01 : 0 ) kitv_ch14 = ( kitv_ch14 >= 300 ? 0 : kitv_ch14 ) ; >= 300 means fix pitch and read as pch-class kforward = ( kpch_pnt + kitv_ch14 > kscl_n ? kitv_ch14 - kscl_n : kitv_ch14 ) kreverse = ( kpch_pnt + kitv_ch14 < 1 ? kitv_ch14 + kscl_n : kitv_ch14 ) knterval = ( kitv_ch14 > 0 ? kforward : kreverse ) kpch_ch14 table kpch_pnt + knterval , ipch_f kpch_ch14 = ( kfix == 0 ? kpch_ch14 : kfix ) ;raising indeces knew_ch14 = ( kstr >= 0 && krdy_ch14 <= 0 && kin > kout ? 1 : 0 ) kpch_pnt = ( kstr_nxt == 0 && krdy_ch14 <= 0 ? kpch_pnt + knterval : kpch_pnt ) kstr_ind = ( kstr_nxt == 0 && krdy_ch14 <= 0 ? kstr_ind + 1 : kstr_ind ) kdur_ind = ( kstr_nxt == 0 && krdy_ch14 <= 0 ? (kdur_nxt == -200 ? 0 : kdur_ind + 1) : kdur_ind ) kitv_ind = ( kstr_nxt == 0 && krdy_ch14 <= 0 ? (kitv_nxt == -300 ? 1 : kitv_ind + 1) : kitv_ind ) kpan_ind = ( kstr_nxt == 0 && krdy_ch14 <= 0 ? (kpan_nxt == -400 ? 0 : kpan_ind + 1) : kpan_ind ) kamp_ind = ( kstr_nxt == 0 && krdy_ch14 <= 0 ? (kamp_nxt == -500 ? 0 : kamp_ind + 1) : kamp_ind ) kmod_ind = ( kstr_nxt == 0 && krdy_ch14 <= 0 ? (kmod_nxt == -600 ? 0 : kmod_ind + 1) : kmod_ind ) kdev_ind = ( kstr_nxt == 0 && krdy_ch14 <= 0 ? (kdev_nxt == -700 ? 0 : kdev_ind + 1) : kdev_ind ) kin = ( kstr_nxt == 0 && krdy_ch14 <= 0 ? kin + 1 : kin ) kout = ( krdy_ch14 <= 0 ? kout + 1 : kout ) kdur_ch16 table kdur_ind , idur_f kitv_ch16 table kitv_ind , iitv_f kpan_ch16 table kpan_ind , ipan_f kamp_ch16 table kamp_ind , iamp_f kmod_ch16 table kmod_ind , imod_f kdev_ch16 table kdev_ind , idev_f kstr_nxt table kstr_ind + 1 , istr_f ; zero means a second, third or fourth note kdur_nxt table kdur_ind + 1 , idur_f kitv_nxt table kitv_ind + 1 , iitv_f kpan_nxt table kpan_ind + 1 , ipan_f kamp_nxt table kamp_ind + 1 , iamp_f kmod_nxt table kmod_ind + 1 , imod_f kdev_nxt table kdev_ind + 1 , idev_f kfix = ( kitv_ch16 >= 300 ? kitv_ch16 * .01 : 0 ) kitv_ch16 = ( kitv_ch16 >= 300 ? 0 : kitv_ch16 ) ; >= 300 means fix pitch and read as pch-class kforward = ( kpch_pnt + kitv_ch16 > kscl_n ? kitv_ch16 - kscl_n : kitv_ch16 ) kreverse = ( kpch_pnt + kitv_ch16 < 1 ? kitv_ch16 + kscl_n : kitv_ch16 ) knterval = ( kitv_ch16 > 0 ? kforward : kreverse ) kpch_ch16 table kpch_pnt + knterval , ipch_f kpch_ch16 = ( kfix == 0 ? kpch_ch16 : kfix ) ;raising indeces knew_ch16 = ( kstr >= 0 && krdy_ch16 <= 0 && kin > kout ? 1 : 0 ) kpch_pnt = ( kstr_nxt == 0 && krdy_ch16 <= 0 ? kpch_pnt + knterval : kpch_pnt ) kstr_ind = ( kstr_nxt == 0 && krdy_ch16 <= 0 ? kstr_ind + 1 : kstr_ind ) kdur_ind = ( kstr_nxt == 0 && krdy_ch16 <= 0 ? (kdur_nxt == -200 ? 0 : kdur_ind + 1) : kdur_ind ) kitv_ind = ( kstr_nxt == 0 && krdy_ch16 <= 0 ? (kitv_nxt == -300 ? 1 : kitv_ind + 1) : kitv_ind ) kpan_ind = ( kstr_nxt == 0 && krdy_ch16 <= 0 ? (kpan_nxt == -400 ? 0 : kpan_ind + 1) : kpan_ind ) kamp_ind = ( kstr_nxt == 0 && krdy_ch16 <= 0 ? (kamp_nxt == -500 ? 0 : kamp_ind + 1) : kamp_ind ) kmod_ind = ( kstr_nxt == 0 && krdy_ch16 <= 0 ? (kmod_nxt == -600 ? 0 : kmod_ind + 1) : kmod_ind ) kdev_ind = ( kstr_nxt == 0 && krdy_ch16 <= 0 ? (kdev_nxt == -700 ? 0 : kdev_ind + 1) : kdev_ind ) kin = ( kstr_nxt == 0 && krdy_ch16 <= 0 ? kin + 1 : kin ) kout = ( krdy_ch16 <= 0 ? kout + 1 : kout ) kdur_ch18 table kdur_ind , idur_f kitv_ch18 table kitv_ind , iitv_f kpan_ch18 table kpan_ind , ipan_f kamp_ch18 table kamp_ind , iamp_f kmod_ch18 table kmod_ind , imod_f kdev_ch18 table kdev_ind , idev_f kstr_nxt table kstr_ind + 1 , istr_f ; zero means a second, third or fourth note kdur_nxt table kdur_ind + 1 , idur_f kitv_nxt table kitv_ind + 1 , iitv_f kpan_nxt table kpan_ind + 1 , ipan_f kamp_nxt table kamp_ind + 1 , iamp_f kmod_nxt table kmod_ind + 1 , imod_f kdev_nxt table kdev_ind + 1 , idev_f kfix = ( kitv_ch18 >= 300 ? kitv_ch18 * .01 : 0 ) kitv_ch18 = ( kitv_ch18 >= 300 ? 0 : kitv_ch18 ) ; >= 300 means fix pitch and read as pch-class kforward = ( kpch_pnt + kitv_ch18 > kscl_n ? kitv_ch18 - kscl_n : kitv_ch18 ) kreverse = ( kpch_pnt + kitv_ch18 < 1 ? kitv_ch18 + kscl_n : kitv_ch18 ) knterval = ( kitv_ch18 > 0 ? kforward : kreverse ) kpch_ch18 table kpch_pnt + knterval , ipch_f kpch_ch18 = ( kfix == 0 ? kpch_ch18 : kfix ) ;raising indeces knew_ch18 = ( kstr >= 0 && krdy_ch18 <= 0 && kin > kout ? 1 : 0 ) kpch_pnt = ( kstr_nxt == 0 && krdy_ch18 <= 0 ? kpch_pnt + knterval : kpch_pnt ) kstr_ind = ( kstr_nxt == 0 && krdy_ch18 <= 0 ? kstr_ind + 1 : kstr_ind ) kdur_ind = ( kstr_nxt == 0 && krdy_ch18 <= 0 ? (kdur_nxt == -200 ? 0 : kdur_ind + 1) : kdur_ind ) kitv_ind = ( kstr_nxt == 0 && krdy_ch18 <= 0 ? (kitv_nxt == -300 ? 1 : kitv_ind + 1) : kitv_ind ) kpan_ind = ( kstr_nxt == 0 && krdy_ch18 <= 0 ? (kpan_nxt == -400 ? 0 : kpan_ind + 1) : kpan_ind ) kamp_ind = ( kstr_nxt == 0 && krdy_ch18 <= 0 ? (kamp_nxt == -500 ? 0 : kamp_ind + 1) : kamp_ind ) kmod_ind = ( kstr_nxt == 0 && krdy_ch18 <= 0 ? (kmod_nxt == -600 ? 0 : kmod_ind + 1) : kmod_ind ) kdev_ind = ( kstr_nxt == 0 && krdy_ch18 <= 0 ? (kdev_nxt == -700 ? 0 : kdev_ind + 1) : kdev_ind ) kin = ( kstr_nxt == 0 && krdy_ch18 <= 0 ? kin + 1 : kin ) kout = ( krdy_ch18 <= 0 ? kout + 1 : kout ) kdur_ch20 table kdur_ind , idur_f kitv_ch20 table kitv_ind , iitv_f kpan_ch20 table kpan_ind , ipan_f kamp_ch20 table kamp_ind , iamp_f kmod_ch20 table kmod_ind , imod_f kdev_ch20 table kdev_ind , idev_f kstr_nxt table kstr_ind + 1 , istr_f ; zero means a second, third or fourth note kdur_nxt table kdur_ind + 1 , idur_f kitv_nxt table kitv_ind + 1 , iitv_f kpan_nxt table kpan_ind + 1 , ipan_f kamp_nxt table kamp_ind + 1 , iamp_f kmod_nxt table kmod_ind + 1 , imod_f kdev_nxt table kdev_ind + 1 , idev_f kfix = ( kitv_ch20 >= 300 ? kitv_ch20 * .01 : 0 ) kitv_ch20 = ( kitv_ch20 >= 300 ? 0 : kitv_ch20 ) ; >= 300 means fix pitch and read as pch-class kforward = ( kpch_pnt + kitv_ch20 > kscl_n ? kitv_ch20 - kscl_n : kitv_ch20 ) kreverse = ( kpch_pnt + kitv_ch20 < 1 ? kitv_ch20 + kscl_n : kitv_ch20 ) knterval = ( kitv_ch20 > 0 ? kforward : kreverse ) kpch_ch20 table kpch_pnt + knterval , ipch_f kpch_ch20 = ( kfix == 0 ? kpch_ch20 : kfix ) ;raising indeces knew_ch20 = ( kstr >= 0 && krdy_ch20 <= 0 && kin > kout ? 1 : 0 ) kpch_pnt = ( kstr_nxt == 0 && krdy_ch20 <= 0 ? kpch_pnt + knterval : kpch_pnt ) kstr_ind = ( kstr_nxt == 0 && krdy_ch20 <= 0 ? kstr_ind + 1 : kstr_ind ) kdur_ind = ( kstr_nxt == 0 && krdy_ch20 <= 0 ? (kdur_nxt == -200 ? 0 : kdur_ind + 1) : kdur_ind ) kitv_ind = ( kstr_nxt == 0 && krdy_ch20 <= 0 ? (kitv_nxt == -300 ? 1 : kitv_ind + 1) : kitv_ind ) kpan_ind = ( kstr_nxt == 0 && krdy_ch20 <= 0 ? (kpan_nxt == -400 ? 0 : kpan_ind + 1) : kpan_ind ) kamp_ind = ( kstr_nxt == 0 && krdy_ch20 <= 0 ? (kamp_nxt == -500 ? 0 : kamp_ind + 1) : kamp_ind ) kmod_ind = ( kstr_nxt == 0 && krdy_ch20 <= 0 ? (kmod_nxt == -600 ? 0 : kmod_ind + 1) : kmod_ind ) kdev_ind = ( kstr_nxt == 0 && krdy_ch20 <= 0 ? (kdev_nxt == -700 ? 0 : kdev_ind + 1) : kdev_ind ) kin = ( kstr_nxt == 0 && krdy_ch20 <= 0 ? kin + 1 : kin ) kout = ( krdy_ch20 <= 0 ? kout + 1 : kout ) knew_ch22 = ( kstr >= 0 && krdy_ch22 <= 0 && kin > kout ? 1 : 0 ) ;last chamber ends the row kdur_ch22 table kdur_ind , idur_f kitv_ch22 table kitv_ind , iitv_f kpan_ch22 table kpan_ind , ipan_f kamp_ch22 table kamp_ind , iamp_f kmod_ch22 table kmod_ind , imod_f kdev_ch22 table kdev_ind , idev_f kstr_end table kstr_ind + 1 , istr_f kadj_end table kadj_ind + 1 , iadj_f kdur_end table kdur_ind + 1 , idur_f kitv_end table kitv_ind + 1 , iitv_f kpan_end table kpan_ind + 1 , ipan_f kamp_end table kamp_ind + 1 , iamp_f kmod_end table kmod_ind + 1 , imod_f kdev_end table kdev_ind + 1 , idev_f kfix = ( kitv_ch22 >= 300 ? kitv_ch22 * .01 : 0 ) kitv_ch22 = ( kitv_ch22 >= 300 ? 0 : kitv_ch22 ) ; >= 300 means fix pitch and read as pch-class kforward = ( kpch_pnt + kitv_ch22 > kscl_n ? kitv_ch22 - kscl_n : kitv_ch22 ) kreverse = ( kpch_pnt + kitv_ch22 < 1 ? kitv_ch22 + kscl_n : kitv_ch22 ) knterval = ( kitv_ch22 > 0 ? kforward : kreverse ) kpch_ch22 table kpch_pnt + knterval , ipch_f kpch_ch22 = ( kfix == 0 ? kpch_ch22 : kfix ) ;next note, but not when there is a rest (kstr < 0) kstr_ind = ( kstr_end == -100 ? 2 : kstr_ind + 1 ) kadj_ind = ( kadj_end == -800 ? 0 : kadj_ind + 1 ) kpch_pnt = ( kstr < 0 ? kpch_pnt : kpch_pnt + knterval ) kdur_ind = ( kstr < 0 ? kdur_ind : (kdur_end == -200 ? 0 : kdur_ind + 1 )) kitv_ind = ( kstr < 0 ? kitv_ind : (kitv_end == -300 ? 1 : kitv_ind + 1 )) kpan_ind = ( kstr < 0 ? kpan_ind : (kpan_end == -400 ? 0 : kpan_ind + 1 )) kamp_ind = ( kstr < 0 ? kamp_ind : (kamp_end == -500 ? 0 : kamp_ind + 1 )) kmod_ind = ( kstr < 0 ? kmod_ind : (kmod_end == -600 ? 0 : kmod_ind + 1 )) kdev_ind = ( kstr < 0 ? kdev_ind : (kdev_end == -700 ? 0 : kdev_ind + 1 )) ;next ftable, but not when kstr is negative (== rest) kstr_find = ( kstr_end == -100 ? (kstr_fend == 0 ? 0 : kstr_find + 1) : kstr_find ) kadj_find = ( kadj_end == -800 ? (kadj_fend == 0 ? 0 : kadj_find + 1) : kadj_find ) kdur_find = ( kstr >= 0 && kdur_end == -200 ? (kdur_fend == 0 ? 0 : kdur_find + 1) : kdur_find ) kitv_find = ( kstr >= 0 && kitv_end == -300 ? (kitv_fend == 0 ? 0 : kitv_find + 1) : kitv_find ) kpan_find = ( kstr >= 0 && kpan_end == -400 ? (kpan_fend == 0 ? 0 : kpan_find + 1) : kpan_find ) kamp_find = ( kstr >= 0 && kamp_end == -500 ? (kamp_fend == 0 ? 0 : kamp_find + 1) : kamp_find ) kmod_find = ( kstr >= 0 && kmod_end == -600 ? (kmod_fend == 0 ? 0 : kmod_find + 1) : kmod_find ) kdev_find = ( kstr >= 0 && kdev_end == -700 ? (kdev_fend == 0 ? 0 : kdev_find + 1) : kdev_find ) kstr = abs (kstr) ;kstr has done it's duety as rest detector kdur_ch4 = ( kdur_ch4 == 0 ? kstr : kdur_ch4 ) kdur_ch6 = ( kdur_ch6 == 0 ? kstr : kdur_ch6 ) kdur_ch8 = ( kdur_ch8 == 0 ? kstr : kdur_ch8 ) kdur_ch10 = ( kdur_ch10 == 0 ? kstr : kdur_ch10 ) kdur_ch12 = ( kdur_ch12 == 0 ? kstr : kdur_ch12 ) kdur_ch14 = ( kdur_ch14 == 0 ? kstr : kdur_ch14 ) kdur_ch16 = ( kdur_ch16 == 0 ? kstr : kdur_ch16 ) kdur_ch18 = ( kdur_ch18 == 0 ? kstr : kdur_ch18 ) kdur_ch20 = ( kdur_ch20 == 0 ? kstr : kdur_ch20 ) kdur_ch22 = ( kdur_ch22 == 0 ? kstr : kdur_ch22 ) kdur_ch4 = kdur_ch4 * kgtempo * (60/kmm) * klen kdur_ch6 = kdur_ch6 * kgtempo * (60/kmm) * klen kdur_ch8 = kdur_ch8 * kgtempo * (60/kmm) * klen kdur_ch10 = kdur_ch10 * kgtempo * (60/kmm) * klen kdur_ch12 = kdur_ch12 * kgtempo * (60/kmm) * klen kdur_ch14 = kdur_ch14 * kgtempo * (60/kmm) * klen kdur_ch16 = kdur_ch16 * kgtempo * (60/kmm) * klen kdur_ch18 = kdur_ch18 * kgtempo * (60/kmm) * klen kdur_ch20 = kdur_ch20 * kgtempo * (60/kmm) * klen kdur_ch22 = kdur_ch22 * kgtempo * (60/kmm) * klen kstr = kstr * kgtempo * (60/kmm) * klen * kadj krdy_ch4 = ( knew_ch4 == 1 ? kdur_ch4 - kstr : (krdy_ch4 > 0 ? krdy_ch4 - kstr : 0)) krdy_ch6 = ( knew_ch6 == 1 ? kdur_ch6 - kstr : (krdy_ch6 > 0 ? krdy_ch6 - kstr : 0)) krdy_ch8 = ( knew_ch8 == 1 ? kdur_ch8 - kstr : (krdy_ch8 > 0 ? krdy_ch8 - kstr : 0)) krdy_ch10 = ( knew_ch10 == 1 ? kdur_ch10 - kstr : (krdy_ch10 > 0 ? krdy_ch10 - kstr : 0)) krdy_ch12 = ( knew_ch12 == 1 ? kdur_ch12 - kstr : (krdy_ch12 > 0 ? krdy_ch12 - kstr : 0)) krdy_ch14 = ( knew_ch14 == 1 ? kdur_ch14 - kstr : (krdy_ch14 > 0 ? krdy_ch14 - kstr : 0)) krdy_ch16 = ( knew_ch16 == 1 ? kdur_ch16 - kstr : (krdy_ch16 > 0 ? krdy_ch16 - kstr : 0)) krdy_ch18 = ( knew_ch18 == 1 ? kdur_ch18 - kstr : (krdy_ch18 > 0 ? krdy_ch18 - kstr : 0)) krdy_ch20 = ( knew_ch20 == 1 ? kdur_ch20 - kstr : (krdy_ch20 > 0 ? krdy_ch20 - kstr : 0)) krdy_ch22 = ( knew_ch22 == 1 ? kdur_ch22 - kstr : (krdy_ch22 > 0 ? krdy_ch22 - kstr : 0)) reinit chamber1 chamber2: ;--------------------------------------------- rireturn chamber3: ;--------------------------------------------- timout 0, i(kdur_ch4) , chamber4 if (knew_ch4 == 0) goto chamber4 kpch_ch4 = cpspch(kpch_ch4) kmod_ch4 = kpch_ch4 * kmod_ch4 kdev_ch4 = kmod_ch4 * kdev_ch4 kpan_ch4L = kpan_ch4 kpan_ch4R = 1-kpan_ch4 reinit chamber3 chamber4: ;--------------------------------------------- ; BASICFM from Dodge & Jerse (see csound cdrom) adamp linseg 1 , i(kdur_ch4)-.004 , 1 , .004 , 0 ; ; this part desides which envelope based on note length and pitch kampenv oscil1 0 , i(kamp_ch4) , i(kdur_ch4) , (i(kdur_ch4) > .417 && i(kpch_ch4) > 391 ? 11 : 10) kampdev oscil1 0 , i(kdev_ch4) , i(kdur_ch4) , (i(kdur_ch4) <= .417 ? (i(kpch_ch4) < 391 ? 21 : 20) : (i(kpch_ch4) < 391 ? 22 : 23)) amod oscili kampdev , i(kmod_ch4) , 1 asig_ch4 oscili kampenv*adamp , i(kpch_ch4) + amod , 1 asig_ch4L = asig_ch4 * i(kpan_ch4L) asig_ch4R = asig_ch4 * i(kpan_ch4R) rireturn chamber5: ;--------------------------------------------- timout 0, i(kdur_ch6) , chamber6 if (knew_ch6 == 0) goto chamber6 kpch_ch6 = cpspch(kpch_ch6) kmod_ch6 = kpch_ch6 * kmod_ch6 kdev_ch6 = kmod_ch6 * kdev_ch6 kpan_ch6L = kpan_ch6 kpan_ch6R = 1-kpan_ch6 reinit chamber5 chamber6: ;--------------------------------------------- ; BASICFM from Dodge & Jerse (see csound cdrom) adamp linseg 1 , i(kdur_ch6)-.004 , 1 , .004 , 0 kampenv oscil1 0 , i(kamp_ch6) , i(kdur_ch6) , (i(kdur_ch6) > .417 && i(kpch_ch6) > 391 ? 11 : 10) kampdev oscil1 0 , i(kdev_ch6) , i(kdur_ch6) , (i(kdur_ch6) <= .417 ? (i(kpch_ch6) < 391 ? 21 : 20) : (i(kpch_ch6) < 391 ? 22 : 23)) amod oscili kampdev , i(kmod_ch6) , 1 asig_ch6 oscili kampenv*adamp , i(kpch_ch6) + amod , 1 asig_ch6L = asig_ch6 * i(kpan_ch6L) asig_ch6R = asig_ch6 * i(kpan_ch6R) rireturn chamber7: ;--------------------------------------------- timout 0, i(kdur_ch8) , chamber8 if (knew_ch8 == 0) goto chamber8 kpch_ch8 = cpspch(kpch_ch8) kmod_ch8 = kpch_ch8 * kmod_ch8 kdev_ch8 = kmod_ch8 * kdev_ch8 kpan_ch8L = kpan_ch8 kpan_ch8R = 1-kpan_ch8 reinit chamber7 chamber8: ;--------------------------------------------- ; BASICFM from Dodge & Jerse (see csound cdrom) adamp linseg 1 , i(kdur_ch8)-.004 , 1 , .004 , 0 kampenv oscil1 0 , i(kamp_ch8) , i(kdur_ch8) , (i(kdur_ch8) > .417 && i(kpch_ch8) > 391 ? 11 : 10) kampdev oscil1 0 , i(kdev_ch8) , i(kdur_ch8) , (i(kdur_ch8) <= .417 ? (i(kpch_ch8) < 391 ? 21 : 20) : (i(kpch_ch8) < 391 ? 22 : 23)) amod oscili kampdev , i(kmod_ch8) , 1 asig_ch8 oscili kampenv*adamp , i(kpch_ch8) + amod , 1 asig_ch8L = asig_ch8 * i(kpan_ch8L) asig_ch8R = asig_ch8 * i(kpan_ch8R) rireturn chamber9: ;--------------------------------------------- timout 0, i(kdur_ch10) , chamber10 if (knew_ch10 == 0) goto chamber10 kpch_ch10 = cpspch(kpch_ch10) kmod_ch10 = kpch_ch10 * kmod_ch10 kdev_ch10 = kmod_ch10 * kdev_ch10 kpan_ch10L = kpan_ch10 kpan_ch10R = 1-kpan_ch10 reinit chamber9 chamber10: ;--------------------------------------------- ; BASICFM from Dodge & Jerse (see csound cdrom) adamp linseg 1 , i(kdur_ch10)-.004 , 1 , .004 , 0 kampenv oscil1 0 , i(kamp_ch10) , i(kdur_ch10) , (i(kdur_ch10) > .417 && i(kpch_ch10) > 391 ? 11 : 10) kampdev oscil1 0 , i(kdev_ch10) , i(kdur_ch10) , (i(kdur_ch10) <= .417 ? (i(kpch_ch10) < 391 ? 21 : 20) : (i(kpch_ch10) < 391 ? 22 : 23)) amod oscili kampdev , i(kmod_ch10) , 1 asig_ch10 oscili kampenv*adamp , i(kpch_ch10) + amod , 1 asig_ch10L = asig_ch10 * i(kpan_ch10L) asig_ch10R = asig_ch10 * i(kpan_ch10R) rireturn chamber11: ;--------------------------------------------- timout 0, i(kdur_ch12) , chamber12 if (knew_ch12 == 0) goto chamber12 kpch_ch12 = cpspch(kpch_ch12) kmod_ch12 = kpch_ch12 * kmod_ch12 kdev_ch12 = kmod_ch12 * kdev_ch12 kpan_ch12L = kpan_ch12 kpan_ch12R = 1-kpan_ch12 reinit chamber11 chamber12: ;--------------------------------------------- ; BASICFM from Dodge & Jerse (see csound cdrom) adamp linseg 1 , i(kdur_ch12)-.004 , 1 , .004 , 0 kampenv oscil1 0 , i(kamp_ch12) , i(kdur_ch12) , (i(kdur_ch12) > .417 && i(kpch_ch12) > 391 ? 11 : 10) kampdev oscil1 0 , i(kdev_ch12) , i(kdur_ch12) , (i(kdur_ch12) <= .417 ? (i(kpch_ch12) < 391 ? 21 : 20) : (i(kpch_ch12) < 391 ? 22 : 23)) amod oscili kampdev , i(kmod_ch12) , 1 asig_ch12 oscili kampenv*adamp , i(kpch_ch12) + amod , 1 asig_ch12L = asig_ch12 * i(kpan_ch12L) asig_ch12R = asig_ch12 * i(kpan_ch12R) rireturn chamber13: ;--------------------------------------------- timout 0, i(kdur_ch14) , chamber14 if (knew_ch14 == 0) goto chamber14 kpch_ch14 = cpspch(kpch_ch14) kmod_ch14 = kpch_ch14 * kmod_ch14 kdev_ch14 = kmod_ch14 * kdev_ch14 kpan_ch14L = kpan_ch14 kpan_ch14R = 1-kpan_ch14 reinit chamber13 chamber14: ;--------------------------------------------- ; BASICFM from Dodge & Jerse (see csound cdrom) adamp linseg 1 , i(kdur_ch14)-.004 , 1 , .004 , 0 kampenv oscil1 0 , i(kamp_ch14) , i(kdur_ch14) , (i(kdur_ch14) > .417 && i(kpch_ch14) > 391 ? 11 : 10) kampdev oscil1 0 , i(kdev_ch14) , i(kdur_ch14) , (i(kdur_ch14) <= .417 ? (i(kpch_ch14) < 391 ? 21 : 20) : (i(kpch_ch14) < 391 ? 22 : 23)) amod oscili kampdev , i(kmod_ch14) , 1 asig_ch14 oscili kampenv*adamp , i(kpch_ch14) + amod , 1 asig_ch14L = asig_ch14 * i(kpan_ch14L) asig_ch14R = asig_ch14 * i(kpan_ch14R) rireturn chamber15: ;--------------------------------------------- timout 0, i(kdur_ch16) , chamber16 if (knew_ch16 == 0) goto chamber16 kpch_ch16 = cpspch(kpch_ch16) kmod_ch16 = kpch_ch16 * kmod_ch16 kdev_ch16 = kmod_ch16 * kdev_ch16 kpan_ch16L = kpan_ch16 kpan_ch16R = 1-kpan_ch16 reinit chamber15 chamber16: ;--------------------------------------------- ; BASICFM from Dodge & Jerse (see csound cdrom) adamp linseg 1 , i(kdur_ch16)-.004 , 1 , .004 , 0 kampenv oscil1 0 , i(kamp_ch16) , i(kdur_ch16) , (i(kdur_ch16) > .417 && i(kpch_ch16) > 391 ? 11 : 10) kampdev oscil1 0 , i(kdev_ch16) , i(kdur_ch16) , (i(kdur_ch16) <= .417 ? (i(kpch_ch16) < 391 ? 21 : 20) : (i(kpch_ch16) < 391 ? 22 : 23)) amod oscili kampdev , i(kmod_ch16) , 1 asig_ch16 oscili kampenv*adamp , i(kpch_ch16) + amod , 1 asig_ch16L = asig_ch16 * i(kpan_ch16L) asig_ch16R = asig_ch16 * i(kpan_ch16R) rireturn chamber17: ;--------------------------------------------- timout 0, i(kdur_ch18) , chamber18 if (knew_ch18 == 0) goto chamber18 kpch_ch18 = cpspch(kpch_ch18) kmod_ch18 = kpch_ch18 * kmod_ch18 kdev_ch18 = kmod_ch18 * kdev_ch18 kpan_ch18L = kpan_ch18 kpan_ch18R = 1-kpan_ch18 reinit chamber17 chamber18: ;--------------------------------------------- ; BASICFM from Dodge & Jerse (see csound cdrom) adamp linseg 1 , i(kdur_ch18)-.004 , 1 , .004 , 0 kampenv oscil1 0 , i(kamp_ch18) , i(kdur_ch18) , (i(kdur_ch18) > .417 && i(kpch_ch18) > 391 ? 11 : 10) kampdev oscil1 0 , i(kdev_ch18) , i(kdur_ch18) , (i(kdur_ch18) <= .417 ? (i(kpch_ch18) < 391 ? 21 : 20) : (i(kpch_ch18) < 391 ? 22 : 23)) amod oscili kampdev , i(kmod_ch18) , 1 asig_ch18 oscili kampenv*adamp , i(kpch_ch18) + amod , 1 asig_ch18L = asig_ch18 * i(kpan_ch18L) asig_ch18R = asig_ch18 * i(kpan_ch18R) rireturn chamber19: ;--------------------------------------------- timout 0, i(kdur_ch20) , chamber20 if (knew_ch20 == 0) goto chamber20 kpch_ch20 = cpspch(kpch_ch20) kmod_ch20 = kpch_ch20 * kmod_ch20 kdev_ch20 = kmod_ch20 * kdev_ch20 kpan_ch20L = kpan_ch20 kpan_ch20R = 1-kpan_ch20 reinit chamber19 chamber20: ;--------------------------------------------- ; BASICFM from Dodge & Jerse (see csound cdrom) adamp linseg 1 , i(kdur_ch20)-.004 , 1 , .004 , 0 kampenv oscil1 0 , i(kamp_ch20) , i(kdur_ch20) , (i(kdur_ch20) > .417 && i(kpch_ch20) > 391 ? 11 : 10) kampdev oscil1 0 , i(kdev_ch20) , i(kdur_ch20) , (i(kdur_ch20) <= .417 ? (i(kpch_ch20) < 391 ? 21 : 20) : (i(kpch_ch20) < 391 ? 22 : 23)) amod oscili kampdev , i(kmod_ch20) , 1 asig_ch20 oscili kampenv*adamp , i(kpch_ch20) + amod , 1 asig_ch20L = asig_ch20 * i(kpan_ch20L) asig_ch20R = asig_ch20 * i(kpan_ch20R) rireturn chamber21: ;--------------------------------------------- timout 0, i(kdur_ch22) , chamber22 if (knew_ch22 == 0) goto chamber22 kpch_ch22 = cpspch(kpch_ch22) kmod_ch22 = kpch_ch22 * kmod_ch22 kdev_ch22 = kmod_ch22 * kdev_ch22 kpan_ch22L = kpan_ch22 kpan_ch22R = 1-kpan_ch22 reinit chamber21 chamber22: ;--------------------------------------------- ; BASICFM from Dodge & Jerse (see csound cdrom) adamp linseg 1 , i(kdur_ch22)-.004 , 1 , .004 , 0 kampenv oscil1 0 , i(kamp_ch22) , i(kdur_ch22) , (i(kdur_ch22) > .417 && i(kpch_ch22) > 391 ? 11 : 10) kampdev oscil1 0 , i(kdev_ch22) , i(kdur_ch22) , (i(kdur_ch22) <= .417 ? (i(kpch_ch22) < 391 ? 21 : 20) : (i(kpch_ch22) < 391 ? 22 : 23)) amod oscili kampdev , i(kmod_ch22) , 1 asig_ch22 oscili kampenv*adamp , i(kpch_ch22) + amod , 1 asig_ch22L = asig_ch22 * i(kpan_ch22L) asig_ch22R = asig_ch22 * i(kpan_ch22R) rireturn ;--------------------------------------------- aoutL4_12 = (asig_ch4L + asig_ch6L + asig_ch8L + asig_ch10L + asig_ch12L) * p4 aoutR4_12 = (asig_ch4R + asig_ch6R + asig_ch8R + asig_ch10R + asig_ch12R) * p4 aoutL14_22 = (asig_ch14L + asig_ch16L + asig_ch18L + asig_ch20L + asig_ch22L) * p4 aoutR14_22 = (asig_ch14R + asig_ch16R + asig_ch18R + asig_ch20R + asig_ch22R) * p4 aoutL = aoutL4_12 + aoutL14_22 aoutR = aoutR4_12 + aoutR14_22 outs1 ( aoutL4_12 + aoutL14_22 ) * kgamp outs2 ( aoutR4_12 + aoutR14_22 ) * kgamp endin