'[bool] "teen batti" ("drie lichtjes"; uit Middernachtskinderen) voor '------------------------ 'Vibi: 'midi range 60-96, velo implemented 'note off with release implemented 'polyphonic aftertouch, controls damping force 'controllers 20,21 for the vibrato motors speed (range 0-127) 'controller 22: vibrato motors speed (pentatonic & diatonic together) 'controller 23: damping value (0-127) 'controller 24: damping mode ' 0 = use value set with damping controller value ' 1 = use release value with note-off commands ' 2 = use aftertouch control of damping 'controller 64: for sustain. If sustain is > 0 then all damping modes will be disabled. 'controller 66: for initial switch ON (should be send only once) 'Midi Channel: 11 (1-16) or 10 (0-15) '------------------------ 'Debug: 'SetDlgItemText gh.cockpit, %GMT_msg1, [STR$()] 'warning "[]" '------------------------ 'Opmerkingen: 'tijdsstructuur beter in constante tabel vastgelegd (verhoudingen voorgesteld door beginpunt-eindpunt bvb AF (lengte tss a en f) ' dit om alles overzichtelijk te maken en rekenwerk voor pc uit te sparen (onbelangrijk tegenwoordig) 'glijdende factor bool.schuif had constant moeten zijn, één keer geplaatst, beveiligd, en telkens een getal van 0 tot 10 gevend! ' dit ook om reden van overzichtelijkheid en eenvormighed 'nog meer van vooraf nadenken (hoewel het resultaat al dichter bij het vooropgestelde idee lag dan ervoor) '-> tijdsstructuur en schaalbaarheid: goed idee en volledig geslaagd dit uit te werken '-> veel leesbaarder, meer uitleg, meer "propere" opbouw 'dempen leverde veel problemen op: demper hield klankstaaf niet tegen vilt maar schoot direct terug (klank als gevolg) ' evolutie: eerst geen taak in cockpit maar sub aan te roepen als demp instrument.channel, onder, boven, waarde ' daarna taak in cockpit die zichzelf na 1 seconde uit zet (helpt ook niet) ' alle controllers testen ... '------------------------ DECLARE SUB bool_0() DECLARE SUB bool_1() DECLARE SUB bool_2() DECLARE SUB bool_3() DECLARE SUB bool_4() DECLARE SUB bool_5() DECLARE SUB bool_6() 'DECLARE SUB dempnoot() '------------------------ TYPE bool_type togg(1 TO 10) AS INTEGER'initialisatie per tijdsstructuurblok; 8 voor interne tijd conclusie stuk note(1 TO 12) AS BYTE 'beschikbare noot-variabelen vol(1 TO 6) AS BYTE 'beschikbare bool.volume-variabelen freq(1 TO 4) AS SINGLE 'beschikbare snelheids-variabelen mo(1 TO 6) AS SINGLE 'modificatie voor RND in deel a en volume in deel A func(1 TO 2) AS BYTE 'de waarde, doorgegeven in deel c oo(1 TO 2) AS BYTE 'voor een non legato (tellers) schuif AS SINGLE 'schuivende parameters irt tijd (scaling per deel) END TYPE 'TYPE demp_type ' onder AS BYTE ' boven AS BYTE ' vol AS BYTE 'END TYPE GLOBAL bool AS bool_type 'type global maken 'GLOBAL demp AS demp_type GLOBAL tocc() AS BYTE 'noten voor het b-deel GLOBAL toneA() AS BYTE 'noten voor het a-deel(A) GLOBAL toneB() AS BYTE 'noten voor het a-deel(B) '------------------------ SUB bool_0() STATIC exttime AS DWORD 'overkoepelende tijd STATIC extstarttime AS DWORD 'starttijd overkoepelende tijd STATIC inttime AS DWORD 'tijd per deel STATIC intstarttime AS DWORD 'starttijd per deel STATIC endtime AS DWORD 'totale duurtijd van het stuk STATIC phi AS SINGLE 'de gulden snede STATIC i AS BYTE 'voor for-next lussen STATIC inttog AS INTEGER 'delen binnen de tijdsstructuur DIM tocc(1 TO 12) AS BYTE 'noten voor b-deel DIM toneA(1 TO 6) AS BYTE 'noten voor a-deel(A) DIM toneB(1 TO 6) AS BYTE 'noten voor a-deel(B) IF ISFALSE task(%bool_0).tog THEN phi = (1+SQR(5))/2 'gulden snede endtime = 273000 '4 minuten 33 extstarttime = timegettime 'overkoepelende tijd starten intstarttime = timegettime 'EERSTE internet tijd starten bool.togg(1) = %true 'interne init aanzetten task(%bool_0).tog = %true 'hooftinit uitzetten ARRAY ASSIGN toneA() = 1, 8, 12, 6, 2, 10 'volgorde van belang binnen mineur toonaard ARRAY ASSIGN toneB() = 4, 9, 3, 7, 11, 5 'volgorde van belang binnen mineur toonaard (taak2) controller vibi.channel, 66, 127 'vibi on controller vibi.channel, 22, 20 'vibrato on controller vibi.channel, 24, %true 'damping mode: release (of waarde 0 of waarde 1) controller vibi.channel, 64, 0 'damping mode: damping on END IF exttime = timegettime - extstarttime inttime = timegettime - intstarttime SELECT CASE exttime CASE < endtime/phi/phi/phi/phi/phi '------ EXP 1 IF ISTRUE bool.togg(1) THEN SetDlgItemText gh.cockpit, %GMT_msg1, "expositie - 1 bool.togg(1) = %false bool.freq(1) = 5/10 bool.freq(2) = 7/10 bool.mo(1) = 11 bool.mo(2) = 12 bool.mo(3) = 11 bool.mo(4) = 12 bool.mo(5) = 0.75 bool.mo(6) = 0.75 starttask %bool_1 starttask %bool_2 END IF bool.schuif = (inttime/(endtime/phi/phi/phi/phi/phi))*10 'laatste getal is scaling IF 0.5*((bool.schuif/3)*2) > 0.5 THEN bool.freq(1) = 0.5*((bool.schuif/3)*2) ELSE bool.freq(1) = 0.5 IF 0.7*((bool.schuif/3)*2) > 0.7 THEN bool.freq(2) = 0.7*((bool.schuif/3)*2) ELSE bool.freq(2) = 0.7 bool.mo(1) = 11-((bool.schuif^2)/10) bool.mo(2) = 12-((bool.schuif^2)/10) bool.mo(3) = 11-((bool.schuif^2)/10) bool.mo(4) = 12-((bool.schuif^2)/10) CASE < endtime/phi/phi/phi/phi '------ EXP 2 IF ISFALSE bool.togg(1) THEN SetDlgItemText gh.cockpit, %GMT_msg1, "expositie - 2 intstarttime = timegettime bool.togg(1) = %true stoptask %bool_1 stoptask %bool_2 'demp.onder = 60 : demp.boven = 96 : demp.vol = 30 : task(%demp).tog = %false : starttask %demp ARRAY ASSIGN tocc() = 63, 66, 68, 70, 0, 0, _ 'toccata akk A 64, 65, 67, 69, 0, 0 'toccata akk B bool.vol(3) = 100 bool.vol(4) = 100 bool.freq(3) = 5*2 bool.freq(4) = 7*2 starttask %bool_3 starttask %bool_4 EXIT SUB 'moet onderste blijven! RESET TIJD END IF bool.schuif = (inttime/((endtime/phi/phi/phi/phi)-(endtime/phi/phi/phi/phi/phi)))*10 bool.vol(3) = 80 - (bool.schuif*7) bool.vol(4) = 80 - (bool.schuif*7) IF (5*2)/((bool.schuif/2)*3) < 10 THEN bool.freq(3) = (5*2)/((bool.schuif/2)*3) ELSE bool.freq(1) = 10 IF (7*2)/((bool.schuif/2)*3) < 14 THEN bool.freq(4) = (7*2)/((bool.schuif/2)*3) ELSE bool.freq(2) = 14 CASE < endtime/phi/phi/phi '------ EXP 3 IF ISTRUE bool.togg(1) THEN SetDlgItemText gh.cockpit, %GMT_msg1, "expositie - 3 intstarttime = timegettime bool.togg(1) = %false stoptask %bool_3 stoptask %bool_4 'demp.onder = 60 : demp.boven = 96 : demp.vol = 30 : task(%demp).tog = %false : starttask %demp bool.func(1) = 1 bool.func(2) = 1 bool.vol(5) = 0 bool.vol(6) = 0 bool.togg(5)= %false bool.togg(6) = %false starttask %bool_5 starttask %bool_6 EXIT SUB 'moet onderste blijven! RESET TIJD END IF bool.schuif = (inttime/((endtime/phi/phi/phi)-(endtime/phi/phi/phi/phi)))*6 bool.func(1) = (((SIN(bool.schuif/2)*COS(bool.schuif*4))+1)/2)*37 bool.func(2) = (((SIN((bool.schuif-0.5)/2)*COS((bool.schuif-0.5)*4))+1)/2)*37 bool.vol(5) = 64 + ((SIN(bool.schuif/2)*COS(bool.schuif*4))*30) bool.vol(6) = 64 + ((SIN((bool.schuif-0.5)/2)*COS((bool.schuif-0.5)*4))*30) CASE < (((endtime/phi/phi)-(endtime/phi/phi/phi))/phi/phi)+(endtime/phi/phi/phi)'------ REEXP 1 IF ISFALSE bool.togg(1) THEN SetDlgItemText gh.cockpit, %GMT_msg1, "reexpositie - 1 intstarttime = timegettime bool.togg(1) = %true stoptask %bool_5 stoptask %bool_6 'demp.onder = 60 : demp.boven = 96 : demp.vol = 30 : task(%demp).tog = %false : starttask %demp bool.mo(1) = 1 bool.mo(2) = 1 bool.freq(1) = 0.5 bool.mo(5) = 0.5 bool.mo(3) = 1 bool.mo(4) = 1 bool.freq(2) = 0.7 bool.mo(6) = 0.5 starttask %bool_1 starttask %bool_2 EXIT SUB 'moet onderste blijven! RESET TIJD END IF bool.schuif = (inttime/(((((endtime/phi/phi)-(endtime/phi/phi/phi))/phi/phi)+(endtime/phi/phi/phi))-(endtime/phi/phi/phi)))*10 bool.mo(1) = 1 bool.mo(2) = 1 IF 0.5*((((bool.schuif^2)/10)*-1)+10) > 1 THEN bool.freq(1) = 0.3333*((((bool.schuif^2)/10)*-1)+10) ELSE bool.freq(1) = 0.3333 bool.mo(5) = 0.5+((((-1)*((bool.schuif/10)^2))+1)/2) bool.mo(3) = 1 bool.mo(4) = 1 IF 0.7*((((bool.schuif^2)/10)*-1)+10) > 1 THEN bool.freq(2) = 0.4667*((((bool.schuif^2)/10)*-1)+10) ELSE bool.freq(2) = 0.4667 bool.mo(6) = bool.mo(5) CASE < (((endtime/phi/phi)-(endtime/phi/phi/phi))/phi)+(endtime/phi/phi/phi) '------ REEXP 2 IF ISTRUE bool.togg(1) THEN SetDlgItemText gh.cockpit, %GMT_msg1, "reexpositie - 2 stoptask %bool_1 stoptask %bool_2 intstarttime = timegettime bool.togg(1) = %false 'demp.onder = 60 : demp.boven = 96 : demp.vol = 30 : task(%demp).tog = %false : starttask %demp ARRAY ASSIGN tocc() = 87, 90, 92, 0, 0, 0, _ 89, 91, 0, 0, 0, 0 bool.vol(3) = 0 bool.vol(4) = 0 bool.freq(3) = 5 bool.freq(4) = 7 starttask %bool_3 starttask %bool_4 EXIT SUB 'moet onderste blijven! RESET TIJD END IF bool.schuif = (inttime/(((((endtime/phi/phi)-(endtime/phi/phi/phi))/phi)+(endtime/phi/phi/phi))_ -((((endtime/phi/phi)-(endtime/phi/phi/phi))/phi/phi)+(endtime/phi/phi/phi))))*2 bool.vol(3) = 60*((((bool.schuif-1)^2)*(-1))+1) bool.vol(4) = 60*((((bool.schuif-1)^2)*(-1))+1) IF 5*(2*((((bool.schuif-1)^2)*(-1))+1)) > 1 THEN bool.freq(3) = 5*(2*((((bool.schuif-1)^2)*(-1))+1)) ELSE bool.freq(3) = 0.5 IF 7*(2*((((bool.schuif-1)^2)*(-1))+1)) > 1 THEN bool.freq(4) = 7*(2*((((bool.schuif-1)^2)*(-1))+1)) ELSE bool.freq(4) = 0.7 CASE < endtime/phi/phi '------ REEXP 3 IF ISFALSE bool.togg(1) THEN SetDlgItemText gh.cockpit, %GMT_msg1, "reexpositie - 3 stoptask %bool_3 stoptask %bool_4 'demp.onder = 60 : demp.boven = 96 : demp.vol = 30 : task(%demp).tog = %false : starttask %demp intstarttime = timegettime bool.func(1) = 0.5*37 bool.func(2) = 0.95*37 bool.vol(5) = 0 bool.vol(6) = 0 bool.togg(5) = %false bool.togg(6) = %false bool.togg(1) = %true bool.togg(9) = %false bool.togg(10) = %false starttask %bool_5 starttask %bool_6 EXIT SUB 'moet onderste blijven! RESET TIJD END IF bool.schuif = (inttime/((endtime/phi/phi)-((((endtime/phi/phi)-(endtime/phi/phi/phi))/phi)+(endtime/phi/phi/phi))))*6 bool.func(1) = (((SIN(2*bool.schuif)/2)+0.5)*27)+5 bool.func(2) = (((SIN((2*bool.schuif)+2)/2)+0.5)*27)+5 IF ISFALSE bool.togg(9) THEN IF bool.schuif => 5.5 THEN stoptask %bool_5 : bool.togg(9) = %true END IF IF ISFALSE bool.togg(10) THEN IF bool.schuif => 4.5 THEN stoptask %bool_6 : bool.togg(10) = %true END IF bool.vol(5) = 22+(((bool.schuif^2)/3)*4) bool.vol(6) = 22+(((bool.schuif^2)/3)*4) CASE < (((endtime/phi)-(endtime/phi/phi))/phi/phi)+(endtime/phi/phi) '------ STRETTO 1 IF ISTRUE bool.togg(1) THEN SetDlgItemText gh.cockpit, %GMT_msg1, "stretto - 1 intstarttime = timegettime bool.togg(1) = %false 'demp.onder = 60 : demp.boven = 96 : demp.vol = 30 : task(%demp).tog = %false : starttask %demp bool.freq(1) = 5/10 bool.freq(2) = 7/10 bool.mo(1) = 11 bool.mo(2) = 11 bool.mo(3) = 11 bool.mo(4) = 11 bool.mo(5) = 1 bool.mo(6) = 1 starttask %bool_1 starttask %bool_2 EXIT SUB 'moet onderste blijven! RESET TIJD END IF bool.schuif = inttime/((endtime/phi)-(endtime/phi/phi))*10 IF bool.schuif > 1 THEN IF 0.5*((bool.schuif/3)*2) > 0.5 THEN bool.freq(1) = 0.5*((bool.schuif/3)*2) ELSE bool.freq(1) = 0.5 IF 0.7*((bool.schuif/3)*2) > 0.7 THEN bool.freq(2) = 0.7*((bool.schuif/3)*2) ELSE bool.freq(2) = 0.7 ELSE bool.freq(1) = 0.5 bool.freq(2) = 0.7 END IF bool.mo(1) = 11-((bool.schuif^2)/10) bool.mo(2) = 11-((bool.schuif^2)/10) bool.mo(3) = 11-((bool.schuif^2)/10) bool.mo(4) = 11-((bool.schuif^2)/10) CASE < (((endtime/phi)-(endtime/phi/phi))/phi)+(endtime/phi/phi)'------ STRETTO 2 IF ISFALSE bool.togg(1) THEN SetDlgItemText gh.cockpit, %GMT_msg1, "stretto - 2 bool.togg(1) = %true ARRAY ASSIGN tocc() = 62, 0, 0, 0, 0, 0,_ 60, 63, 0, 0, 0, 0 bool.vol(3) = 15 bool.freq(3) = 0.5*2 bool.vol(4) = 15 bool.freq(4) = 0.7*2 starttask %bool_3 starttask %bool_4 END IF bool.schuif = inttime/((endtime/phi)-(endtime/phi/phi))*10 IF bool.schuif > 1 THEN IF 0.5*((bool.schuif/3)*2) > 0.5 THEN bool.freq(1) = 0.5*((bool.schuif/3)*2) ELSE bool.freq(1) = 0.5 IF 0.7*((bool.schuif/3)*2) > 0.7 THEN bool.freq(2) = 0.7*((bool.schuif/3)*2) ELSE bool.freq(2) = 0.7 ELSE bool.freq(1) = 0.5 bool.freq(2) = 0.7 END IF bool.mo(1) = 11-((bool.schuif^2)/10) bool.mo(2) = 11-((bool.schuif^2)/10) bool.mo(3) = 11-((bool.schuif^2)/10) bool.mo(4) = 11-((bool.schuif^2)/10) bool.vol(3) = 10+(9*((bool.schuif^2)/10)) IF (0.5*2)*((bool.schuif^2)/10) > 0.5 THEN bool.freq(3) = (0.5*2)*((bool.schuif^2)/10) ELSE bool.freq(3) = 0.5 bool.vol(4) = 10+(9*((bool.schuif^2)/10)) IF (0.7*2)*((bool.schuif^2)/10) > 0.7 THEN bool.freq(4) = (0.7*2)*((bool.schuif^2)/10) ELSE bool.freq(4) = 0.7 CASE < endtime/phi '------ STRETTO 3 IF ISTRUE bool.togg(1) THEN SetDlgItemText gh.cockpit, %GMT_msg1, "stretto - 3 bool.togg(1) = %false bool.func(1) = 90 bool.vol(5) = 0 bool.togg(5) = %false starttask %bool_5 END IF bool.schuif = inttime/((endtime/phi)-(endtime/phi/phi))*10 IF bool.schuif > 1 THEN IF 0.5*((bool.schuif/3)*2) > 0.5 THEN bool.freq(1) = 0.5*((bool.schuif/3)*2) ELSE bool.freq(1) = 0.5 IF 0.7*((bool.schuif/3)*2) > 0.7 THEN bool.freq(2) = 0.7*((bool.schuif/3)*2) ELSE bool.freq(2) = 0.7 ELSE bool.freq(1) = 0.5 bool.freq(2) = 0.7 END IF bool.mo(1) = 11-((bool.schuif^2)/10) bool.mo(2) = 11-((bool.schuif^2)/10) bool.mo(3) = 11-((bool.schuif^2)/10) bool.mo(4) = 11-((bool.schuif^2)/10) bool.vol(3) = 10+(9*((bool.schuif^2)/10)) IF (0.5*2)*((bool.schuif^2)/10) > 0.5 THEN bool.freq(3) = (0.5*2)*((bool.schuif^2)/10) ELSE bool.freq(3) = 0.5 bool.vol(4) = 10+(9*((bool.schuif^2)/10)) IF (0.7*2)*((bool.schuif^2)/10) > 0.7 THEN bool.freq(4) = (0.7*2)*((bool.schuif^2)/10) ELSE bool.freq(4) = 0.7 bool.func(1) = ((SIN(2*bool.schuif)*COS(4*bool.schuif)/SIN(bool.schuif))*2)+4+28 bool.vol(5) = 100 CASE < ((endtime-(endtime/phi))/phi/phi)+(endtime/phi)'------ CONCL SOLO 1 IF ISFALSE bool.togg(1) THEN SetDlgItemText gh.cockpit, %GMT_msg1, "concluderende solo - 1 intstarttime = timegettime bool.togg(1) = %true 'demp.onder = 60 : demp.boven = 96 : demp.vol = 30 : task(%demp).tog = %false : starttask %demp stoptask %bool_3 stoptask %bool_4 bool.func(1) = 92 bool.vol(5) = 0 bool.vol(6) = 0 bool.togg(5) = %false bool.togg(6) = %false bool.mo(1) = 1 bool.mo(2) = 1 bool.mo(5) = 1 bool.freq(1) = 10 bool.mo(3) = bool.mo(1) bool.mo(4) = bool.mo(2) bool.mo(6) = bool.mo(5) bool.freq(2) = 14 ARRAY ASSIGN toneA() = 1, 8, 12, 3, 2, 9 ARRAY ASSIGN toneB() = 5, 10, 6, 11, 7, 4 starttask %bool_6 EXIT SUB 'moet onderste blijven! RESET TIJD END IF bool.schuif = (inttime/((((endtime-(endtime/phi))/phi/phi)+(endtime/phi))-(endtime/phi)))*10 bool.func(1) = 29+(((SIN((bool.schuif-12)*(0.5*(bool.schuif-12))))+1)*4) bool.func(2) = 29+(((SIN((bool.schuif-12.25)*(0.5*(bool.schuif-12.25))))+1)*4) bool.vol(5) = 60+((bool.func(1)-29)*2) bool.vol(6) = 60+((bool.func(2)-29)*2) bool.mo(2) = 1+((bool.schuif^2)/10) bool.mo(4) = bool.mo(2) IF ((bool.schuif^2)/10) > 1 THEN bool.freq(1) = 5/((bool.schuif^2)/10) ELSE bool.freq(1) = 5 IF ((bool.schuif^2)/10) > 1 THEN bool.freq(2) = 7/((bool.schuif^2)/10) ELSE bool.freq(2) = 7 IF ((bool.schuif^2)/10) > 1 THEN bool.mo(5) = 1-(0.03*((bool.schuif^2)/10)) ELSE bool.mo(5) = 1 bool.mo(6) = bool.mo(5) CASE < ((endtime-(endtime/phi))/phi)+(endtime/phi)'------ CONCL SOLO 2 IF ISTRUE bool.togg(1) THEN SetDlgItemText gh.cockpit, %GMT_msg1, "concluderende solo - 2 intstarttime = timegettime bool.togg(1) = %false 'demp.onder = 60 : demp.boven = 96 : demp.vol = 30 : task(%demp).tog = %false : starttask %demp stoptask %bool_1 stoptask %bool_2 ARRAY ASSIGN tocc() = 91, 95, 96, 0, 0, 0, _ 89, 93, 0, 0, 0, 0 bool.vol(3) = 0 bool.vol(4) = 0 bool.freq(3) = 5 bool.freq(4) = 7 starttask %bool_3 starttask %bool_4 EXIT SUB 'moet onderste blijven! RESET TIJD END IF bool.schuif = (inttime/((((endtime-(endtime/phi))/phi)+(endtime/phi))-(((endtime-(endtime/phi))/phi/phi)+(endtime/phi))))*10 bool.vol(3) = 60*(((((bool.schuif/10)-1)^2)*(-1))+1) bool.vol(4) = 60*(((((bool.schuif/10)-1)^2)*(-1))+1) IF 5*(2*(((((bool.schuif/10)-1)^2)*(-1))+1)) > 0.5 THEN bool.freq(3) = 5*(2*(((((bool.schuif/10)-1)^2)*(-1))+1)) ELSE bool.freq(3) = 0.5 IF 7*(2*(((((bool.schuif/10)-1)^2)*(-1))+1)) > 0.7 THEN bool.freq(4) = 7*(2*(((((bool.schuif/10)-1)^2)*(-1))+1)) ELSE bool.freq(4) = 0.7 bool.func(1) = ((SIN((bool.schuif-10)^2)+1)*4)+(((-0.21)*((bool.schuif)^2))+21) bool.vol(5) = 60-(3.5*((bool.schuif^2)/10)) bool.func(2) = (bool.schuif^2)/4.8 bool.vol(6) = 60-(3.5*((bool.schuif^2)/10)) CASE < endtime '------ CONCL SOLO 3 IF ISFALSE bool.togg(1) THEN SetDlgItemText gh.cockpit, %GMT_msg1, "concluderende solo - 3 intstarttime = timegettime stoptask %bool_5 stoptask %bool_6 'demp.onder = 60 : demp.boven = 96 : demp.vol = 30 : task(%demp).tog = %false : starttask %demp bool.togg(1) = %true bool.togg(8) = %true bool.vol(3) = 0 bool.freq(3) = 5 bool.vol(4) = 0 bool.freq(4) = 7 bool.mo(1) = 1 bool.mo(2) = 1 bool.freq(1) = 5 bool.mo(5) = 0 bool.mo(3) = bool.mo(1) bool.mo(4) = bool.mo(2) bool.freq(2) = 7 bool.mo(6) = bool.mo(5) starttask %bool_1 starttask %bool_2 EXIT SUB 'moet onderste blijven! RESET TIJD END IF bool.schuif = (inttime/((endtime)-(((endtime-(endtime/phi))/phi)+(endtime/phi))))*10 SELECT CASE bool.schuif CASE < 1 IF ISTRUE bool.togg(8) THEN bool.togg(8) = %false : ARRAY ASSIGN tocc() = 91, 95, 96, 0, 0, 0, _ 89, 93, 0, 0, 0, 0 CASE < 2 IF ISFALSE bool.togg(8) THEN bool.togg(8) = %true : ARRAY ASSIGN tocc() = 86, 89, 91, 94, 0, 0, _ 88, 93, 0, 0, 0, 0 CASE < 3 IF ISTRUE bool.togg(8) THEN bool.togg(8) = %false : ARRAY ASSIGN tocc() = 82, 84, 88, 89, 0, 0, _ 86, 91, 0, 0, 0, 0 CASE < 4 IF ISFALSE bool.togg(8) THEN bool.togg(8) = %true : ARRAY ASSIGN tocc() = 79, 83, 84, 0, 0, 0, _ 77, 81, 0, 0, 0, 0 CASE < 5 IF ISTRUE bool.togg(8) THEN bool.togg(8) = %false : ARRAY ASSIGN tocc() = 74, 77, 79, 82, 0, 0, _ 76, 81, 0, 0, 0, 0 CASE < 6 IF ISFALSE bool.togg(8) THEN bool.togg(8) = %true : ARRAY ASSIGN tocc() = 70, 72, 76, 77, 0, 0, _ 74, 79, 0, 0, 0, 0 CASE < 7 IF ISTRUE bool.togg(8) THEN bool.togg(8) = %false : ARRAY ASSIGN tocc() = 67, 71, 72, 0, 0, 0, _ 65, 69, 0, 0, 0, 0 : stoptask %bool_1 _ : stoptask %bool_2 CASE < 8 IF ISFALSE bool.togg(8) THEN bool.togg(8) = %true : ARRAY ASSIGN tocc() = 67, 70, 0, 0, 0, 0, _ 64, 65, 69, 72, 0, 0 CASE < 9 IF ISTRUE bool.togg(8) THEN bool.togg(8) = %false : ARRAY ASSIGN tocc() = 62, 65, 70, 0, 0, 0, _ 64, 67, 69, 72, 0, 0 CASE ELSE IF ISFALSE bool.togg(8) THEN bool.togg(8) = %true : ARRAY ASSIGN tocc() = 60, 64, 69, 0, 0, 0, _ 62, 65, 67, 0, 0, 0 END SELECT bool.vol(3) = 60*((((bool.schuif/10)^2)*(-1))+1) bool.vol(4) = 60*((((bool.schuif/10)^2)*(-1))+1) IF 5*(2*((((bool.schuif/10)^2)*(-1))+1)) > 0.5 THEN bool.freq(3) = 5*(2*((((bool.schuif/10)^2)*(-1))+1)) ELSE bool.freq(3) = 0.5 IF 7*(2*((((bool.schuif/10)^2)*(-1))+1)) > 0.7 THEN bool.freq(4) = 7*(2*((((bool.schuif/10)^2)*(-1))+1)) ELSE bool.freq(4) = 0.7 IF ((bool.schuif^2)/10) > 1 THEN bool.freq(1) = 5/((bool.schuif^2)/10) ELSE bool.freq(1) = 5 IF ((bool.schuif^2)/10) > 1 THEN bool.freq(2) = 7/((bool.schuif^2)/10) ELSE bool.freq(2) = 7 IF ((bool.schuif^2)/10) > 1 THEN bool.mo(5) = 1-(0.05*((bool.schuif^2)/10)) ELSE bool.mo(5) = 1 bool.mo(2) = 1+((bool.schuif^2)/10) bool.mo(6) = bool.mo(5) bool.mo(4) = bool.mo(2) CASE < endtime+5000 'nagalm ------ IF ISTRUE bool.togg(1) THEN SetDlgItemText gh.cockpit, %GMT_msg1, " stoptask %bool_6 stoptask %bool_5 stoptask %bool_4 stoptask %bool_3 stoptask %bool_2 stoptask %bool_1 mm_vibi_off bool.togg(1) = %false stoptask %bool_0 END IF END SELECT task(%bool_0).freq = 100 END SUB '------------------------ SUB bool_1()'sturen: (tone()), mo(1), mo(2), freq(1)[5:7 met freq(2)], mo(5)[tussen 0-1] STATIC localfreq AS SINGLE RANDOMIZE TIMER bool.mo(1) = MAX(bool.mo(1), 0) bool.mo(2) = MAX(bool.mo(2), 0) bool.mo(5) = MAX(bool.mo(5), 0) bool.note(1) = ((RND()^bool.mo(1))*5)+1 bool.note(2) = (RND()^bool.mo(2))*2 bool.vol(1) = (60 + (bool.note(1)*4))*bool.mo(5) bool.vol(1) = bool.vol(1) * 0.6 'SCALING VIBI bool.vol(1) = MAX(bool.vol(1), 15) 'SCALING VIBI play vibi.channel, 59+(toneA(bool.note(1))+(12*bool.note(2))), bool.vol(1)*bool.mo(5) localfreq = MAX(MIN((bool.freq(1)-(bool.note(1)/6)), 10), 0.5) task(%bool_1).freq = localfreq END SUB '------------ SUB bool_2()'sturen: (tone()), mo(3), mo(4), freq(2)[7:5 met freq(1)], mo(6)[tussen 0-1] STATIC localfreq AS SINGLE RANDOMIZE TIMER bool.mo(3) = MAX(bool.mo(3), 0) bool.mo(4) = MAX(bool.mo(4), 0) bool.mo(6) = MAX(bool.mo(6), 0) bool.note(3) = ((RND()^bool.mo(3))*5)+1 bool.note(4) = (RND()^bool.mo(4))*2 bool.vol(2) = (60 + (bool.note(3)*4))*bool.mo(6) bool.vol(2) = bool.vol(2) * 0.6 'SCALING VIBI bool.vol(2) = MAX(bool.vol(2), 15) 'SCALING VIBI play vibi.channel, 59+(toneB(bool.note(3))+(12*bool.note(4))), bool.vol(2)*bool.mo(6) localfreq = MAX(MIN((bool.freq(2)-(bool.note(3)/6)), 14), 0.5) task(%bool_2).freq = localfreq END SUB '------------------------ SUB bool_3()'sturen: tocc(), vol(3), freq(3)[5:7 met freq(4)] bool.vol(3) = bool.vol(3) * 0.25 'SCALING VIBI bool.vol(3) = MAX(MIN(bool.vol(3), 127), 15)'SCALING VIBI IF tocc(1) <> 0 THEN play vibi.channel, tocc(1), bool.vol(3) IF tocc(2) <> 0 THEN play vibi.channel, tocc(2), bool.vol(3) IF tocc(3) <> 0 THEN play vibi.channel, tocc(3), bool.vol(3) IF tocc(4) <> 0 THEN play vibi.channel, tocc(4), bool.vol(3) IF tocc(5) <> 0 THEN play vibi.channel, tocc(5), bool.vol(3) IF tocc(6) <> 0 THEN play vibi.channel, tocc(6), bool.vol(3) bool.freq(3) = MAX(MIN(bool.freq(3), 10), 0.5) task(%bool_3).freq = bool.freq(3) END SUB '------------ SUB bool_4()'sturen: (tocc()), vol(4), freq(4)[7:5 met freq(4)] bool.vol(4) = bool.vol(4) * 0.25 'SCALING VIBI bool.vol(4) = MAX(MIN(bool.vol(4), 127), 15)'SCALING VIBI IF tocc(7) <> 0 THEN play vibi.channel, tocc(7), bool.vol(4) IF tocc(8) <> 0 THEN play vibi.channel, tocc(8), bool.vol(4) IF tocc(9) <> 0 THEN play vibi.channel, tocc(9), bool.vol(4) IF tocc(10) <> 0 THEN play vibi.channel, tocc(10), bool.vol(4) IF tocc(11) <> 0 THEN play vibi.channel, tocc(11), bool.vol(4) IF tocc(12) <> 0 THEN play vibi.channel, tocc(12), bool.vol(4) bool.freq(4) = MAX(MIN(bool.freq(4), 14), 0.5) task(%bool_4).freq = bool.freq(4) END SUB '------------------------ SUB bool_5()'sturen: func(1)[1 TO 37], vol(5), togg(5)[%false] IF ISFALSE bool.togg(5) THEN bool.func(1) = MAX(MIN(bool.func(1), 37), 1) bool.note(9) = bool.func(1) bool.note(10) = bool.note(9) bool.togg(5) = %true END IF bool.func(1) = MAX(MIN(bool.func(1), 37), 1) bool.note(9) = bool.func(1) IF bool.note(10) <> bool.note(9) THEN bool.vol(5) = bool.vol(5) * 0.6 'SCALING VIBI bool.vol(5) = MAX(MIN(bool.vol(5), 127), 15)'SCALING VIBI controller vibi.channel, 23, bool.vol(5)/2 release vibi.channel, bool.note(9)+59, bool.vol(5)/2 noteoff vibi.channel, bool.note(9)+59 play vibi.channel, bool.note(9)+59, bool.vol(5) bool.note(10) = bool.note(9) END IF task(%bool_5).freq = 40 END SUB '------------ SUB bool_6()'sturen: func(2)[1 TO 37], vol(6), togg(6)[%false] IF ISFALSE bool.togg(6) THEN bool.func(2) = MAX(MIN(bool.func(2), 37), 1) bool.note(11) = bool.func(2) bool.note(12) = bool.note(11) bool.togg(6) = %true END IF bool.func(2) = MAX(MIN(bool.func(2), 37), 1) bool.note(11) = bool.func(2) IF bool.note(12) <> bool.note(11) THEN bool.vol(6) = bool.vol(6) * 0.4 'SCALING VIBI bool.vol(6) = MAX(MIN(bool.vol(6), 127), 15)'SCALING VIBI controller vibi.channel, 23, bool.vol(6)/2 release vibi.channel, bool.note(11)+59, bool.vol(6)/2 noteoff vibi.channel, bool.note(11)+59 play vibi.channel, bool.note(11)+59, bool.vol(6) bool.note(12) = bool.note(11) END IF task(%bool_6).freq = 40 END SUB '------------------------ 'SUB dempnoot() 'STATIC teller AS BYTE 'STATIC uit AS BYTE 'IF ISFALSE task(%demp).tog THEN ' uit = 0 ' task(%demp).tog = %true 'END IF 'IF uit => 5 THEN stoptask %demp 'IF uit = 0 THEN ' FOR teller = demp.onder TO demp.boven ' controller vibi.channel, 23, demp.vol/(((teller-59)/4)+0.75) ' release vibi.channel, teller, demp.vol/(((teller-59)/4)+0.75) ' noteoff vibi.channel, teller ' NEXT teller 'END IF 'INCR uit 'task(%demp).freq = 4 'END SUB '------------