[01;34mwith[m Gmface[31m.[mGm_Common[31m;[m                  [01;34muse[m Gmface[31m.[mGm_Common[31m;[m
[01;34mpackage[m Gmface[31m.[mGm_Virtual [01;34mis[m
   
   [31m-----------------------------------------------[m
   [31m-- Gmface Options;[m
   
   [01;34mtype[m Form_Index_Type [01;34mis[m [01;34mnew[m Positive [01;34mrange[m [35m1[m[31m..[m[35m8[m[31m;[m
   
   [31m-- The forms used on mixed forms.[m
   [01;34mtype[m Forms_Names_Set_Type [01;34mis[m [01;34marray[m [31m([mForm_Index_Type[31m)[m [01;34mof[m [01;34maccess[m [32mString[m[31m;[m
   
   Forms_Names_Set [31m:[m [01;34mconstant[m Forms_Names_Set_Type [31m:=[m 
     [31m([m
      [01;34mnew[m [32mString[m ' [31m([m[31m"Minimal"[m[31m),[m      
      [01;34mnew[m [32mString[m ' [31m([m[31m"Hard tech"[m[31m),[m                  
      [01;34mnew[m [32mString[m ' [31m([m[31m"Acid"[m[31m),[m
      [01;34mnew[m [32mString[m ' [31m([m[31m"Transe"[m[31m),[m      
      [01;34mnew[m [32mString[m ' [31m([m[31m"Techno"[m[31m),[m
      [01;34mnew[m [32mString[m ' [31m([m[31m"Tribe"[m[31m),[m      
      [01;34mnew[m [32mString[m ' [31m([m[31m"Drums and Bass"[m[31m),[m
      [01;34mnew[m [32mString[m ' [31m([m[31m"Hard Core"[m[31m));[m
   
   [01;34mtype[m Category_Index_Type [01;34mis[m [01;34mnew[m Positive [01;34mrange[m [35m1[m[31m..[m[35m16[m[31m;[m
   
   [01;34mtype[m Categories_Set_Type [01;34mis[m [01;34marray[m [31m([mCategory_Index_Type [01;34mrange[m [31m<>)[m [01;34mof[m [01;34maccess[m [32mString[m[31m;[m
   
   
   Categories_Default [31m:[m [01;34mconstant[m [01;30mCategories_Set_Type[m[31m([m[35m1[m[31m..[m[35m16[m[31m)[m [31m:=[m
     [31m([m[01;34mnew[m [32mString[m ' [31m([m[31m"lead"[m[31m),[m
      [01;34mnew[m [32mString[m ' [31m([m[31m"bass"[m[31m),[m	 
      [01;34mnew[m [32mString[m ' [31m([m[31m"string N pad"[m[31m),[m
      [01;34mnew[m [32mString[m ' [31m([m[31m"Guitar N Pluck"[m[31m),[m
      [01;34mnew[m [32mString[m ' [31m([m[31m"Fx"[m[31m),[m
      [01;34mnew[m [32mString[m ' [31m([m[31m"synth hard"[m[31m),[m
      [01;34mnew[m [32mString[m ' [31m([m[31m"synth soft"[m[31m),[m
      [01;34mnew[m [32mString[m ' [31m([m[31m"keyboard"[m[31m),[m
      [01;34mnew[m [32mString[m ' [31m([m[31m"hit N drum"[m[31m),[m
      [01;34mnew[m [32mString[m ' [31m([m[31m"drums kit"[m[31m),[m
      [01;34mnew[m [32mString[m ' [31m([m[31m"audio in"[m[31m),[m
      [01;34mnew[m [32mString[m ' [31m([m[31m"motion"[m[31m),[m	 
      [01;34mnew[m [32mString[m ' [31m([m[31m"bell N Decay"[m[31m),[m
      [01;34mnew[m [32mString[m ' [31m([m[31m"user"[m[31m),[m
      [01;34mnew[m [32mString[m ' [31m([m[31m"arp seq"[m[31m),[m
      [01;34mnew[m [32mString[m ' [31m([m[31m"voccoder"[m[31m)[m
     [31m);[m
   
   [01;34mtype[m [01;30mCategories_Record[m[31m([mCategory_Max [31m:[m Category_Index_Type[31m)[m [01;34mis[m [01;34mtagged[m
      [01;34mrecord[m
	 Category [31m:[m [01;30mCategories_Set_type[m[31m([m[35m1[m[31m..[mCategory_Max[31m);[m
	 Last       [31m:[m Category_Index_type [31m:=[m [35m1[m[31m;[m
      [01;34mend[m [01;34mrecord[m[31m;[m
   
   [31m--type Categories_Access is access all Categories_Record'Class;[m
   
   [01;34mtype[m Break_Type [01;34mis[m [31m([mNull_Break[31m,[m Down_Break[31m,[m Up_Break[31m,[m Full_Break[31m);[m            
   
   
   [01;34mtype[m True_Table_Type [01;34mis[m [01;34marray[m [31m([mCategory_Index_Type[31m,[m Break_Type[31m,[m Break_Type[31m)[m [01;34mof[m [32mBoolean[m[31m;[m
   
   [01;34mprocedure[m [01;30mTrue_Table_Initialize[m[31m([mTrue_Table [31m:[m [01;34min[m [01;34mout[m True_Table_Type[31m);[m
   
   [01;34mfunction[m [01;30mIs_Formed[m[31m([mTrue_Table [31m:[m True_Table_Type[31m;[m			 		      
		      Category_Index [31m:[m Category_Index_Type[31m;[m
		      Prev       [31m:[m Break_Type [31m:=[m Null_Break[31m;[m
		      Next       [31m:[m Break_Type [31m:=[m Null_Break[31m)[m [01;34mreturn[m [32mBoolean[m[31m;[m
   
   
   [01;34mtype[m Breaks_Set_Type [01;34mis[m [01;34marray[m [31m([mPositive [01;34mrange[m [31m<>)[m [01;34mof[m Break_Type[31m;[m
   
   [01;34mtype[m Categories_Access [01;34mis[m [01;34maccess[m Categories_Record[31m;[m
   
   [01;34mtype[m Breaks_Set_Access [01;34mis[m [01;34maccess[m Breaks_Set_Type[31m;[m
   
   
   
   [31m--[m
   [31m-----------------------------------------------[m
   
   
   [31m-- Abstract Work Class[m
   [01;34msubtype[m Work_Num [01;34mis[m Positive [01;34mrange[m [35m1[m[31m..[m[35m128[m[31m;[m
   
   [01;34mtype[m Work_Options_Record [01;34mis[m [01;34mtagged[m
      [01;34mrecord[m
	 Filename [31m:[m [01;34maccess[m [32mString[m [31m:=[m [01;34mnew[m [32mString[m ' [31m([m[31m""[m[31m);[m
	 
	 
	 [31m-------------------------------[m
	 [31m--[m
	 Track_Length [31m:[m Positive [31m:=[m [35m129[m[31m;[m
	 Tempo      [31m:[m Tempo_Type [31m:=[m [35m120.0[m[31m;[m
	 Signature  [31m:[m Time_Signature_Type [31m:=[m [31m([m[35m4[m[31m,[m [35m4[m[31m);[m	    
	 In_Loop    [31m:[m [32mBoolean[m [31m:=[m False[31m;[m	 	 
	 Current_Form [31m:[m Form_Index_Type [31m:=[m [35m1[m[31m;[m
	 Current_Break    [31m:[m Break_Type [31m:=[m Down_Break[31m;[m
	 Prev_Break       [31m:[m Break_Type [31m:=[m Null_Break[31m;[m	 
	 Next_Break       [31m:[m Break_Type [31m:=[m Down_Break[31m;[m
	 Forms_Names    [31m:[m Forms_Names_Set_Type [31m:=[m Forms_Names_Set[31m;[m
	 Categories      [31m:[m Categories_Access [31m:=[m [01;34mnew[m Categories_Record ' [31m([m[35m16[m[31m,[m Categories_Default[31m,[m [35m16[m[31m);[m
	 Breaks_Set [31m:[m Breaks_Set_Access [31m:=[m [01;34mnew[m Breaks_Set_Type ' [31m([mNull_Break[31m,[m Down_Break[31m,[m
								  Up_Break[31m,[m Full_Break[31m,[m
								  Down_Break[31m,[m Null_Break[31m,[m
								  Up_Break[31m,[m Null_Break[31m,[m
								  Full_Break[31m,[m Full_Break[31m,[m
								  Down_Break[31m,[m Null_Break[31m,[m
								  Full_Break[31m,[m Down_Break[31m);[m
	 True_Table [31m:[m True_Table_Type[31m;[m
      [01;34mend[m [01;34mrecord[m[31m;[m
   
   [01;34mtype[m Work_Options_Access [01;34mis[m [01;34maccess[m [01;34mall[m Work_Options_Record'Class[31m;[m
   
   
   [31m-- Abstract Plugin Class[m
   [01;34mtype[m Device_Num [01;34mis[m [01;34mnew[m Positive [01;34mrange[m [35m1[m [31m..[m [35m128[m[31m;[m
   
   [01;34mtype[m Channel_num [01;34mis[m [01;34mnew[m Positive [01;34mrange[m [35m1[m [31m..[m [35m16[m[31m;[m

   [01;34mtype[m Plugin_num [01;34mis[m [01;34mnew[m Positive [01;34mrange[m [35m1[m [31m..[m [35m256[m[31m;[m
   
   [01;34mtype[m [01;30mAbstract_Plugin[m[31m([mClass [31m:[m Plugin_Enum[31m)[m [01;34mis[m [01;34mabstract[m [01;34mtagged[m
      [01;34mrecord[m
	 Id        [31m:[m Plugin_Num [31m:=[m [35m1[m[31m;[m
	 Printed   [31m:[m [32mBoolean[m [31m:=[m False[31m;[m
	 Mutted    [31m:[m [32mBoolean[m [31m:=[m False[31m;[m	 
	 
	 Cat_Id    [31m:[m Category_Index_Type [31m:=[m [35m1[m[31m;[m	 	 
	 [31m---------------------------[m
	 [31m--[m
	 Name      [31m:[m [01;34maccess[m [32mString[m [31m:=[m [01;34mnew[m [32mString[m ' [31m([m[31m""[m[31m);[m	 
	 Device_ID [31m:[m Device_Num [31m:=[m [35m1[m[31m;[m
	 Ch_ID     [31m:[m Channel_Num [31m:=[m [35m1[m[31m;[m	 	 	 
	 
	 [31m--------------------------[m
	 [31m--[m
	 Form_Id   [31m:[m Form_Index_Type [31m:=[m [35m1[m[31m;[m
      [01;34mend[m [01;34mrecord[m[31m;[m
   
   [01;34mtype[m Abstract_Plugin_Access [01;34mis[m [01;34maccess[m [01;34mall[m Abstract_Plugin'Class[31m;[m
   
   [01;34mprocedure[m [01;30mPrint[m[31m([mFilename [31m:[m [01;34min[m [32mString[m[31m;[m Plug [31m:[m [01;34min[m Abstract_Plugin[31m)[m [01;34mis[m [01;34mabstract[m[31m;[m   
         
   [01;34mtype[m Plugin_Class [01;34mis[m [01;34mabstract[m [01;34mnew[m Abstract_Plugin [01;34mwith[m
      [01;34mrecord[m
	 [01;34mnull[m[31m;[m
      [01;34mend[m [01;34mrecord[m[31m;[m
   
   
   [01;34mtype[m Plugin_Set [01;34mis[m [01;34marray[m [31m([mPlugin_num'[01;34mrange[m[31m)[m [01;34mof[m Abstract_Plugin_Access[31m;[m
   
   [01;34mtype[m Work_Class [01;34mis[m [01;34mabstract[m [01;34mtagged[m
      [01;34mrecord[m
	 Class      [31m:[m Work_Enum [31m:=[m Gmface_Work[31m;[m
	 Id         [31m:[m Work_Num [31m:=[m [35m1[m[31m;[m	 
	 Started    [31m:[m [32mBoolean[m [31m:=[m False[31m;[m
	 Filename   [31m:[m [01;34maccess[m [32mString[m [31m:=[m [01;34mnew[m [32mString[m ' [31m([m[31m""[m[31m);[m
	 Plugins    [31m:[m Plugin_Set[31m;[m
      [01;34mend[m [01;34mrecord[m[31m;[m   
   
   [01;34mprocedure[m [01;30mInitialize[m[31m([mWork [31m:[m [01;34min[m [01;34mout[m Work_Class'Class[31m;[m
			Work_Id [31m:[m [01;34min[m Work_Num[31m;[m
			Filename [31m:[m [01;34min[m [32mString[m[31m)[m [01;34mis[m [01;34mabstract[m[31m;[m
   
   [01;34mtype[m Work_Access [01;34mis[m [01;34maccess[m [01;34mall[m Work_Class'Class[31m;[m
   
   
   [01;34mtype[m Work_Array [01;34mis[m [01;34marray[m [31m([mWork_Num'[01;34mRange[m[31m)[m [01;34mof[m Work_Access[31m;[m
   
   
   
   [01;34mprocedure[m [01;30mInitialize[m [31m([mPlug      [31m:[m [01;34min[m [01;34mout[m Plugin_Class[31m;[m
			 Id        [31m:[m [01;34min[m Plugin_num[31m;[m
			 Device    [31m:[m [01;34min[m Device_Num[31m;[m
			 Ch        [31m:[m [01;34min[m Channel_Num[31m);[m
   
   [01;34mprocedure[m [01;30mSet_Id[m[31m([mPlug       [31m:[m [01;34min[m [01;34mout[m Plugin_Class[31m;[m
		    Id        [31m:[m [01;34min[m Plugin_Num[31m);[m
   
   [01;34mfunction[m [01;30mGet_Id[m[31m([mPlug        [31m:[m [01;34min[m Plugin_Class[31m)[m [01;34mreturn[m Plugin_Num[31m;[m
   
   [01;34mprocedure[m [01;30mSet_Device[m[31m([mPlug       [31m:[m [01;34min[m [01;34mout[m Plugin_Class[31m;[m
			Device    [31m:[m [01;34min[m Device_Num[31m);[m
   
   [01;34mfunction[m [01;30mGet_Device[m[31m([mPlug        [31m:[m [01;34min[m Plugin_Class[31m)[m [01;34mreturn[m Device_Num[31m;[m
   
   [01;34mprocedure[m [01;30mSet_Channel[m[31m([mPlug       [31m:[m [01;34min[m [01;34mout[m Plugin_Class[31m;[m
			 Ch        [31m:[m [01;34min[m Channel_Num[31m);[m
   
   [01;34mfunction[m [01;30mGet_Channel[m[31m([mPlug        [31m:[m [01;34min[m Plugin_Class[31m)[m [01;34mreturn[m Channel_Num[31m;[m         
   
   [01;34mprocedure[m [01;30mPrint[m [31m([mFilename [31m:[m [01;34min[m [32mString[m[31m;[m Plug [31m:[m [01;34min[m Plugin_Class[31m);[m      
   
   
[01;34mend[m Gmface[31m.[mGm_Virtual[31m;[m
