DECLARE SUB sonate_s_R() DECLARE SUB sonate_s_L() TYPE sonate_s_type note_R(0 TO 15) AS BYTE note_L(0 TO 15) AS BYTE noteOff_R(0 TO 10) AS BYTE noteoff_L(0 TO 10) AS BYTE gen_R(1 TO 5) AS SINGLE gen_L(1 TO 5) AS SINGLE count_r AS BYTE count_l AS BYTE plug_R AS BYTE plug_L AS BYTE vol_R AS BYTE vol_L AS BYTE reverse AS BYTE reverse2 AS BYTE alldif(11) AS INTEGER reeks(11) AS INTEGER noten(11) AS INTEGER inter(11) AS INTEGER END TYPE GLOBAL sonate_s AS sonate_s_type GLOBAL time2 AS DWORD GLOBAL starttime2 AS DWORD SUB sonate_s_R() 'partij voor de rechter hand LOCAL i AS DWORD LOCAL j AS SINGLE LOCAL k AS SINGLE LOCAL l AS INTEGER LOCAL m AS INTEGER LOCAL luidst_R AS DWORD LOCAL snelh_r AS DWORD STATIC time AS DWORD STATIC starttime AS DWORD LOCAL file AS STRING STATIC nr AS LONG STATIC letter AS STRING STATIC n AS LONG LOCAL counter AS DWORD STATIC sonate_s_woord AS STRING STATIC sonate_s_letter AS STRING IF ISFALSE task(%sonate_s_R).tog THEN 'initialisatie rechter hand starttime = timegettime task(%sonate_s_R).tog = %true on_off_r = %false 'on_off_R klaar voor init plugin 0 starttask %sonate_s_L lukascompositie_deel = 4 sonate_s.reverse = %false sonate_s.reverse2 = %false controller task(%sonate_s_r).channel, 123, 127 EXIT SUB END IF RANDOMIZE TIMER IF ISFALSE sonate_s.reverse2 THEN time = timegettime - starttime IF ISTRUE sonate_s.reverse2 THEN time2 = timegettime - starttime2 time = %false END IF IF ISFALSE sonate_s.reverse THEN SELECT CASE time CASE < 20000 sonate_s.plug_R = 0 CASE < 40000 sonate_s.plug_R = 1 CASE < 60000 sonate_s.plug_R = 2 CASE < 61000 sonate_s.plug_R = 3 END SELECT END IF IF ISTRUE sonate_s.reverse2 THEN IF ISTRUE sonate_s.reverse THEN SELECT CASE time2 CASE < 20000 sonate_s.plug_R = 2 CASE < 40000 sonate_s.plug_R = 1 CASE < 70000 sonate_s.plug_R = 0 END SELECT END IF END IF SELECT CASE sonate_s.plug_R CASE 0 'plugin 1: arpeggio's ----- ----- ----- ----- ----- ----- IF ISFALSE on_off_r THEN 'initialisatie plugin IF ISFALSE sonate_s.reverse2 THEN sonate_s.note_r(1) = 102 'beginnoot on_off_r = %true sonate_s.gen_r(2) = 2 sonate_s.count_r = 1 END IF delnote2har task(%sonate_s_r).har, sonate_S.note_r(1) IF time2 => 65000 THEN stoptask %sonate_s_r END IF IF sonate_s.gen_r(2) = 2 THEN 'arpegg naar beneden; via willekeur terts, kwart of tri naar beneden sonate_s.noteoff_r(1) = sonate_s.note_r(1) sonate_s.gen_R(1) = RND(1,4) IF sonate_s.gen_R(1) = 1 THEN sonate_s.note_r(2) = sonate_s.noteoff_r(1) - 3 ELSEIF sonate_s.gen_R(1) = 2 THEN 'betekenis gen_r(...) sonate_s.note_r(2) = sonate_s.noteoff_r(1) - 4 '1=genereren afstand ELSEIF sonate_s.gen_r(1) = 3 THEN '2=naar boven (=1) of beneden (=2) sonate_s.note_r(2) = sonate_s.noteoff_r(1) - 5 'noteoff(1) = onderdeel generatie: geheugen ELSE 'noteoff(2) = noot 1 uit sonate_s.note_r(2) = sonate_s.noteoff_r(1) - 6 'noteoff(3) = noot 2 uit END IF sonate_s.note_r(1) = sonate_s.note_r(2) IF sonate_s.count_r = 1 THEN sonate_s.noteoff_r(2) = sonate_s.note_r(1) ELSEIF sonate_s.count_r = 2 THEN sonate_s.noteoff_r(3) = sonate_s.note_r(1) END IF ELSEIF sonate_s.gen_r(2) = 1 THEN 'naar boven sonate_s.noteoff_r(1) = sonate_s.note_r(1) sonate_s.gen_R(1) = RND(1,4) IF sonate_s.gen_R(1) = 1 THEN sonate_s.note_r(2) = sonate_s.noteoff_r(1) + 3 ELSEIF sonate_s.gen_R(1) = 2 THEN sonate_s.note_r(2) = sonate_s.noteoff_r(1) + 4 ELSEIF sonate_s.gen_r(1) = 3 THEN sonate_s.note_r(2) = sonate_s.noteoff_r(1) + 5 ELSE sonate_s.note_r(2) = sonate_s.noteoff_r(1) + 6 END IF sonate_s.note_r(1) = sonate_s.note_r(2) IF sonate_s.count_r = 1 THEN sonate_s.noteoff_r(2) = sonate_s.note_r(1) ELSEIF sonate_s.count_r = 2 THEN sonate_s.noteoff_r(3) = sonate_s.note_r(1) END IF END IF SELECT CASE sonate_s.note_r(1) 'bereik van de piano en terugkaatsen CASE <= 27 sonate_s.gen_r(2) = 1 CASE >= 102 sonate_s.gen_r(2) = 2 END SELECT sonate_s.vol_r = sonate_S.note_r(1) luidst_R = sonate_s.vol_r*(slider(0).value/127) snelh_R = 10+(sonate_s.vol_r*(6/127))*(slider(1).value/127) IF time2 < 60000 THEN 'einde van het stuk AddNote2Har Task(%sonate_S_R).har, sonate_S.note_r(1), Luidst_R END IF task(%sonate_s_R).freq = snelh_R INCR sonate_s.count_r IF sonate_s.count_r = 3 THEN sonate_s.count_r = 1 END IF CASE 1 'plugin 2: toonl ----- ----- ----- ----- ----- ----- IF ISTRUE on_off_r THEN 'initialisatie plugin on_off_r = %false sonate_s.gen_r(2) = 2 'dalen sonate_s.gen_r(4) = 0 'teller voor aantal noten in zelfde richting sonate_s.gen_r(3) = %true 'genereren of niet? delnote2har task(%sonate_S_R).har, sonate_s.note_r(1) delnote2har task(%sonate_S_R).har, sonate_s.note_r(2) END IF sonate_s.noteoff_r(1) = sonate_s.note_r(1) IF ISFALSE sonate_s.gen_r(3) THEN sonate_s.gen_r(1) = RND (1,2) 'via willekeur naar boven of naar beneden IF sonate_s.gen_r(1) = 1 THEN sonate_s.gen_r(2) = 1 'naar boven ELSE sonate_s.gen_r(2) = 2 'naar beneden END IF i = RND 'aantal noten in zelfde richting bepalen 1-12 FOR i = 1 TO 12 IF j >= (i-1)/12 AND j < i/12 THEN sonate_s.gen_r(5) = i+2 END IF NEXT i sonate_s.gen_r(3) = %true END IF SELECT CASE sonate_s.note_r(1) 'bereik van de piano en terugkaatsen; ook naargelang onderste stem CASE > 106 sonate_s.gen_r(2) = 2 sonate_s.gen_r(5) = 4 sonate_s.gen_r(3) = %true CASE < 72 sonate_s.gen_r(2) = 1 sonate_s.gen_r(5) = 12 sonate_s.gen_r(3) = %true END SELECT 'betekenis gen_r(...) IF sonate_s.gen_r(2) = 2 THEN 'chr naar beneden '1=RND richting i = RND (1,2) '2=richting IF i = 1 THEN sonate_s.note_r(2) = sonate_s.note_r(1)-1 ELSE sonate_s.note_r(2) = sonate_s.note_r(1)-2 ELSEIF sonate_s.gen_r(2) = 1 THEN 'chr naar boven '3=genereren of niet? i = RND (1,2) '4=teller noten zelfde richting IF i = 1 THEN sonate_s.note_r(2) = sonate_s.note_r(1)+1 ELSE sonate_s.note_r(2) = sonate_s.note_r(1)+2 END IF '5=aantal noten zelfde richting sonate_s.note_r(1) = sonate_s.note_r(2) sonate_s.vol_r = sonate_S.note_r(1) luidst_R = sonate_s.vol_r*(slider(0).value/127) snelh_R = 10+(sonate_s.vol_r*(6/127))*(slider(1).value/127) AddNote2Har Task(%sonate_S_R).har, sonate_S.note_r(1), Luidst_R task(%sonate_s_R).freq = snelh_r IF sonate_s.note_r(1) <> sonate_s.noteoff_r(1) THEN delnote2har task(%sonate_S_R).har, sonate_s.noteoff_r(1) 'if ... then omdat eerste keer noot zou blijven klinken INCR sonate_s.gen_r(4) IF sonate_s.gen_r(4) >= sonate_s.gen_r(5) THEN sonate_s.gen_r(3) = %false 'richtingbepaling opnieuw aanzetten sonate_s.gen_r(4) = 0 END IF CASE 2 'plugin 3: sprongen ----- ----- ----- ----- ----- ----- IF ISFALSE on_off_r THEN 'initialisatie plugin sonate_s.gen_r(1) = 1 'genereren aan sonate_s.gen_r(4) = 0 on_off_r = %true sonate_S.note_r(5)= 0 'betekenis gen_r(...) sonate_s.note_r(2) = sonate_s.note_r(1)+1 delnote2har task(%sonate_S_R).har, sonate_s.note_r(1) IF ISTRUE sonate_s.reverse2 THEN sonate_s.note_r(1) = 102 END IF delnote2har task(%sonate_S_R).har, sonate_s.note_r(1) delnote2har task(%sonate_S_R).har, sonate_s.note_r(2) IF ISFALSE sonate_s.reverse2 THEN sonate_S.note_r(5) = (time-40000)/2625 IF ISTRUE sonate_s.reverse2 THEN sonate_s.note_r(5) = ((time2*(-1))+20000)/2625 '1=genereren? IF sonate_s.gen_r(1) = 1 THEN '2=genereren grootte sprong / verplaatsing sonate_s.gen_r(2) = RND '3=grootte sprong (1 tot 8) FOR i = 1 TO 8 'sprong '4=teller per twee om gen(1) aan en uit te zetten IF sonate_s.gen_r(2) >= (i-1)/8 AND sonate_s.gen_r(2) < i/8 THEN'5=verplaatsing sonate_s.gen_r(3) = i '6=omhoog of omlaag END IF NEXT i sonate_s.gen_r(2) = RND FOR j = 1 TO 2 'verplaatsing van 0 tot kl sec IF sonate_s.gen_r(2) >= (j-1)/2 AND sonate_s.gen_r(2) < j/2 THEN sonate_s.gen_r(5) = j END IF NEXT j sonate_s.gen_r(2) = RND (1,2) 'richting verplaatsing IF sonate_s.gen_r(2) = 1 THEN sonate_s.gen_r(6)=%false ELSEIF sonate_s.gen_r(2)= 2 THEN sonate_s.gen_r(6)=%true END IF sonate_s.gen_r(1) = 0 IF sonate_s.note_r(1) > 107 THEN 'bereik piano sonate_s.gen_r(6) = %false sonate_s.gen_r(5) = 2 END IF IF sonate_s.note_r(2) < 72 THEN sonate_s.gen_r(6) = %true sonate_s.gen_r(5) = 2 END IF IF sonate_s.gen_r(6)=%false THEN 'noten genereren sonate_S.note_r(1) = sonate_S.note_r(1) - sonate_s.gen_r(5) END IF IF sonate_s.gen_r(6)=%true THEN sonate_S.note_r(1) = sonate_S.note_r(1) + sonate_s.gen_r(5) END IF sonate_S.note_r(2) = sonate_S.note_r(1) - sonate_S.gen_r(3)- sonate_S.note_r(5) END IF snelh_R = 10+(sonate_s.vol_r*(6/127))*(slider(1).value/127) IF sonate_s.gen_r(4) = 0 THEN AddNote2Har Task(%sonate_S_R).har, sonate_S.note_r(1), sonate_S.note_r(1)*(slider(0).value/127) ELSE AddNote2Har Task(%sonate_S_R).har, sonate_S.note_r(2), sonate_S.note_r(2)*(slider(0).value/127) END IF task(%sonate_s_R).freq = snelh_r INCR sonate_s.gen_r(4) IF sonate_s.gen_r(4) = 2 THEN sonate_s.gen_r(1) = 1 sonate_s.gen_r(4) = 0 END IF CASE 3 'plugin 4: eind deel A ----- ----- ----- ----- ----- ----- IF ISTRUE on_off_r THEN sonate_s.count_r = 0 sonate_s.gen_r(1) = 0 on_off_r = %false delnote2har task(%sonate_S_R).har, sonate_s.note_r(2) END IF delnote2har task(%sonate_S_R).har, sonate_s.note_r(1) delnote2har task(%sonate_S_R).har, sonate_s.note_r(1)-1 snelh_R = 10+(sonate_s.vol_r*(6/127))*(slider(1).value/127) IF sonate_s.count_r <= 6 THEN IF sonate_s.gen_r(1) = 0 THEN IF sonate_s.count_r <= 4 THEN AddNote2Har Task(%sonate_S_R).har, sonate_S.note_r(1)-1, (sonate_S.note_r(1)-1)*(slider(0).value/127) ELSE IF sonate_s.count_r <= 4 THEN AddNote2Har Task(%sonate_S_R).har, sonate_S.note_r(1), sonate_S.note_r(1)*(slider(0).value/127) END IF END IF task(%sonate_s_R).freq = snelh_r INCR sonate_s.count_r IF sonate_s.count_r > 8 THEN sonate_s.plug_R = 4 INCR sonate_s.gen_r(1) IF sonate_s.gen_r(1) = 2 THEN sonate_s.gen_r(1) = 0 CASE 4 'plugin 5: dodecafonie 1 ----- ----- ----- ----- ----- ----- IF ISFALSE on_off_r THEN 'genereren dodecafonische reeks in het begin FOR m = -5 TO 6 sonate_s.alldif (m+5) = m NEXT m DO FOR m = 0 TO 11 sonate_s.reeks(m) = RND(1) * 11 sonate_s.noten(m) = %False NEXT m FOR m = 0 TO 11 FOR l = 0 TO 11 IF m = sonate_s.reeks(l) THEN sonate_s.noten(m) = %True NEXT l NEXT m l = 0 FOR m = 0 TO 11 IF sonate_s.noten(m) THEN INCR l NEXT m LOOP UNTIL l = 12 FOR m = 0 TO 11 INCR sonate_s.reeks(m) NEXT m on_off_r = %true sonate_s.note_R(10)=0 'eerste noot dodecafonische reeks: BEGIN sonate_s.note_R(11)=1 'klank of stilte: KLANK sonate_s.note_R(12)=0 'noot of bovensecunde triller: NOOT sonate_s.note_R(13)=0 'teller gebeurtenissen: aantal noten die er gespeeld zijn sonate_s.note_r(14)=0 'teller gebeurtenissen: trillergeheel octaveren in 4 stappen: 0, +12, 0, -12 IF sonate_s.reverse = %true THEN controller task(%sonate_s_r).channel, 64, 0 END IF snelh_r = 24*(slider(1).value/127) IF sonate_s.note_R(11) = 1 THEN SELECT CASE sonate_s.note_r(14) CASE 0 IF sonate_s.note_R(12) = 0 THEN IF sonate_s.note_R(13) = 0 THEN 'eerste noot triller octaveren naar boven sonate_s.vol_l = sonate_s.reeks(sonate_s.note_R(10))+59+12 luidst_R = sonate_s.vol_l*(slider(0).value/127) AddNote2Har Task(%sonate_S_R).har, sonate_s.reeks(sonate_s.note_R(10))+59+12, Luidst_R ELSE 'rest gewoon afspelen sonate_s.vol_l = sonate_s.reeks(sonate_s.note_R(10))+59 luidst_R = sonate_s.vol_l*(slider(0).value/127) AddNote2Har Task(%sonate_S_R).har, sonate_s.reeks(sonate_s.note_R(10))+59, Luidst_R delnote2har task(%sonate_S_R).har, sonate_s.reeks(sonate_s.note_R(10))+59-12+1 delnote2har task(%sonate_S_R).har, sonate_s.reeks(sonate_s.note_R(10))+59+1 END IF ELSEIF sonate_s.note_R(12) = 1 THEN 'laatste noot triller octaveren naar beneden IF sonate_s.note_R(13) = (sonate_s.reeks(sonate_s.note_R(10))*2)-1 THEN sonate_s.vol_l = sonate_s.reeks(sonate_s.note_R(10))+59-12+1 luidst_R = sonate_s.vol_l*(slider(0).value/127) AddNote2Har Task(%sonate_S_R).har, sonate_s.reeks(sonate_s.note_R(10))+59-12+1, Luidst_R ELSE 'rest gewoon afspelen sonate_s.vol_l = sonate_s.reeks(sonate_s.note_R(10))+59+1 luidst_R = sonate_s.vol_l*(slider(0).value/127) AddNote2Har Task(%sonate_S_R).har, sonate_s.reeks(sonate_s.note_R(10))+59+1, Luidst_R delnote2har task(%sonate_S_R).har, sonate_s.reeks(sonate_s.note_R(10))+59+12 delnote2har task(%sonate_S_R).har, sonate_s.reeks(sonate_s.note_R(10))+59 END IF END IF CASE 1 IF sonate_s.note_R(12) = 0 THEN IF sonate_s.note_R(13) = 0 THEN sonate_s.vol_l = sonate_s.reeks(sonate_s.note_R(10))+12+59+12 luidst_R = sonate_s.vol_l*(slider(0).value/127) AddNote2Har Task(%sonate_S_R).har, sonate_s.reeks(sonate_s.note_R(10))+12+59+12, Luidst_R ELSE sonate_s.vol_l = sonate_s.reeks(sonate_s.note_R(10))+12+59 luidst_R = sonate_s.vol_l*(slider(0).value/127) AddNote2Har Task(%sonate_S_R).har, sonate_s.reeks(sonate_s.note_R(10))+12+59, Luidst_R delnote2har task(%sonate_S_R).har, sonate_s.reeks(sonate_s.note_R(10))+12+59-12+1 delnote2har task(%sonate_S_R).har, sonate_s.reeks(sonate_s.note_R(10))+12+59+1 END IF ELSEIF sonate_s.note_R(12) = 1 THEN IF sonate_s.note_R(13) = (sonate_s.reeks(sonate_s.note_R(10))*2)-1 THEN sonate_s.vol_l = sonate_s.reeks(sonate_s.note_R(10))+12+59-12+1 luidst_R = sonate_s.vol_l*(slider(0).value/127) AddNote2Har Task(%sonate_S_R).har, sonate_s.reeks(sonate_s.note_R(10))+12+59-12+1, Luidst_R ELSE sonate_s.vol_l = sonate_s.reeks(sonate_s.note_R(10))+12+59+1 luidst_R = sonate_s.vol_l*(slider(0).value/127) AddNote2Har Task(%sonate_S_R).har, sonate_s.reeks(sonate_s.note_R(10))+12+59+1, Luidst_R delnote2har task(%sonate_S_R).har, sonate_s.reeks(sonate_s.note_R(10))+12+59+12 delnote2har task(%sonate_S_R).har, sonate_s.reeks(sonate_s.note_R(10))+12+59 END IF END IF CASE 2 IF sonate_s.note_R(12) = 0 THEN IF sonate_s.note_R(13) = 0 THEN sonate_s.vol_l = sonate_s.reeks(sonate_s.note_R(10))+59+12 luidst_R = sonate_s.vol_l*(slider(0).value/127) AddNote2Har Task(%sonate_S_R).har, sonate_s.reeks(sonate_s.note_R(10))+59+12, Luidst_R ELSE sonate_s.vol_l = sonate_s.reeks(sonate_s.note_R(10))+59 luidst_R = sonate_s.vol_l*(slider(0).value/127) AddNote2Har Task(%sonate_S_R).har, sonate_s.reeks(sonate_s.note_R(10))+59, Luidst_R delnote2har task(%sonate_S_R).har, sonate_s.reeks(sonate_s.note_R(10))+59-12+1 delnote2har task(%sonate_S_R).har, sonate_s.reeks(sonate_s.note_R(10))+59+1 END IF ELSEIF sonate_s.note_R(12) = 1 THEN IF sonate_s.note_R(13) = (sonate_s.reeks(sonate_s.note_R(10))*2)-1 THEN sonate_s.vol_l = sonate_s.reeks(sonate_s.note_R(10))+59-12+1 luidst_R = sonate_s.vol_l*(slider(0).value/127) AddNote2Har Task(%sonate_S_R).har, sonate_s.reeks(sonate_s.note_R(10))+59-12+1, Luidst_R ELSE sonate_s.vol_l = sonate_s.reeks(sonate_s.note_R(10))+59+1 luidst_R = sonate_s.vol_l*(slider(0).value/127) AddNote2Har Task(%sonate_S_R).har, sonate_s.reeks(sonate_s.note_R(10))+59+1, Luidst_R delnote2har task(%sonate_S_R).har, sonate_s.reeks(sonate_s.note_R(10))+59+12 delnote2har task(%sonate_S_R).har, sonate_s.reeks(sonate_s.note_R(10))+59 END IF END IF CASE 3 IF sonate_s.note_R(12) = 0 THEN IF sonate_s.note_R(13) = 0 THEN sonate_s.vol_l = sonate_s.reeks(sonate_s.note_R(10))-12+59+12 luidst_R = sonate_s.vol_l*(slider(0).value/127) AddNote2Har Task(%sonate_S_R).har, sonate_s.reeks(sonate_s.note_R(10))-12+59+12, Luidst_R ELSE sonate_s.vol_l = sonate_s.reeks(sonate_s.note_R(10))-12+59 luidst_R = sonate_s.vol_l*(slider(0).value/127) AddNote2Har Task(%sonate_S_R).har, sonate_s.reeks(sonate_s.note_R(10))-12+59, Luidst_R delnote2har task(%sonate_S_R).har, sonate_s.reeks(sonate_s.note_R(10))-12+59-12+1 delnote2har task(%sonate_S_R).har, sonate_s.reeks(sonate_s.note_R(10))-12+59+1 END IF ELSEIF sonate_s.note_R(12) = 1 THEN IF sonate_s.note_R(13) = (sonate_s.reeks(sonate_s.note_R(10))*2)-1 THEN sonate_s.vol_l = sonate_s.reeks(sonate_s.note_R(10))-12+59-12+1 luidst_R = sonate_s.vol_l*(slider(0).value/127) AddNote2Har Task(%sonate_S_R).har, sonate_s.reeks(sonate_s.note_R(10))-12+59-12+1, Luidst_R ELSE sonate_s.vol_l = sonate_s.reeks(sonate_s.note_R(10))-12+59+1 luidst_R = sonate_s.vol_l*(slider(0).value/127) AddNote2Har Task(%sonate_S_R).har, sonate_s.reeks(sonate_s.note_R(10))-12+59+1, Luidst_R delnote2har task(%sonate_S_R).har, sonate_s.reeks(sonate_s.note_R(10))-12+59+12 delnote2har task(%sonate_S_R).har, sonate_s.reeks(sonate_s.note_R(10))-12+59 END IF END IF END SELECT ELSEIF sonate_s.note_R(11) = 0 THEN delnote2har task(%sonate_S_R).har, sonate_s.reeks(sonate_s.note_R(10))+59-12+1 delnote2har task(%sonate_S_R).har, sonate_s.reeks(sonate_s.note_R(10))+59+1 delnote2har task(%sonate_S_R).har, sonate_s.reeks(sonate_s.note_R(10))+59+12 delnote2har task(%sonate_S_R).har, sonate_s.reeks(sonate_s.note_R(10))+59 delnote2har task(%sonate_S_R).har, sonate_s.reeks(sonate_s.note_R(10))+12+59-12+1 delnote2har task(%sonate_S_R).har, sonate_s.reeks(sonate_s.note_R(10))+12+59+1 delnote2har task(%sonate_S_R).har, sonate_s.reeks(sonate_s.note_R(10))+12+59+12 delnote2har task(%sonate_S_R).har, sonate_s.reeks(sonate_s.note_R(10))+12+59 delnote2har task(%sonate_S_R).har, sonate_s.reeks(sonate_s.note_R(10))-12+59-12+1 delnote2har task(%sonate_S_R).har, sonate_s.reeks(sonate_s.note_R(10))-12+59+1 delnote2har task(%sonate_S_R).har, sonate_s.reeks(sonate_s.note_R(10))-12+59+12 delnote2har task(%sonate_S_R).har, sonate_s.reeks(sonate_s.note_R(10))-12+59 END IF task(%sonate_s_R).freq = snelh_r INCR sonate_s.note_R(12) IF sonate_s.note_R(12) => 2 THEN sonate_s.note_R(12) = 0 INCR sonate_s.note_R(13) IF sonate_s.note_R(13) => (sonate_s.reeks(sonate_s.note_R(10))*2) THEN sonate_s.note_R(11) = 0 IF sonate_s.note_R(13) => (sonate_s.reeks(sonate_s.note_R(10))*4) THEN 'initialisatie volgende noot INCR sonate_s.note_R(10) INCR sonate_s.note_r(14) IF sonate_s.note_r(14) => 4 THEN sonate_s.note_r(14) = 0 sonate_s.note_R(11)=1 sonate_s.note_R(12)=0 sonate_s.note_R(13)=0 END IF IF sonate_s.note_R(10) => 12 THEN IF ISFALSE sonate_s.reverse THEN sonate_s.plug_R = 5 'einde dodecafonie 1 IF ISTRUE sonate_s.reverse THEN sonate_s.plug_R = 2 'einde dodecafonie 2 sonate_s.reverse2 = %true starttime2 = timegettime on_off_r = %false END IF END IF CASE 5 '&&& plugin 6: tekstlezer ----- ----- ----- ----- ----- ----- IF ISTRUE on_off_r THEN on_off_r = %false nr = FREEFILE file = "C:\b\pb\gmt\lukas\sonate_s_tekst.txt" OPEN file FOR INPUT AS #nr letter = "" n = 1 sonate_s.note_r(10) = 0 'counter aantal noten <-> lengte woord sonate_s.note_r(11) = 1 'overschakelen delen sonate_s.note_r(12) = 1 'tellen aantal periodes die zijn geweest, incr na wisselen, moet min 5x in tekstbestand staan controller task(%sonate_s_r).channel, 64, 127 END IF IF sonate_s.note_r(10) = 0 THEN 'alleen genereren als het nodig is IF letter = "" THEN DO IF EOF(nr) THEN EXIT DO INPUT #nr, letter letter = TRIM$(letter) LOOP UNTIL letter <> "" END IF IF EOF(nr) THEN 'einde bestand (deze constructie niet noodzakelijk, alleen voor fouten in tekstbestand) CLOSE #nr sonate_s.plug_r = 4 starttime2 = timegettime sonate_s.reverse = %true sonate_s.note_r(1) = 90 delnote2har task(%sonate_S_R).har, sonate_s.note_r(1)-6 delnote2har task(%sonate_S_R).har, sonate_s.note_r(1)+6 EXIT SUB END IF sonate_s_woord = LCASE$(PARSE$(letter, " ",n)) 'SetDlgItemText gh.cockpit, %GMT_MSG1, TRIM$(sonate_s_woord) 'aanzetten om de tekst mee te volgen INCR n IF sonate_s_woord = "" THEN n=1 letter = "" END IF END IF delnote2har task(%sonate_S_R).har, sonate_s.note_r(1)-6 delnote2har task(%sonate_S_R).har, sonate_s.note_r(1)+6 sonate_s_letter = MID$(sonate_s_woord, sonate_s.note_r(10)+1, 1) IF LEN(sonate_s_woord)<> 0 THEN SELECT CASE sonate_s_letter CASE "_" 'overschakelen tussen hoog of laag IF sonate_s.note_r(11) = 0 THEN INCR sonate_s.note_r(11) ELSE DECR sonate_s.note_r(11) sonate_s.note_r(1) = 0 snelh_r = 0.5 INCR sonate_s.note_r(12) IF sonate_s.note_r(12) => 7 THEN 'einde tekst CLOSE #nr sonate_s.plug_r = 4 sonate_s.reverse = %true sonate_s.note_r(1) = 0 END IF sonate_s.note_r(10) = 0 IF sonate_s.note_r(12) < 7 THEN EXIT SUB CASE "e" IF sonate_s.note_r(11) = 0 THEN sonate_s.note_r(1) = 82 ELSE sonate_s.note_r(1) = 22 snelh_r = LEN(sonate_s_woord) CASE "n" IF sonate_s.note_r(11) = 0 THEN sonate_s.note_r(1) = 88 ELSE sonate_s.note_r(1) = 28 snelh_r = LEN(sonate_s_woord) CASE "a" IF sonate_s.note_r(11) = 0 THEN sonate_s.note_r(1) = 93 ELSE sonate_s.note_r(1) = 33 snelh_r = LEN(sonate_s_woord) CASE "t" IF sonate_s.note_r(11) = 0 THEN sonate_s.note_r(1) = 97 ELSE sonate_s.note_r(1) = 37 snelh_r = LEN(sonate_s_woord) CASE "i" IF sonate_s.note_r(11) = 0 THEN sonate_s.note_r(1) = 100 ELSE sonate_s.note_r(1) = 40 snelh_r = LEN(sonate_s_woord) CASE "r" IF sonate_s.note_r(11) = 0 THEN sonate_s.note_r(1) = 102 ELSE sonate_s.note_r(1) = 42 snelh_r = LEN(sonate_s_woord) CASE "o" IF sonate_s.note_r(11) = 0 THEN sonate_s.note_r(1) = 103 ELSE sonate_s.note_r(1) = 43 snelh_r = LEN(sonate_s_woord) CASE "d" IF sonate_s.note_r(11) = 0 THEN sonate_s.note_r(1) = 104 ELSE sonate_s.note_r(1) = 44 snelh_r = LEN(sonate_s_woord) CASE "s" IF sonate_s.note_r(11) = 0 THEN sonate_s.note_r(1) = 105 ELSE sonate_s.note_r(1) = 45 snelh_r = LEN(sonate_s_woord) CASE "l" IF sonate_s.note_r(11) = 0 THEN sonate_s.note_r(1) = 106 ELSE sonate_s.note_r(1) = 46 snelh_r = LEN(sonate_s_woord) CASE "q" IF sonate_s.note_r(11) = 0 THEN sonate_s.note_r(1) = 83 ELSE sonate_s.note_r(1) = 23 snelh_r = LEN(sonate_s_woord) CASE "y" IF sonate_s.note_r(11) = 0 THEN sonate_s.note_r(1) = 84 ELSE sonate_s.note_r(1) = 24 snelh_r = LEN(sonate_s_woord) CASE "x" IF sonate_s.note_r(11) = 0 THEN sonate_s.note_r(1) = 85 ELSE sonate_s.note_r(1) = 25 snelh_r = LEN(sonate_s_woord) CASE "f" IF sonate_s.note_r(11) = 0 THEN sonate_s.note_r(1) = 86 ELSE sonate_s.note_r(1) = 26 snelh_r = LEN(sonate_s_woord) CASE "c" IF sonate_s.note_r(11) = 0 THEN sonate_s.note_r(1) = 87 ELSE sonate_s.note_r(1) = 27 snelh_r = LEN(sonate_s_woord) CASE "z" IF sonate_s.note_r(11) = 0 THEN sonate_s.note_r(1) = 89 ELSE sonate_s.note_r(1) = 29 snelh_r = LEN(sonate_s_woord) CASE "j" IF sonate_s.note_r(11) = 0 THEN sonate_s.note_r(1) = 90 ELSE sonate_s.note_r(1) = 30 snelh_r = LEN(sonate_s_woord) CASE "w" IF sonate_s.note_r(11) = 0 THEN sonate_s.note_r(1) = 91 ELSE sonate_s.note_r(1) = 31 snelh_r = LEN(sonate_s_woord) CASE "p" IF sonate_s.note_r(11) = 0 THEN sonate_s.note_r(1) = 92 ELSE sonate_s.note_r(1) = 32 snelh_r = LEN(sonate_s_woord) CASE "b" IF sonate_s.note_r(11) = 0 THEN sonate_s.note_r(1) = 94 ELSE sonate_s.note_r(1) = 34 snelh_r = LEN(sonate_s_woord) CASE "u" IF sonate_s.note_r(11) = 0 THEN sonate_s.note_r(1) = 95 ELSE sonate_s.note_r(1) = 35 snelh_r = LEN(sonate_s_woord) CASE "m" IF sonate_s.note_r(11) = 0 THEN sonate_s.note_r(1) = 96 ELSE sonate_s.note_r(1) = 36 snelh_r = LEN(sonate_s_woord) CASE "k" IF sonate_s.note_r(11) = 0 THEN sonate_s.note_r(1) = 98 ELSE sonate_s.note_r(1) = 38 snelh_r = LEN(sonate_s_woord) CASE "h" IF sonate_s.note_r(11) = 0 THEN sonate_s.note_r(1) = 99 ELSE sonate_s.note_r(1) = 39 snelh_r = LEN(sonate_s_woord) CASE "v" IF sonate_s.note_r(11) = 0 THEN sonate_s.note_r(1) = 101 ELSE sonate_s.note_r(1) = 41 snelh_r = LEN(sonate_s_woord) CASE "g" IF sonate_s.note_r(11) = 0 THEN sonate_s.note_r(1) = 107 ELSE sonate_s.note_r(1) = 47 snelh_r = LEN(sonate_s_woord) CASE "." sonate_s.note_r(1) = 0 snelh_r = 0.75 CASE ";" sonate_s.note_r(1) = 0 snelh_r = 1.25 CASE ":" sonate_s.note_r(1) = 0 snelh_r = 1.25 CASE "!" sonate_s.note_r(1) = 0 snelh_r = 1.5 CASE "?" sonate_s.note_r(1) = 0 snelh_r = 1.5 CASE " " sonate_s.note_r(1) = 0 snelh_r = 1.5 CASE ELSE IF sonate_s.note_r(11) = 0 THEN sonate_s.note_r(1) = 108 ELSE sonate_s.note_r(1) = 48 snelh_r = LEN(sonate_s_woord) END SELECT ELSE 'wanneer komma's en linebreaks sonate_s.note_r(1) = 0 snelh_r = 2*(slider(1).value/127) END IF SELECT CASE sonate_s.note_r(12) CASE 1 task(%sonate_s_r).freq = 1*snelh_r CASE 2 task(%sonate_s_r).freq = 1*snelh_r CASE 3 task(%sonate_s_r).freq = 1.5*snelh_r CASE 4 task(%sonate_s_r).freq = 1.5*snelh_r CASE 5 task(%sonate_s_r).freq = 2*snelh_r CASE 6 task(%sonate_s_r).freq = 2*snelh_r CASE 7 task(%sonate_s_r).freq = 1 delnote2har task(%sonate_S_R).har, sonate_s.note_r(1)-6 delnote2har task(%sonate_S_R).har, sonate_s.note_r(1)+6 CASE ELSE warning"fout deel tekst" END SELECT IF sonate_s.note_r(1) <> 0 THEN IF sonate_s.note_r(11) = 0 THEN AddNote2Har Task(%sonate_S_R).har, sonate_s.note_r(1)-6, (sonate_s.note_r(1)-6)*(slider(0).value/127) ELSE AddNote2Har Task(%sonate_S_R).har, sonate_s.note_r(1)+6, (sonate_s.note_r(1)+6)*(slider(0).value/127) END IF END IF INCR sonate_s.note_r(10) IF sonate_s.note_r(10) > LEN(sonate_s_woord) THEN sonate_s.note_r(10) = 0 CASE ELSE '----- ----- ----- ----- ----- ----- warning "Foute plugin R" END SELECT END SUB SUB sonate_s_L() 'partij voor de linker "hand" LOCAL i AS DWORD LOCAL j AS SINGLE LOCAL luidst_l AS DWORD LOCAL snelh_l AS DWORD STATIC time AS DWORD STATIC starttime AS DWORD IF ISFALSE task(%sonate_s_l).tog THEN 'initialisatie rechter hand starttime = timegettime task(%sonate_s_l).tog = %true on_off_l = %false 'on_off_L klaar voor init plugin 1 lukascompositie_deel = 4 END IF RANDOMIZE TIMER time = timegettime - starttime luidst_l = 100*(slider(0).value/127) IF ISFALSE sonate_s.reverse2 THEN SELECT CASE time CASE < 22000 sonate_s.plug_L = 0 CASE < 62000 sonate_s.plug_L = 1 CASE ELSE sonate_s.plug_l = 2 END SELECT END IF IF ISTRUE sonate_s.reverse2 THEN SELECT CASE time2 CASE < 40000 sonate_s.plug_L = 3 END SELECT END IF SELECT CASE sonate_s.plug_L CASE 0 IF ISFALSE on_off_l THEN on_off_l = %true END IF task(%sonate_s_L).freq = 0.5 CASE 1 'plugin 1a: akkoorden ----- ----- ----- ----- ----- ----- IF ISTRUE on_off_l THEN 'initialisatie plugin on_off_l = %false sonate_s.count_l = 0 sonate_s.gen_L(1) = %true sonate_s.gen_L(4) = %false sonate_s.note_l(1) = 70 END IF delnote2har Task(%sonate_S_L).har, sonate_s.note_l(1) delnote2har Task(%sonate_S_L).har, sonate_s.note_l(2) delnote2har Task(%sonate_S_L).har, sonate_s.note_l(3) delnote2har Task(%sonate_S_L).har, sonate_s.note_l(4) IF sonate_s.gen_L(1) = %true THEN sonate_s.note_L(1) = 70 - ((time-22000)/1727) 'verloop bovenste noot (laatste getal verhogen: kleiner bereik) i = RND (1,2) IF i = 1 THEN sonate_s.gen_L(2) = 1 ELSE sonate_s.gen_L(2) = 1.5 'duurtijd klank sonate_s.gen_L(3) = RND (4,8) 'duurtijd stilte sonate_s.gen_L(1) = %false 'genereren keuze uit i = RND (1,4) IF i = 1 THEN sonate_s.note_l(2) = sonate_s.note_l(1) - 2 ELSEIF i = 2 THEN sonate_s.note_l(2) = sonate_s.note_l(1) - 3 ELSEIF i = 3 THEN sonate_s.note_l(2) = sonate_s.note_l(1) - 4 ELSEIF i = 4 THEN sonate_s.note_l(2) = sonate_s.note_l(1) - 5 END IF i = RND (1,4) IF i = 1 THEN sonate_s.note_l(3) = sonate_s.note_l(2) - 2 ELSEIF i = 2 THEN sonate_s.note_l(3) = sonate_s.note_l(2) - 3 ELSEIF i = 3 THEN sonate_s.note_l(3) = sonate_s.note_l(2) - 4 ELSEIF i = 4 THEN sonate_s.note_l(3) = sonate_s.note_l(2) - 5 END IF i = RND (1,4) IF i = 1 THEN sonate_s.note_l(4) = sonate_s.note_l(3) - 2 ELSEIF i = 2 THEN sonate_s.note_l(4) = sonate_s.note_l(3) - 3 ELSEIF i = 3 THEN sonate_s.note_l(4) = sonate_s.note_l(3) - 4 ELSEIF i = 4 THEN sonate_s.note_l(4) = sonate_s.note_l(3) - 5 END IF i = RND (1,4) IF i = 1 THEN sonate_s.note_l(5) = sonate_s.note_l(4) - 2 ELSEIF i = 2 THEN sonate_s.note_l(5) = sonate_s.note_l(4) - 3 ELSEIF i = 3 THEN sonate_s.note_l(5) = sonate_s.note_l(4) - 4 ELSEIF i = 4 THEN sonate_s.note_l(5) = sonate_s.note_l(4) - 5 END IF END IF IF ISFALSE sonate_s.gen_L(4) THEN IF sonate_s.count_l = 0 THEN AddNote2Har Task(%sonate_S_L).har, sonate_s.note_l(1), sonate_s.note_l(1)*(slider(0).value/127) AddNote2Har Task(%sonate_S_L).har, sonate_s.note_l(2), sonate_s.note_l(2)*(slider(0).value/127) AddNote2Har Task(%sonate_S_L).har, sonate_s.note_l(3), sonate_s.note_l(3)*(slider(0).value/127) AddNote2Har Task(%sonate_S_L).har, sonate_s.note_l(4), sonate_s.note_l(4)*(slider(0).value/127) task(%sonate_s_L).freq = ((sonate_s.gen_L(2))*2*(slider(1).value/127)) ELSEIF sonate_s.count_l = 1 THEN delnote2har Task(%sonate_S_L).har, sonate_s.note_l(1) delnote2har Task(%sonate_S_L).har, sonate_s.note_l(2) delnote2har Task(%sonate_S_L).har, sonate_s.note_l(3) delnote2har Task(%sonate_S_L).har, sonate_s.note_l(4) task(%sonate_s_L).freq = ((sonate_s.gen_L(3))*2*(slider(1).value/127)) END IF END IF INCR sonate_s.count_l IF sonate_s.count_l = 2 THEN sonate_s.count_l = 0 'counter reset sonate_s.gen_L(1) = %true 'genereren aan IF time > 60000 THEN sonate_s.gen_L(4) = %true delnote2har Task(%sonate_S_L).har, sonate_s.note_l(1) delnote2har Task(%sonate_S_L).har, sonate_s.note_l(2) delnote2har Task(%sonate_S_L).har, sonate_s.note_l(3) delnote2har Task(%sonate_S_L).har, sonate_s.note_l(4) task(%sonate_s_L).freq = ((sonate_s.gen_L(3))*2*(slider(1).value/127)) END IF END IF CASE 2 IF ISFALSE on_off_l THEN on_off_l = %true END IF task(%sonate_s_L).freq = 0.5 CASE 3 'plugin 1b: akkoorden omhoog ----- ----- ----- ----- ----- ----- IF ISTRUE on_off_l THEN 'initialisatie plugin on_off_l = %false sonate_s.count_l = 0 sonate_s.gen_L(1) = %true sonate_s.gen_L(4) = %false sonate_s.note_l(1) = 48 END IF delnote2har Task(%sonate_S_L).har, sonate_s.note_l(1) delnote2har Task(%sonate_S_L).har, sonate_s.note_l(2) delnote2har Task(%sonate_S_L).har, sonate_s.note_l(3) delnote2har Task(%sonate_S_L).har, sonate_s.note_l(4) IF sonate_s.gen_L(1) = %true THEN sonate_s.note_L(1) = 48 + (time2/1727) 'verloop bovenste noot (laatste getal verhogen: kleiner bereik) i = RND (1,2) IF i = 1 THEN sonate_s.gen_L(2) = 1 ELSE sonate_s.gen_L(2) = 1.5 'duurtijd klank sonate_s.gen_L(3) = RND (4,8) 'duurtijd stilte sonate_s.gen_L(1) = %false 'genereren keuze uit i = RND (1,4) IF i = 1 THEN sonate_s.note_l(2) = sonate_s.note_l(1) - 2 ELSEIF i = 2 THEN sonate_s.note_l(2) = sonate_s.note_l(1) - 3 ELSEIF i = 3 THEN sonate_s.note_l(2) = sonate_s.note_l(1) - 4 ELSEIF i = 4 THEN sonate_s.note_l(2) = sonate_s.note_l(1) - 5 END IF i = RND (1,4) IF i = 1 THEN sonate_s.note_l(3) = sonate_s.note_l(2) - 2 ELSEIF i = 2 THEN sonate_s.note_l(3) = sonate_s.note_l(2) - 3 ELSEIF i = 3 THEN sonate_s.note_l(3) = sonate_s.note_l(2) - 4 ELSEIF i = 4 THEN sonate_s.note_l(3) = sonate_s.note_l(2) - 5 END IF i = RND (1,4) IF i = 1 THEN sonate_s.note_l(4) = sonate_s.note_l(3) - 2 ELSEIF i = 2 THEN sonate_s.note_l(4) = sonate_s.note_l(3) - 3 ELSEIF i = 3 THEN sonate_s.note_l(4) = sonate_s.note_l(3) - 4 ELSEIF i = 4 THEN sonate_s.note_l(4) = sonate_s.note_l(3) - 5 END IF i = RND (1,4) IF i = 1 THEN sonate_s.note_l(5) = sonate_s.note_l(4) - 2 ELSEIF i = 2 THEN sonate_s.note_l(5) = sonate_s.note_l(4) - 3 ELSEIF i = 3 THEN sonate_s.note_l(5) = sonate_s.note_l(4) - 4 ELSEIF i = 4 THEN sonate_s.note_l(5) = sonate_s.note_l(4) - 5 END IF END IF sonate_s.vol_l = sonate_S.note_r(1) luidst_l = sonate_s.vol_l*(slider(0).value/127) IF ISFALSE sonate_s.gen_L(4) THEN IF sonate_s.count_l = 0 THEN AddNote2Har Task(%sonate_S_L).har, sonate_s.note_l(1), sonate_s.note_l(1)*(slider(0).value/127) AddNote2Har Task(%sonate_S_L).har, sonate_s.note_l(2), sonate_s.note_l(2)*(slider(0).value/127) AddNote2Har Task(%sonate_S_L).har, sonate_s.note_l(3), sonate_s.note_l(3)*(slider(0).value/127) AddNote2Har Task(%sonate_S_L).har, sonate_s.note_l(4), sonate_s.note_l(4)*(slider(0).value/127) task(%sonate_s_L).freq = ((sonate_s.gen_L(2))*2*(slider(1).value/127)) ELSEIF sonate_s.count_l = 1 THEN delnote2har Task(%sonate_S_L).har, sonate_s.note_l(1) delnote2har Task(%sonate_S_L).har, sonate_s.note_l(2) delnote2har Task(%sonate_S_L).har, sonate_s.note_l(3) delnote2har Task(%sonate_S_L).har, sonate_s.note_l(4) task(%sonate_s_L).freq = ((sonate_s.gen_L(3))*2*(slider(1).value/127)) END IF END IF INCR sonate_s.count_l IF sonate_s.count_l = 2 THEN sonate_s.count_l = 0 'counter reset sonate_s.gen_L(1) = %true 'genereren aan IF time2 > 38000 THEN stoptask %sonate_s_l 'einde plugin links END IF CASE ELSE '----- ----- ----- ----- ----- ----- warning "Foute plugin L" END SELECT END SUB