' *************************************************************************** ' * wsb_simu.inc * ' * written by Kristof Lauwers & Godfried-Willem Raes for * ' * * ' * and other interactive projects using * ' *************************************************************************** 'the following guides a novice user through the gmt setup for the klungsimulations. 'we made a new window for this as we didn't succeed in changing the setup window... ' 18.10.2000 - Published on website. ' 22.01.2001 - changed to support ftp to logos domain. - Godfried-Willem RAES ' seems to work o.k. ' Note that we now need to add fce32.dll to the zip-file. '%connect_by_mail = 1 ' if this is defined, we send an email ' else, we use ftp. ' 12.04.2004: needs to be rewritten, since Troms is now a midi-machine.. #INCLUDE "g_ftp.bi" DECLARE CALLBACK FUNCTION CBHelp () DECLARE SUB KlungHelpWindow () DECLARE SUB StoreUSerAction(BYVAL action AS STRING) DECLARE SUB WSB_Submit () CALLBACK FUNCTION CBHelp LOCAL msg AS LONG LOCAL id AS LONG LOCAL tekst AS STRING LOCAL i AS LONG ' local devices() msg=CBCTLMSG IF msg <> %BN_CLICKED THEN EXIT FUNCTION id=CBCTL ' MSGBOX STR$(id) SELECT CASE id CASE 2 'wavesimulation chosen i=WaveOutGetNumDevs IF ISFALSE i THEN MSGBOX "You don't have a wave output device installed on your computer, or it is allready used by another application",,"Error" EXIT FUNCTION END IF KlungSimulatorMode = %KlungSimWav CONTROL KILL CBHNDL, 1 CONTROL KILL CBHNDL, 2 CONTROL KILL CBHNDL, 3 IF i = 1 THEN SendMessage gh.Setup, %WM_COMMAND,%IDM_WAVE_OUTPUT_DEVS, 0 GOTO Selectpiece END IF DIM devices(0 TO 0)AS LOCAL STRING GetWaveOutPorts devices() ' dll call FOR i = LBOUND(devices) TO UBOUND(devices) devices(i)=STR$(i)+". "+devices(i) NEXT tekst = TRIM$(STR$(UBOUND(Devices)+1)) + " wave output devices were found on your computer."+CHR$(13)+CHR$(13) tekst=tekst+"Please select one from the drop down menu and click < OK >." CONTROL ADD LABEL, CBHNDL,1, tekst, 10,10,400,40 CONTROL ADD COMBOBOX, CBHNDL, 4,devices(),10,50,200, 20*(UBOUND(devices)+2), %CBS_DROPDOWNLIST tekst="< OK >" CONTROL ADD BUTTON, CBHNDL, 5,tekst,10,80,200,14 CALL CBHelp CASE 3 'midisimulation chosen i=midiOutGetNumDevs ' IF ISFALSE i THEN MSGBOX "You don't have a midi output device installed on your computer, or it is allready used by another application",,"Error" EXIT FUNCTION END IF KlungSimulatorMode=%klungSimMid CONTROL KILL CBHNDL, 1 CONTROL KILL CBHNDL, 2 CONTROL KILL CBHNDL, 3 IF i=1 THEN hMidiO(0) = OpenMidiOutputDevice (0) GOTO SelectPiece END IF DIM devices(0 TO 0) AS LOCAL STRING GetMidiOutPorts devices() ' dll call FOR i = LBOUND(devices) TO UBOUND(devices) devices(i)=STR$(i)+". "+devices(i) NEXT tekst = TRIM$(STR$(UBOUND(Devices)+1)) + " midi output devices were found on your computer."+CHR$(13)+CHR$(13) tekst=tekst+"Please select one from the drop down menu and click < OK >." CONTROL ADD LABEL, CBHNDL,1, tekst, 10,10,400,40 CONTROL ADD COMBOBOX, CBHNDL, 4,devices(),10,50,200, 20*(UBOUND(devices)+2), %CBS_DROPDOWNLIST tekst="< OK >" CONTROL ADD BUTTON, CBHNDL, 6,tekst,10,80,200,14 CALL CBHelp CASE 5 'wave outdevice selected COMBOBOX GET TEXT CBHNDL,4 TO tekst IF tekst ="" THEN MSGBOX "please select a midi output device",,"Error" EXIT FUNCTION END IF i=VAL(MID$(tekst,1,2)) SendMessage gh.Setup, %WM_COMMAND,%IDM_WAVE_OUTPUT_DEVS+i, 0 GOTO selectpiece CASE 6 'midi output device selected COMBOBOX GET TEXT CBHNDL,4 TO tekst IF tekst ="" THEN MSGBOX "please select a midi output device",,"Error" EXIT FUNCTION END IF i=VAL(MID$(tekst,1,2)) ' MSGBOX STR$(i) +tekst SendMessage gh.Setup, %WM_COMMAND,BYVAL (%IDM_MIDI_OUTPUT_PORTS+i), 0 GOTO selectpiece CASE 7 'klung SendMessage gh.Setup, %WM_COMMAND, %IDM_KLUNG, 0 GOTO startgmt CASE 8 'thunderwood SendMessage gh.Setup, %WM_COMMAND, %IDM_THUNDERWOOD, 0 GOTO startgmt CASE 9 'troms SendMessage gh.Setup, %WM_COMMAND, %IDM_TROMS, 0 ' ??? GOTO startgmt CASE 10 SendMessage gh.Setup, %WM_COMMAND, %IDM_SPRINGERS, 0 GOTO startgmt CASE 11 SendMessage gh.Setup, %WM_COMMAND, %IDM_ROTOMOTON, 0 GOTO startgmt CASE 20 'exit i = MSGBOX ("Are you sure you want to exit ?",%MB_YESNO OR %MB_ICONQUESTION OR %MB_TASKMODAL,"EXIT?") IF i = %IDYES THEN GOTO exitgmt END SELECT EXIT FUNCTION selectpiece: CONTROL KILL CBHNDL, 1 CONTROL KILL CBHNDL, 4 CONTROL KILL CBHNDL, 5 CONTROL KILL CBHNDL, 6 tekst = "Now you can select the automat you want to play:" CONTROL ADD LABEL, CBHNDL, 1, tekst,10,10,400,20 ' CONTROL ADD BUTTON, CBHNDL,7,"",10,40,60,40 CALL CBHelp CONTROL ADD IMGBUTTONX, CBHNDL,7,"#19",68,40,40,40 CALL CBHelp '#19 CONTROL ADD IMGBUTTONX, CBHNDL,8,"#22",156,40,40,40 CALL CBHelp CONTROL ADD IMGBUTTONX, CBHNDL,9,"#20",244,40,40,40 CALL CBHelp CONTROL ADD IMGBUTTONX, CBHNDL,10,"#21",332,40,40,40, CALL CBHelp CONTROL ADD IMGBUTTONX, CBHNDL,11,"#23",420,40,40,40, CALL CBHelp CONTROL ADD LABEL, CBHNDL,-1,"",68,90,40,14,%SS_CENTER CONTROL ADD LABEL, CBHNDL,-1,"",146,90,60,14,%SS_CENTER CONTROL ADD LABEL, CBHNDL,-1,"",244,90,40,14,%SS_CENTER CONTROL ADD LABEL, CBHNDL,-1,"",332,90,40,14,%SS_CENTER CONTROL ADD LABEL, CBHNDL,-1,"",420,90,40,14,%SS_CENTER IF KlungSimulatormode = %klungSimMid THEN CONTROL DISABLE CBHNDL, 10 CONTROL ADD LABEL, CBHNDL, -1, "(only available in wave simulation )",332,107,60,38 END IF ' CONTROL DISABLE CBHNDL, 11 'no pieces yet EXIT FUNCTION startgmt: DIALOG END CBHNDL SendMessage gh.setup, %WM_COMMAND,%IDM_GMTMAINSTART, %false EXIT FUNCTION exitgmt: SendMessage gh.Setup, %WM_COMMAND,%IDM_EXIT, %false END FUNCTION SUB KlungHelpWindow () LOCAL tekst AS STRING LOCAL hDlgHelp AS LONG LOCAL i AS LONG LOCAL j AS LONG DIALOG NEW gh.Setup, "Web Strikes Back Startup Window",,,520,280 , %false TO hDlgHelp '%WS_MINIMIZEBOX OR %WS_MAXIMIZEBOX OR %WS_CAPTION OR %WS_SYSMENU TO hDlgHelp tekst = " " & $CRLF tekst = tekst & " an interactive music project by Logos, Gent, Belgium" tekst = tekst & " designed by Godfried-Willem Raes" + $CRLF ' tekst = tekst & " and commissioned by the Tromp Biannual in Eindhoven, Netherlands" + $CRLF tekst = tekst & " Collaborators: " + $CRLF tekst = tekst & " Software: Kristof Lauwers" & $CRLF tekst = tekst & " Hardware: Filip Switters" & $CRLF tekst = tekst & " Logistics: Moniek Darge, Xavier Verhelst" + $CRLF tekst = tekst + "______________" + CHR$(13) '+ CHR$(13) + CHR$(13) tekst = tekst + "This is a demo, enabling you to try out a simulation of the , and automats that will be part of the project. " + CHR$(13) + CHR$(13) tekst = tekst + "Read more about this project at 'http://www.logosfoundation.org/tromp/index.html'" + CHR$(13)+ CHR$(13) tekst = tekst + "______________" + CHR$(13) '+ CHR$(13) + CHR$(13) tekst = tekst + "First make a choice between wave simulation (recommended) and midi simulation" + CHR$(13)+CHR$(13) tekst = tekst + "For the wave simulation you need at least a 300 MHz processor." CONTROL ADD LABEL, hDlgHelp,1,tekst,10,10,400,200',%SS_CENTER ',%ES_READONLY OR %ES_MULTILINE CONTROL ADD BUTTON, hDlgHelp, 2, "< WaveSimulation >",75, 160,100,14 CALL CBHelp CONTROL ADD BUTTON, hDlgHelp, 3, "< MidiSimulation >",245,160,100,14, CALL CBHelp CONTROL ADD BUTTON, hDlgHelp,20,"- Exit -",195,260,50,14 CALL CBHelp ' CornerWindow hDlgHelp, "2" DIALOG SHOW MODELESS hDlgHelp ' DIALOG SHOW STATE hDlgHelp, %SW_NORMAL ' CONTROL SET FOCUS hDlgHelp, -1'2 END SUB ' call the following sub for storing user actions. the string should define the action and its params separated by underscores ' eg. SL_1_10 means slider 1 is put to value 10, BTN_5 means that button 5 is clicked usw... ' give CLOSE as param to close the file, which is necessary when you want to mail or ftp it SUB StoreUserAction(BYVAL action AS STRING) STATIC f AS LONG STATIC t0 AS DWORD IF ISFALSE f THEN KILL "temp.txt" f = FREEFILE OPEN "temp.txt" FOR APPEND AS f END IF IF ISFALSE t0 THEN t0 = timeGetTime IF UCASE$(TRIM$(action)) = "CLOSE" THEN 'closes file, but dont kill it. calling the function again will reopen for append CLOSE #f f = %false END IF WRITE# f, (timeGetTime-t0)\1000; action ' s. resolution END SUB SUB WSBSubmit () 'submitbutton callback LOCAL dummy AS LONG LOCAL filnam AS STRING StoreUserAction "CLOSE" 'closes file, MANDATORY before WSB_mail is shelled" #IF %DEF(%connect_by_mail) dummy = SHELL ("WSB_mail.exe temp.txt",1) 'SHELL FUNCTIE IS ASYNCHROON #ELSE filnam =CreateUniqueFilename (App.Id) '(%ID_WSB) FILECOPY "temp.txt", filnam dummy = g_ftp_SetUser("anonymous", "user") dummy = g_ftp_put ("incoming/wsb", filnam) #ENDIF 'stop GMT IF gh.Cockpit THEN EndDialog gh.Cockpit, 0 PostQuitmessage 0 END SUB