sr = 44100 kr = 44100 ksmps = 1 nchnls = 2 ; design by Ludo Smissaert ; ludo@ludikidee.com instr 1 kstr init 0 kstr_ind init 0 kstr_lock init 1 kdur init 0 kdur_ind init 0 kpch init 0 kpch_ind init 0 chamber1: ;--------------------------------------------- ; start chamber timout 0, i(kstr), chamber2 kstr table kstr_ind , 100 kstr_end table kstr_ind + 1 , 100 kstr_ind = ( kstr_end == -100 ? 0 : kstr_ind + 1 ) kstr_lock = ( kstr < 0 ? 1 : 0 ) ;rest --> lock remains one (closed) kstr = abs (kstr) reinit chamber1 chamber2: ;--------------------------------------------- rireturn chamber3: ;--------------------------------------------- timout 0, i(kdur) , chamber4 if (kstr_lock != 0) goto chamber4 kstr_lock = 1 kdur table kdur_ind , 101 kdur_end table kdur_ind + 1 , 101 kdur = ( kdur == 0 ? kstr : kdur ) kpch table kpch_ind , p4 kpch_end table kpch_ind + 1 , p4 kdur_ind = ( kdur_end == -100 ? 0 : kdur_ind + 1 ) kpch_ind = ( kpch_end == 0 ? 0 : kpch_ind + 1 ) reinit chamber3 chamber4: ;--------------------------------------------- kenv oscil1 0 , p5, i(kdur) , 10 kindex linseg 1 , i(kdur)/3, 10, i(kdur)/3, 5, i(kdur)/3, 1 kvf linseg 1 , i(kdur)/5, 3 , i(kdur)*4/5 , 4 kvib oscil 1.5 , kvf , 1 a1 foscil kenv , kpch+kvib, .0125, .5, kindex, 1 a2 foscil kenv , (kpch*1.01)+kvib, .0125, .5, kindex, 2 a3 foscil kenv , (kpch*.99)+kvib, .0125, .5, kindex, 3 audio4 = (a1+a2+a3)*.5 rireturn chamber5: ;--------------------------------------------- timout 0, i(kdur) , chamber6 if (kstr_lock != 0) goto chamber6 ;only start new note on starttimes kstr_lock = 1 kdur table kdur_ind , 101 kdur_end table kdur_ind + 1 , 101 kdur = ( kdur == 0 ? kstr : kdur ) kpch table kpch_ind , p4 kpch_end table kpch_ind + 1 , p4 kdur_ind = ( kdur_end == -100 ? 0 : kdur_ind + 1 ) kpch_ind = ( kpch_end == 0 ? 0 : kpch_ind + 1 ) reinit chamber5 chamber6: ;--------------------------------------------- kenv oscil1 0 , p5, i(kdur) , 10 kindex linseg 1 , i(kdur)/3, 10, i(kdur)/3, 5, i(kdur)/3, 1 kvf linseg 1 , i(kdur)/5, 3 , i(kdur)*4/5 , 4 kvib oscil 1.5 , kvf , 1 a1 foscil kenv , kpch+kvib, .0125, .5, kindex, 1 a2 foscil kenv , (kpch*1.01)+kvib, .0125, .5, kindex, 2 a3 foscil kenv , (kpch*.99)+kvib, .0125, .5, kindex, 3 audio6 = (a1+a2+a3)*.5 rireturn ;--------------------------------------------- aoutL = audio4 aoutR = audio6 outs1 aoutL + aoutR outs2 aoutR + aoutL endin