' ****************************************** ' * * ' * test and evaluation code * ' ****************************************** ' 23.04.2004: module added to GMT ' 24.04.2004: first test on ' bugs in PIC code!!! Mapping wrong & double notes... ' 29.04.2004: bugs in PIC code killed. Now works as planned. ' 08.05.2004: motor control tests ' 11.07.2004: tuning attempt ' motor params changed. Now needs 60 seconds to slow dowm from max speed to zero. ' 13.07.2004: kl: tuning ctrl interface added. ' 06.11.2004: g_mm.inc implemented. ' 19.08.2007: Trump tuning and intonation session. ' do not play around with the wind pressure! Even low pressures make the robot go out of tune. DECLARE SUB Trump_Test () DECLARE SUB Trump_LoLim_UD1 () ' callback DECLARE SUB Trump_HiLim_UD2 () ' callback DECLARE SUB Trump_Windslider () ' callback 'DECLARE SUB Trump_AllOff () DECLARE FUNCTION Init_Trump () AS LONG DECLARE SUB Trump_controlroom DECLARE CALLBACK FUNCTION CB_Trump_Controlroom FUNCTION Init_Trump () AS LONG 'LOCAL retval AS LONG 'GetInstrumentParams Trump, %IDM_TRUMP 'retval = SetRobotPort (Trump, Inifilename, hMidiO()) Task(%Trump_Test).naam = "Trump" Task(%Trump_Test).cptr = CODEPTR(Trump_Test) Task(%Trump_Test).freq = 4 Task(%Trump_Test).channel = Trump.channel TaskEX(%Trump_Test).stopCptr = CODEPTR(MM_Trump_Off) ButnSW(11).tag0 = "TrumpCtrl tog" ButnSW(11).tag1 = "TrumpCtrl tog" ButnSW(11).cptr = CODEPTR(Trump_Controlroom) FUNCTION = %True END FUNCTION SUB Trump_Test () ' trump tuned 11.07.2004 ' retuned 19.08.2007 STATIC i AS DWORD STATIC slnr AS DWORD STATIC oldnote AS INTEGER IF ISFALSE Task(%Trump_Test).tog THEN DIM TaskParamLabels(0 TO 3) AS ASCIIZ * 8 TaskParamLabels(0) = "Tempo" TaskParamLabels(1) = "Wind" TaskParamLabels(2) = "LowLim" TaskParamLabels(3) = "HiLim" IF ISFALSE Task(%Trump_Test).hParam THEN slnr = %False MakeTaskParameterDialog %Trump_Test,2,Slider(),2,UDctrl(),TaskParamLabels() END IF IF slnr = %False THEN slnr = TaskEX(%Trump_Test).SliderNumbers(0) Slider(slnr+1).cptr = CODEPTR(Trump_Windslider) UDctrl(TaskEX(%Trump_Test).UpdownNumbers(0)).cptr = CODEPTR(Trump_LoLim_UD1) ' lowest note UDctrl(TaskEX(%Trump_Test).UpdownNumbers(1)).cptr = CODEPTR(Trump_HiLim_UD2) ' highest note UDctrl(TaskEX(%Trump_Test).UpDownNumbers(0)).value = Trump.lowtes UDctrl(TaskEX(%Trump_Test).UpDownNumbers(1)).value = Trump.hightes i = UDctrl(TaskEX(%Trump_Test).UpDownNumbers(0)).value '55 Task(%Trump_Test).freq = 3 Slider(slnr).value = Task(%Trump_Test).freq Slider(slnr+1).value = %MM_Trump_Motor ' this gives motor frequency = 32Hz, the frequency at which the pipes are ' tuned. SendMessage Slider(Slnr).h, %TBM_SETPOS,%True, Slider(Slnr).value SendMessage Slider(Slnr+1).h, %TBM_SETPOS,%True, Slider(slnr+1).value ModeMess Trump.channel, 7, Slider(slnr+1).value END IF i = Trump.lowtes Task(%Trump_Test).tog = %True END IF IF oldnote THEN NoteOff Trump.channel, oldnote oldnote = %False END IF Play Trump.channel, i, 127 oldnote = i INCR i IF i > UDctrl(TaskEX(%Trump_Test).UpDownNumbers(1)).value THEN i = UDctrl(TaskEX(%Trump_Test).UpDownNumbers(0)).value Task(%Trump_Test).freq = 32! * (Slider(slnr).value) / 128! END SUB SUB Trump_LoLim_UD1 () ' controls the low limit of the note scale to be played. LOCAL noot AS BYTE LOCAL udnr AS DWORD udnr = TaskEX(%Trump_Test).UpDownNumbers(0) noot = UDCtrl(udnr).value IF noot < Trump.lowtes THEN UDctrl(udnr).value = Trump.lowtes: noot = Trump.lowtes IF noot > UDctrl(udnr+1).value THEN UDctrl(udnr).value = UDctrl(udnr+1).value : noot = UDctrl(udnr).value SetDlgItemText Task(%Trump_Test).hparam, %GMT_TEXT0_ID + 16, "Lo=" & STR$(noot) END SUB SUB Trump_HiLim_UD2 () ' controls the high limit of the note scale to be played. LOCAL noot AS BYTE LOCAL udnr AS DWORD udnr = TaskEX(%Trump_Test).UpDownNumbers(1) noot = UDCtrl(udnr).value IF noot < UDctrl(udnr-1).value THEN UDctrl(udnr).value = UDctrl(udnr-1).value : noot = UDctrl(udnr).value IF noot > Trump.Hightes THEN UDctrl(udnr).value = Trump.hightes : noot = Trump.hightes SetDlgItemText Task(%Trump_Test).hparam, %GMT_TEXT0_ID + 17, "Hi=" & STR$(noot) END SUB SUB Trump_Windslider () LOCAL slnr AS DWORD slnr = TaskEX(%Trump_Test).SliderNumbers(1) Modemess Trump.channel, 7, Slider(slnr).value Trump.ctrl(7) = Slider(slnr).value END SUB 'SUB Trump_AllOff () ' ModeMess Trump.channel, &H7B, 0 ' should work ' ' wind off: ' Modemess Trump.channel, 7, %False ' Trump.ctrl(7) = %False 'END SUB SUB trump_controlroom () ' 13.07.2004: Kristof Lauwers coding. LOCAL i AS LONG LOCAL x AS LONG IF ISFALSE hwCtrltrump THEN DIALOG NEW 0, "trump Control",1,330 ,450, 60, %WS_CAPTION OR %WS_POPUP OR %WS_SYSMENU TO hwCtrltrump x = 5 FOR i = trump.lowtes TO trump.HighTes SELECT CASE (i MOD 12) CASE 0 CONTROL ADD CHECKBOX, hwCtrltrump, i, "C", x, 24, 18, 12, %BS_PUSHLIKE x = x + 10 CASE 1 CONTROL ADD CHECKBOX, hwCtrltrump, i, "C#", x, 12, 18, 12, %BS_PUSHLIKE x = x + 10 CASE 2 CONTROL ADD CHECKBOX, hwCtrltrump, i, "D", x, 24, 18, 12, %BS_PUSHLIKE x = x + 10 CASE 3 CONTROL ADD CHECKBOX, hwCtrltrump, i, "D#", x, 12, 18, 12, %BS_PUSHLIKE x = x + 10 CASE 4 CONTROL ADD CHECKBOX, hwCtrltrump, i, "E", x, 24, 18, 12, %BS_PUSHLIKE x = x + 20 CASE 5 CONTROL ADD CHECKBOX, hwCtrltrump, i, "F", x, 24, 18, 12, %BS_PUSHLIKE x = x + 10 CASE 6 CONTROL ADD CHECKBOX, hwCtrltrump, i, "F#", x, 12, 18, 12, %BS_PUSHLIKE x = x + 10 CASE 7 CONTROL ADD CHECKBOX, hwCtrltrump, i, "G", x, 24, 18, 12, %BS_PUSHLIKE x = x + 10 CASE 8 CONTROL ADD CHECKBOX, hwCtrltrump, i, "G#", x, 12, 18, 12, %BS_PUSHLIKE x = x + 10 CASE 9 CONTROL ADD CHECKBOX, hwCtrltrump, i, "A", x, 24, 18, 12, %BS_PUSHLIKE x = x + 10 CASE 10 CONTROL ADD CHECKBOX, hwCtrltrump, i, "Bb", x, 12, 18, 12, %BS_PUSHLIKE x = x + 10 CASE 11 CONTROL ADD CHECKBOX, hwCtrltrump, i, "B", x, 24, 18, 12, %BS_PUSHLIKE x = x + 20 END SELECT NEXT CONTROL ADD LABEL, hwCtrltrump, 500, "Wind:", 5, 45, 30, 12 CONTROL ADD "msctls_trackbar32", hwCtrltrump, 501, _ "Wind", 36, 45, 135, 12, %WS_CHILD OR %WS_VISIBLE OR _ %TBS_HORZ OR %TBS_BOTTOM CONTROL ADD LABEL, hwCtrltrump, 503, "?", 174, 45, 30, 12 CONTROL ADD BUTTON, hwCtrltrump, 600, "All Off", 206, 45, 30, 12 DIALOG SHOW MODELESS hwCtrltrump CALL CB_trump_Controlroom ELSE DIALOG END hwCtrltrump hwCtrltrump = 0 END IF END SUB CALLBACK FUNCTION CB_trump_Controlroom ' added 13.07.2004 : Kristof Lauwers LOCAL wind AS BYTE LOCAL i AS LONG LOCAL note AS BYTE SELECT CASE CBMSG CASE %WM_COMMAND SELECT CASE CBCTL CASE trump.Lowtes TO trump.hightes 'checkboxes CONTROL GET CHECK CBHNDL, CBCTL TO i note = CBCTL Play trump.channel, note, BYVAL i CASE 600 MM_Trump_Off CONTROL HANDLE CBHNDL, 501 TO i SendMessage i, %TBM_SETPOS, %true, 0 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 wind = HIWRD(CBWPARAM) ELSE wind = SendMessage (CBLPARAM, %TBM_GETPOS,%Null, %Null) END IF wind = %MM_Trump_Motor ' wind * 1.27 ' changed gwr. 19.08.2007 CONTROL SET TEXT CBHNDL, 503, STR$(wind) trump.ctrl(7) = wind modemess trump.channel, 7, trump.ctrl(7) ', wind CASE %WM_CLOSE, %WM_QUIT MM_Trump_Off hwCtrltrump = 0 END SELECT END FUNCTION