' ****************************************** ' * * ' * test and evaluation code * ' * Prof.dr.Godfried-Willem Raes * ' * belongs to the slagwerk compilation * ' ****************************************** %Tinti_US = 32 %Tinti_Demod = 33 '%Balmec_Siren = 41 ' '%Balmec_Bells = 42 %Tinti_lites = 43 %Tinti_repeats =44 '%bello_Board1 = 45 '%bello_Board2 = 46 '%bello_Board3 = 47 DECLARE FUNCTION Init_Tinti () AS LONG DECLARE SUB US_Carrier () DECLARE SUB Tinti_Demod () 'DECLARE SUB Propeller1_Speed () 'DECLARE SUB Propeller1_Speed_Stop () 'DECLARE SUB Propeller1_Lites () 'DECLARE SUB Propeller1_Lites_Stop () ' 'DECLARE SUB Propeller2 () 'DECLARE SUB Propeller2_Speed () 'DECLARE SUB Propeller2_Speed_Stop () 'DECLARE SUB Propeller2_Lites () 'DECLARE SUB Propeller2_Lites_Stop () ' 'DECLARE SUB Propeller3 () 'DECLARE SUB Propeller3_Speed () 'DECLARE SUB Propeller3_Speed_Stop () 'DECLARE SUB Propeller3_Lites () 'DECLARE SUB Propeller3_Lites_Stop () 'DECLARE SUB Balmec_Siren () 'DECLARE SUB Balmec_Bells () 'DECLARE SUB Balmec_Bells_Stop () DECLARE SUB Tinti_repeats() DECLARE SUB Tinti_controlroom() DECLARE SUB Tinti_lites () 'DECLARE SUB bello_board1 () 'DECLARE SUB bello_board2 () 'DECLARE SUB bello_board3 () ' GLOBAL hwCtrlTinti AS DWORD FUNCTION Init_Tinti () AS LONG LOCAL retval AS LONG LOCAL m AS ASCIIZ * 20 LOCAL i AS LONG m = " test code" Sendmessage gh.Cockpit, %WM_SETTEXT,0, VARPTR(m) ' cockpit titel ' hardware tests: Task(%Tinti_US).naam = "CarrierF" Task(%Tinti_US).cptr = CODEPTR(US_Carrier) Task(%Tinti_US).freq = 20 Task(%Tinti_US).flags = %False ' Task(%Tinti_Demod).naam = "Demod" Task(%Tinti_Demod).cptr = CODEPTR(Tinti_Demod) Task(%Tinti_Demod).freq = 25 Task(%Tinti_Demod).flags = %False ' ' Task(%Propeller1_lites).naam = "Lites1" ' Task(%Propeller1_lites).cptr = CODEPTR(Propeller1_lites) ' Task(%Propeller1_lites).freq = 4 ' Task(%Propeller1_lites).flags = %False ' TaskEX(%Propeller1_lites).stopcptr = CODEPTR(Propeller1_Lites_Stop) ' ' Task(%Propeller2).naam = "Prop_2" ' Task(%Propeller2).cptr = CODEPTR(Propeller2) ' Task(%Propeller2).freq = 1 ' Task(%Propeller2).flags = %False ' TaskEX(%Propeller2).stopcptr = CODEPTR(Propeller2_Speed_Stop) ' ' Task(%Propeller2_Speed).naam = "RPM_2" ' Task(%Propeller2_Speed).cptr = CODEPTR(Propeller2_Speed) ' Task(%Propeller2_Speed).freq = 1 ' Task(%Propeller2_Speed).flags = %False ' TaskEX(%Propeller2_Speed).stopcptr = CODEPTR(Propeller2_Speed_Stop) ' ' ' Task(%Propeller2_lites).naam = "Lites2" ' Task(%Propeller2_lites).cptr = CODEPTR(Propeller2_lites) ' Task(%Propeller2_lites).freq = 4 ' Task(%Propeller2_lites).flags = %False ' TaskEX(%Propeller2_lites).stopcptr = CODEPTR(Propeller2_Lites_Stop) ' ' Task(%Propeller3).naam = "Prop_3" ' Task(%Propeller3).cptr = CODEPTR(Propeller3) ' Task(%Propeller3).freq = 1 ' Task(%Propeller3).flags = %False ' TaskEX(%Propeller3).stopcptr = CODEPTR(Propeller3_Speed_Stop) ' ' Task(%Propeller3_Speed).naam = "RPM_3" ' Task(%Propeller3_Speed).cptr = CODEPTR(Propeller3_Speed) ' Task(%Propeller3_Speed).freq = 1 ' Task(%Propeller3_Speed).flags = %False ' TaskEX(%Propeller3_Speed).stopcptr = CODEPTR(Propeller3_Speed_Stop) ' ' Task(%Propeller3_lites).naam = "Lites3" ' Task(%Propeller3_lites).cptr = CODEPTR(Propeller3_lites) ' Task(%Propeller3_lites).freq = 4 ' Task(%Propeller3_lites).flags = %False ' TaskEX(%Propeller3_lites).stopcptr = CODEPTR(Propeller3_Lites_Stop) ' ' ' tests for : ' ' Task(%Balmec_Bells).cptr = CODEPTR(Balmec_Bells) ' Task(%Balmec_Bells).naam = "Bells" ' Task(%Balmec_Bells).freq = 1 ' Task(%Balmec_Bells).flags = %False ' TaskEX(%Balmec_Bells).stopcptr = CODEPTR(Balmec_Bells_Stop) ' Task(%Tinti_lites).cptr = CODEPTR(Tinti_lites) Task(%Tinti_lites).naam = "Lites" Task(%Tinti_lites).freq = 10 Task(%Tinti_lites).flags = %False ' TaskEX(%Tinti_lites).stopcptr = CODEPTR(Tinti_Lites_Stop) Task(%Tinti_repeats).cptr = CODEPTR(Tinti_Repeats) Task(%Tinti_repeats).naam = "Repeats" Task(%Tinti_repeats).freq = 50 ' ButnSW(7).tag0 = "TintiCtrl tog" ButnSW(7).tag1 = "TintiCtrl tog" ButnSW(7).cptr = CODEPTR(Tinti_Controlroom) ButnSW(8).tag0 = "CC30" ButnSW(8).tag1 = "CC30 tog" ButnSW(8).cptr = CODEPTR(Tinti_Cc30) ' Task(%Bello_board1).cptr = CODEPTR(Bello_board1) ' Task(%Bello_board1).naam = "Puls1" ' Task(%Bello_board1).freq = 1 ' Task(%Bello_board1).flags = %False ' ' Task(%Bello_board2).cptr = CODEPTR(Bello_board2) ' Task(%Bello_board2).naam = "Puls2" ' Task(%Bello_board2).freq = 1 ' Task(%Bello_board2).flags = %False ' ' Task(%Bello_board3).cptr = CODEPTR(Bello_board3) ' Task(%Bello_board3).naam = "Puls3" ' Task(%Bello_board3).freq = 1 ' Task(%Bello_board3).flags = %False MM_Tinti_On ' send ctrl 66 FUNCTION = %True END FUNCTION SUB US_Carrier () ' test control of Ultrasonic carrier frequency STATIC lsb, msb, flag AS INTEGER STATIC slnr AS DWORD IF ISFALSE Task(%Tinti_US).tog THEN DIM TaskParamLabels(0 TO 2) AS ASCIIZ * 8 TaskParamLabels(0) = "Freqmsb" TaskParamLabels(1) = "Freqlsb" TaskParamLabels(2) = "Ampli" IF ISFALSE Task(%Tinti_US).hParam THEN slnr = %False MakeTaskParameterDialog %Tinti_US,3,Slider(),0,UDctrl(),TaskParamLabels() END IF IF slnr = %False THEN slnr = TaskEX(%Tinti_US).SliderNumbers(0) Task(%Tinti_US).freq = 20 Slider(slnr).value = Task(%Tinti_US).freq SendMessage Slider(Slnr).h, %TBM_SETPOS,%True, Slider(Slnr).value SendMessage Slider(Slnr+1).h, %TBM_SETPOS,%True, 1 SendMessage Slider(slnr+2).h, %TBM_SETPOS,%True, 0 END IF MM_Tinti_On Task(%Tinti_US).tog = %True END IF RESET flag IF slider(slnr+2).value <> Tinti.ctrl(8) THEN Controller Tinti.channel, 8, Slider(slnr+2).value Tinti.ctrl(8) = Slider(slnr+2).value END IF IF slider(slnr).value <> msb THEN msb = slider(slnr).value flag = %True END IF IF slider(slnr+1).value <> lsb THEN lsb = slider(slnr+1).value flag = %True END IF IF flag THEN Bend Tinti.channel, lsb, msb RESET flag END IF END SUB ' SUB Tinti_Demod () ' test controller 7 LOCAL velo AS INTEGER STATIC slnr AS DWORD IF ISFALSE Task(%Tinti_Demod).tog THEN DIM TaskParamLabels(0) AS ASCIIZ * 8 TaskParamLabels(0) = "Volume" 'TaskParamLabels(1) = "---" IF ISFALSE Task(%Tinti_Demod).hParam THEN slnr = %False MakeTaskParameterDialog %Tinti_demod,1,Slider(),0,UDctrl(),TaskParamLabels() END IF IF slnr = %False THEN slnr = TaskEX(%Tinti_Demod).SliderNumbers(0) Slider(slnr).value = 0 SendMessage Slider(Slnr).h, %TBM_SETPOS,%True, Slider(Slnr).value END IF MM_Tinti_On Task(%Tinti_Demod).tog = %True END IF IF Slider(slnr).value <> Tinti.ctrl(7) THEN Tinti.ctrl(7) = Slider(slnr).value controller tinti.channel, 7. Tinti.ctrl(7) END IF END SUB ' 'SUB Propeller3 () ' ' test propeller 3 - large metal propeller ' ' on/off test with speed control ' STATIC cnt AS INTEGER ' LOCAL velo, brake AS INTEGER ' STATIC slnr AS DWORD ' ' IF ISFALSE Task(%Propeller3).tog THEN ' DIM TaskParamLabels(0 TO 2) AS ASCIIZ * 8 ' TaskParamLabels(0) = "Tempo" ' TaskParamLabels(1) = "Speed" ' TaskParamLabels(2) = "Brake" ' IF ISFALSE Task(%Propeller3).hParam THEN ' slnr = %False ' MakeTaskParameterDialog %Propeller3,3,Slider(),0,UDctrl(),TaskParamLabels() ' END IF ' IF slnr = %False THEN ' slnr = TaskEX(%Propeller3).SliderNumbers(0) ' Task(%Propeller3).freq = 1 ' Slider(slnr).value = Task(%propeller3).freq ' SendMessage Slider(Slnr).h, %TBM_SETPOS,%True, Slider(Slnr).value ' SendMessage Slider(Slnr+1).h, %TBM_SETPOS,%True, 1 ' low speed on init. ' SendMessage Slider(slnr+2).h, %TBM_SETPOS, %True, 0 ' no braking on init ' END IF ' MM_Balmec_On ' RESET cnt ' Task(%Propeller3).tog = %True ' END IF ' IF ISFALSE cnt MOD 2 THEN ' velo = Slider(slnr+1).value ' mPlay Balmec.channel, 36, velo ' ELSE ' brake = Slider(slnr+2).value ' Release Balmec.channel, 36, brake ' added 14.05.2015 ' END IF ' INCR cnt ' Task(%Propeller3).freq = 0.05 +((Slider(slnr).value) / 64!) 'END SUB ' 'SUB Propeller1_Speed () ' ' kontinu test ' STATIC slnr, rpm AS LONG ' IF ISFALSE Task(%Propeller1_Speed).tog THEN ' DIM TaskParamLabels(0) AS ASCIIZ * 8 ' TaskParamLabels(0) = "Speed" ' IF ISFALSE Task(%Propeller1_Speed).hParam THEN ' slnr = %False ' MakeTaskParameterDialog %Propeller1_Speed,1,Slider(),0,UDctrl(),TaskParamLabels() ' END IF ' IF slnr = %False THEN ' slnr = TaskEX(%Propeller1_Speed).SliderNumbers(0) ' Slider(slnr).value = 0 ' rpm = %False ' SendMessage Slider(Slnr).h, %TBM_SETPOS,%True, rpm ' END IF ' Task(%Propeller1_Speed).freq = 20 ' Task(%Propeller1).tog = %True ' END IF ' IF Slider(slnr).value <> rpm THEN ' mPlay Balmec.channel, 40, Slider(slnr).value ' rpm = Slider(slnr).value ' END IF ' 'END SUB ' 'SUB Propeller1_Speed_Stop () ' NoteOff Balmec.channel, 40 'END SUB ' 'SUB Propeller1_lites () ' ' to test autoflashing. ' 'STATIC cnt AS DWORD ' STATIC slnr AS DWORD ' STATIC vel1, vel2 AS DWORD ' IF ISFALSE Task(%Propeller1_Lites).tog THEN ' DIM TaskParamLabels(1) AS ASCIIZ * 8 ' TaskParamLabels(0) = "Tempo1" ' TaskParamlabels(1) = "Tempo2" ' IF ISFALSE Task(%Propeller1_lites).hParam THEN ' slnr = %False ' MakeTaskParameterDialog %Propeller1_lites,2,Slider(),0,UDctrl(),TaskParamLabels() ' END IF ' IF slnr = %False THEN ' slnr = TaskEX(%Propeller1_lites).SliderNumbers(0) ' Task(%Propeller1_lites).freq = 4 ' Slider(slnr).value = 100 ' SendMessage Slider(Slnr).h, %TBM_SETPOS,%True, Slider(Slnr).value ' Slider(slnr+1).value = 100 ' SendMessage Slider(Slnr+1).h, %TBM_SETPOS,%True, Slider(Slnr+1).value ' END IF ' 'cnt = %False ' Task(%Propeller1_lites).tog = %True ' END IF ' ' IF vel1 <> Slider(slnr).value THEN ' mPlay Balmec.channel, 120, Slider(slnr).value ' vel1 = Slider(slnr).value ' END IF ' ' IF vel2 <> Slider(slnr+1).value THEN ' mPlay Balmec.channel, 121, Slider(slnr+1).value ' vel2 = Slider(slnr+1).value ' END IF 'END SUB ' 'SUB Propeller1_lites_Stop () ' NoteOff Balmec.channel, 120 ' NoteOff Balmec.channel, 121 'END SUB ' 'SUB Propeller2_Speed () ' ' kontinu test ' STATIC slnr, rpm AS LONG ' IF ISFALSE Task(%Propeller2_Speed).tog THEN ' DIM TaskParamLabels(0) AS ASCIIZ * 8 ' TaskParamLabels(0) = "Speed" ' IF ISFALSE Task(%Propeller2_Speed).hParam THEN ' slnr = %False ' MakeTaskParameterDialog %Propeller2_Speed,1,Slider(),0,UDctrl(),TaskParamLabels() ' END IF ' IF slnr = %False THEN ' slnr = TaskEX(%Propeller2_Speed).SliderNumbers(0) ' Slider(slnr).value = 0 ' rpm = %False ' SendMessage Slider(Slnr).h, %TBM_SETPOS,%True, rpm ' END IF ' Task(%Propeller2_Speed).freq = 20 ' Task(%Propeller2).tog = %True ' END IF ' IF Slider(slnr).value <> rpm THEN ' mPlay Balmec.channel, 38, Slider(slnr).value ' rpm = Slider(slnr).value ' END IF ' 'END SUB ' 'SUB Propeller2_Speed_Stop () ' NoteOff Balmec.channel, 38 'END SUB ' 'SUB Propeller2_lites () ' ' to test autoflashing. ' STATIC cnt AS DWORD ' STATIC slnr AS DWORD ' STATIC vel1, vel2 AS DWORD ' IF ISFALSE Task(%Propeller2_Lites).tog THEN ' DIM TaskParamLabels(1) AS ASCIIZ * 8 ' TaskParamLabels(0) = "Tempo1" ' TaskParamlabels(1) = "Tempo2" ' IF ISFALSE Task(%Propeller2_lites).hParam THEN ' slnr = %False ' MakeTaskParameterDialog %Propeller2_lites,2,Slider(),0,UDctrl(),TaskParamLabels() ' END IF ' IF slnr = %False THEN ' slnr = TaskEX(%Propeller2_lites).SliderNumbers(0) ' Task(%Propeller2_lites).freq = 4 ' Slider(slnr).value = 100 ' SendMessage Slider(Slnr).h, %TBM_SETPOS,%True, Slider(Slnr).value ' Slider(slnr+1).value = 100 ' SendMessage Slider(Slnr+1).h, %TBM_SETPOS,%True, Slider(Slnr+1).value ' END IF ' cnt = %False ' Task(%Propeller2_lites).tog = %True ' END IF ' ' IF vel1 <> Slider(slnr).value THEN ' mPlay Balmec.channel, 122, Slider(slnr).value ' vel1 = Slider(slnr).value ' END IF ' ' IF vel2 <> Slider(slnr+1).value THEN ' mPlay Balmec.channel, 123, Slider(slnr+1).value ' vel2 = Slider(slnr+1).value ' END IF 'END SUB ' 'SUB Propeller2_lites_Stop () ' NoteOff Balmec.channel, 122 ' NoteOff Balmec.channel, 123 'END SUB ' ' 'SUB Propeller3_Speed () ' ' kontinu test ' ' grote metalen propeller, 1.5kW motor. ' STATIC slnr, rpm AS LONG ' IF ISFALSE Task(%Propeller3_Speed).tog THEN ' DIM TaskParamLabels(0) AS ASCIIZ * 8 ' TaskParamLabels(0) = "Speed" ' IF ISFALSE Task(%Propeller3_Speed).hParam THEN ' slnr = %False ' MakeTaskParameterDialog %Propeller3_Speed,1,Slider(),0,UDctrl(),TaskParamLabels() ' END IF ' IF slnr = %False THEN ' slnr = TaskEX(%Propeller3_Speed).SliderNumbers(0) ' Slider(slnr).value = 0 ' rpm = %False ' SendMessage Slider(Slnr).h, %TBM_SETPOS,%True, rpm ' END IF ' Task(%Propeller3_Speed).freq = 20 ' Task(%Propeller3).tog = %True ' END IF ' IF Slider(slnr).value <> rpm THEN ' mPlay Balmec.channel, 36, Slider(slnr).value ' rpm = Slider(slnr).value ' END IF ' 'END SUB ' 'SUB Propeller3_Speed_Stop () ' NoteOff Balmec.channel, 36 'END SUB ' 'SUB Propeller3_lites () ' ' to test autoflashing. ' STATIC cnt AS DWORD ' STATIC slnr AS DWORD ' STATIC vel1, vel2 AS DWORD ' IF ISFALSE Task(%Propeller3_Lites).tog THEN ' DIM TaskParamLabels(1) AS ASCIIZ * 8 ' TaskParamLabels(0) = "Tempo1" ' TaskParamlabels(1) = "Tempo2" ' IF ISFALSE Task(%Propeller3_lites).hParam THEN ' slnr = %False ' MakeTaskParameterDialog %Propeller3_lites,2,Slider(),0,UDctrl(),TaskParamLabels() ' END IF ' IF slnr = %False THEN ' slnr = TaskEX(%Propeller3_lites).SliderNumbers(0) ' Task(%Propeller3_lites).freq = 4 ' Slider(slnr).value = 100 ' SendMessage Slider(Slnr).h, %TBM_SETPOS,%True, Slider(Slnr).value ' Slider(slnr+1).value = 100 ' SendMessage Slider(Slnr+1).h, %TBM_SETPOS,%True, Slider(Slnr+1).value ' END IF ' cnt = %False ' Task(%Propeller3_lites).tog = %True ' END IF ' ' IF vel1 <> Slider(slnr).value THEN ' mPlay Balmec.channel, 124, Slider(slnr).value ' vel1 = Slider(slnr).value ' END IF ' ' IF vel2 <> Slider(slnr+1).value THEN ' mPlay Balmec.channel, 125, Slider(slnr+1).value ' vel2 = Slider(slnr+1).value ' END IF 'END SUB ' 'SUB Propeller3_lites_Stop () ' NoteOff Balmec.channel, 124 ' NoteOff Balmec.channel, 125 'END SUB ' ' 'SUB Balmec_Bells () ' ' this is mapped on the midi note range 51-96 ' ' rewritten for the bell machine ' ' as yet, the note range is discontinuous: ' ' 51, [55], 57 (69), 60, 64, 67, 85, 87, 88, 89 ' ' 03.06.2015: Updated for changes in firmware. ' STATIC cnt AS DWORD ' STATIC slnr, udnr AS DWORD ' STATIC noot, velo, rep AS BYTE ' DIM reps(127) AS STATIC BYTE ' ' IF ISFALSE Task(%Balmec_Bells).tog THEN ' DIM TaskParamLabels(4) AS ASCIIZ * 8 ' TaskParamLabels(0) = "Tempo" ' TaskParamlabels(1) = "Velo" ' TaskParamlabels(2) = "RepRat" ' TaskParamLabels(3) = "Note" ' TaskParamLabels(4) = "66" ' IF ISFALSE Task(%Balmec_Bells).hParam THEN ' slnr = %False ' MakeTaskParameterDialog %Balmec_Bells,3,Slider(),2,UDctrl(),TaskParamLabels() ' END IF ' IF slnr = %False THEN ' slnr = TaskEX(%Balmec_Bells).SliderNumbers(0) ' Slider(slnr).value = 8 ' Task(%Balmec_Bells).freq = 1 ' SendMessage Slider(Slnr).h, %TBM_SETPOS,%True, Slider(Slnr).value ' Slider(slnr+1).value = 0 ' velo's ' SendMessage Slider(Slnr+1).h, %TBM_SETPOS,%True, Slider(Slnr+1).value ' RESET velo ' Slider(slnr+2).value = 0 ' repetition rate ' SendMessage Slider(Slnr+2).h, %TBM_SETPOS,%True, Slider(Slnr+2).value ' END IF ' IF ISFALSE udnr THEN ' UDctrl(TaskEX(%Balmec_Bells).UpdownNumbers(0)).cptr = CODEPTR(Bello_Note_UD1) ' note ' UDctrl(TaskEX(%Balmec_Bells).UpDownNumbers(0)).value = 51 ' UDctrl(TaskEX(%Balmec_Bells).UpDownNumbers(0)).minval = 51 ' UDctrl(TaskEX(%Balmec_Bells).UpDownNumbers(0)).maxval = 96 ' udnr = TaskEX(%Balmec_Bells).UpDownNumbers(0) ' ' UDctrl(TaskEX(%Balmec_Bells).UpdownNumbers(1)).cptr = CODEPTR(Bello_CC66_UD2) ' on/off ' UDctrl(TaskEX(%Balmec_Bells).UpDownNumbers(1)).value = 0 ' UDctrl(TaskEX(%Balmec_Bells).UpDownNumbers(1)).minval = 0 ' UDctrl(TaskEX(%Balmec_Bells).UpDownNumbers(1)).maxval = 1 ' END IF ' cnt = %False ' noot = 51 ' IF ISFALSE Balmec.ctrl(66) THEN ' Controller Balmec.channel, 66, 64 ' Balmec.ctrl(66) = 64 ' END IF ' Task(%Balmec_Bells).tog = %True ' END IF ' ' IF slider(slnr+2).value <> reps(noot) THEN ' reps(noot) = Slider(slnr+2).value ' KeyPress Balmec.channel, noot, reps(noot) ' END IF ' ' IF ISFALSE cnt THEN ' mPlay Balmec.channel, noot, Slider(slnr+1).value ' note ON ' cnt = %True ' ELSE ' NoteOff Balmec.channel, noot ' noot = UDCtrl(udnr).value ' cnt = %False ' END IF ' Task(%Balmec_Bells).freq = MAX((Slider(slnr).value) / 8!, 0.125) 'END SUB ' 'SUB Bello_Note_UD1 () ' ' controls the note to be played. ' LOCAL noot AS BYTE ' STATIC oldnoot AS BYTE ' LOCAL udnr AS DWORD ' udnr = TaskEX(%Balmec_Bells).UpDownNumbers(0) ' noot = UDCtrl(udnr).value ' SetDlgItemText Task(%Balmec_Bells).hparam, %GMT_TEXT0_ID + 16, "N=" & STR$(noot) 'END SUB ' 'SUB Bello_CC66_UD2 () ' ' controller 66 ' LOCAL udnr, value AS DWORD ' udnr = TaskEX(%Balmec_Bells).UpDownNumbers(1) ' value = UDCtrl(udnr).value ' Controller Balmec.channel, 66, value ' Balmec.ctrl(66) = value ' SetDlgItemText Task(%Balmec_Bells).hparam, %GMT_TEXT0_ID + 17, "66" & STR$(value) 'END SUB ' 'SUB Balmec_Bells_Stop () ' ' should also stop the lites ' Controller Balmec.channel, 123, %False 'END SUB ' SUB Tinti_Repeats () ' only sends keypressure to selected note.. no note on.. ' had bug: wrong task constants. (KL) ' 03.06.2015: corrected gwr. ' copied from bello code STATIC cnt AS DWORD STATIC slnr, udnr AS DWORD STATIC noot, rep AS BYTE IF ISFALSE Task(%Tinti_Repeats).tog THEN DIM TaskParamLabels(1) AS ASCIIZ * 8 TaskParamLabels(0) = "KeyPres" TaskParamlabels(1) = "Note" IF ISFALSE Task(%Tinti_Repeats).hParam THEN slnr = %False MakeTaskParameterDialog %Tinti_Repeats,1,Slider(),1,UDctrl(),TaskParamLabels() END IF IF ISFALSE slnr THEN slnr = TaskEX(%Tinti_Repeats).SliderNumbers(0) Slider(slnr).value = 8 SendMessage Slider(Slnr).h, %TBM_SETPOS,%True, Slider(Slnr).value END IF IF ISFALSE udnr THEN udnr = TaskEX(%Tinti_Repeats).UpDownNumbers(0) UDctrl(udnr).cptr = CODEPTR(Tinti_Rep_Note) ' note UDCtrl(udnr).value = 51 UDctrl(udnr).maxval = 96 UDctrl(udnr).minval = 51 END IF cnt = %False noot = 51 IF ISFALSE Tinti.ctrl(66) THEN Controller Tinti.channel, 66, 64 Tinti.ctrl(66) = 64 END IF Task(%Tinti_Repeats).tog = %True END IF ' following would send it all the time... 'noot = UDCtrl(udnr).value 'rep = Slider(slnr).value 'KeyPress Balmec.channel, noot, rep ' so we changed it to: (gwr, 03.06.2015) IF (UDCtrl(udnr).value <> noot) OR (Slider(slnr).value <> rep) THEN noot = UDCtrl(udnr).value rep = Slider(slnr).value KeyPress Tinti.channel, noot, rep END IF END SUB SUB Tinti_rep_Note () ' controls the note to be played. LOCAL noot AS BYTE STATIC oldnoot AS BYTE LOCAL udnr AS DWORD udnr = TaskEX(%Tinti_Repeats).UpDownNumbers(0) noot = MAX(Tinti.lowtes, MIN(tinti.hightes, UDCtrl(udnr).value)) UDCtrl(udnr).value = noot SetDlgItemText Task(%Tinti_Repeats).hparam, %GMT_TEXT0_ID + 16, "N=" & STR$(noot) END SUB SUB Tinti_lites () ' test lites: hub board. STATIC cnt AS DWORD STATIC slnr AS DWORD STATIC vel1, vel2,vel3 AS DWORD IF ISFALSE Task(%Tinti_Lites).tog THEN DIM TaskParamLabels(2) AS ASCIIZ * 8 TaskParamLabels(0) = "Lite1" TaskParamlabels(1) = "Lite2" TaskParamlabels(2) = "Lite3" IF ISFALSE Task(%Tinti_lites).hParam THEN slnr = %False MakeTaskParameterDialog %Tinti_lites,3,Slider(),0,UDctrl(),TaskParamLabels() END IF IF slnr = %False THEN slnr = TaskEX(%Tinti_lites).SliderNumbers(0) Task(%Tinti_lites).freq = 10 Slider(slnr).value = %False SendMessage Slider(Slnr).h, %TBM_SETPOS,%True, Slider(Slnr).value Slider(slnr+1).value = %False SendMessage Slider(Slnr+1).h, %TBM_SETPOS,%True, Slider(Slnr+1).value Slider(slnr+2).value = %False SendMessage Slider(Slnr+2).h, %TBM_SETPOS,%True, Slider(Slnr+2).value END IF cnt = %False Task(%Tinti_lites).tog = %True END IF IF vel1 <> Slider(slnr).value THEN mPlay Tinti.channel, 12, Slider(slnr).value vel1 = Slider(slnr).value END IF IF vel2 <> Slider(slnr+1).value THEN mPlay Tinti.channel, 13, Slider(slnr+1).value vel2 = Slider(slnr+1).value END IF IF vel3 <> Slider(slnr+2).value THEN mPlay Tinti.channel, 14, Slider(slnr+2).value vel3 = Slider(slnr+2).value END IF END SUB SUB Tinti_controlroom LOCAL i AS LONG LOCAL x AS LONG IF ISFALSE hwCtrlbalmec THEN DIALOG NEW 0, "Tinti Control",1,1 ,600, 60, %WS_CAPTION OR %WS_POPUP OR %WS_SYSMENU TO hwCtrlbalmec x = 5 FOR i = Tinti.lowtes TO Tinti.hightes SELECT CASE (i MOD 12) CASE 0 CONTROL ADD CHECKBOX, hwCtrlTinti, i, "C", x, 24, 18, 12, %BS_PUSHLIKE x = x + 10 CASE 1 CONTROL ADD CHECKBOX, hwCtrlTinti, i, "C#", x, 12, 18, 12, %BS_PUSHLIKE x = x + 10 CASE 2 CONTROL ADD CHECKBOX, hwCtrlTinti, i, "D", x, 24, 18, 12, %BS_PUSHLIKE x = x + 10 CASE 3 CONTROL ADD CHECKBOX, hwCtrlTinti, i, "D#", x, 12, 18, 12, %BS_PUSHLIKE x = x + 10 CASE 4 CONTROL ADD CHECKBOX, hwCtrlTinti, i, "E", x, 24, 18, 12, %BS_PUSHLIKE x = x + 20 CASE 5 CONTROL ADD CHECKBOX, hwCtrlTinti, i, "F", x, 24, 18, 12, %BS_PUSHLIKE x = x + 10 CASE 6 CONTROL ADD CHECKBOX, hwCtrlTinti, i, "F#", x, 12, 18, 12, %BS_PUSHLIKE x = x + 10 CASE 7 CONTROL ADD CHECKBOX, hwCtrlTinti, i, "G", x, 24, 18, 12, %BS_PUSHLIKE x = x + 10 CASE 8 CONTROL ADD CHECKBOX, hwCtrlTinti, i, "G#", x, 12, 18, 12, %BS_PUSHLIKE x = x + 10 CASE 9 CONTROL ADD CHECKBOX, hwCtrlTinti, i, "A", x, 24, 18, 12, %BS_PUSHLIKE x = x + 10 CASE 10 CONTROL ADD CHECKBOX, hwCtrlTinti, i, "Bb", x, 12, 18, 12, %BS_PUSHLIKE x = x + 10 CASE 11 CONTROL ADD CHECKBOX, hwCtrlTinti, i, "B", x, 24, 18, 12, %BS_PUSHLIKE x = x + 20 END SELECT NEXT CONTROL ADD LABEL, hwCtrlTinti, 500, "Velo:", 5, 45, 30, 12 CONTROL ADD "msctls_trackbar32", hwCtrlTinti, 501, _ "velo", 36, 45, 135, 12, %WS_CHILD OR %WS_VISIBLE OR _ %TBS_HORZ OR %TBS_BOTTOM CONTROL SEND hwCtrlTinti, 500, %TBM_SETRANGE, %TRUE, MAKDWD(1,127) CONTROL SEND hwCtrlTinti, 500, %TBM_SETPAGESIZE, 0, 5 CONTROL ADD LABEL, hwCtrlTinti, 503, "?", 174, 45, 30, 12 CONTROL ADD BUTTON, hwCtrlTinti, 600, "All Off", 206, 45, 30, 12 DIALOG SHOW MODELESS hwCtrlTinti CALL CB_Tinti_Controlroom ELSE DIALOG END hwCtrlTinti hwCtrlTinti = 0 END IF END SUB SUB Tinti_cc30 STATIC hwcc30 AS DWORD IF ISFALSE hwcc30 THEN DIALOG NEW 0, "Tinti Control",1,1 ,60, 30, %WS_CAPTION OR %WS_POPUP OR %WS_SYSMENU TO hwcc30 CONTROL ADD TEXTBOX, hwcc30, 1, "0", 1, 1, 58, 12, %ES_NUMBER CONTROL ADD BUTTON, hwcc30, 2, "&send", 1, 15, 58, 12 DIALOG SHOW MODELESS hwcc30 CALL cb_tinti_cc30 ELSE DIALOG END hwcc30 RESET hwcc30 END IF END SUB CALLBACK FUNCTION cb_tinti_cc30 LOCAL b$ LOCAL v AS BYTE IF CBCTL <> 2 THEN EXIT FUNCTION IF CBMSG <> %WM_COMMAND THEN EXIT FUNCTION IF CBCTLMSG <> %BN_CLICKED THEN EXIT FUNCTION CONTROL GET TEXT CBHNDL, 1 TO b$ v = VAL(b$) IF v < 0 THEN v = 0 CONTROL SET TEXT CBHNDL, 1, "0" ELSEIF v > 127 THEN v = 127 CONTROL SET TEXT CBHNDL, 1, "127" END IF Controller Tinti.channel, 30, v CONTROL SET TEXT gh.cockpit, %GMT_MSG1, "CC30 " + STR$(v) END FUNCTION CALLBACK FUNCTION CB_Tinti_Controlroom STATIC velo AS BYTE STATIC oldvelo AS BYTE LOCAL i AS LONG, j AS LONG LOCAL note AS BYTE SELECT CASE CBMSG CASE %WM_COMMAND SELECT CASE CBCTL CASE tinti.lowtes TO tinti.hightes CONTROL GET CHECK CBHNDL, CBCTL TO i note = CBCTL mPlay tinti.channel, note, CHOOSE(1 + i, 0, velo) CASE 600 FOR i = tinti.lowtes TO tinti.hightes CONTROL SET CHECK CBHNDL, i, 0 DIALOG DOEVENTS NEXT Controller tinti.channel, 123, %False CONTROL HANDLE CBHNDL, 501 TO i SendMessage i, %TBM_SETPOS, %true, 0 MM_Tinti_Off %MM_Notes CONTROL SET TEXT CBHNDL, 503, "0" END SELECT CASE %WM_HSCROLL, %WM_VSCROLL 'note: id doesn't correspond at all with the one given at creation IF (LOWRD(CBWPARAM) = %TB_THUMBPOSITION) OR (LOWRD(CBWPARAM) = %TB_THUMBTRACK) THEN velo = HIWRD(CBWPARAM) ELSE velo = SendMessage (CBLPARAM, %TBM_GETPOS,%Null, %Null) END IF CONTROL SET TEXT CBHNDL, 503, STR$(velo) 'vraag van gwr: bij iedere velo update worden de noten opnieuw gezonden IF velo <> oldvelo THEN oldvelo = velo FOR note = tinti.lowtes TO tinti.hightes CONTROL GET CHECK CBHNDL, note TO i IF i THEN mPlay Tinti.channel, note, velo NEXT END IF IF ISFALSE velo THEN FOR note = tinti.lowtes TO tinti.hightes mPlay tinti.channel, note, 0 NEXT END IF CASE %WM_CLOSE, %WM_QUIT hwCtrlTinti = 0 FOR i = Tinti.lowtes TO Tinti.hightes DIALOG DOEVENTS NEXT Controller Tinti.channel, 123, %False END SELECT END FUNCTION 'SUB Bello_Board1 () ' ' hardware test for board 1 ' STATIC cnt AS DWORD ' STATIC slnr, udnr AS DWORD ' STATIC noot AS BYTE ' DIM Notes(11) AS STATIC BYTE ' ' IF ISFALSE Task(%Bello_Board1).tog THEN ' DIM TaskParamLabels(2) AS ASCIIZ * 8 ' TaskParamLabels(0) = "Tempo" ' TaskParamlabels(1) = "Velo" ' TaskParamlabels(2) = "RepRat" ' IF ISFALSE Task(%Bello_board1).hParam THEN ' slnr = %False ' MakeTaskParameterDialog %Bello_Board1,3,Slider(),0,UDctrl(),TaskParamLabels() ' END IF ' IF slnr = %False THEN ' slnr = TaskEX(%Bello_Board1).SliderNumbers(0) ' Slider(slnr).value = 8 ' Task(%Bello_Board1).freq = 1 ' SendMessage Slider(Slnr).h, %TBM_SETPOS,%True, Slider(Slnr).value ' Slider(slnr+1).value = 0 ' velo's ' SendMessage Slider(Slnr+1).h, %TBM_SETPOS,%True, Slider(Slnr+1).value ' Slider(slnr+2).value = 0 ' repetition rate ' SendMessage Slider(Slnr+2).h, %TBM_SETPOS,%True, Slider(Slnr+2).value ' END IF ' Notes(0) = 51 ' Notes(1) = 52 ' nc ' Notes(2) = 57 ' Notes(3) = 60 ' Notes(4) = 65 ' Notes(5) = 67 ' Notes(6) = 68 ' Notes(7) = 72 ' Notes(8) = 85 ' Notes(9) = 87 ' Notes(10) = 88 ' Notes(11) = 89 ' cnt = %False ' noot = Notes(0) - 1 ' IF ISFALSE Balmec.ctrl(66) THEN ' Controller Balmec.channel, 66, 64 ' Balmec.ctrl(66) = 64 ' END IF ' Task(%Bello_Board1).tog = %True ' END IF ' ' NoteOff Balmec.channel, noot ' INCR cnt ' cnt = cnt MOD 12 ' ' noot = Notes(cnt) ' KeyPress Balmec.channel,noot, Slider(slnr+2).value ' mPlay Balmec.channel, noot, Slider(slnr+1).value ' ' Task(%Bello_Board1).freq = MAX((Slider(slnr).value) / 8!, 0.125) 'END SUB ' 'SUB Bello_Board2 () ' ' hardware test for board 2 ' STATIC cnt AS DWORD ' STATIC slnr, udnr AS DWORD ' STATIC noot AS BYTE ' DIM Notes(11) AS STATIC BYTE ' ' IF ISFALSE Task(%Bello_Board2).tog THEN ' DIM TaskParamLabels(2) AS ASCIIZ * 8 ' TaskParamLabels(0) = "Tempo" ' TaskParamlabels(1) = "Velo" ' TaskParamlabels(2) = "RepRat" ' IF ISFALSE Task(%Bello_board2).hParam THEN ' slnr = %False ' MakeTaskParameterDialog %Bello_Board2,3,Slider(),0,UDctrl(),TaskParamLabels() ' END IF ' IF slnr = %False THEN ' slnr = TaskEX(%Bello_Board2).SliderNumbers(0) ' Slider(slnr).value = 8 ' Task(%Bello_Board2).freq = 1 ' SendMessage Slider(Slnr).h, %TBM_SETPOS,%True, Slider(Slnr).value ' Slider(slnr+1).value = 0 ' velo's ' SendMessage Slider(Slnr+1).h, %TBM_SETPOS,%True, Slider(Slnr+1).value ' Slider(slnr+2).value = 0 ' repetition rate ' SendMessage Slider(Slnr+2).h, %TBM_SETPOS,%True, Slider(Slnr+2).value ' END IF ' Notes(0) = 70 ' Notes(1) = 71 ' Notes(2) = 58 ' Notes(3) = 73 ' Notes(4) = 74 ' Notes(5) = 75 ' Notes(6) = 76 ' Notes(7) = 77 ' Notes(8) = 78 ' Notes(9) = 79 ' Notes(10) = 80 ' Notes(11) = 81 ' cnt = %False ' noot = Notes(0) - 1 ' IF ISFALSE Balmec.ctrl(66) THEN ' Controller Balmec.channel, 66, 64 ' Balmec.ctrl(66) = 64 ' END IF ' Task(%Bello_Board2).tog = %True ' END IF ' ' NoteOff Balmec.channel, noot ' INCR cnt ' cnt = cnt MOD 12 ' ' noot = Notes(cnt) ' KeyPress Balmec.channel,noot, Slider(slnr+2).value ' mPlay Balmec.channel, noot, Slider(slnr+1).value ' ' Task(%Bello_Board2).freq = MAX((Slider(slnr).value) / 8!, 0.125) 'END SUB ' 'SUB Bello_Board3 () ' ' hardware test for board 3 ' STATIC cnt AS DWORD ' STATIC slnr, udnr AS DWORD ' STATIC noot AS BYTE ' DIM Notes(11) AS STATIC BYTE ' ' IF ISFALSE Task(%Bello_Board3).tog THEN ' DIM TaskParamLabels(2) AS ASCIIZ * 8 ' TaskParamLabels(0) = "Tempo" ' TaskParamlabels(1) = "Velo" ' TaskParamlabels(2) = "RepRat" ' IF ISFALSE Task(%Bello_board3).hParam THEN ' slnr = %False ' MakeTaskParameterDialog %Bello_Board3,3,Slider(),0,UDctrl(),TaskParamLabels() ' END IF ' IF slnr = %False THEN ' slnr = TaskEX(%Bello_Board3).SliderNumbers(0) ' Slider(slnr).value = 8 ' Task(%Bello_Board3).freq = 1 ' SendMessage Slider(Slnr).h, %TBM_SETPOS,%True, Slider(Slnr).value ' Slider(slnr+1).value = 0 ' velo's ' SendMessage Slider(Slnr+1).h, %TBM_SETPOS,%True, Slider(Slnr+1).value ' Slider(slnr+2).value = 0 ' repetition rate ' SendMessage Slider(Slnr+2).h, %TBM_SETPOS,%True, Slider(Slnr+2).value ' END IF ' Notes(0) = 82 ' Notes(1) = 83 ' Notes(2) = 84 ' Notes(3) = 86 ' Notes(4) = 90 ' Notes(5) = 91 ' Notes(6) = 92 ' Notes(7) = 93 ' Notes(8) = 119 ' Notes(9) = 94 ' Notes(10) = 95 ' Notes(11) = 96 ' cnt = %False ' noot = Notes(0) - 1 ' IF ISFALSE Balmec.ctrl(66) THEN ' Controller Balmec.channel, 66, 64 ' Balmec.ctrl(66) = 64 ' END IF ' Task(%Bello_Board3).tog = %True ' END IF ' ' NoteOff Balmec.channel, noot ' INCR cnt ' cnt = cnt MOD 12 ' ' noot = Notes(cnt) ' IF noot <> 119 THEN ' KeyPress Balmec.channel,noot, Slider(slnr+2).value ' END IF ' mPlay Balmec.channel, noot, Slider(slnr+1).value ' ' Task(%Bello_Board3).freq = MAX((Slider(slnr).value) / 8!, 0.125) 'END SUB ' 'EOF