home *** CD-ROM | disk | FTP | other *** search
/ Millennium Time Capsule / AC2000.BIN / disks / ac12disk / enchant / midimate / midimate.bas next >
Encoding:
BASIC Source File  |  1998-11-05  |  5.3 KB  |  159 lines

  1.  
  2. ' [MIDIMATE.BAS]
  3. ' This source document is apart of the ENhanCed Hisoft ApplicatioN toolkiT (ENCHANT)
  4. ' Developed by Matthew Bacon & Paul Jones, © 1997-1998 Matthew Bacon & Paul Jones
  5.  
  6. DEFINT a-z
  7. REM $include midimate.bh        ' Declare *.BH file created from resource file
  8. REM $include toolbx_a.bas        ' Request the file TOOLBX_A.BAS (i.e. GEM Toolkit)
  9. REM $include error.bas            ' Request the file ERROR.BAS
  10. REM $include midi.bas            ' Request the file MIDI.BAS
  11. REM $include st-guide.bas        ' Request the file ST-GUIDE.BAS
  12.  
  13. CALL StartProgram (CURDIR$+"\MIDIMATE.RSC",FORM_MENU,MENU_QUIT,FORM_ICONIFY)
  14. junk=xdialog (FORM_ABOUT,0,0,1,0)            ' Display dialog
  15. CALL initFORM_MAIN
  16. main_handle=OpenFormWindow(MyProgram$,FORM_MAIN,0,0,VARPTRS(closeFORM_MAIN))
  17. CALL xENCHANTloop                            ' Call program loop
  18. CALL StopProgram
  19.  
  20.  
  21. FUNCTION HandleUserClose(BYVAL WindowHandle)
  22. SHARED main_handle
  23.  
  24. SELECT CASE WindowHandle
  25. CASE main_handle : Finished_Flag=-1
  26. END SELECT
  27. END FUNCTION
  28.  
  29. SUB HandleUserMessages
  30. END SUB
  31.  
  32. SUB HandleUserKeys (ASCII$,key_pressed,kstate)
  33. END SUB
  34.  
  35. SUB HandleUserClicks (clicks,kstate,mx,my)
  36. END SUB
  37.  
  38.  
  39. SUB TextWindLoop (BYVAL key_pressed)    ' These sub-routines are not used, but are required
  40. END SUB                                    ' as they are declared within the GEM Toolkit
  41.  
  42. SUB TextWindArrowed(BYVAL WindowHandle,BYVAL which)
  43. END SUB
  44.  
  45.  
  46. SUB    HandleUserMenu (WindowHandle,item,title)
  47. SHARED MyProgram$,main_handle
  48.  
  49. SELECT CASE item
  50. CASE MENU_ABOUT : junk=xdialog (FORM_ABOUT,0,0,1,0)
  51. CASE MENU_OPEN
  52.     main_handle=OpenFormWindow(MyProgram$,FORM_MAIN,0,0,VARPTRS(closeFORM_MAIN))
  53. CASE MENU_STG_TITLE : junk=STGuide (CURDIR$+"\MIDIMATE.HYP","Title")
  54. CASE MENU_STG_CONTENT : junk=STGuide (CURDIR$+"\MIDIMATE.HYP","Contents")
  55. CASE MENU_STG_INDEX : junk=STGuide (CURDIR$+"\MIDIMATE.HYP","Index")
  56. END SELECT
  57. END SUB
  58.  
  59.  
  60. SUB closeFORM_MAIN
  61. SHARED octave_popup,channel_popup
  62. STATIC channel,octave,velocity,instrument,note,dummy
  63.  
  64. SelectTree FORM_MAIN
  65. octave=VAL(RIGHT$(getobj_text$(MAIN_OCTAVE),2))        ' Extract values from strings
  66. channel=VAL(RIGHT$(getobj_text$(MAIN_CHANNEL),2))
  67. velocity=VAL(getobj_text$(MAIN_VELOCITY))
  68. instrument=VAL(getobj_text$(MAIN_INSTR))
  69.  
  70. SELECT CASE CommonObj
  71.     CASE MAIN_C : note=0
  72.     CASE MAIN_C_SHARP : note=1
  73.     CASE MAIN_D : note=2
  74.     CASE MAIN_E_FLAT : note=3
  75.     CASE MAIN_E : note=4
  76.     CASE MAIN_F : note=5
  77.     CASE MAIN_F_SHARP : note=6
  78.     CASE MAIN_G : note=7
  79.     CASE MAIN_A_FLAT : note=8
  80.     CASE MAIN_A : note=9
  81.     CASE MAIN_B_FLAT : note=10
  82.     CASE MAIN_B : note=11
  83.     CASE MAIN_OCTAVE
  84.         octave_popup=popup(0,MAIN_OCTAVE,FORM_POPUPS,POP_OCTAVE,octave_popup)
  85.         IF octave_popup THEN
  86.             setobj_poptext MAIN_OCTAVE,"  "+getobj_poptext$(FORM_POPUPS,octave_popup)
  87.             redraw_object MAIN_OCTAVE : octave=VAL(RIGHT$(getobj_text$(MAIN_OCTAVE),2))
  88.         END IF
  89.     CASE MAIN_OCTAVE1
  90.         radio_poptext MAIN_OCTAVE,FORM_POPUPS,POP_OCTAVE,octave_popup
  91.         redraw_object MAIN_OCTAVE : octave=VAL(RIGHT$(getobj_text$(MAIN_OCTAVE),2))
  92.     CASE MAIN_CHANNEL
  93.         channel_popup=popup(0,MAIN_CHANNEL,FORM_POPUPS,POP_CHANNEL,channel_popup)
  94.         IF channel_popup THEN
  95.             setobj_poptext MAIN_CHANNEL,"  "+getobj_poptext$(FORM_POPUPS,channel_popup)
  96.             redraw_object MAIN_CHANNEL : channel=VAL(RIGHT$(getobj_text$(MAIN_CHANNEL),2))
  97.         END IF
  98.     CASE MAIN_CHANNEL1
  99.         radio_poptext MAIN_CHANNEL,FORM_POPUPS,POP_CHANNEL,channel_popup
  100.         redraw_object MAIN_CHANNEL : channel=VAL(RIGHT$(getobj_text$(MAIN_CHANNEL),2))
  101.     CASE MAIN_VUP
  102.         dummy=VAL(getobj_text$(MAIN_VELOCITY))
  103.         INCR dummy : IF dummy>127 THEN dummy=127
  104.         setobj_text MAIN_VELOCITY,LTRIM$(STR$(dummy))
  105.         redraw_object MAIN_VELOCITY
  106.         velocity=VAL(getobj_text$(MAIN_VELOCITY)) : CALL cntrl_volume (channel,velocity)
  107.     CASE MAIN_VDOWN
  108.         dummy=VAL(getobj_text$(MAIN_VELOCITY))
  109.         DECR dummy : IF dummy<0 THEN dummy=0
  110.         setobj_text MAIN_VELOCITY,LTRIM$(STR$(dummy))
  111.         redraw_object MAIN_VELOCITY
  112.         velocity=VAL(getobj_text$(MAIN_VELOCITY)) : CALL cntrl_volume (channel,velocity)
  113.     CASE MAIN_INSTRUP
  114.         dummy=VAL(getobj_text$(MAIN_INSTR))
  115.         INCR dummy : IF dummy>127 THEN dummy=127
  116.         setobj_text MAIN_INSTR,LTRIM$(STR$(dummy))
  117.         redraw_object MAIN_INSTR
  118.         instrument=VAL(getobj_text$(MAIN_INSTR)) : CALL program_change (channel,instrument)
  119.     CASE MAIN_INSTRDOWN
  120.         dummy=VAL(getobj_text$(MAIN_INSTR))
  121.         DECR dummy : IF dummy<0 THEN dummy=0
  122.         setobj_text MAIN_INSTR,LTRIM$(STR$(dummy))
  123.         redraw_object MAIN_INSTR
  124.         instrument=VAL(getobj_text$(MAIN_INSTR)) : CALL program_change (channel,instrument)
  125.     CASE MAIN_ALLNOTESOFF : CALL all_notes_off
  126. END SELECT
  127.  
  128. SELECT CASE CommonObj
  129.     CASE MAIN_C TO MAIN_B_FLAT
  130.         note_on channel,36+(12*(octave-1))+note,velocity    ' Play note
  131.         DO                                                    ' Wait for mouse button to be released
  132.         LOOP UNTIL MOUSE(2)=0
  133.         note_off channel,36+(12*(octave-1))+note,0            ' Turn note off
  134. END SELECT
  135. END SUB
  136.  
  137.  
  138. SUB initFORM_MAIN                            ' set-up initial values in dialog
  139. SHARED octave_popup,channel_popup
  140. STATIC oldtree&
  141.  
  142. oldtree&=tree& : SelectTree FORM_POPUPS
  143. octave_popup=POP_O1
  144. channel_popup=POP_C1
  145.  
  146. include_state octave_popup,mask_checked+mask_selected
  147. include_state channel_popup,mask_checked+mask_selected
  148.  
  149. SelectTree FORM_MAIN
  150. setobj_poptext MAIN_OCTAVE,"  "+getobj_poptext$(FORM_POPUPS,octave_popup)
  151. setobj_poptext MAIN_CHANNEL,"  "+getobj_poptext$(FORM_POPUPS,channel_popup)
  152.  
  153. setobj_text MAIN_VELOCITY,"64"
  154. setobj_text MAIN_INSTR,"0"
  155. tree&=oldtree&
  156. END SUB
  157.  
  158. '[*END OF FILE*]
  159.