4myScore "0,144,52,127,"&&\ "24,144,50,127,"&&\ "24,144,48,127,"&&\ "24,144,50,127,"&&\ "24,144,52,127,"&&\ "24,144,52,127,"&&\ "24,144,52,127,"&&\ "48,144,50,127,"&&\ "24,144,50,127,"&&\ "24,144,50,127,"&&\ "48,144,52,127,"&&\ "24,144,55,127,"&&\ "24,144,55,127,"&&\ "48,144,52,127,"&&\ "24,144,50,127,"&&\ "24,144,48,127,"&&\ "24,144,50,127,"&&\ "24,144,52,127,"&&\ "24,144,52,127,"&&\ "24,144,52,127,"&&\ "24,144,52,127,"&&\ "24,144,50,127,"&&\ "24,144,50,127,"&&\ "24,144,52,127,"&&\ "24,144,50,127,"&&\ "24,144,48,127" play 4hMidiOut, channelname, Znote, noteOff "60,synth" playstring numItems -- score 13 notes i = 1 "staff2" -- "staff3" "staff1" pageleft pageright i = 53 -- Play a -- default click buttondoubleclick enterPage buttondoubleclick enterPage 0,144,52,127, 24,144,50,127, 24,144,48,127, 24,144,50,127, 24,144,52,127, 24,144,52,127, 24,144,52,127, 48,144,50,127, 24,144,50,127, 24,144,50,127, 48,144,52,127, 24,144,55,127, 24,144,55,127, 48,144,52,127, 24,144,50,127, 24,144,48,127, 24,144,50,127, 24,144,52,127, 24,144,52,127, 24,144,52,127, 24,144,52,127, 24,144,50,127, 24,144,50,127, 24,144,52,127, 24,144,50,127, 24,144,48,127 myScore 60,synth staff2 staff1 staff1 staff2 synth buttonUp buttonUp buttonDown ,synth buttonDown ,drum synth buttonUp buttonUp staff2 staff1 default pageright pageleft numItems playstring noteOff hMidiOut channelname myScore Arial Times New Roman Times New Roman LeaveBook \("close enterBook LeaveBook enterBook c:\toolbook\playhous\ playhous.sbk Zpath playhous.sbk zpath LeaveBook close count tbkMCI lie's Playhouse System Allie's Playhouse :PHYSSIZE 4Zpath playhouse .tbk") default buttonup buttonup playhous.tbk default playhouse Zpath :PHYSSIZE xyoffset item1 item2 p2 + p2 + buttondown buttonup buttondown item2 item1 xyoffset buttonup item2 item1 8272,5745 help synth buttonup buttonup synth patch :PHYSSIZE :PHYSSIZE :PHYSSIZE :PHYSSIZE :PHYSSIZE :PHYSSIZE :PHYSSIZE :PHYSSIZE pobjects polygon id 213 of page id 2,polygon id 214 of page id 2,polygon id 215 of page id 2,polygon id 216 of page id 2,polygon id 217 of page id 2,polygon id 218 of page id 2,polygon id 221 of page id 2,polygon id 222 of page id 2 pscript to handle buttonDown send play name of target to handle buttonUp loc,isshift,isctrl send endPlay name of target to handle buttonDoubleClick -- This takes care of fast repeating notes send play name of target set invert of target to true set invert of target to false to handle play myname system hMidiOut set rawnote1 to 144+9,myname,127 set note1 to packdword(rawnote1) get midiOutShortMsg(hMidiOut,note1) to handle endPlay myname system hMidiOut set rawnote1 to 128+9,myname,127 set note1 to packdword(rawnote1) get midiOutShortMsg(hMidiOut,note1) >&"sel") buttondown buttonup buttondown buttonup previous :PHYSSIZE leftsel :PHYSSIZE >&"sel") buttondown buttonup buttondown buttonup right :PHYSSIZE rightsel :PHYSSIZE myKeyboard |#T#y# h$@$e$ 6%,%3% 4recording release play buttonup buttonup record oI0release record oI0release recording *:PHYSSIZE xyoffset item1 item2 p2 + p2 + release; buttondown release buttondown item2 item1 xyoffset release item2 item1 4740,2235 4recording False release buttonUp buttonUp oI0release record recording /:PHYSSIZE xyoffset item1 item2 p2 + p2 + buttondown buttonup buttondown item2 item1 xyoffset buttonup item2 item1 5715,2235 record 4recording, myScore, myTimer, eventNum default buttonUp buttonUp record default recording myScore myTimer eventNum 5:PHYSSIZE record xyoffset item1 item2 p2 + p2 + release; buttondown release buttondown item2 item1 xyoffset release item2 item1 6675,2235 9:PHYSSIZE Patch Piano 4zpath "c:\toolbook\playhous\" .sbk" (Zpath&" linkkernel linkmmsys midisetup LeaveBook 4hMidiOut midiOutReset( midiOutClose( tbkBitmap("close kid") patch") tbkMCI(" #count","") "Piano" saveAs g globalAlloc(WORD, globalLock( globalUnlock( 2 globalFree( -- This might xbe needed X"mmsystem.dll" -- find the -- MIDI. functions except "...GetNumDevs" error -- query midiInGetNumDevs()--RETURNS NUMBER OF DEVICES midiInGetDevCaps( POINTER, - ID,P TO STRUCT,SIZE OF midiOutGetNumDevs()-- midiOutGetDevCaps( ID,P TO midiInOpen( DWORD, --HANDLE TO DEVICEID, ID ( makes sense),CALLBACK ADDRESS,CB INSTANCE DATA, CB FLAGS (WINDOW OR FUNCTION needs looking up) midiInClose( PASSES H TO M I midiOutOpen( )-- SEE ) -- -- device midiInGetID( ) -- ID, -SIZED STRUCTURE midiOutGetID( ) -- ID, messages midiOutLongMsg ( ,HDR }, FOR SYSEXCL. midiOutShortMsg( ,PACKED MSG. midiOutPrepareHeader( ) -- ) -- midiOutUnprepareHeader( ) -- -- receive midiInAddBuffer( midiInPrepareHeader( ) -- midiInUnprepareHeader( ) -- -- control input midiInStart( ) -- midiInStop( ) -- midiInReset( ) -- -- change patches midiOutCacheDrumPatches( -- , PATCH (most be zero), KEY NUMBERS, CACHE midiOutCachePatches( -- , BANK ( fARRAY, midiOutGetVolume( LOW=LEFT, HIGH=RIGHT midiOutSetVolume( -- errors midiInGetErrorText( )-- ERROR #, BUFFER, midiOutGetErrorText( -- TIMER timeBeginPeriod( )--RESOLUTION IN MILLISECONDS timeEndPeriod( )-- DITTO timeGetDevCaps( )--TIMECAPS timeGetSystemTime( )--MMTIMESTRUCTURE, timeGetTime()-- SYSTIME IN timeKillEvent( timeSetEvent( --DELAY, MUST BE DLL, TYPE:ONESHOT = 0, PERIODIC = 1 defmidimsg 4MIM_CLOSE,MM_MIM_CLOSE,MIM_DATA,MM_MIM_DATA,MIM_ERROR,MM_MIM_ERROR 4MIM_LONGDATA,MM_MIM_LONGDATA,MIM_LONGERROR,MM_MIM_LONGERROR,MIM_OPEN 4MM_MIM_OPEN,MOM_CLOSE,MM_MOM_CLOSE,MOM_DONE,MM_MOM_DONE,MOM_OPEN,MM_MOM_OPEN 962; 963; 965; 964; 961; 968; 969; 967; midiheader 4hMidiHdr,lpData,dwBufferLength,dwBytesRecorded 4dwUser,dwFlags,lpNext,dwReserved --dWord * 4 0,28) 12 -- p data 16 --MHDR_DONE 1,MHDR_PREPARED 2 --MHDR_INQUEUE 4, reserved driver 20 -- don't use 24 -- midiSetup ,channelname, program, patchNum, "piano" 0,32) ,0,0,0,0) -- should contain @,65535,0,0,0) -- opens midiMapper code:"&& "Handle :"&& key, isShift = KeyZ B"48" E = KeyS L <> B"49" = KeyX B"50" = KeyD B"51" = KeyC B"52" key = KeyV B"53" B"54" B"55" B"56" B"57" B"58" B"59" Comma B"60" -- Drums Numpad1 "36" Numpad2 "38" Numpad3 "42" Numpad4 "44" Numpad5 "48" Numpad6 "45" Numpad7 "41" Numpad8 "49" B"48" B"49" B"50" B"51" B"52" B"53" B"54" B"55" B"56" B"57" B"58" B"59" B"60" -- "36" "38" "42" "44" "48" "45" "41" "49" (/100) "mykeyboard" (/100) packdword rgb r+(g*256)+(b*65536) programchange rawnote1 9 myname+20,127 hex num 4hexvalue < 10 - > 9) 8 < 16) K+55)& W > 15 lobyte hipart *) / 16 panic -- Resets stucked notes midiOutReSet( status kid displayKid displayPatch wRect clientFromPage( ,sysMagnification, icon e") <> "" -- bitmap displayed tbkBitmapChk(" tbkBitmapchk(" instr\"& &".BMP alias style child",1) &"",1) state -- Trap click on bmpHandle translatewindowmessage Buttonup could be sent sysbook simplify nterBook defmidimsg midiheader saveAs midiSetup LeaveBook keydown keyUp linkkernel programchange panic linkmmsys enterBook displayPatch packdword enterBook c:\toolbook\playhous\ playhous.sbk Zpath playhous.sbk linkkernel linkmmsys midisetup zpath LeaveBook midiOutReset midiOutClose close kid tbkBitmap close patch tbkBitmap hMidiOut patch Piano saveAs patch Piano linkkernel globalAlloc globalLock globalUnlock globalFree kernel linkmmsys mmsystem.dll midiInGetNumDevs midiInGetDevCaps midiOutGetNumDevs midiOutGetDevCaps midiInOpen midiInClose midiOutOpen midiOutClose midiInGetID midiOutGetID midiOutLongMsg midiOutShortMsg midiOutPrepareHeader midiOutReset midiOutUnprepareHeader midiInAddBuffer midiInPrepareHeader midiInUnprepareHeader midiInStart midiInStop midiInReset midiOutCacheDrumPatches midiOutCachePatches midiOutGetVolume midiOutSetVolume midiInGetErrorText midiOutGetErrorText timeBeginPeriod timeEndPeriod timeGetDevCaps timeGetSystemTime timeGetTime timeKillEvent timeSetEvent defmidimsg MM_MIM_OPEN MOM_CLOSE MM_MOM_CLOSE MOM_DONE MM_MOM_DONE MOM_OPEN MM_MOM_OPEN MIM_LONGDATA MM_MIM_LONGDATA MIM_LONGERROR MM_MIM_LONGERROR MIM_OPEN MIM_CLOSE MM_MIM_CLOSE MIM_DATA MM_MIM_DATA MIM_ERROR MM_MIM_ERROR midiheader globalAlloc dwUser dwFlags lpNext dwReserved hMidiHdr lpData dwBufferLength dwBytesRecorded midiSetup piano globalAlloc globalLock midiOutOpen globalUnlock globalFree hMidiOut channelname program patchNum patch o keydown buttonDown buttonDown buttonDown buttonDown buttonDown buttonDown buttonDown buttonDown buttonDown buttonDown buttonDown buttonDown buttonDown buttonDown buttonDown buttonDown buttonDown buttonDown buttonDown buttonDown buttonDown isShift 3 keyUp buttonUp buttonUp buttonUp buttonUp buttonUp buttonUp buttonUp buttonUp buttonUp buttonUp buttonUp buttonUp buttonUp buttonUp buttonUp buttonUp buttonUp buttonUp buttonUp buttonUp buttonUp packdword programchange packdword midiOutShortMsg note1 myname rawnote1 hMidiOut channelname hipart lobyte hexvalue panic midiOutReSet hMidiOut status kid window tbkBitmap displayKid status patch window tbkBitmap displayPatch displayPatch patch clientFromPage status patch window tbkBitmap close patch tbkBitmapChk open instr\ .BMP alias patch style child tbkBitmapchk window patch position tbkBitmapChk window patch state show tbkBitmapChk status patch window tbkBitmap Buttonup patch bmpHandle wRect patch Zpath 4hMidiOut, program, patchNum, = 13 "Piano" patchName "organ" "Organ" "xylo" "Xylophone" "violin" "Violin" "guitar" "Guitar" "trumpet" "Trumpet" "sax" "Saxophone" "flute" "Flute" "bells" "Bells" "harmonic" "Harmonica" "sweep" "Sweep" "musicbox" "Music Box" "sea" "Sea" -- display displayPatch rawnote1 192+0, rawnote2 192+12, packdword( midiOutShortMsg( buttonUp buttonUp Piano Piano organ Organ Xylophone violin Violin guitar Guitar trumpet Trumpet Saxophone flute Flute bells Bells harmonic Harmonica sweep Sweep musicbox Music Box displayPatch packdword packdword midiOutShortMsg midiOutShortMsg note2 note1 rawnote2 rawnote1 patchName hMidiOut program patchNum patch myposition myposition myposition myposition myposition myposition myposition myposition myposition myposition myposition myposition myposition myPosition myName staff1 staff2 staff3 pageLeft pageRight ):(]4 "staff1" "staff3" pageleft pageright "staff2" buttonUp buttonUp staff1 staff1 staff3 staff2 staff2 staff1 staff3 staff3 staff2 pageright pageleft *0Bb5 "staff1" "staff2" pageleft pageright "staff3" buttonUp buttonUp staff1 staff1 staff2 staff2 staff2 staff3 staff3 staff3 staff1 pageright pageleft Twinkle Little Star Twinkle Little Startle Star +:PHYSSIZE J,",G, 4myScore -- SCORE FORMAT IS TIME,CHANNEL,NOTE#,VELOCITY "0,144,48,127,"&&\ "48,144,48,127,"&&\ "48,144,55,127,"&&\ "48,144,55,127,"&&\ "48,144,57,127,"&&\ "48,144,57,127,"&&\ "48,144,55,127,"&&\ "96,144,53,127,"&&\ "48,144,53,127,"&&\ "48,144,52,127,"&&\ "48,144,52,127,"&&\ "48,144,50,127,"&&\ "48,144,50,127,"&&\ "48,144,48,127,"&&\ "96,144,55,127,"&&\ "48,144,55,127,"&&\ "48,144,53,127,"&&\ "48,144,53,127,"&&\ "48,144,52,127,"&&\ "48,144,52,127,"&&\ "48,144,50,127,"&&\ "96,144,55,127,"&&\ "48,144,55,127,"&&\ "48,144,53,127,"&&\ "48,144,53,127,"&&\ "48,144,52,127,"&&\ "48,144,52,127,"&&\ "48,144,50,127,"&&\ "96,144,48,127,"&&\ "48,144,48,127,"&&\ "48,144,55,127,"&&\ "48,144,55,127,"&&\ "48,144,57,127,"&&\ "48,144,57,127,"&&\ "48,144,55,127,"&&\ "96,144,53,127,"&&\ "48,144,53,127,"&&\ "48,144,52,127,"&&\ "48,144,52,127,"&&\ "48,144,50,127,"&&\ "48,144,50,127,"&&\ "48,144,48,127" play -- Consider moving each 4hMidiOut, channelname, Znote, noteOff "60,synth" playstring numItems -- score 14 notes twinkle i = 1 "staff2" "staff3" "staff1" pageleft pageright i = 57 i = 113 -- Play a -- rawnote1 -- packdword( -- midiOutShortMsg( -- -- -- -- -- -- -- default click buttondoubleclick enterPage buttondoubleclick enterPage 0,144,48,127, 48,144,48,127, 48,144,55,127, 48,144,55,127, 48,144,57,127, 48,144,57,127, 48,144,55,127, 96,144,53,127, 48,144,53,127, 48,144,52,127, 48,144,52,127, 48,144,50,127, 48,144,50,127, 48,144,48,127, 96,144,55,127, 48,144,55,127, 48,144,53,127, 48,144,53,127, 48,144,52,127, 48,144,52,127, 48,144,50,127, 96,144,55,127, 48,144,55,127, 48,144,53,127, 48,144,53,127, 48,144,52,127, 48,144,52,127, 48,144,50,127, 96,144,48,127, 48,144,48,127, 48,144,55,127, 48,144,55,127, 48,144,57,127, 48,144,57,127, 48,144,55,127, 96,144,53,127, 48,144,53,127, 48,144,52,127, 48,144,52,127, 48,144,50,127, 48,144,50,127, 48,144,48,127 myScore 9 play 60,synth staff2 staff3 staff1 staff1 staff2 staff2 staff3 synth buttonUp buttonUp buttonDown ,synth buttonDown ,drum synth buttonUp buttonUp staff3 staff1 default pageright pageleft numItems playstring noteOff hMidiOut channelname myScore record pageLeft "staff1" "staff2" pageleft pageright buttonUp buttonUp staff1 staff1 staff2 staff2 staff2 staff1 pageright pageleft pageRight "staff1" "staff2" pageleft pageright buttonUp buttonUp staff1 staff1 staff2 staff2 staff2 staff1 pageright pageleft staff1 staff2 London Bridge trackNum tracknum London Bridge :PHYSSIZE 4hMidiOut, channelname, myScore Znote, noteOff "60,synth" playstring numItems -- Play a -- -- -- -- rawnote1 -- packdword( -- midiOutShortMsg( -- -- -- -- -- -- -- default 60,synth synth buttonUp buttonUp buttonDown ,synth buttonDown ,drum synth buttonUp buttonUp default numItems playstring noteOff hMidiOut channelname myScore ecord L&L&L&L&L&L&L&L&L&L&L&L&L&L& staff1 staff2 pageRight "staff1" "staff2" pageleft pageright buttonUp buttonUp staff1 staff1 staff2 staff2 staff2 staff1 pageright pageleft pageLeft "staff1" "staff2" pageleft pageright buttonUp buttonUp staff1 staff1 staff2 staff2 staff2 staff1 pageright pageleft Mary had a Little Lamb tracknum Mary had a Little Lamb :PHYSSIZE 4hMidiOut, program, patchNum, = 13 "Piano" patchName "organ" "Organ" "xylo" "Xylophone" "violin" "Violin" "guitar" "Guitar" "trumpet" "Trumpet" "sax" "Saxophone" "flute" "Flute" "bells" "Bells" "harmonic" "Harmonica" "sweep" "Sweep" "musicbox" "Music Box" "sea" "Sea" -- display displayPatch rawnote1 192+0, packdword( midiOutShortMsg( buttonUp buttonUp Piano Piano organ Organ Xylophone violin Violin guitar Guitar trumpet Trumpet Saxophone flute Flute bells Bells 0,0,0 play }loc,isshift,isctrl endPlay 0,100,0 -- This takes care repeating notes 0,0,0 0,75.3125,0 myname 4hMidiOut, myTimer 4recording, myScore mytimer getTickCount()/10 X&",153,"& w&",127" _))+1 rawnote1 144+9, rawnote2 144+15, packdword( midiOutShortMsg( 128+9, 128+15, ttonUp buttonDown buttonDoubleClick buttonUp endPlay buttonDown buttonUp :endPlay isctrl isshift buttonDoubleClick mytimer getTickCount getTickCount ,153, getTickCount packdword packdword midiOutShortMsg midiOutShortMsg note2 note1 rawnote2 rawnote1 recording myScore hMidiOut myTimer myname endPlay packdword packdword midiOutShortMsg midiOutShortMsg note2 note1 rawnote2 rawnote1 hMidiOut myname packdword midiOutShortMsg note1 rawnote1 hMidiOut myname record :PHYSSIZE 4myScore "0,144,55,127,"&&\ "24,144,57,127,"&&\ "24,144,55,127,"&&\ "24,144,53,127,"&&\ "24,144,52,127,"&&\ "24,144,53,127,"&&\ "24,144,55,127,"&&\ "48,144,50,127,"&&\ "24,144,52,127,"&&\ "24,144,53,127,"&&\ "48,144,52,127,"&&\ "24,144,53,127,"&&\ "24,144,55,127,"&&\ "48,144,55,127,"&&\ "24,144,57,127,"&&\ "24,144,55,127,"&&\ "24,144,53,127,"&&\ "24,144,52,127,"&&\ "24,144,53,127,"&&\ "24,144,55,127,"&&\ "48,144,50,127,"&&\ "48,144,55,127,"&&\ "48,144,52,127,"&&\ "24,144,48,127" play 4hMidiOut, channelname, Znote, noteOff "60,synth" playstring numItems -- score 13 notes i = 1 "staff2" -- "staff3" "staff1" pageleft pageright i = 53 -- Play a -- default click buttondoubleclick enterPage buttondoubleclick enterPage 0,144,55,127, 24,144,57,127, 24,144,55,127, 24,144,53,127, 24,144,52,127, 24,144,53,127, 24,144,55,127, 48,144,50,127, 24,144,52,127, 24,144,53,127, 48,144,52,127, 24,144,53,127, 24,144,55,127, 48,144,55,127, 24,144,57,127, 24,144,55,127, 24,144,53,127, 24,144,52,127, 24,144,53,127, 24,144,55,127, 48,144,50,127, 48,144,55,127, 48,144,52,127, 24,144,48,127 myScore 60,synth staff2 staff1 staff1 staff2 synth buttonUp buttonUp buttonDown ,synth buttonDown ,drum synth buttonUp buttonUp staff2 staff1 default pageright pageleft numItems playstring noteOff hMidiOut channelname myScore D@@DD@DD@ @D@DD DDDD@D@@@DDDD HpD@@ @D@@@ @@D@@ @DD@D @D@DD DDD@D DD@@@ @@@@@@ DDLDD DODOO *"*". playhous.ico playhous.ico play }loc,isshift,isctrl endPlay -- This takes care repeating notes myname 4hMidiOut, myTimer, eventNum, myPosition 4recording, myScore mytimer getTickCount()/10 d = 17 -- were recorded zsomething elegant here, like stop &",144,"& &",127" ))+1 "48,144,"& &",127" ))+1 GetMyPosition myName rawnote1 144+0, rawnote2 144+12, packdword( midiOutShortMsg( channelname 128+0, 128+12, getMyPosition myposition -- Use change color sysFillcolor buttonDown buttonDoubleClick buttonUp endPlay getMyPosition buttonDown buttonUp :endPlay isctrl isshift buttonDoubleClick mytimer getTickCount getTickCount ,144, getTickCount packdword packdword midiOutShortMsg midiOutShortMsg note2 note1 rawnote2 rawnote1 recording myScore hMidiOut myTimer eventNum myPosition myname endPlay packdword packdword midiOutShortMsg midiOutShortMsg note2 note1 rawnote2 rawnote1 hMidiOut channelname myname getMyPosition myposition myposition myposition myposition myposition myposition myposition myposition myposition myposition myposition myposition myposition myposition myPosition myName :PHYSSIZE 4Zpath playhouse .tbk") default buttonup buttonup playhous.tbk default playhouse Zpath :PHYSSIZE xyoffset item1 item2 p2 + p2 + buttondown buttonup buttondown item2 item1 xyoffset buttonup item2 item1 8272,5745 help synth buttonup buttonup synth patch :PHYSSIZE :PHYSSIZE :PHYSSIZE :PHYSSIZE :PHYSSIZE :PHYSSIZE :PHYSSIZE :PHYSSIZE pobjects polygon id 213 of page id 2,polygon id 214 of page id 2,polygon id 215 of page id 2,polygon id 216 of page id 2,polygon id 217 of page id 2,polygon id 218 of page id 2,polygon id 221 of page id 2,polygon id 222 of page id 2 pscript to handle buttonDown send play name of target to handle buttonUp loc,isshift,isctrl send endPlay name of target to handle buttonDoubleClick -- This takes care of fast repeating notes send play name of target set invert of target to true set invert of target to false to handle play myname system hMidiOut set rawnote1 to 144+9,myname,127 set note1 to packdword(rawnote1) get midiOutShortMsg(hMidiOut,note1) to handle endPlay myname system hMidiOut set rawnote1 to 128+9,myname,127 set note1 to packdword(rawnote1) get midiOutShortMsg(hMidiOut,note1) >&"sel") buttondown buttonup buttondown buttonup previous :PHYSSIZE leftsel :PHYSSIZE >&"sel") buttondown buttonup buttondown buttonup right :PHYSSIZE rightsel :PHYSSIZE myKeyboard |#T#y# h$@$e$ 6%,%3% 4recording release play buttonup buttonup record oI0release record oI0release recording *:PHYSSIZE xyoffset item1 item2 p2 + p2 + release; buttondown release buttondown item2 item1 xyoffset release item2 item1 4740,2235 4recording False release buttonUp buttonUp oI0release record recording /:PHYSSIZE xyoffset item1 item2 p2 + p2 + buttondown buttonup buttondown item2 item1 xyoffset buttonup item2 item1 6675,2235 record 4recording, myScore, myTimer, eventNum default buttonUp buttonUp record default recording myScore myTimer eventNum 5:PHYSSIZE record xyoffset item1 item2 p2 + p2 + release; buttondown release buttondown item2 item1 xyoffset release item2 item1 4740,2235 9:PHYSSIZE Patch Piano 5715,2235