'*************************************************** '* * '* a microtonal french horn playing robot by * '* dr.Godfried-Willem Raes * '* 2013 * '*************************************************** '22/05/2013 test code based on Klar, adapted for horny - NOT TESTED YET '01.07.2013: Horny ready to play its first notes... '02.07.2013: extensive testing session. Hub firmware upgrade to V1.1 '03.07.2013: CC100 added in hub firmware. Version 1.2 now. '21/01/2016 xof started adding applet to compare various monophonic instruments with each other ' Arm controller tasks: %horny_Arm = 32 ' controllers 1,7,16,17,18,19,20 %horny_Filters = 33 ' controllers 2, 29,25,26, 27, 28 %horny_Duodec = 34 %horny_Tremolo = 38 %horny_Vibrato = 39 %horny_Bendrange = 40 ' ValvePic controller tasks: '%horny_ValvePic = 48 ' controller 100,101,102 %horny_100 = 49 '%horny_101 = 50 '%horny_102 = 51 ' MidiHub controller tasks: %horny_HubPic = 53 ' controllers 22, 30, 33 - motor functions and F/Bb ' movement control: %horny_Pendulum = 63 ''lights: [ hub board ] %horny_lites = 54 'on-off test %horny0 = 55 ' front %horny1 = 56 %horny2 = 57 '%horny3 = 58 '%horny4 = 59 'eyes '%horny5 = 60 '%horny6 = 61 %horny_scale = 20 %horny_test = 21 ' repeated note test %hornyMus = 24 %multitest = 47 'test for all monophonic instruments GLOBAL hornyKeyPress AS LONG DECLARE FUNCTION Init_horny () AS LONG DECLARE SUB horny_Arm () DECLARE SUB horny_HubPic () DECLARE SUB horny_ValvePic () DECLARE SUB horny_100103_ud0 () DECLARE SUB horny_Scale () DECLARE SUB horny_Scale_UD0 () DECLARE SUB horny_Scale_UD1 () DECLARE SUB horny_Scale_UD2 () DECLARE SUB horny_Vibrato () DECLARE SUB horny_SL4 () DECLARE SUB horny_SL3 () DECLARE SUB horny_SL43 () DECLARE SUB horny_Tremolo () DECLARE SUB horny_SL6 () DECLARE SUB horny_SL5 () DECLARE SUB horny_SL44 () DECLARE SUB horny_Bendrange () DECLARE SUB horny_SL40 () DECLARE SUB horny_Filters () DECLARE SUB horny_SL2 () DECLARE SUB horny_SL29 () DECLARE SUB horny_SL25 () DECLARE SUB horny_SL26 () DECLARE SUB horny_SL27 () DECLARE SUB horny_SL28 () DECLARE SUB horny_Duodec () DECLARE SUB horny_SL42 () DECLARE SUB horny_SL41 () DECLARE SUB horny_SL16 () DECLARE SUB horny_SL17 () DECLARE SUB horny_SL18 () DECLARE SUB horny_SL19 () DECLARE SUB horny_SL20 () DECLARE SUB horny_SL21 () DECLARE SUB horny_SL22 () DECLARE SUB horny_SL23 () DECLARE SUB horny_SL30 () DECLARE SUB horny_lites () DECLARE SUB horny_Lites_UD () DECLARE SUB horny_Test () DECLARE SUB horny_UD0 () DECLARE SUB horny_UD1 () DECLARE SUB horny_UD2 () DECLARE SUB horny_Pendulum () DECLARE SUB horny_Pendulum_Stop () DECLARE SUB horny0 () DECLARE SUB horny1 () DECLARE SUB horny2 () DECLARE SUB horny_100 () DECLARE SUB hornyMusic () DECLARE SUB hornyMusic_Stop () FUNCTION Init_horny () AS LONG LOCAL retval AS LONG ' GetInstrumentParams horny, %IDM_horny ' retval = SetRobotPort (horny, Inifilename, hMidiO()) ' hornyKeyPress = -1 Task(%horny_Arm).naam = "Arm" Task(%horny_Arm).cptr = CODEPTR(horny_Arm) Task(%horny_Arm).freq = 2 Task(%horny_Arm).flags = %False ' Task(%horny_Duodec).naam = "DuoDec" ' Task(%horny_Duodec).cptr = CODEPTR(horny_Duodec) ' Task(%horny_Duodec).freq = 2 ' Task(%horny_Duodec).flags = %False Task(%horny_Filters).naam = "Filters" Task(%horny_Filters).cptr = CODEPTR(horny_Filters) Task(%horny_Filters).freq = 2 Task(%horny_Filters).flags = %False Task(%horny_HubPIC).naam = "HubPIC" Task(%horny_HubPIC).cptr = CODEPTR(horny_HubPIC) Task(%horny_HubPIC).freq = 2 Task(%horny_HubPIC).flags = %False Task(%horny_Scale).naam = "Scale" Task(%horny_Scale).cptr = CODEPTR(horny_Scale) Task(%horny_Scale).freq = 2 Task(%horny_Scale).flags = %False Task(%horny_Test).naam = "Test" Task(%horny_Test).cptr = CODEPTR(horny_Test) Task(%horny_Test).freq = 4 Task(%horny_Test).flags = %False Task(%horny_Lites).naam = "lites" Task(%horny_Lites).cptr = CODEPTR(horny_Lites) Task(%horny_Lites).freq = 2 Task(%horny_Lites).flags = %False Task(%horny_tremolo).naam = "Tremolo" Task(%horny_tremolo).cptr = CODEPTR(horny_Tremolo) Task(%horny_tremolo).freq = 16 Task(%horny_tremolo).flags = %False Task(%horny_vibrato).naam = "Vibrato" Task(%horny_vibrato).freq = 12 Task(%horny_vibrato).cptr = CODEPTR(horny_Vibrato) Task(%horny_vibrato).flags = %False Task(%horny_bendrange).naam = "bendrang" Task(%horny_bendrange).freq = 12 Task(%horny_bendrange).cptr = CODEPTR(horny_Bendrange) Task(%horny_bendrange).flags = %False Task(%horny_Pendulum).naam = "Slinger" Task(%horny_Pendulum).cptr = CODEPTR(horny_Pendulum) Task(%horny_Pendulum).freq = 0.25 Task(%horny_Pendulum).flags = %False TaskEX(%horny_Pendulum).stopcptr = CODEPTR(horny_Pendulum_Stop) ' Task(%horny0).naam = "Li-120" Task(%horny0).cptr = CODEPTR(horny0) Task(%horny0).freq = 20 Task(%horny0).flags = %False TaskEX(%horny0).StopCptr = CODEPTR(horny0_Stop) Task(%horny1).naam = "Li-121" Task(%horny1).cptr = CODEPTR(horny1) Task(%horny1).freq = 20 Task(%horny1).flags = %False TaskEX(%horny1).StopCptr = CODEPTR(horny1_Stop) Task(%horny2).naam = "Li-122" Task(%horny2).cptr = CODEPTR(horny2) Task(%horny2).freq = 20 Task(%horny2).flags = %False TaskEX(%horny2).StopCptr = CODEPTR(horny2_Stop) Task(%horny_100).naam = "C100" Task(%horny_100).cptr = CODEPTR(horny_100) Task(%horny_100).freq = 20 Task(%horny_100).flags = %False Task(%hornyMus).naam = "Music" Task(%hornyMus).cptr = CODEPTR(hornyMusic) Task(%hornyMus).freq = 20 Task(%hornyMus).flags = %False TaskEX(%hornyMus).StopCptr = CODEPTR(hornyMusic_Stop) Task(%multitest).naam="MultiTst" Task(%multitest).cptr = CODEPTR(TestMonophonicInstruments) 'g_mm.inc Task(%multitest).freq = 4 TaskEx(%multitest).stopcptr = CODEPTR(MM_AllOff) ButnOS(11).tag = "horny On" ButnOS(11).cptr = CODEPTR(horny_66) ButnOS(10).tag = "horny Off" ButnOS(10).cptr = CODEPTR(MM_horny_Off) Controller horny.channel, 123, %False ' all notes off FUNCTION = %True END FUNCTION SUB horny_Scale () 'for Horny as F-horn - how do we deal with the difference F/Bb in midi?? LOCAL i AS DWORD STATIC onoff AS DWORD STATIC cnt AS LONG STATIC TaskParamLabels() AS ASCIIZ*8 STATIC slnr AS INTEGER STATIC udnr AS INTEGER STATIC n AS INTEGER IF ISFALSE Task(%horny_Scale).tog THEN IF ISFALSE Task(%horny_Scale).hParam THEN DIM TaskParamLabels(6) TaskParamLabels(0)="velo" ' Arm chip TaskParamLabels(1)="speed" TaskParamLabels(2)="legato" TaskParamLabels(3)="step" TaskParamLabels(4)= "hilim" TaskParamLabels(5)="lowlim" TaskParamLabels(6)="F(0)/Bb(1)" MakeTaskParameterDialog %horny_Scale,3, Slider(),4,UdCtrl(), TaskParamLabels() slnr = TaskEX(%horny_Scale).SliderNumbers(0) Slider(slnr).value = 64 SendMessage Slider(Slnr).h, %TBM_SETPOS,%True, Slider(Slnr).value Slider(slnr+1).value = 36 SendMessage Slider(Slnr+1).h, %TBM_SETPOS,%True, Slider(Slnr+1).value Slider(slnr+2).value = 64 ' stacc-legato Sendmessage Slider(slnr+2).h, %TBM_SETPOS, %True, Slider(slnr+2).value IF udnr = %False THEN udnr = TaskEX(%horny_Scale).UpDownNumbers(0) UDctrl(udnr).cptr = CODEPTR(horny_Scale_UD0) ' step size UDctrl(udnr).value = 1 UDctrl(udnr).minval = 0 UDctrl(udnr).maxval = 12 UDctrl(udnr).stap = 1 UDctrl(udnr+1).cptr = CODEPTR(horny_Scale_UD1) ' high note limit UDctrl(udnr+1).value = horny.hightes UDctrl(udnr+1).minval = horny.lowtes UDctrl(udnr+1).maxval = horny.Hightes UDctrl(udnr+2).cptr = CODEPTR(horny_Scale_UD2) ' low note limit UDctrl(udnr+2).value = horny.lowtes UDctrl(udnr+2).minval = horny.lowtes UDctrl(udnr+2).maxval = horny.Hightes Udctrl(udnr+3).value = 0 UDctrl(udnr+3).minval = 0 UDctrl(udnr+3).maxval = 1 UDctrl(udnr+3).cptr = CODEPTR(horny_Scale_UD3) ' F/Bb horn END IF END IF Task(%horny_Scale).tog = %True cnt = horny.Lowtes EXIT SUB END IF SELECT CASE UdCtrl(udnr+3).value CASE 0 IF Horny.ctrl(33) <> 0 THEN Horny.ctrl(33) = 0 Controller Horny.channel, 33, 0 UDctrl(udnr+2).minval = 23 END IF CASE 1 IF Horny.ctrl(33) <> 127 THEN Horny.ctrl(33) = 127 Controller Horny.channel, 33, 127 UDctrl(udnr+2).minval = 28 END IF END SELECT IF ISFALSE onoff THEN IF Slider(slnr+2).value < 127 THEN IF n THEN NoteOff horny.channel, n n = %False Task(%horny_Scale).freq = MAX(2,Slider(slnr+2).value * 6) ELSE ' in dit geval puur legato zonder note-off's Task(%horny_Scale).freq = 1000 END IF onoff = %True ELSE 'n = cnt + IIF(Horny.ctrl(33), 5,0) 'cc33 switches between f/bb - we transpose accordingly here ' wrong!!! n = cnt SELECT CASE Horny.ctrl(33) CASE 0 IF n = 30 THEN n= 35 CASE 1 IF n < 28 THEN n = 28 IF n = 35 THEN n= 40 END SELECT mPlay horny.channel, n, Slider(slnr).value cnt = cnt + UDCtrl(udnr).value IF cnt > UDctrl(udnr+1).value THEN cnt = UDctrl(udnr+2).value onoff = %False Task(%horny_Scale).freq = MAX(0.25,Slider(slnr+1).value / 4) END IF END SUB SUB horny_Scale_UD0 () ' callback on parameter UpDowns step size LOCAL value AS BYTE LOCAL udnr AS DWORD udnr = TaskEX(%horny_Scale).UpdownNumbers(0) value = UDCtrl(udnr).value IF value > 12 THEN UDctrl(udnr).value = 12 : value = 12 IF value < 0 THEN UDCTRL(udnr).value = 0 : value = 0 SetDlgItemText Task(%horny_Scale).hparam, %GMT_TEXT0_ID + 16, "s=" & STR$(value) END SUB SUB horny_Scale_UD1 () ' controls the high limit of the note scale to be played. LOCAL noot AS BYTE LOCAL udnr AS DWORD udnr = TaskEX(%horny_Scale).UpDownNumbers(1) noot = UDCtrl(udnr).value IF noot < UDctrl(udnr+1).value THEN UDctrl(udnr).value = UDctrl(udnr+1).value : noot = UDctrl(udnr+1).value IF noot > horny.HighTes THEN UDctrl(udnr).value = horny.HighTes : noot = horny.hightes 'nb. for the moment hightes is 91 in g_file, while according to the site it can go higher.. SetDlgItemText Task(%horny_Scale).hparam, %GMT_TEXT0_ID + 17, "Hi=" & STR$(noot) END SUB SUB horny_Scale_UD2 () ' controls the low limit of the note scale to be played. LOCAL noot AS BYTE LOCAL udnr AS DWORD udnr = TaskEX(%horny_Scale).UpDownNumbers(2) noot = UDCtrl(udnr).value SELECT CASE Horny.ctrl(33) CASE 0 IF noot < 23 THEN UDctrl(udnr).value = 23 : noot = 23 CASE 1 IF noot < 28 THEN UDctrl(udnr).value = 28 : noot = 28 END SELECT IF noot > UDctrl(udnr-1).value THEN UDctrl(udnr).value = UDctrl(udnr-1).value : noot = UDctrl(udnr-1).value SetDlgItemText Task(%horny_Scale).hparam, %GMT_TEXT0_ID + 18, "Lo=" & STR$(noot) END SUB SUB horny_Scale_UD3 () ' controls the tube inserted into the horn LOCAL cc AS BYTE LOCAL udnr AS DWORD udnr = TaskEX(%horny_Scale).UpDownNumbers(3) cc = UDCtrl(udnr).value IF cc < 0 THEN UDctrl(udnr).value = 0 IF cc > 1 THEN UDctrl(udnr).value = 1 SetDlgItemText Task(%horny_Scale).hparam, %GMT_TEXT0_ID + 19, "C33=" & STR$(IIF(cc,127,0)) END SUB SUB horny_Vibrato () ' vibrato is built into the ARM firmware. STATIC slnr AS DWORD STATIC TaskParamLabels() AS ASCIIZ*8 IF ISFALSE Task(%horny_vibrato).tog THEN IF ISFALSE Task(%horny_vibrato).hParam THEN DIM TaskParamLabels(2) TaskParamLabels(0)="Speed" ' controller #4 TaskParamlabels(1)="Depth" ' controller #3 TaskParamLabels(2)="Delay" ' controller #43 MakeTaskParameterDialog %horny_vibrato,3, Slider(),0,UdCtrl(), TaskParamLabels() slnr = TaskEX(%horny_vibrato).SliderNumbers(0) Slider(slnr).value = 8 Task(%horny_vibrato).freq = 50 SendMessage Slider(Slnr).h, %TBM_SETPOS,%True, Slider(Slnr).value slider(slnr).cptr = CODEPTR(horny_sl4) Slider(slnr+1).value = 0 ' geen vibrato SendMessage Slider(Slnr+1).h, %TBM_SETPOS,%True, Slider(Slnr+1).value slider(slnr+1).cptr = CODEPTR(horny_sl3) Slider(slnr+2).value = 10 ' vibrato delay time Sendmessage Slider(Slnr+2).h, %TBM_SETPOS, %True, Slider(slnr+2).value slider(slnr+2).cptr = CODEPTR(horny_sl43) END IF Task(%horny_vibrato).tog = %True END IF stoptask %horny_Vibrato END SUB SUB horny_SL4 () ' vibrato speed STATIC slnr AS DWORD slnr = TaskEX(%horny_Vibrato).SliderNumbers(0) IF slider(slnr).value <> horny.ctrl(4) THEN horny.ctrl(4) = Slider(slnr).value Controller horny.channel, 4, horny.ctrl(4) END IF END SUB SUB horny_SL3 () ' vibrato depth STATIC slnr AS DWORD slnr = TaskEX(%horny_Vibrato).SliderNumbers(1) IF slider(slnr).value <> horny.ctrl(3) THEN horny.ctrl(3) = Slider(slnr).value Controller horny.channel, 3, horny.ctrl(3) END IF END SUB SUB horny_SL43 () ' vibrato delay STATIC slnr AS DWORD slnr = TaskEX(%horny_Vibrato).SliderNumbers(2) IF slider(slnr).value <> horny.ctrl(43) THEN horny.ctrl(43) = Slider(slnr).value Controller horny.channel, 43, horny.ctrl(43) END IF END SUB SUB horny_Tremolo () ' test for tremolo - ARM controlled. STATIC slnr AS DWORD STATIC TaskParamLabels() AS ASCIIZ*8 IF ISFALSE Task(%horny_tremolo).tog THEN IF ISFALSE Task(%horny_tremolo).hParam THEN DIM TaskParamLabels(2) TaskParamLabels(0)="Speed" ' CC6 TaskParamlabels(1)="Depth" ' CC5 TaskParamlabels(2)="Delay" ' CC44 MakeTaskParameterDialog %horny_tremolo,3, Slider(),0,UdCtrl(), TaskParamLabels() slnr = TaskEX(%horny_tremolo).SliderNumbers(0) Slider(slnr).value = 8 Slider(slnr+1).value = 0 Slider(slnr+2).value = 10 SendMessage Slider(Slnr).h, %TBM_SETPOS,%True, Slider(Slnr).value Sendmessage Slider(slnr+1).h, %TBM_SETPOS,%True, Slider(slnr+1).value Sendmessage Slider(slnr+2).h, %TBM_SETPOS,%True, Slider(slnr+2).value slider(slnr).cptr = CODEPTR(horny_sl6) slider(slnr+1).cptr = CODEPTR(horny_sl5) slider(slnr+2).cptr = CODEPTR(horny_sl44) END IF Task(%horny_Tremolo).tog = %True END IF Stoptask %horny_Tremolo END SUB SUB horny_SL6 () ' tremolo speed STATIC slnr AS DWORD slnr = TaskEX(%horny_Tremolo).SliderNumbers(0) IF slider(slnr).value <> horny.ctrl(6) THEN horny.ctrl(6) = Slider(slnr).value Controller horny.channel, 6, horny.ctrl(6) END IF END SUB SUB horny_SL5 () ' tremolo depth STATIC slnr AS DWORD slnr = TaskEX(%horny_Tremolo).SliderNumbers(1) IF slider(slnr).value <> horny.ctrl(5) THEN horny.ctrl(5) = Slider(slnr).value Controller horny.channel, 5, horny.ctrl(5) END IF END SUB SUB horny_SL44 () ' tremolo delay STATIC slnr AS DWORD slnr = TaskEX(%horny_Tremolo).SliderNumbers(2) IF slider(slnr).value <> horny.ctrl(44) THEN horny.ctrl(44) = Slider(slnr).value Controller horny.channel, 44, horny.ctrl(44) END IF END SUB SUB horny_Filters () ' test for filters - ARM controlled. STATIC slnr AS DWORD STATIC TaskParamLabels() AS ASCIIZ*8 IF ISFALSE Task(%horny_filters).tog THEN IF ISFALSE Task(%horny_filters).hParam THEN DIM TaskParamLabels(5) TaskParamLabels(0)="Speed" ' CC2 - lfo3 frequency TaskParamlabels(1)="Depth" ' CC29 - lfo3 amplitude TaskParamlabels(2)="freq" ' CC25 - filter cut off frequency TaskParamlabels(3)="reson" ' CC26 resonance filter TaskParamLabels(4)="echomix" ' CC27 echo mix TaskParamlabels(5) ="Feedback" ' cc28 echo feedback MakeTaskParameterDialog %horny_filters,6, Slider(),0,UdCtrl(), TaskParamLabels() slnr = TaskEX(%horny_filters).SliderNumbers(0) Slider(slnr).value = 2 Slider(slnr+1).value = 20 Slider(slnr+2).value = 64 Slider(slnr+3).value = 90 Slider(slnr+4).value = 0 Slider(slnr+5).value = 0 SendMessage Slider(Slnr).h, %TBM_SETPOS,%True, Slider(Slnr).value Sendmessage Slider(slnr+1).h, %TBM_SETPOS,%True, Slider(slnr+1).value Sendmessage Slider(slnr+2).h, %TBM_SETPOS,%True, Slider(slnr+2).value SendMessage Slider(Slnr+3).h, %TBM_SETPOS,%True, Slider(Slnr+3).value Sendmessage Slider(slnr+4).h, %TBM_SETPOS,%True, Slider(slnr+4).value Sendmessage Slider(slnr+5).h, %TBM_SETPOS,%True, Slider(slnr+5).value slider(slnr).cptr = CODEPTR(horny_sl2) slider(slnr+1).cptr = CODEPTR(horny_sl29) slider(slnr+2).cptr = CODEPTR(horny_sl25) slider(slnr+3).cptr = CODEPTR(horny_sl26) slider(slnr+4).cptr = CODEPTR(horny_sl27) slider(slnr+5).cptr = CODEPTR(horny_sl28) END IF Task(%horny_Filters).tog = %True END IF Stoptask %horny_Filters END SUB SUB horny_SL2 () ' lfo3 filter speed STATIC slnr AS DWORD slnr = TaskEX(%horny_Filters).SliderNumbers(0) IF slider(slnr).value <> horny.ctrl(2) THEN horny.ctrl(2) = Slider(slnr).value Controller horny.channel, 2, horny.ctrl(2) END IF END SUB SUB horny_SL29 () ' lfo3 filter depth STATIC slnr AS DWORD slnr = TaskEX(%horny_Filters).SliderNumbers(1) IF slider(slnr).value <> horny.ctrl(29) THEN horny.ctrl(29) = Slider(slnr).value Controller horny.channel, 29, horny.ctrl(29) END IF END SUB SUB horny_SL25 () ' filter cut off frequency STATIC slnr AS DWORD slnr = TaskEX(%horny_Filters).SliderNumbers(2) IF slider(slnr).value <> horny.ctrl(25) THEN horny.ctrl(25) = Slider(slnr).value Controller horny.channel, 25, horny.ctrl(25) END IF END SUB SUB horny_SL26 () ' filter resonance STATIC slnr AS DWORD slnr = TaskEX(%horny_Filters).SliderNumbers(3) IF slider(slnr).value <> horny.ctrl(26) THEN horny.ctrl(26) = Slider(slnr).value Controller horny.channel, 26, horny.ctrl(26) END IF END SUB SUB horny_SL27 () ' echo mix amplitude STATIC slnr AS DWORD slnr = TaskEX(%horny_Filters).SliderNumbers(4) IF slider(slnr).value <> horny.ctrl(27) THEN horny.ctrl(27) = Slider(slnr).value Controller horny.channel, 27, horny.ctrl(27) END IF END SUB SUB horny_SL28 () ' lfo3 filter speed STATIC slnr AS DWORD slnr = TaskEX(%horny_Filters).SliderNumbers(5) IF slider(slnr).value <> horny.ctrl(28) THEN horny.ctrl(28) = Slider(slnr).value Controller horny.channel, 28, horny.ctrl(28) END IF END SUB SUB horny_Bendrange () ' test for pitchbendrange - ARM controlled. STATIC slnr AS DWORD STATIC TaskParamLabels() AS ASCIIZ*8 IF ISFALSE Task(%horny_bendrange).tog THEN IF ISFALSE Task(%horny_bendrange).hParam THEN DIM TaskParamLabels(0) TaskParamLabels(0)="Range" ' CC40 MakeTaskParameterDialog %horny_bendrange,1, Slider(),0,UdCtrl(), TaskParamLabels() slnr = TaskEX(%horny_bendrange).SliderNumbers(0) Slider(slnr).value = 1 SendMessage Slider(Slnr).h, %TBM_SETPOS,%True, Slider(Slnr).value slider(slnr).cptr = CODEPTR(horny_sl40) END IF Task(%horny_Bendrange).tog = %True END IF Stoptask %horny_Bendrange END SUB SUB horny_SL40 () ' pitchbend range controller STATIC slnr AS DWORD slnr = TaskEX(%horny_Bendrange).SliderNumbers(0) IF slider(slnr).value <> horny.ctrl(40) THEN horny.ctrl(40) = Slider(slnr).value Controller horny.channel, 40, horny.ctrl(40) END IF END SUB SUB horny_Lites () ' 3 lites on midihub board STATIC cnt AS LONG STATIC udnr AS DWORD STATIC slnr AS DWORD STATIC lite AS BYTE IF ISFALSE Task(%horny_Lites).tog THEN DIM TaskParamLabels(0 TO 1) AS ASCIIZ * 8 TaskParamLabels(0) = "Speed" TaskParamLabels(1) = "Nr." IF ISFALSE Task(%horny_Lites).hParam THEN MakeTaskParameterDialog %horny_Lites,1,Slider(),1,UDctrl(),TaskParamLabels() END IF IF slnr = %False THEN slnr = TaskEX(%horny_Lites).SliderNumbers(0) Slider(slnr).minval =1 ' tempo Slider(slnr).maxval = 127 Slider(slnr).value = 16 SendMessage Slider(Slnr).h, %TBM_SETPOS,%True, Slider(Slnr).value END IF IF udnr = %False THEN udnr = TaskEX(%horny_Lites).UpDownNumbers(0) UDctrl(udnr).cptr = CODEPTR(horny_Lites_UD) ' nr. updown UDctrl(udnr).value = 120 UDctrl(udnr).minval = 120 UDctrl(udnr).maxval = 122 UDctrl(udnr).stap = 1 END IF lite = 120 Task(%horny_Lites).tog = %True END IF ' lites controlled by PIC1 IF lite <> UDctrl(udnr).value THEN NoteOff horny.channel, lite lite = UDctrl(udnr).value END IF IF ISFALSE cnt MOD 2 THEN mPlay horny.channel, lite, 127 ELSE mPlay horny.channel, lite, 0 END IF INCR cnt Task(%horny_Lites).freq = MAX(1,(Slider(slnr).value / 4)) END SUB SUB horny_Lites_UD () ' callback on parameter UpDowns. : lite number LOCAL value AS BYTE LOCAL udnr AS DWORD udnr = TaskEX(%horny_Lites).UpdownNumbers(0) value = UDCtrl(udnr).value SetDlgItemText Task(%horny_Lites).hparam, %GMT_TEXT0_ID + 16, STR$(value) END SUB SUB horny_Test() STATIC slnr AS DWORD STATIC udnr AS DWORD LOCAL value AS LONG STATIC noot AS BYTE STATIC onfreq AS SINGLE STATIC offFreq AS SINGLE STATIC oldnote AS BYTE STATIC resetval AS BYTE LOCAL velo AS BYTE LOCAL period AS SINGLE LOCAL onpart AS SINGLE LOCAL offpart AS SINGLE LOCAL fingers AS WORD LOCAL msb AS WORD ' could be byte LOCAL lsb AS WORD ' cannot be byte IF ISFALSE Task(%horny_Test).tog THEN DIM TaskParamLabels(5) AS ASCIIZ * 8 TaskParamLabels(0) = "Tempo" ' rescaled in proc. TaskParamLabels(1) = "Velo" ' drive volume 0-127 - velocity byte TaskParamLabels(2) = "Bend" ' pitch-bend value 'SL2 - was UD2 - quartertone down or up. TaskParamLabels(3) = "Stac" ' staccato - legato up down ' UD0 TaskParamLabels(4) = "Note" ' pitch ' UD1 TaskParamLabels(5) = "F/Bb" ' ' UD2 IF ISFALSE Task(%horny_Test).hParam THEN MakeTaskParameterDialog %horny_Test,3,Slider(),3,UDctrl(),TaskParamLabels() END IF IF slnr = %False THEN slnr = TaskEX(%horny_Test).SliderNumbers(0) Slider(slnr).minval =1 ' tempo Slider(slnr).maxval = 127 Slider(slnr).value = 8 SendMessage Slider(Slnr).h, %TBM_SETPOS,%True, Slider(Slnr).value Slider(slnr+2).value = 64 'pitch bend reset Slider(slnr+2).minval = 0 Slider(slnr+2).maxval = 127 SendMessage Slider(slnr + 2).h, %TBM_SETPOS, %True, SlideR(slnr + 2).value END IF IF udnr = %False THEN udnr = TaskEX(%horny_Test).UpDownNumbers(0) UDctrl(udnr).cptr = CODEPTR(horny_UD0) ' staccato - legato updown UDctrl(udnr).value = 50 UDctrl(udnr).minval = 0 UDctrl(udnr).maxval = 100 UDctrl(udnr).stap = 1 UDctrl(udnr+1).cptr = CODEPTR(horny_UD1) ' pitch up down (note) UDctrl(udnr+1).value = horny.lowtes UDctrl(udnr+1).minval = horny.lowtes UDctrl(udnr+1).maxval = horny.Hightes UDctrl(udnr+2).cptr = CODEPTR(horny_UD2) ' F/Bb UDctrl(udnr+2).value = 0 UDctrl(udnr+2).minval = 0 UDctrl(udnr+2).maxval = 1 resetval = 64 END IF Task(%horny_Test).tog = %True EXIT SUB END IF SELECT CASE UdCtrl(udnr+3).value CASE 0 IF Horny.ctrl(33) <> 0 THEN Horny.ctrl(33) = 0 Controller Horny.channel, 33, 0 END IF CASE 1 IF Horny.ctrl(33) <> 127 THEN Horny.ctrl(33) = 127 Controller Horny.channel, 33, 127 END IF END SELECT period = 1! / (Slider(slnr).value / 10!) ' tempo Task(%horny_Test).tempo = 60 / period ' on-off periods: onpart = period * (UDctrl(udnr).value / 100!) ' 0 - 100 offpart = period - onpart ' 100 - 0 IF UDctrl(udnr).value < 1 THEN ' silence IF oldnote THEN NoteOff horny.channel, oldnote oldnote = %False END IF offFreq = 1! / period Task(%horny_Test).freq = OffFreq EXIT SUB ELSE onfreq = 1!/onpart END IF IF UDctrl(udnr).value > 99 THEN ' legato, no note offs oldnote = %False ELSE offFreq = 1! /Offpart END IF IF oldnote THEN NoteOff horny.channel, oldnote Task(%horny_Test).freq = OffFreq oldnote = %False ELSE noot = UDctrl(udnr+1).value velo = Slider(slnr+1).value mPlay horny.channel, noot, velo Bend horny.channel, 0, Slider(slnr + 2).value Task(%horny_Test).freq = OnFreq oldnote = noot END IF IF Task(%horny_Test).freq < 0.2 THEN Task(%horny_Test).freq = 0.2 END SUB SUB horny_UD0 () ' callback on parameter UpDowns. : on/off proportion LOCAL value AS BYTE LOCAL udnr AS DWORD udnr = TaskEX(%horny_Test).UpdownNumbers(0) value = UDCtrl(udnr).value IF value > 99 THEN UDctrl(udnr).value = 100 : value = 100 IF value < 0 THEN UDCTRL(udnr).value = 0 : value = 0 SetDlgItemText Task(%horny_Test).hparam, %GMT_TEXT0_ID + 16, "L=" & STR$(value) END SUB SUB horny_UD1 () ' controls the notes to be played. LOCAL noot AS BYTE LOCAL udnr AS DWORD udnr = TaskEX(%horny_Test).UpDownNumbers(1) noot = UDCtrl(udnr).value SetDlgItemText Task(%horny_Test).hparam, %GMT_TEXT0_ID + 17, "N=" & STR$(noot) END SUB SUB horny_UD2 () ' F/Bb LOCAL value AS BYTE LOCAL udnr AS DWORD udnr = TaskEX(%horny_Test).UpDownNumbers(2) value = UDCtrl(udnr).value IF value > 1 THEN value = 1 IF value < 1 THEN value = 0 SetDlgItemText Task(%horny_Test).hparam, %GMT_TEXT0_ID + 18, "C33" & STR$(IIF(value, 127, 0)) ' sending is in the main task. END SUB SUB horny_Pendulum () STATIC slnr, tog AS DWORD STATIC TaskParamLabels() AS ASCIIZ*8 LOCAL excursie AS BYTE IF ISFALSE task(%horny_Pendulum).tog THEN ' required: slider for frequency ' slider for amplitude IF ISFALSE Task(%horny_Pendulum).hParam THEN DIM TaskParamLabels(1) TaskParamLabels(0)="speed" TaskParamLabels(1)="amplitude" MakeTaskParameterDialog %horny_Pendulum,2, Slider(),0,UdCtrl(), TaskParamLabels() slnr = TaskEX(%horny_Pendulum).SliderNumbers(0) Slider(slnr).value = 20 Slider(slnr+1).value = 5 SendMessage Slider(Slnr).h, %TBM_SETPOS,%True, Slider(Slnr).value SendMessage Slider(Slnr+1).h, %TBM_SETPOS,%True, Slider(Slnr+1).value END IF Task(%horny_Pendulum).freq = 0.2 Task(%horny_Pendulum).tog = %True END IF excursie = Slider(slnr+1).value \2 '0 - 63 IF ISFALSE tog THEN Controller horny.channel, 22, 64 - excursie ELSE Controller horny.channel, 22, 64 + excursie END IF INCR tog tog = tog MOD 2 Task(%horny_Pendulum).freq = MAX(Slider(slnr).value/ 127, 0.01) END SUB SUB horny_Pendulum_Stop () Controller horny.channel, 22, 64 horny.ctrl(22) = 64 END SUB SUB horny0 () ' back yellow STATIC n AS INTEGER STATIC slnr AS DWORD IF ISFALSE Task(%horny0).tog THEN DIM TaskParamLabels(0) AS ASCIIZ * 8 ARRAY ASSIGN TaskParamLabels() = "L120" IF ISFALSE Task(%horny0).hParam THEN MakeTaskParameterDialog %horny0,1,Slider(),0,UDctrl(),TaskParamLabels() slnr = TaskEX(%horny0).SliderNumbers(0) Slider(slnr).value = 127 SendMessage Slider(Slnr).h, %TBM_SETPOS,%True, Slider(Slnr).value END IF mPlay horny.channel, 120,127 Task(%horny0).tog = %True END IF IF slider(slnr).value <> n THEN n = Slider(slnr).value mPlay horny.channel, 120, n END IF Task(%horny0).freq = 10 END SUB SUB horny0_Stop () NoteOff horny.channel, 120 END SUB SUB horny1 () 'front yellow STATIC n AS INTEGER STATIC slnr AS DWORD IF ISFALSE Task(%horny1).tog THEN DIM TaskParamLabels(0) AS ASCIIZ * 8 ARRAY ASSIGN TaskParamLabels() = "L121" IF ISFALSE Task(%horny1).hParam THEN MakeTaskParameterDialog %horny1,1,Slider(),0,UDctrl(),TaskParamLabels() slnr = TaskEX(%horny1).SliderNumbers(0) Slider(slnr).value = 127 SendMessage Slider(Slnr).h, %TBM_SETPOS,%True, Slider(Slnr).value END IF mPlay horny.channel, 121, 127 'KeyPress horny.channel,121, slider(slnr).value Task(%horny1).tog = %True END IF IF slider(slnr).value <> n THEN n = Slider(slnr).value mPlay horny.channel, 121, n 'KeyPress horny.channel, 1, n END IF Task(%horny1).freq = 10 END SUB SUB horny1_Stop () NoteOff horny.channel, 121 END SUB SUB horny2 () 'front STATIC n AS INTEGER STATIC slnr AS DWORD IF ISFALSE Task(%horny2).tog THEN DIM TaskParamLabels(0) AS ASCIIZ * 8 ARRAY ASSIGN TaskParamLabels() = "L122" IF ISFALSE Task(%horny2).hParam THEN MakeTaskParameterDialog %horny2,1,Slider(),0,UDctrl(),TaskParamLabels() slnr = TaskEX(%horny2).SliderNumbers(0) Slider(slnr).value = 127 SendMessage Slider(Slnr).h, %TBM_SETPOS,%True, Slider(Slnr).value END IF mPlay horny.channel, 122, 127 'KeyPress horny.channel,2, slider(slnr).value Task(%horny2).tog = %True END IF IF slider(slnr).value <> n THEN n = Slider(slnr).value mPlay horny.channel, 122, n END IF Task(%horny2).freq = 10 END SUB SUB horny2_Stop () NoteOff horny.channel, 122 END SUB SUB horny_100 () ' controller 100 test ' This controls valves 1-3 ' bit 0 = valve 1, 1/2 tone down valve ' bit 1 = valve 2, 1 tone down valve ' bit 2 = valve 3, 1 1/2 tone down valve STATIC slnr AS DWORD STATIC TaskParamLabels() AS ASCIIZ*8 STATIC i AS INTEGER IF ISFALSE Task(%horny_100).tog THEN ' IF ISFALSE Task(%horny_100).hParam THEN ' DIM TaskParamLabels(0) ' TaskParamLabels(0)="C100" ' MakeTaskParameterDialog %horny_100,1, Slider(),0,UdCtrl(), TaskParamLabels() ' slnr = TaskEX(%horny_100).SliderNumbers(0) ' Slider(slnr).cptr = CODEPTR(horny_SL100) ' Slider(slnr).value = 0 ' horny.ctrl(100) = 0 ' SendMessage Slider(Slnr).h, %TBM_SETPOS,%True, Slider(Slnr).value ' END IF Task(%horny_100).freq = 10 Task(%horny_100).tog = %TRue END IF INCR i i = i MOD 3 Controller horny.channel, 100, 2^i Task(%horny_100).freq = 2 END SUB ' ' ----- Arm testing ----------------------------------------------- SUB horny_Arm () ' controllers 1,7, 16, 17,18,19,20 ' ARM controller board. STATIC slnr AS DWORD STATIC TaskParamLabels() AS ASCIIZ*8 IF ISFALSE Task(%horny_Arm).tog THEN IF ISFALSE Task(%horny_Arm).hParam THEN DIM TaskParamLabels(6) TaskParamLabels(0)="C1" ' noise TaskParamLabels(1)="C7" ' volume TaskParamLabels(2)="C16" ' attack time TaskParamLabels(3)="C17" ' attack level TaskParamLabels(4)="C18" ' attack decay - hold-level = velo TaskParamLabels(5)="C19" ' release TaskParamlabels(6)="C20" ' tuning MakeTaskParameterDialog %horny_Arm,7, Slider(),0,UdCtrl(), TaskParamLabels() slnr = TaskEX(%horny_Arm).SliderNumbers(0) slider(slnr).cptr = CODEPTR(horny_sl1) Slider(slnr).value = 5 SendMessage Slider(Slnr).h, %TBM_SETPOS,%True, Slider(Slnr).value slider(slnr+1).cptr = CODEPTR(horny_sl7) Slider(slnr+1).value = 64 SendMessage Slider(Slnr+1).h, %TBM_SETPOS,%True, Slider(Slnr+1).value slider(slnr+2).cptr = CODEPTR(horny_sl16) Slider(slnr+2).value = 64 SendMessage Slider(Slnr+2).h, %TBM_SETPOS,%True, Slider(Slnr+2).value slider(slnr+3).cptr = CODEPTR(horny_sl17) Slider(slnr+3).value = 100 SendMessage Slider(Slnr+3).h, %TBM_SETPOS,%True, Slider(Slnr+3).value slider(slnr+4).cptr = CODEPTR(horny_sl18) Slider(slnr+4).value = 90 SendMessage Slider(Slnr+4).h, %TBM_SETPOS,%True, Slider(Slnr+4).value slider(slnr+5).cptr = CODEPTR(horny_sl19) Slider(slnr+5).value = 64 SendMessage Slider(Slnr+5).h, %TBM_SETPOS,%True, Slider(Slnr+5).value slider(slnr+6).cptr = CODEPTR(horny_sl20) Slider(slnr+6).value = 64 SendMessage Slider(Slnr+6).h, %TBM_SETPOS,%True, Slider(Slnr+6).value END IF Task(%horny_Arm).tog = %True END IF StopTask %horny_Arm END SUB SUB horny_SL1 () ' slider callback - noise signal STATIC slnr AS DWORD slnr = TaskEX(%horny_Arm).SliderNumbers(0) IF slider(slnr).value <> horny.ctrl(1) THEN horny.ctrl(1) = Slider(slnr).value Controller horny.channel, 1, horny.ctrl(1) END IF END SUB SUB horny_SL7 () ' slider callback - main volume STATIC slnr AS DWORD slnr = TaskEX(%horny_Arm).SliderNumbers(1) IF slider(slnr).value <> horny.ctrl(7) THEN horny.ctrl(7) = Slider(slnr).value Controller horny.channel, 7, horny.ctrl(7) END IF END SUB SUB horny_SL16 () ' - attack time ' slider callback STATIC slnr AS DWORD slnr = TaskEX(%horny_Arm).SliderNumbers(2) IF slider(slnr).value <> horny.ctrl(16) THEN horny.ctrl(16) = Slider(slnr).value Controller horny.channel, 16, horny.ctrl(16) END IF END SUB SUB horny_SL17 () ' slider callback - attack level STATIC slnr AS DWORD slnr = TaskEX(%horny_Arm).SliderNumbers(3) IF slider(slnr).value <> horny.ctrl(17) THEN horny.ctrl(17) = Slider(slnr).value Controller horny.channel, 17, horny.ctrl(17) END IF END SUB SUB horny_SL18 () ' slider callback - attack decay towards velo level STATIC slnr AS DWORD slnr = TaskEX(%horny_Arm).SliderNumbers(4) IF slider(slnr).value <> horny.ctrl(18) THEN horny.ctrl(18) = Slider(slnr).value Controller horny.channel, 18, horny.ctrl(18) END IF END SUB SUB horny_SL19 () ' slider callback STATIC slnr AS DWORD slnr = TaskEX(%horny_Arm).SliderNumbers(5) IF slider(slnr).value <> horny.ctrl(19) THEN horny.ctrl(19) = Slider(slnr).value Controller horny.channel, 19, horny.ctrl(19) END IF END SUB SUB horny_SL20 () ' slider callback - tuning STATIC slnr AS DWORD slnr = TaskEX(%horny_Arm).SliderNumbers(6) IF slider(slnr).value <> horny.ctrl(20) THEN horny.ctrl(20) = Slider(slnr).value Controller horny.channel, 20, horny.ctrl(20) END IF END SUB SUB horny_HubPIC () ' controllers 21,22 ' lites ' Midi Hub board. STATIC slnr AS DWORD STATIC TaskParamLabels() AS ASCIIZ*8 IF ISFALSE Task(%horny_HubPIC).tog THEN IF ISFALSE Task(%horny_HubPIC).hParam THEN DIM TaskParamLabels(1) TaskParamLabels(0)="C30" ' valve release time TaskParamLabels(1)="C22" ' position MakeTaskParameterDialog %horny_HubPIC,2, Slider(),0,UdCtrl(), TaskParamLabels() slnr = TaskEX(%horny_HubPIC).SliderNumbers(0) slider(slnr).cptr = CODEPTR(horny_sl30) Slider(slnr).value = 10 SendMessage Slider(Slnr).h, %TBM_SETPOS,%True, Slider(Slnr).value ' slider(slnr+1).cptr = CODEPTR(horny_sl22) - do not use callback, but poll!!! Slider(slnr+1).value = 64 SendMessage Slider(Slnr+1).h, %TBM_SETPOS,%True, Slider(Slnr+1).value END IF Task(%horny_HubPIC).freq = 1 Task(%horny_HubPIC).tog = %True END IF ' poll code for this slider: IF slider(slnr+1).value <> horny.ctrl(22) THEN horny.ctrl(22) = Slider(slnr+1).value Controller horny.channel, 22, horny.ctrl(22) END IF END SUB SUB horny_SL30 () ' slider callback - valve release time STATIC slnr AS DWORD slnr = TaskEX(%horny_HubPic).SliderNumbers(0) IF slider(slnr).value <> horny.ctrl(30) THEN horny.ctrl(30) = Slider(slnr).value Controller horny.channel, 30, horny.ctrl(30) END IF END SUB SUB horny_SL22 () ' slider callback - position: ' this cannot work well: we should not send all these intermediate values ' from the slider when it is moved with the mouse. STATIC slnr AS DWORD slnr = TaskEX(%horny_HubPic).SliderNumbers(1) IF slider(slnr).value <> horny.ctrl(22) THEN horny.ctrl(22) = Slider(slnr).value Controller horny.channel, 22, horny.ctrl(22) END IF END SUB SUB horny_66 () Controller horny.channel, 66, 127 horny.ctrl(66)= 127 END SUB SUB hornyMusic () STATIC highnote, note, oldnote, minvel AS BYTE STATIC slnr, cnt AS DWORD STATIC TaskParamLabels() AS ASCIIZ*8 LOCAL interval, velfak AS LONG IF ISFALSE Task(%hornyMus).tog THEN IF ISFALSE Task(%hornyMus).hParam THEN minvel = 30 DIM TaskParamLabels(2) TaskParamLabels(0)="Highest" ' highest note limit TaskParamLabels(1)="Speed" TaskParamLabels(2)="Volume" MakeTaskParameterDialog %hornyMus,3, Slider(),0,UdCtrl(), TaskParamLabels() slnr = TaskEX(%hornyMus).SliderNumbers(0) 'Slider(slnr).cptr = CODEPTR() Slider(slnr).value = horny.lowtes + 30 Slider(slnr).minval = horny.lowtes + 12 Slider(slnr).maxval = horny.hightes SendMessage Slider(Slnr).h, %TBM_SETPOS,%True, Slider(Slnr).value Slider(slnr+1).value = 16 ' tempo SendMessage Slider(Slnr+1).h, %TBM_SETPOS,%True, Slider(Slnr+1).value Slider(slnr+2).value = 127 ' level range Slider(slnr+2).minval = minvel SendMessage Slider(Slnr+2).h, %TBM_SETPOS,%True, Slider(Slnr+2).value END IF cnt = 0 oldnote = horny.lowtes Task(%hornyMus).tog = %True END IF IF cnt MOD RND(3,7) = 1 THEN 'mPlay horny.channel, oldnote, %False NoteOff horny.channel, oldnote ELSE DO interval = RND(-3, +3) note = oldnote + interval LOOP UNTIL (note >= horny.lowtes) AND (note <= Slider(0).value) velfak = (note - horny.lowtes) ' 0 - 48 SELECT CASE note CASE horny.lowtes TO horny.lowtes + 19 velfak = velfak MOD 13 CASE horny.lowtes + 20 TO horny.lowtes + 39 ' komt van een andere robot... velfak = (velfak - 12) MOD 13 CASE horny.lowtes + 40 TO horny.lowtes + 59 velfak = (velfak - 24) MOD 13 CASE horny.lowtes + 60 TO horny.hightes velfak = (velfak -36) MOD 13 END SELECT mPlay horny.channel, note, MAX(minvel,Slider(slnr+2).value - (velfak)) 'rnd(minvel,Slider(slnr+2).value) oldnote = note END IF INCR cnt Task(%hornyMus).freq = (Slider(slnr+1).value / 16) * RND(1,4) END SUB SUB hornyMusic_Stop () Controller horny.channel, 123, %False ' implemented on the ARM-board and the Hub board. END SUB 'the below is moved to g_mm.inc/g_mm.bi 'global hSoN as dword 'global hSoV as dword 'Global SoN as byte 'global Sov as byte 'GLOBAL hSoCc1 AS DWORD 'GLOBAL Socc1 AS BYTE 'GLOBAL hSoCc7 AS DWORD 'GLOBAL Socc7 AS BYTE 'global hHeN as dword 'GLOBAL hHeV AS DWORD 'GLOBAL HeN AS BYTE 'GLOBAL HeV AS BYTE 'global hHeCc7 as dword 'global HeCc7 as byte 'global hHeCc17 as dword 'global HeCc17 as byte 'GLOBAL hBoN AS DWORD 'GLOBAL hBoV AS DWORD 'GLOBAL BoN AS BYTE 'GLOBAL BoV AS BYTE 'GLOBAL hBoCc7 AS DWORD 'GLOBAL BoCc7 AS BYTE 'GLOBAL hBoCc17 AS DWORD 'GLOBAL BoCc17 AS BYTE 'GLOBAL hHoN AS DWORD 'GLOBAL hHoV AS DWORD 'GLOBAL HoN AS BYTE 'GLOBAL HoV AS BYTE 'GLOBAL hHoCc1 AS DWORD 'GLOBAL Hocc1 AS BYTE 'GLOBAL hHoCc7 AS DWORD 'GLOBAL Hocc7 AS BYTE 'GLOBAL hKoN AS DWORD 'GLOBAL hKoV AS DWORD 'GLOBAL KoN AS BYTE 'GLOBAL KoV AS BYTE 'GLOBAL hKoCc17 AS DWORD 'GLOBAL Kocc17 AS BYTE 'GLOBAL hFaN AS DWORD 'GLOBAL hFaV AS DWORD 'GLOBAL FaN AS BYTE 'GLOBAL Fav AS BYTE 'GLOBAL hFaCc1 AS DWORD 'GLOBAL Facc1 AS BYTE 'GLOBAL hFaCc7 AS DWORD 'GLOBAL Facc7 AS BYTE 'GLOBAL hFaCc17 AS DWORD 'GLOBAL Facc17 AS BYTE 'GLOBAL hAuN AS DWORD 'GLOBAL hAuV AS DWORD 'GLOBAL AuN AS BYTE 'GLOBAL Auv AS BYTE 'GLOBAL hAuCc7 AS DWORD 'GLOBAL Aucc7 AS BYTE 'GLOBAL hAuCc17 AS DWORD 'GLOBAL Aucc17 AS BYTE 'GLOBAL hAsN AS dword 'GLOBAL hAsv AS dword 'GLOBAL AsN AS BYTE 'GLOBAL Asv AS BYTE 'GLOBAL hAsCc1 AS DWORD 'GLOBAL Ascc1 AS BYTE 'GLOBAL hAsCc7 AS DWORD 'GLOBAL Ascc7 AS BYTE 'GLOBAL hAsCc17 AS DWORD 'GLOBAL Ascc17 AS BYTE 'GLOBAL hKlN AS DWORD 'GLOBAL hKlv AS DWORD 'GLOBAL KlN AS BYTE 'GLOBAL Klv AS BYTE 'GLOBAL hKlCc1 AS DWORD 'GLOBAL Klcc1 AS BYTE 'GLOBAL hKlCc7 AS DWORD 'GLOBAL Klcc7 AS BYTE 'GLOBAL hKlCc17 AS DWORD 'GLOBAL Klcc17 AS BYTE 'GLOBAL hObN AS DWORD 'GLOBAL hObv AS DWORD 'GLOBAL ObN AS BYTE 'GLOBAL Obv AS BYTE 'GLOBAL hObCc17 AS DWORD 'GLOBAL Obcc17 AS BYTE ' ' 'SUB TestMonophonicInstruments ' 'applet for comparing the monophonic wind instruments ' STATIC hw AS DWORD ' static cc as dword ' static dur as dword ' note duration (ms) ' local x as long ' IF ISFALSE hw THEN ' DIALOG NEW 0, FUNCNAME$, 1, 1, 555, 300 TO hw ' '**so ' x = 1 ' CONTROL ADD LABEL, hw, 1000, "So", x, 1, 85, 12, %SS_SUNKEN ' control add checkbox, hw, 1001, "", x + 85,1,12,12 ' CONTROL ADD LABEL, hw, 1010, "noot", x, 16, 25, 12 ' CONTROL ADD "msctls_trackbar32", hw, 1011, "noot", 20 + x, 16, 64, 12, %WS_CHILD OR %WS_VISIBLE OR _ ' %TBS_HORZ OR %TBS_NOTICKS CALL CB_TMI ' CONTROL HANDLE hw, 1011 TO hSoN '' msgbox str$(So.LowTes) ' SendMessage hSoN, %TBM_SETRANGE,%TRUE, MAKLNG(So.LowTes, So.HighTes) ' SendMessage hSoN, %TBM_SETpagesize, 0, 1 'means shift by 5 if usr clicks next 2 current position/presses pgup ' SendMessage hSoN, %TBM_SETPOS,%TRUE, So.LowTes ' Son = So.LowTes ' CONTROL ADD label, hw, 1012, STR$(So.LowTes), 85 + x, 16, 20, 12, %ES_NUMBER OR %SS_SUNKEN ' ' CONTROL ADD LABEL, hw, 1015, "velo", x, 30, 25, 12 ' CONTROL ADD "msctls_trackbar32", hw, 1016, "velo", 20 + x, 30, 64, 12, %WS_CHILD OR %WS_VISIBLE OR _ ' %TBS_HORZ OR %TBS_NOTICKS CALL CB_TMI ' CONTROL HANDLE hw, 1016 TO hSoV ' SendMessage hSoV, %TBM_SETRANGE,%TRUE, MAKLNG(1, 127) ' SendMessage hSoV, %TBM_SETpagesize, 0, 1 'means shift by 5 if usr clicks next 2 current position/presses pgup ' SendMessage hSoV, %TBM_SETPOS,%TRUE, 90 ' Sov = 90 ' CONTROL ADD LABEL, hw, 1017, STR$(90), 85 + x, 30, 20, 12, %ES_NUMBER OR %SS_SUNKEN ' ' CONTROL ADD LABEL, hw, 1020, "cc1", x, 44, 20, 12 ' CONTROL ADD "msctls_trackbar32", hw, 1021, "CC1", 20 + x, 44, 64, 12, %WS_CHILD OR %WS_VISIBLE OR _ ' %TBS_HORZ OR %TBS_NOTICKS CALL CB_TMI ' CONTROL HANDLE hw, 1021 TO hSoCc1 ' SendMessage hSoCc1, %TBM_SETRANGE,%TRUE, MAKLNG(0, 127) ' SendMessage hSoCc1, %TBM_SETpagesize, 0, 1 'means shift by 5 if usr clicks next 2 current position/presses pgup ' SendMessage hSoCc1, %TBM_SETPOS,%TRUE, 20 ' SoCC1 = 20 ' CONTROL ADD label, hw, 1022, "20", 85 + x, 44, 20, 12, %SS_SUNKEN ' ' control add label, hw, 1030, "cc7", x, 58, 20, 12 ' CONTROL ADD "msctls_trackbar32", hw, 1031, "CC7", 20 + x, 58, 64, 12, %WS_CHILD OR %WS_VISIBLE OR _ ' %TBS_HORZ OR %TBS_NOTICKS CALL CB_TMI ' CONTROL HANDLE hw, 1031 TO hSoCc7 ' SendMessage hSoCc7, %TBM_SETRANGE,%TRUE, MAKLNG(0, 127) ' SendMessage hSoCc7, %TBM_SETpagesize, 0, 1 'means shift by 5 if usr clicks next 2 current position/presses pgup ' SendMessage hSoCc7, %TBM_SETPOS,%TRUE, 64 ' SoCc7 = 64 ' CONTROL ADD LABEL, hw, 1032, "64", 85 + x, 58, 20, 12, %SS_SUNKEN ' ' '**Heli ' x = 112 ' CONTROL ADD LABEL, hw, 1100, "Heli", x, 1, 85, 12, %SS_SUNKEN ' CONTROL ADD CHECKBOX, hw, 1101, "", x + 85,1,12,12 ' CONTROL ADD LABEL, hw, 1110, "noot", x, 16, 25, 12 ' CONTROL ADD "msctls_trackbar32", hw, 1111, "noot", 20 + x, 16, 64, 12, %WS_CHILD OR %WS_VISIBLE OR _ ' %TBS_HORZ OR %TBS_NOTICKS CALL CB_TMI ' CONTROL HANDLE hw, 1111 TO hHeN ' SendMessage hHeN, %TBM_SETRANGE,%TRUE, MAKLNG(Heli.LowTes, Heli.HighTes) ' SendMessage hHeN, %TBM_SETpagesize, 0, 1 'means shift by 1 if usr clicks next 2 current position/presses pgup ' SendMessage hHeN, %TBM_SETPOS,%TRUE, Heli.LowTes ' Hen = Heli.LowTes ' CONTROL ADD LABEL, hw, 1112, STR$(Heli.LowTes), 85 + x, 16, 20, 12, %ES_NUMBER OR %SS_SUNKEN ' ' CONTROL ADD LABEL, hw, 1115, "velo", x, 30, 25, 12 ' CONTROL ADD "msctls_trackbar32", hw, 1116, "velo", 20 + x, 30, 64, 12, %WS_CHILD OR %WS_VISIBLE OR _ ' %TBS_HORZ OR %TBS_NOTICKS CALL CB_TMI ' CONTROL HANDLE hw, 1116 TO hHeV ' SendMessage hHeV, %TBM_SETRANGE,%TRUE, MAKLNG(1, 127) ' SendMessage hHeV, %TBM_SETpagesize, 0, 1 'means shift by 5 if usr clicks next 2 current position/presses pgup ' SendMessage hHeV, %TBM_SETPOS,%TRUE, 90 ' Hev = 90 ' CONTROL ADD LABEL, hw, 1117, STR$(90), 85 + x, 30, 20, 12, %ES_NUMBER OR %SS_SUNKEN ' ' CONTROL ADD LABEL, hw, 1120, "cc7", x, 44, 20, 12 ' CONTROL ADD "msctls_trackbar32", hw, 1121, "CC7", 20 + x, 44, 64, 12, %WS_CHILD OR %WS_VISIBLE OR _ ' %TBS_HORZ OR %TBS_NOTICKS CALL CB_TMI ' CONTROL HANDLE hw, 1121 TO hHeCc7 ' SendMessage hHeCc7, %TBM_SETRANGE,%TRUE, MAKLNG(0, 127) ' SendMessage hHeCc7, %TBM_SETpagesize, 0, 1 'means shift by 1 if usr clicks next 2 current position/presses pgup ' SendMessage hHeCc7, %TBM_SETPOS,%TRUE, 64 ' HeCc7 = 64 ' CONTROL ADD LABEL, hw, 1122, "64", 85 + x, 44, 20, 12, %SS_SUNKEN ' ' CONTROL ADD LABEL, hw, 1130, "cc17", x, 58, 20, 12 ' CONTROL ADD "msctls_trackbar32", hw, 1131, "CC17", 20 + x, 58, 64, 12, %WS_CHILD OR %WS_VISIBLE OR _ ' %TBS_HORZ OR %TBS_NOTICKS CALL CB_TMI ' CONTROL HANDLE hw, 1131 TO hHeCc17 ' SendMessage hHeCc17, %TBM_SETRANGE,%TRUE, MAKLNG(0, 127) ' SendMessage hHeCc17, %TBM_SETpagesize, 0, 1 'means shift by 1 if usr clicks next 2 current position/presses pgup ' SendMessage hHeCc17, %TBM_SETPOS,%TRUE, 127 ' HeCc17 = 127 ' CONTROL ADD LABEL, hw, 1132, "127", 85 + x, 58, 20, 12, %SS_SUNKEN ' ' '**Bono ' x = 223 ' CONTROL ADD LABEL, hw, 1200, "Bono", x, 1, 85, 12, %SS_SUNKEN ' CONTROL ADD CHECKBOX, hw, 1201, "", x + 85,1,12,12 ' CONTROL ADD LABEL, hw, 1210, "noot", x, 16, 25, 12 ' CONTROL ADD "msctls_trackbar32", hw, 1211, "noot", 20 + x, 16, 64, 12, %WS_CHILD OR %WS_VISIBLE OR _ ' %TBS_HORZ OR %TBS_NOTICKS CALL CB_TMI ' CONTROL HANDLE hw, 1211 TO hBoN '' msgbox str$(So.LowTes) ' SendMessage hBoN, %TBM_SETRANGE,%TRUE, MAKLNG(Bono.LowTes, Bono.HighTes) ' SendMessage hBoN, %TBM_SETpagesize, 0, 1 'means shift by 1 if usr clicks next 2 current position/presses pgup ' SendMessage hBoN, %TBM_SETPOS,%TRUE, Bono.LowTes ' BoN = Bono.LowTes ' CONTROL ADD LABEL, hw, 1212, STR$(Bono.LowTes), 85 + x, 16, 20, 12, %ES_NUMBER OR %SS_SUNKEN ' ' CONTROL ADD LABEL, hw, 1215, "velo", x, 30, 25, 12 ' CONTROL ADD "msctls_trackbar32", hw, 1216, "velo", 20 + x, 30, 64, 12, %WS_CHILD OR %WS_VISIBLE OR _ ' %TBS_HORZ OR %TBS_NOTICKS CALL CB_TMI ' CONTROL HANDLE hw, 1216 TO hBoV ' SendMessage hBoV, %TBM_SETRANGE,%TRUE, MAKLNG(1, 127) ' SendMessage hBoV, %TBM_SETpagesize, 0, 1 'means shift by 5 if usr clicks next 2 current position/presses pgup ' SendMessage hBoV, %TBM_SETPOS,%TRUE, 90 ' Bov = 90 ' CONTROL ADD LABEL, hw, 1217, STR$(90), 85 + x, 30, 20, 12, %ES_NUMBER OR %SS_SUNKEN ' ' ' CONTROL ADD LABEL, hw, 1220, "cc7", x, 44, 20, 12 ' CONTROL ADD "msctls_trackbar32", hw, 1221, "CC7", 20 + x, 44, 64, 12, %WS_CHILD OR %WS_VISIBLE OR _ ' %TBS_HORZ OR %TBS_NOTICKS CALL CB_TMI ' CONTROL HANDLE hw, 1221 TO hBoCc7 ' SendMessage hBoCc7, %TBM_SETRANGE,%TRUE, MAKLNG(0, 127) ' SendMessage hBoCc7, %TBM_SETpagesize, 0, 1 'means shift by 1 if usr clicks next 2 current position/presses pgup ' SendMessage hBoCc7, %TBM_SETPOS,%TRUE, 64 ' BoCc7 = 64 ' CONTROL ADD LABEL, hw, 1222, "64", 85 + x, 44, 20, 12, %SS_SUNKEN ' ' CONTROL ADD LABEL, hw, 1230, "cc17", x, 58, 20, 12 ' CONTROL ADD "msctls_trackbar32", hw, 1231, "CC17", 20 + x, 58, 64, 12, %WS_CHILD OR %WS_VISIBLE OR _ ' %TBS_HORZ OR %TBS_NOTICKS CALL CB_TMI ' CONTROL HANDLE hw, 1231 TO hBoCc17 ' SendMessage hBoCc17, %TBM_SETRANGE,%TRUE, MAKLNG(0, 127) ' SendMessage hBoCc17, %TBM_SETpagesize, 0, 1 'means shift by 1 if usr clicks next 2 current position/presses pgup ' SendMessage hBoCc17, %TBM_SETPOS,%TRUE, 127 ' BoCc17, 127 ' CONTROL ADD LABEL, hw, 1232, "127", 85 + x, 58, 20, 12, %SS_SUNKEN ' ' '**Horny ' x = 334 ' CONTROL ADD LABEL, hw, 1300, "Horny", x, 1, 85, 12, %SS_SUNKEN ' CONTROL ADD CHECKBOX, hw, 1301, "", x + 85,1,12,12 ' CONTROL ADD LABEL, hw, 1310, "noot", x, 16, 25, 12 ' CONTROL ADD "msctls_trackbar32", hw, 1311, "noot", 20 + x, 16, 64, 12, %WS_CHILD OR %WS_VISIBLE OR _ ' %TBS_HORZ OR %TBS_NOTICKS CALL CB_TMI ' CONTROL HANDLE hw, 1311 TO hHoN '' msgbox str$(So.LowTes) ' SendMessage hHoN, %TBM_SETRANGE,%TRUE, MAKLNG(Horny.LowTes, Horny.HighTes) ' SendMessage hHoN, %TBM_SETpagesize, 0, 1 'means shift by 1 if usr clicks next 2 current position/presses pgup ' SendMessage hHoN, %TBM_SETPOS,%TRUE, Horny.LowTes ' HoN = Horny.LowTes ' CONTROL ADD LABEL, hw, 1312, STR$(Horny.LowTes), 85 + x, 16, 20, 12, %ES_NUMBER OR %SS_SUNKEN ' ' CONTROL ADD LABEL, hw, 1315, "velo", x, 30, 25, 12 ' CONTROL ADD "msctls_trackbar32", hw, 1316, "velo", 20 + x, 30, 64, 12, %WS_CHILD OR %WS_VISIBLE OR _ ' %TBS_HORZ OR %TBS_NOTICKS CALL CB_TMI ' CONTROL HANDLE hw, 1316 TO hHoV ' SendMessage hHoV, %TBM_SETRANGE,%TRUE, MAKLNG(1, 127) ' SendMessage hHoV, %TBM_SETpagesize, 0, 1 'means shift by 5 if usr clicks next 2 current position/presses pgup ' SendMessage hHoV, %TBM_SETPOS,%TRUE, 90 ' Hov = 90 ' CONTROL ADD LABEL, hw, 1317, STR$(90), 85 + x, 30, 20, 12, %ES_NUMBER OR %SS_SUNKEN ' ' CONTROL ADD LABEL, hw, 1320, "cc1", x, 44, 20, 12 ' CONTROL ADD "msctls_trackbar32", hw, 1321, "CC1", 20 + x, 44, 64, 12, %WS_CHILD OR %WS_VISIBLE OR _ ' %TBS_HORZ OR %TBS_NOTICKS CALL CB_TMI ' CONTROL HANDLE hw, 1321 TO hHoCc1 ' SendMessage hHoCc1, %TBM_SETRANGE,%TRUE, MAKLNG(0, 127) ' SendMessage hHoCc1, %TBM_SETpagesize, 0, 1 'means shift by 1 if usr clicks next 2 current position/presses pgup ' SendMessage hHoCc1, %TBM_SETPOS,%TRUE, 20 ' HoCc1 = 20 ' CONTROL ADD LABEL, hw, 1322, "20", 85 + x, 44, 20, 12, %SS_SUNKEN ' ' CONTROL ADD LABEL, hw, 1330, "cc7", x, 58, 20, 12 ' CONTROL ADD "msctls_trackbar32", hw, 1331, "CC7", 20 + x, 58, 64, 12, %WS_CHILD OR %WS_VISIBLE OR _ ' %TBS_HORZ OR %TBS_NOTICKS CALL CB_TMI ' CONTROL HANDLE hw, 1331 TO hHoCc7 ' SendMessage hHoCc7, %TBM_SETRANGE,%TRUE, MAKLNG(0, 127) ' SendMessage hHoCc7, %TBM_SETpagesize, 0, 1 'means shift by 1 if usr clicks next 2 current position/presses pgup ' SendMessage hHoCc7, %TBM_SETPOS,%TRUE, 80 ' HoCc7 = 80 ' CONTROL ADD LABEL, hw, 1332, "80", 85 + x, 58, 20, 12, %SS_SUNKEN ' ' '**Korn ' x = 445 ' CONTROL ADD LABEL, hw, 1400, "Korn", x, 1, 85, 12, %SS_SUNKEN ' CONTROL ADD CHECKBOX, hw, 1401, "", x + 85,1,12,12 ' CONTROL ADD LABEL, hw, 1410, "noot", x, 16, 25, 12 ' CONTROL ADD "msctls_trackbar32", hw, 1411, "noot", 20 + x, 16, 64, 12, %WS_CHILD OR %WS_VISIBLE OR _ ' %TBS_HORZ OR %TBS_NOTICKS CALL CB_TMI ' CONTROL HANDLE hw, 1411 TO hKoN '' msgbox str$(So.LowTes) ' SendMessage hKoN, %TBM_SETRANGE,%TRUE, MAKLNG(Korn.LowTes, Korn.HighTes) ' SendMessage hKoN, %TBM_SETpagesize, 0, 1 'means shift by 1 if usr clicks next 2 current position/presses pgup ' SendMessage hKoN, %TBM_SETPOS,%TRUE, Korn.LowTes ' KoN = Korn.LowTes ' CONTROL ADD LABEL, hw, 1412, STR$(Horny.LowTes), 85 + x, 16, 20, 12, %ES_NUMBER OR %SS_SUNKEN ' ' CONTROL ADD LABEL, hw, 1415, "velo", x, 30, 25, 12 ' CONTROL ADD "msctls_trackbar32", hw, 1416, "velo", 20 + x, 30, 64, 12, %WS_CHILD OR %WS_VISIBLE OR _ ' %TBS_HORZ OR %TBS_NOTICKS CALL CB_TMI ' CONTROL HANDLE hw, 1416 TO hKoV ' SendMessage hKoV, %TBM_SETRANGE,%TRUE, MAKLNG(1, 127) ' SendMessage hKoV, %TBM_SETpagesize, 0, 1 'means shift by 5 if usr clicks next 2 current position/presses pgup ' SendMessage hKoV, %TBM_SETPOS,%TRUE, 90 ' Kov = 90 ' CONTROL ADD LABEL, hw, 1417, STR$(90), 85 + x, 30, 20, 12, %ES_NUMBER OR %SS_SUNKEN ' ' CONTROL ADD LABEL, hw, 1420, "cc17", x, 44, 20, 12 ' CONTROL ADD "msctls_trackbar32", hw, 1421, "CC17", 20 + x, 44, 64, 12, %WS_CHILD OR %WS_VISIBLE OR _ ' %TBS_HORZ OR %TBS_NOTICKS CALL CB_TMI ' CONTROL HANDLE hw, 1421 TO hKoCc17 ' SendMessage hKoCc17, %TBM_SETRANGE,%TRUE, MAKLNG(0, 127) ' SendMessage hKoCc17, %TBM_SETpagesize, 0, 1 'means shift by 1 if usr clicks next 2 current position/presses pgup ' SendMessage hKoCc17, %TBM_SETPOS,%TRUE, 90 ' KoCc17 = 90 ' CONTROL ADD LABEL, hw, 1422, "90", 85 + x, 44, 20, 12, %SS_SUNKEN ' ' ' '**Fa ' x = 1 ' CONTROL ADD LABEL, hw, 2000, "Fa", x, 101, 85, 12, %SS_SUNKEN ' CONTROL ADD CHECKBOX, hw, 2001, "", x + 85,101,12,12 ' CONTROL ADD LABEL, hw, 2010, "noot", x, 116, 25, 12 ' CONTROL ADD "msctls_trackbar32", hw, 2011, "noot", 20 + x, 116, 64, 12, %WS_CHILD OR %WS_VISIBLE OR _ ' %TBS_HORZ OR %TBS_NOTICKS CALL CB_TMI ' CONTROL HANDLE hw, 2011 TO hFaN '' msgbox str$(So.LowTes) ' SendMessage hFaN, %TBM_SETRANGE,%TRUE, MAKLNG(Fa.LowTes, Fa.HighTes) ' SendMessage hFaN, %TBM_SETpagesize, 0, 1 ' SendMessage hFaN, %TBM_SETPOS,%TRUE, Fa.LowTes ' Fan = Fa.LowTes ' CONTROL ADD LABEL, hw, 2012, STR$(Fa.LowTes), 85 + x, 116, 20, 12, %ES_NUMBER OR %SS_SUNKEN ' ' CONTROL ADD LABEL, hw, 2015, "velo", x, 130, 25, 12 ' CONTROL ADD "msctls_trackbar32", hw, 2016, "velo", 20 + x, 130, 64, 12, %WS_CHILD OR %WS_VISIBLE OR _ ' %TBS_HORZ OR %TBS_NOTICKS CALL CB_TMI ' CONTROL HANDLE hw, 2016 TO hFaV ' SendMessage hFaV, %TBM_SETRANGE,%TRUE, MAKLNG(1, 127) ' SendMessage hFaV, %TBM_SETpagesize, 0, 1 'means shift by 5 if usr clicks next 2 current position/presses pgup ' SendMessage hFaV, %TBM_SETPOS,%TRUE, 90 ' FaV = 90 ' CONTROL ADD LABEL, hw, 2017, STR$(90), 85 + x, 130, 20, 12, %ES_NUMBER OR %SS_SUNKEN ' ' CONTROL ADD LABEL, hw, 2020, "cc1", x, 144, 20, 12 ' CONTROL ADD "msctls_trackbar32", hw, 2021, "CC1", 20 + x, 144, 64, 12, %WS_CHILD OR %WS_VISIBLE OR _ ' %TBS_HORZ OR %TBS_NOTICKS CALL CB_TMI ' CONTROL HANDLE hw, 2021 TO hFaCc1 ' SendMessage hFaCc1, %TBM_SETRANGE,%TRUE, MAKLNG(0, 127) ' SendMessage hFaCc1, %TBM_SETpagesize, 0, 1 'means shift by 5 if usr clicks next 2 current position/presses pgup ' SendMessage hFaCc1, %TBM_SETPOS,%TRUE, 2 ' FaCc1 = 2 ' CONTROL ADD LABEL, hw, 2022, "2", 85 + x, 144, 20, 12, %SS_SUNKEN ' ' CONTROL ADD LABEL, hw, 2030, "cc7", x, 158, 20, 12 ' CONTROL ADD "msctls_trackbar32", hw, 2031, "CC7", 20 + x, 158, 64, 12, %WS_CHILD OR %WS_VISIBLE OR _ ' %TBS_HORZ OR %TBS_NOTICKS CALL CB_TMI ' CONTROL HANDLE hw, 2031 TO hFaCc7 ' SendMessage hFaCc7, %TBM_SETRANGE,%TRUE, MAKLNG(0, 127) ' SendMessage hFaCc7, %TBM_SETpagesize, 0, 1 'means shift by 5 if usr clicks next 2 current position/presses pgup ' SendMessage hFaCc7, %TBM_SETPOS,%TRUE, 64 ' FaCc7 = 64 ' CONTROL ADD LABEL, hw, 2032, "64", 85 + x, 158, 20, 12, %SS_SUNKEN ' ' CONTROL ADD LABEL, hw, 2040, "cc17", x, 172, 20, 12 ' CONTROL ADD "msctls_trackbar32", hw, 2041, "CC17", 20 + x, 172, 64, 12, %WS_CHILD OR %WS_VISIBLE OR _ ' %TBS_HORZ OR %TBS_NOTICKS CALL CB_TMI ' CONTROL HANDLE hw, 2041 TO hFaCc17 ' SendMessage hFaCc17, %TBM_SETRANGE,%TRUE, MAKLNG(0, 127) ' SendMessage hFaCc17, %TBM_SETpagesize, 0, 1 'means shift by 5 if usr clicks next 2 current position/presses pgup ' SendMessage hFaCc17, %TBM_SETPOS,%TRUE, 127 ' Facc17 = 127 ' CONTROL ADD LABEL, hw, 2042, "127", 85 + x, 172, 20, 12, %SS_SUNKEN ' ' '**Autosax ' x = 112 ' CONTROL ADD LABEL, hw, 2100, "AutoSax", x, 101, 85, 12, %SS_SUNKEN ' CONTROL ADD CHECKBOX, hw, 2101, "", x + 85,101,12,12 ' CONTROL ADD LABEL, hw, 2110, "noot", x, 116, 25, 12 ' CONTROL ADD "msctls_trackbar32", hw, 2111, "noot", 20 + x, 116, 64, 12, %WS_CHILD OR %WS_VISIBLE OR _ ' %TBS_HORZ OR %TBS_NOTICKS CALL CB_TMI ' CONTROL HANDLE hw, 2111 TO hAuN ' SendMessage hAuN, %TBM_SETRANGE,%TRUE, MAKLNG(AutoSax.LowTes, AutoSax.HighTes) ' SendMessage hAuN, %TBM_SETpagesize, 0, 1 ' SendMessage hAuN, %TBM_SETPOS,%TRUE, AutoSax.LowTes ' AuN = AutoSax.LowTes ' CONTROL ADD LABEL, hw, 2112, STR$(AutoSax.LowTes), 85 + x, 116, 20, 12, %ES_NUMBER OR %SS_SUNKEN ' ' CONTROL ADD LABEL, hw, 2115, "velo", x, 130, 25, 12 ' CONTROL ADD "msctls_trackbar32", hw, 2116, "velo", 20 + x, 130, 64, 12, %WS_CHILD OR %WS_VISIBLE OR _ ' %TBS_HORZ OR %TBS_NOTICKS CALL CB_TMI ' CONTROL HANDLE hw, 2116 TO hAuV ' SendMessage hAuV, %TBM_SETRANGE,%TRUE, MAKLNG(1, 127) ' SendMessage hAuV, %TBM_SETpagesize, 0, 1 'means shift by 5 if usr clicks next 2 current position/presses pgup ' SendMessage hAuV, %TBM_SETPOS,%TRUE, 90 ' AuV = 90 ' CONTROL ADD LABEL, hw, 2117, STR$(90), 85 + x, 130, 20, 12, %ES_NUMBER OR %SS_SUNKEN ' ' CONTROL ADD LABEL, hw, 2120, "cc7", x, 144, 20, 12 ' CONTROL ADD "msctls_trackbar32", hw, 2121, "CC7", 20 + x, 144, 64, 12, %WS_CHILD OR %WS_VISIBLE OR _ ' %TBS_HORZ OR %TBS_NOTICKS CALL CB_TMI ' CONTROL HANDLE hw, 2121 TO hAuCc7 ' SendMessage hAuCc7, %TBM_SETRANGE,%TRUE, MAKLNG(0, 127) ' SendMessage hAuCc7, %TBM_SETpagesize, 0, 1 'means shift by 5 if usr clicks next 2 current position/presses pgup ' SendMessage hAuCc7, %TBM_SETPOS,%TRUE, 100 ' AuCc7 = 100 ' CONTROL ADD LABEL, hw, 2122, "100", 85 + x, 144, 20, 12, %SS_SUNKEN ' ' CONTROL ADD LABEL, hw, 2130, "cc17", x, 158, 20, 12 ' CONTROL ADD "msctls_trackbar32", hw, 2131, "CC17", 20 + x, 158, 64, 12, %WS_CHILD OR %WS_VISIBLE OR _ ' %TBS_HORZ OR %TBS_NOTICKS CALL CB_TMI ' CONTROL HANDLE hw, 2131 TO hAuCc17 ' SendMessage hAuCc17, %TBM_SETRANGE,%TRUE, MAKLNG(0, 127) ' SendMessage hAuCc17, %TBM_SETpagesize, 0, 1 'means shift by 5 if usr clicks next 2 current position/presses pgup ' SendMessage hAuCc17, %TBM_SETPOS,%TRUE, 127 ' AuCc17 = 127 ' CONTROL ADD LABEL, hw, 2132, "127", 85 + x, 158, 20, 12, %SS_SUNKEN ' ' '**Asa ' x = 223 ' CONTROL ADD LABEL, hw, 2200, "Asa", x, 101, 85, 12, %SS_SUNKEN ' CONTROL ADD CHECKBOX, hw, 2201, "", x + 85,101,12,12 ' CONTROL ADD LABEL, hw, 2210, "noot", x, 116, 25, 12 ' CONTROL ADD "msctls_trackbar32", hw, 2211, "noot", 20 + x, 116, 64, 12, %WS_CHILD OR %WS_VISIBLE OR _ ' %TBS_HORZ OR %TBS_NOTICKS CALL CB_TMI ' CONTROL HANDLE hw, 2211 TO hAsN ' SendMessage hAsN, %TBM_SETRANGE,%TRUE, MAKLNG(Asa.LowTes, Asa.HighTes) ' SendMessage hAsN, %TBM_SETpagesize, 0, 1 ' SendMessage hAsN, %TBM_SETPOS,%TRUE, Asa.LowTes ' AsN = Asa.LowTes ' CONTROL ADD LABEL, hw, 2212, STR$(Asa.LowTes), 85 + x, 116, 20, 12, %ES_NUMBER OR %SS_SUNKEN ' ' CONTROL ADD LABEL, hw, 2215, "velo", x, 130, 25, 12 ' CONTROL ADD "msctls_trackbar32", hw, 2216, "velo", 20 + x, 130, 64, 12, %WS_CHILD OR %WS_VISIBLE OR _ ' %TBS_HORZ OR %TBS_NOTICKS CALL CB_TMI ' CONTROL HANDLE hw, 2216 TO hAsV ' SendMessage hAsV, %TBM_SETRANGE,%TRUE, MAKLNG(1, 127) ' SendMessage hAsV, %TBM_SETpagesize, 0, 1 'means shift by 5 if usr clicks next 2 current position/presses pgup ' SendMessage hAsV, %TBM_SETPOS,%TRUE, 90 ' AsV = 90 ' CONTROL ADD LABEL, hw, 2217, STR$(90), 85 + x, 130, 20, 12, %ES_NUMBER OR %SS_SUNKEN ' ' CONTROL ADD LABEL, hw, 2220, "cc1", x, 144, 20, 12 ' CONTROL ADD "msctls_trackbar32", hw, 2221, "CC1", 20 + x, 144, 64, 12, %WS_CHILD OR %WS_VISIBLE OR _ ' %TBS_HORZ OR %TBS_NOTICKS CALL CB_TMI ' CONTROL HANDLE hw, 2221 TO hAsCc1 ' SendMessage hAsCc1, %TBM_SETRANGE,%TRUE, MAKLNG(0, 127) ' SendMessage hAsCc1, %TBM_SETpagesize, 0, 1 'means shift by 5 if usr clicks next 2 current position/presses pgup ' SendMessage hAsCc1, %TBM_SETPOS,%TRUE, 3 ' AsCc1 = 3 ' CONTROL ADD LABEL, hw, 2222, "3", 85 + x, 144, 20, 12, %SS_SUNKEN ' ' CONTROL ADD LABEL, hw, 2230, "cc7", x, 158, 20, 12 ' CONTROL ADD "msctls_trackbar32", hw, 2231, "CC7", 20 + x, 158, 64, 12, %WS_CHILD OR %WS_VISIBLE OR _ ' %TBS_HORZ OR %TBS_NOTICKS CALL CB_TMI ' CONTROL HANDLE hw, 2231 TO hAsCc7 ' SendMessage hAsCc7, %TBM_SETRANGE,%TRUE, MAKLNG(0, 127) ' SendMessage hAsCc7, %TBM_SETpagesize, 0, 1 'means shift by 5 if usr clicks next 2 current position/presses pgup ' SendMessage hAsCc7, %TBM_SETPOS,%TRUE, 100 ' AsCc7 = 100 ' CONTROL ADD LABEL, hw, 2232, "100", 85 + x, 158, 20, 12, %SS_SUNKEN ' ' CONTROL ADD LABEL, hw, 2240, "cc17", x, 172, 20, 12 ' CONTROL ADD "msctls_trackbar32", hw, 2241, "CC17", 20 + x, 172, 64, 12, %WS_CHILD OR %WS_VISIBLE OR _ ' %TBS_HORZ OR %TBS_NOTICKS CALL CB_TMI ' CONTROL HANDLE hw, 2241 TO hAsCc17 ' SendMessage hAsCc17, %TBM_SETRANGE,%TRUE, MAKLNG(0, 127) ' SendMessage hAsCc17, %TBM_SETpagesize, 0, 1 'means shift by 5 if usr clicks next 2 current position/presses pgup ' SendMessage hAsCc17, %TBM_SETPOS,%TRUE, 127 ' AsCc17 = 127 ' CONTROL ADD LABEL, hw, 2242, "127", 85 + x, 172, 20, 12, %SS_SUNKEN ' ' '**Klar ' x = 334 ' CONTROL ADD LABEL, hw, 2300, "Klar", x, 101, 85, 12, %SS_SUNKEN ' CONTROL ADD CHECKBOX, hw, 2301, "", x + 85,101,12,12 ' CONTROL ADD LABEL, hw, 2310, "noot", x, 116, 25, 12 ' CONTROL ADD "msctls_trackbar32", hw, 2311, "noot", 20 + x, 116, 64, 12, %WS_CHILD OR %WS_VISIBLE OR _ ' %TBS_HORZ OR %TBS_NOTICKS CALL CB_TMI ' CONTROL HANDLE hw, 2311 TO hKlN ' SendMessage hKlN, %TBM_SETRANGE,%TRUE, MAKLNG(Klar.LowTes, Klar.HighTes) ' SendMessage hKlN, %TBM_SETpagesize, 0, 1 ' SendMessage hKlN, %TBM_SETPOS,%TRUE, Klar.LowTes ' KlN = Klar.LowTes ' CONTROL ADD LABEL, hw, 2312, STR$(Klar.LowTes), 85 + x, 116, 20, 12, %ES_NUMBER OR %SS_SUNKEN ' ' CONTROL ADD LABEL, hw, 2315, "velo", x, 130, 25, 12 ' CONTROL ADD "msctls_trackbar32", hw, 2316, "velo", 20 + x, 130, 64, 12, %WS_CHILD OR %WS_VISIBLE OR _ ' %TBS_HORZ OR %TBS_NOTICKS CALL CB_TMI ' CONTROL HANDLE hw, 2316 TO hKlV ' SendMessage hKlV, %TBM_SETRANGE,%TRUE, MAKLNG(1, 127) ' SendMessage hKlV, %TBM_SETpagesize, 0, 1 'means shift by 5 if usr clicks next 2 current position/presses pgup ' SendMessage hKlV, %TBM_SETPOS,%TRUE, 90 ' KlV = 90 ' CONTROL ADD LABEL, hw, 2317, STR$(90), 85 + x, 130, 20, 12, %ES_NUMBER OR %SS_SUNKEN ' ' CONTROL ADD LABEL, hw, 2320, "cc1", x, 144, 20, 12 ' CONTROL ADD "msctls_trackbar32", hw, 2321, "CC1", 20 + x, 144, 64, 12, %WS_CHILD OR %WS_VISIBLE OR _ ' %TBS_HORZ OR %TBS_NOTICKS CALL CB_TMI ' CONTROL HANDLE hw, 2321 TO hKlCc1 ' SendMessage hKlCc1, %TBM_SETRANGE,%TRUE, MAKLNG(0, 127) ' SendMessage hKlCc1, %TBM_SETpagesize, 0, 1 'means shift by 5 if usr clicks next 2 current position/presses pgup ' SendMessage hKlCc1, %TBM_SETPOS,%TRUE, 1 ' KlCc1 = 1 ' CONTROL ADD LABEL, hw, 2322, "1", 85 + x, 144, 20, 12, %SS_SUNKEN ' ' CONTROL ADD LABEL, hw, 2330, "cc7", x, 158, 20, 12 ' CONTROL ADD "msctls_trackbar32", hw, 2331, "CC7", 20 + x, 158, 64, 12, %WS_CHILD OR %WS_VISIBLE OR _ ' %TBS_HORZ OR %TBS_NOTICKS CALL CB_TMI ' CONTROL HANDLE hw, 2331 TO hKlCc7 ' SendMessage hKlCc7, %TBM_SETRANGE,%TRUE, MAKLNG(0, 127) ' SendMessage hKlCc7, %TBM_SETpagesize, 0, 1 'means shift by 5 if usr clicks next 2 current position/presses pgup ' SendMessage hKlCc7, %TBM_SETPOS,%TRUE, 80 ' KlCc7 = 80 ' CONTROL ADD LABEL, hw, 2332, "80", 85 + x, 158, 20, 12, %SS_SUNKEN ' ' CONTROL ADD LABEL, hw, 2340, "cc17", x, 172, 20, 12 ' CONTROL ADD "msctls_trackbar32", hw, 2341, "CC17", 20 + x, 172, 64, 12, %WS_CHILD OR %WS_VISIBLE OR _ ' %TBS_HORZ OR %TBS_NOTICKS CALL CB_TMI ' CONTROL HANDLE hw, 2341 TO hKlCc17 ' SendMessage hKlCc17, %TBM_SETRANGE,%TRUE, MAKLNG(0, 127) ' SendMessage hKlCc17, %TBM_SETpagesize, 0, 1 'means shift by 5 if usr clicks next 2 current position/presses pgup ' SendMessage hKlCc17, %TBM_SETPOS,%TRUE, 127 ' KlCc17 = 127 ' CONTROL ADD LABEL, hw, 2342, "127", 85 + x, 172, 20, 12, %SS_SUNKEN ' ' '**Ob ' x = 445 ' CONTROL ADD LABEL, hw, 2400, "Ob", x, 101, 85, 12, %SS_SUNKEN ' CONTROL ADD CHECKBOX, hw, 2401, "", x + 85,101,12,12 ' CONTROL ADD LABEL, hw, 2410, "noot", x, 116, 25, 12 ' CONTROL ADD "msctls_trackbar32", hw, 2411, "noot", 20 + x, 116, 64, 12, %WS_CHILD OR %WS_VISIBLE OR _ ' %TBS_HORZ OR %TBS_NOTICKS CALL CB_TMI ' CONTROL HANDLE hw, 2411 TO hObN ' SendMessage hOBN, %TBM_SETRANGE,%TRUE, MAKLNG(Ob.LowTes, Ob.HighTes) ' SendMessage hObN, %TBM_SETpagesize, 0, 1 ' SendMessage hObN, %TBM_SETPOS,%TRUE, Ob.LowTes ' ObN = Ob.LowTes ' CONTROL ADD LABEL, hw, 2412, STR$(Ob.LowTes), 85 + x, 116, 20, 12, %ES_NUMBER OR %SS_SUNKEN ' ' CONTROL ADD LABEL, hw, 2415, "velo", x, 130, 25, 12 ' CONTROL ADD "msctls_trackbar32", hw, 2416, "velo", 20 + x, 130, 64, 12, %WS_CHILD OR %WS_VISIBLE OR _ ' %TBS_HORZ OR %TBS_NOTICKS CALL CB_TMI ' CONTROL HANDLE hw, 2416 TO hObV ' SendMessage hObV, %TBM_SETRANGE,%TRUE, MAKLNG(1, 127) ' SendMessage hOBV, %TBM_SETpagesize, 0, 1 'means shift by 5 if usr clicks next 2 current position/presses pgup ' SendMessage hObV, %TBM_SETPOS,%TRUE, 90 ' ObV = 90 ' CONTROL ADD LABEL, hw, 2417, STR$(90), 85 + x, 130, 20, 12, %ES_NUMBER OR %SS_SUNKEN ' ' CONTROL ADD LABEL, hw, 2420, "cc17", x, 144, 20, 12 ' CONTROL ADD "msctls_trackbar32", hw, 2421, "CC17", 20 + x, 144, 64, 12, %WS_CHILD OR %WS_VISIBLE OR _ ' %TBS_HORZ OR %TBS_NOTICKS CALL CB_TMI ' CONTROL HANDLE hw, 2421 TO hObCc17 ' SendMessage hObCc17, %TBM_SETRANGE,%TRUE, MAKLNG(0, 127) ' SendMessage hObCc17, %TBM_SETpagesize, 0, 1 'means shift by 5 if usr clicks next 2 current position/presses pgup ' SendMessage hObCc17, %TBM_SETPOS,%TRUE, 1 ' ObCc17 = 1 ' CONTROL ADD LABEL, hw, 2422, "1", 85 + x, 144, 20, 12, %SS_SUNKEN ' DIALOG SHOW MODELESS hw ' dur = 190 ' END IF ' incr cc ' select case (cc mod 10) ' case 0 'so ' control get check hw, 1001 to i ' if isfalse i then exit sub ' PlayDur So.channel, SoN, SoV, dur ' case 1 'heli ' CONTROL GET CHECK hw, 1101 TO i ' IF ISFALSE i THEN EXIT SUB ' PlayDur Heli.channel, HeN, HeV, dur ' case 2 'bono ' CONTROL GET CHECK hw, 1201 TO i ' IF ISFALSE i THEN EXIT SUB ' PlayDur Bono.channel, BoN, BoV, dur ' case 3 'horny ' CONTROL GET CHECK hw, 1301 TO i ' IF ISFALSE i THEN EXIT SUB ' PlayDur Horny.channel, HoN, HoV, 190 ' case 4 'korn ' CONTROL GET CHECK hw, 1401 TO i ' IF ISFALSE i THEN EXIT SUB ' PlayDur So.channel, KornN, KornV, 190 ' case 5 'fa ' CONTROL GET CHECK hw, 2001 TO i ' IF ISFALSE i THEN EXIT SUB ' PlayDur Fa.channel, FaN, FaV, 190 ' case 6 'autosax ' CONTROL GET CHECK hw, 2101 TO i ' IF ISFALSE i THEN EXIT SUB ' PlayDur AutoSax.channel, AuN, AuV, 190 ' case 7 'asa ' CONTROL GET CHECK hw, 2201 TO i ' IF ISFALSE i THEN EXIT SUB ' PlayDur Asa.channel, AsN, AsV, 190 ' case 8 'klar ' CONTROL GET CHECK hw, 2301 TO i ' IF ISFALSE i THEN EXIT SUB ' PlayDur Klar.channel, KlN, KlV, 190 ' case 9 ' ob ' CONTROL GET CHECK hw, 2401 TO i ' IF ISFALSE i THEN EXIT SUB ' PlayDur Ob.channel, ObN, ObV, 190 ' end select ' ' ' ' 'END SUB ' ' 'CALLBACK FUNCTION CB_TMI ' ' SELECT CASE CBMSG ' CASE %WM_HSCROLL, %WM_VSCROLL ' IF (LOWRD(CBWPARAM) <> %TB_THUMBPOSITION) AND (LOWRD(CBWPARAM) <> %TB_THUMBTRACK) AND (LOWRD(CBWPARAM)<> %TB_ENDTRACK) THEN EXIT FUNCTION ' SELECT CASE CBLPARAM ' case hSoN ' Son = SendMessage (CBLPARAM, %TBM_GETPOS, 0, 0) ' control set text cbhndl, 1012, str$(Son) ' case hSoV ' Sov = SendMessage(cblparam, %TBM_GETPOS, 0, 0) ' control set text cbhndl, 1017, str$(Sov) ' CASE hSoCc1 ' Socc1 = SendMessage (CBLPARAM, %TBM_GETPOS, 0, 0) ' hiwrd(cbwPAram) ' CONTROL SET TEXT CBHNDL, 1022, STR$(Socc1) ' controller So.channel, 1, SoCc1 ' CASE hSoCc7 ' Socc7 = SendMessage (CBLPARAM, %TBM_GETPOS, 0, 0) ' hiwrd(cbwPAram) ' CONTROL SET TEXT CBHNDL, 1032, STR$(Socc7) ' controller So.channel, 7, SoCc7 ' case hHeN ' HeN = SendMessage(cblparam, %TBM_GETPOS, 0, 0) ' control set text cbhndl, 1112, str$(HeN) ' CASE hHeV ' HeV = SendMessage(CBLPARAM, %TBM_GETPOS, 0, 0) ' CONTROL SET TEXT CBHNDL, 1117, STR$(HeV) ' case hHeCc7 ' HeCc7 = SendMessage(CBLPARAM, %TBM_GETPOS, 0, 0) ' CONTROL SET TEXT CBHNDL, 1122, STR$(HeCc7) ' Controller Heli.channel, 7, HeCc7 ' CASE hHeCc17 ' HeCc17 = SendMessage(CBLPARAM, %TBM_GETPOS, 0, 0) ' CONTROL SET TEXT CBHNDL, 1132, STR$(HeCc17) ' Controller Heli.channel, 17, HeCc17 ' CASE hBoN ' BoN = SendMessage(CBLPARAM, %TBM_GETPOS, 0, 0) ' CONTROL SET TEXT CBHNDL, 1212, STR$(BoN) ' CASE hBoV ' BoV = SendMessage(CBLPARAM, %TBM_GETPOS, 0, 0) ' CONTROL SET TEXT CBHNDL, 1217, STR$(BoV) ' CASE hBoCc7 ' BoCc7 = SendMessage(CBLPARAM, %TBM_GETPOS, 0, 0) ' CONTROL SET TEXT CBHNDL, 1222, STR$(BoCc7) ' Controller Bono.channel, 7, BoCc7 ' CASE hBoCc17 ' BoCc17 = SendMessage(CBLPARAM, %TBM_GETPOS, 0, 0) ' CONTROL SET TEXT CBHNDL, 1232, STR$(BoCc17) ' Controller Bono.channel, 17, BoCc17 ' CASE hHoN ' HoN = SendMessage(CBLPARAM, %TBM_GETPOS, 0, 0) ' CONTROL SET TEXT CBHNDL, 1312, STR$(HoN) ' CASE hHoV ' HoV = SendMessage(CBLPARAM, %TBM_GETPOS, 0, 0) ' CONTROL SET TEXT CBHNDL, 1317, STR$(HoV) ' CASE hHoCc1 ' Hocc1 = SendMessage (CBLPARAM, %TBM_GETPOS, 0, 0) ' hiwrd(cbwPAram) ' CONTROL SET TEXT CBHNDL, 1322, STR$(Hocc1) ' controller Horny.channel, 1, HoCc1 ' CASE hHoCc7 ' Hocc7 = SendMessage (CBLPARAM, %TBM_GETPOS, 0, 0) ' hiwrd(cbwPAram) ' CONTROL SET TEXT CBHNDL, 1332, STR$(Hocc7) ' controller Horny.channel, 7, HoCc7 ' CASE hKoN ' Kon = SendMessage (CBLPARAM, %TBM_GETPOS, 0, 0) ' CONTROL SET TEXT CBHNDL, 1412, STR$(Kon) ' CASE hKoV ' KoV = SendMessage (CBLPARAM, %TBM_GETPOS, 0, 0) ' CONTROL SET TEXT CBHNDL, 1417, STR$(KoV) ' CASE hKoCc17 ' Kocc17 = SendMessage (CBLPARAM, %TBM_GETPOS, 0, 0) ' hiwrd(cbwPAram) ' CONTROL SET TEXT CBHNDL, 1422, STR$(Kocc17) ' controller Korn.channel, 17, KoCc17 ' CASE hFaN ' Fan = SendMessage (CBLPARAM, %TBM_GETPOS, 0, 0) ' CONTROL SET TEXT CBHNDL, 2012, STR$(Fan) ' CASE hFaV ' Fav = SendMessage(CBLPARAM, %TBM_GETPOS, 0, 0) ' CONTROL SET TEXT CBHNDL, 2017, STR$(Fav) ' CASE hFaCc1 ' Facc1 = SendMessage (CBLPARAM, %TBM_GETPOS, 0, 0) ' hiwrd(cbwPAram) ' CONTROL SET TEXT CBHNDL, 2022, STR$(Facc1) ' controller Fa.channel, 1, FaCc1 ' CASE hFaCc7 ' Facc7 = SendMessage (CBLPARAM, %TBM_GETPOS, 0, 0) ' hiwrd(cbwPAram) ' CONTROL SET TEXT CBHNDL, 2032, STR$(Facc7) ' controller Fa.channel, 7, FaCc7 ' CASE hFaCc17 ' Facc17 = SendMessage (CBLPARAM, %TBM_GETPOS, 0, 0) ' hiwrd(cbwPAram) ' CONTROL SET TEXT CBHNDL, 2042, STR$(Facc17) ' controller Fa.channel, 17, FaCc17 ' CASE hAuN ' AuN = SendMessage (CBLPARAM, %TBM_GETPOS, 0, 0) ' CONTROL SET TEXT CBHNDL, 2112, STR$(Aun) ' CASE hAuV ' AuV = SendMessage(CBLPARAM, %TBM_GETPOS, 0, 0) ' CONTROL SET TEXT CBHNDL, 2117, STR$(AuV) ' CASE hAuCc7 ' AuCc7 = SendMessage (CBLPARAM, %TBM_GETPOS, 0, 0) ' hiwrd(cbwPAram) ' CONTROL SET TEXT CBHNDL, 2122, STR$(Aucc7) ' controller AutoSax.channel, 7, AuCc7 ' CASE hAuCc17 ' Aucc17 = SendMessage (CBLPARAM, %TBM_GETPOS, 0, 0) ' hiwrd(cbwPAram) ' CONTROL SET TEXT CBHNDL, 2132, STR$(Aucc17) ' controller AutoSax.channel, 17, AuCc17 ' CASE hAsN ' Asn = SendMessage (CBLPARAM, %TBM_GETPOS, 0, 0) ' CONTROL SET TEXT CBHNDL, 2212, STR$(Asn) ' CASE hAsV ' Asv = SendMessage(CBLPARAM, %TBM_GETPOS, 0, 0) ' CONTROL SET TEXT CBHNDL, 2217, STR$(Asv) ' CASE hAsCc1 ' Ascc1 = SendMessage (CBLPARAM, %TBM_GETPOS, 0, 0) ' hiwrd(cbwPAram) ' CONTROL SET TEXT CBHNDL, 2222, STR$(Ascc1) ' controller Asa.channel, 1, AsCc1 ' CASE hAsCc7 ' Ascc7 = SendMessage (CBLPARAM, %TBM_GETPOS, 0, 0) ' hiwrd(cbwPAram) ' CONTROL SET TEXT CBHNDL, 2232, STR$(Ascc7) ' controller Asa.channel, 7, AsCc7 ' CASE hAsCc17 ' Ascc17 = SendMessage (CBLPARAM, %TBM_GETPOS, 0, 0) ' hiwrd(cbwPAram) ' CONTROL SET TEXT CBHNDL, 2242, STR$(Ascc17) ' controller Asa.channel, 17, AsCc17 ' CASE hKlN ' Kln = SendMessage (CBLPARAM, %TBM_GETPOS, 0, 0) ' CONTROL SET TEXT CBHNDL, 2312, STR$(Kln) ' CASE hKlV ' Klv = SendMessage(CBLPARAM, %TBM_GETPOS, 0, 0) ' CONTROL SET TEXT CBHNDL, 2317, STR$(Klv) ' CASE hKlCc1 ' Klcc1 = SendMessage (CBLPARAM, %TBM_GETPOS, 0, 0) ' hiwrd(cbwPAram) ' CONTROL SET TEXT CBHNDL, 2322, STR$(Klcc1) ' controller Klar.channel, 1, KlCc1 ' CASE hKlCc7 ' Klcc7 = SendMessage (CBLPARAM, %TBM_GETPOS, 0, 0) ' hiwrd(cbwPAram) ' CONTROL SET TEXT CBHNDL, 2332, STR$(Klcc7) ' controller Klar.channel, 7, KlCc7 ' CASE hKlCc17 ' Klcc17 = SendMessage (CBLPARAM, %TBM_GETPOS, 0, 0) ' hiwrd(cbwPAram) ' CONTROL SET TEXT CBHNDL, 2342, STR$(Klcc17) ' controller Klar.channel, 17, KlCc17 ' ' CASE hObN ' Obn = SendMessage (CBLPARAM, %TBM_GETPOS, 0, 0) ' CONTROL SET TEXT CBHNDL, 2412, STR$(Obn) ' CASE hObV ' Obv = SendMessage(CBLPARAM, %TBM_GETPOS, 0, 0) ' CONTROL SET TEXT CBHNDL, 2417, STR$(Obv) ' CASE hObCc17 ' Obcc17 = SendMessage (CBLPARAM, %TBM_GETPOS, 0, 0) ' hiwrd(cbwPAram) ' CONTROL SET TEXT CBHNDL, 2422, STR$(Obcc17) ' controller Ob.channel, 17, ObCc17 ' END SELECT ' END SELECT ' 'END FUNCTION