
[01;34mwith[m Text_Io[31m;[m                           [01;34muse[m Text_Io[31m;[m

[01;34mwith[m Gmface[31m.[mGm_MIDI[31m.[mPortmidi[31m;[m             [01;34muse[m Gmface[31m.[mGm_MIDI[31m;[m

[01;34mwith[m System[31m;[m

[01;34mpackage[m [01;34mbody[m Gmface[31m.[mGm_MIDI[31m.[mDrivers [01;34mis[m
   
   
   [01;34mfunction[m [01;30mHex_Image[m[31m([mNum [31m:[m Interfaces[31m.[mC[31m.[mLong[31m)[m [01;34mreturn[m [32mString[m [01;34mis[m
      Image [31m:[m [32mString[m[31m([m[35m1[m[31m..[m[35m9[m[31m)[m [31m:=[m [31m([m[01;34mothers[m [31m=>[m [31m'0'[m[31m);[m
      Result [31m:[m [32mString[m[31m([m[35m1[m[31m..[m[35m9[m[31m)[m [31m:=[m [31m([m[01;34mothers[m [31m=>[m [31m'0'[m[31m);[m
      Last  [31m:[m positive [31m:=[m [35m9[m[31m;[m
      Number [31m:[m Interfaces[31m.[mC[31m.[mlong [31m:=[m num[31m;[m
      [01;34mtype[m Hexa_Digit [01;34mis[m
        [31m([m[31m'0'[m[31m,[m [31m'1'[m[31m,[m [31m'2'[m[31m,[m [31m'3'[m[31m,[m [31m'4'[m[31m,[m [31m'5'[m[31m,[m [31m'6'[m[31m,[m [31m'7'[m[31m,[m
         [31m'8'[m[31m,[m [31m'9'[m[31m,[m [31m'A'[m[31m,[m [31m'B'[m[31m,[m [31m'C'[m[31m,[m [31m'D'[m[31m,[m [31m'E'[m[31m,[m [31m'F'[m[31m);[m

      Div[31m,[m Rest [31m:[m Interfaces[31m.[mC[31m.[mLong [31m:=[m [35m0[m[31m;[m

   [01;34mbegin[m

      [01;34mloop[m
         Div [31m:=[m Number[31m/[m[35m16[m[31m;[m

         Rest [31m:=[m Number[31m-([mDiv[31m*[m[35m16[m[31m);[m
         [01;30mimage[m[31m([mLast[31m)[m [31m:=[m [32mCharacter[m[31m'Value(Hexa_Digit'[m[01;30mimage[m[31m([mHexa_Digit'[01;30mval[m[31m(([mRest[31m))));[m
         [01;34mexit[m [01;34mwhen[m [31m([mNumber[31m/[m[35m16[m[31m)[m [31m=[m [35m0[m[31m;[m
         Last [31m:=[m Last [31m-[m [35m1[m[31m;[m
         number [31m:=[m Number[31m/[m[35m16[m[31m;[m

      [01;34mend[m [01;34mloop[m[31m;[m
      [01;30mResult[m[31m([m[35m1[m[31m..([mImage[31m'Length - (Last-1))) := Image(Last..Image'[mlength[31m);[m

      [01;34mif[m Num [31m<[m [35m16[m [01;34mthen[m
         [01;34mreturn[m [31m'0'[m [31m&[m [01;30mResult[m [31m([m[35m1[m[31m..([mImage'Length [31m-[m [31m([mLast[31m-[m[35m1[m[31m)));[m
      [01;34melse[m
         [01;34mreturn[m [01;30mResult[m [31m([m[35m1[m[31m..([mImage'Length [31m-[m [31m([mLast[31m-[m[35m1[m[31m)));[m
      [01;34mend[m [01;34mif[m[31m;[m
   [01;34mend[m Hex_Image[31m;[m
   
   
   [01;34muse[m Portmidi[31m.[mErrorText_Conversion[31m,[m Portmidi[31m.[mDeviceInfo_Conversion[31m;[m
   
   
   [01;34mfunction[m Inputs_List [01;34mreturn[m Devices_List_Access [01;34mis[m
      
      Input_Count [31m:[m Natural [31m:=[m [35m0[m[31m;[m
      Device [31m:[m Device_Type[31m;[m
   [01;34mbegin[m
      
      Device[31m.[mThe_DeviceInfo [31m:=[m [01;34mnew[m Portmidi[31m.[mDeviceInfo[31m;[m
      Device[31m.[mAddr [31m:=[m [01;34mnew[m System[31m.[mAddress[31m;[m
      [01;34mfor[m I [01;34min[m [35m0[m[31m..[mPortmidi[31m.[mPm_CountDevices[31m-[m[35m1[m [01;34mloop[m
	 Device[31m.[mThe_DeviceInfo[31m.[m[01;34mall[m [31m:=[m
	   [01;30mTo_pointer[m[31m([mPortmidi[31m.[m[01;30mPm_GetDeviceInfo[m[31m([mI[31m)).[m[01;34mall[m[31m;[m
	 [01;34mif[m Device[31m.[mThe_Deviceinfo[31m.[mInput [31m=[m [35m1[m [01;34mthen[m
	    Input_Count [31m:=[m Input_Count [31m+[m [35m1[m[31m;[m
	 [01;34mend[m [01;34mif[m[31m;[m
      
      [01;34mend[m [01;34mloop[m[31m;[m
      
      [01;34mdeclare[m
	 Devices_List [31m:[m [01;34mconstant[m Devices_List_Access [31m:=[m [01;34mnew[m [01;30mDevices_List_Type[m[31m([m[35m1[m[31m..[mInput_Count[31m);[m
	 List_Index [31m:[m Natural [31m:=[m [35m0[m[31m;[m
      [01;34mbegin[m
	 [01;34mfor[m I [01;34min[m [35m0[m[31m..[mPortmidi[31m.[mPm_CountDevices[31m-[m[35m1[m [01;34mloop[m
	    [01;34mdeclare[m
	       Name [31m:[m Portmidi[31m.[mT_ErrorText[31m;[m
	    [01;34mbegin[m
	       Device[31m.[mThe_DeviceInfo[31m.[m[01;34mall[m [31m:=[m
		 [01;30mTo_pointer[m[31m([mPortmidi[31m.[m[01;30mPm_GetDeviceInfo[m[31m([mI[31m)).[m[01;34mall[m[31m;[m
	       [01;34mif[m Device[31m.[mThe_Deviceinfo[31m.[mInput [31m=[m [35m1[m [01;34mthen[m
		  Name [31m:=[m [01;30mTo_Pointer[m[31m([mDevice[31m.[mThe_Deviceinfo[31m.[mname[31m).[m[01;34mall[m[31m;[m
		  [01;30mDevices_List[m[31m([mList_Index [31m+[m [35m1[m[31m).[mName [31m:=[m [01;34mnew[m [32mString[m ' [31m([mInterfaces[31m.[mC[31m.[m[01;30mTo_Ada[m[31m([mName[31m));[m
		  [01;30mDevices_List[m[31m([mList_Index [31m+[m [35m1[m[31m).[mId [31m:=[m I[31m;[m
		  List_Index [31m:=[m List_Index [31m+[m [35m1[m[31m;[m
	       [01;34mend[m [01;34mif[m[31m;[m
	    [01;34mend[m[31m;[m
	 [01;34mend[m [01;34mloop[m[31m;[m
	 [01;34mreturn[m Devices_List[31m;[m
      [01;34mend[m[31m;[m
   [01;34mend[m Inputs_List[31m;[m
   
   
   [01;34mprotected[m [01;34mbody[m OutputDriver_Type [01;34mis[m
      
      [01;34mentry[m [01;30mReceive[m[31m([mMessage [31m:[m [01;34min[m Long[31m)[m [01;34mwhen[m True [01;34mis[m
	 
      [01;34mbegin[m 
	 
	 [01;34mif[m Device_Driver[31m.[mOutput [31m/=[m [01;34mnull[m [01;34mthen[m

	    [01;30mWrite[m[31m([mDevice_Driver[31m.[mOutput[31m.[m[01;34mall[m[31m,[m Message[31m);[m
	    
	 [01;34mend[m [01;34mif[m[31m;[m	 
      [01;34mend[m Receive[31m;[m
   [01;34mend[m OutputDriver_Type[31m;[m
   
   
   [01;34mtask[m [01;34mbody[m InputDriver_Type [01;34mis[m            
      End_Of_Task [31m:[m [32mBoolean[m [31m:=[m False[31m;[m
   [01;34mbegin[m
      [01;34mwhile[m [01;34mnot[m End_Of_Task [01;34mloop[m
	 [01;34mloop[m
	    [01;34mselect[m
	       [01;34maccept[m Stop[31m;[m
	    [01;34mor[m
	       [01;34maccept[m Start[31m;[m
	       [01;34mexit[m[31m;[m
	    [01;34mor[m
	       [01;34maccept[m Halt[31m;[m
	       End_Of_Task [31m:=[m True[31m;[m
	       [01;34mexit[m[31m;[m	       
	    [01;34mend[m [01;34mselect[m[31m;[m
	 [01;34mend[m [01;34mloop[m[31m;[m
	 Text_Io[31m.[m[01;30mPut_Line[m[31m([m[31m"Input_Driver starting..."[m[31m);[m
	 [01;34mwhile[m [01;34mnot[m End_Of_Task [01;34mloop[m
	    
	    [01;34mselect[m
	       [01;34maccept[m Stop[31m;[m
	       [01;34mexit[m[31m;[m
	    [01;34mor[m
	       [01;34maccept[m Halt[31m;[m
	       End_Of_Task [31m:=[m True[31m;[m
	       [01;34mexit[m[31m;[m
	    [01;34mor[m 
	       [01;34mdelay[m [35m0.0005[m[31m;[m
	    
	       [01;34mdeclare[m
		  The_Message [31m:[m Long [31m:=[m [35m0[m[31m;[m	    
	       [01;34mbegin[m
		  [01;30mRead[m[31m([mDevice_Driver[31m.[mInput[31m.[m[01;34mall[m[31m,[m The_Message[31m);[m	    	    		  
		  Text_Io[31m.[m[01;30mPut_Line[m[31m([m[31m"Message Received..."[m[31m);[m
		  [31m--if (The_Message > 0) and (The_Message /= 248) then		     [m
		     Text_Io[31m.[m[01;30mPut_Line[m[31m([m[31m"Message Ok !"[m[31m);[m
		     [01;34mselect[m
			[01;34maccept[m [01;30mSend[m[31m([mMessage [31m:[m [01;34mout[m Long[31m)[m [01;34mdo[m
			   Message [31m:=[m The_Message[31m;[m
			[01;34mend[m Send[31m;[m   
			Text_Io[31m.[m[01;30mPut_Line[m[31m([m[31m"Message Sended..."[m[31m);[m
		     [01;34mor[m
			[01;34mdelay[m [35m0.1[m[31m;[m
			Text_Io[31m.[m[01;30mPut_Line[m[31m([m[31m"Message lost..."[m[31m);[m
		     [01;34mend[m [01;34mselect[m[31m;[m
	       [31m--end if;	    [m
		  
	       [01;34mexception[m
		  [01;34mwhen[m Constraint_Error [31m=>[m
		     Text_Io[31m.[m[01;30mPut_Line[m[31m([m[31m"Constraint error"[m[31m);[m
	       [01;34mend[m[31m;[m
	    [01;34mend[m [01;34mselect[m[31m;[m
	 [01;34mend[m [01;34mloop[m[31m;[m 
	 Text_Io[31m.[m[01;30mPut_Line[m[31m([m[31m"Input_Driver stopping..."[m[31m);[m
      [01;34mend[m [01;34mloop[m[31m;[m
      Text_Io[31m.[m[01;30mPut_Line[m[31m([m[31m"Input_Driver Halted..."[m[31m);[m
   [01;34mend[m InputDriver_Type[31m;[m

   [01;34mfunction[m Outputs_List [01;34mreturn[m Devices_List_Access [01;34mis[m
      
      output_Count [31m:[m Natural [31m:=[m [35m0[m[31m;[m
      Device [31m:[m Device_Type[31m;[m
   [01;34mbegin[m
      
      Device[31m.[mThe_DeviceInfo [31m:=[m [01;34mnew[m Portmidi[31m.[mDeviceInfo[31m;[m
      Device[31m.[mAddr [31m:=[m [01;34mnew[m System[31m.[mAddress[31m;[m
      [01;34mfor[m I [01;34min[m [35m0[m[31m..[mPortmidi[31m.[mPm_CountDevices[31m-[m[35m1[m [01;34mloop[m
	 Device[31m.[mThe_DeviceInfo[31m.[m[01;34mall[m [31m:=[m
	   [01;30mTo_pointer[m[31m([mPortmidi[31m.[m[01;30mPm_GetDeviceInfo[m[31m([mI[31m)).[m[01;34mall[m[31m;[m
	 
	 [01;34mif[m Device[31m.[mThe_Deviceinfo[31m.[mOutput [31m=[m [35m1[m [01;34mthen[m
	    output_Count [31m:=[m output_Count [31m+[m [35m1[m[31m;[m
	 [01;34mend[m [01;34mif[m[31m;[m      
      [01;34mend[m [01;34mloop[m[31m;[m
      
      [01;34mdeclare[m
	 Devices_List [31m:[m [01;34mconstant[m Devices_List_Access [31m:=[m [01;34mnew[m [01;30mDevices_List_Type[m[31m([m[35m1[m[31m..[moutput_Count[31m);[m
	 List_Index [31m:[m Natural [31m:=[m [35m0[m[31m;[m
      [01;34mbegin[m
	 [01;34mfor[m I [01;34min[m [35m0[m[31m..[mPortmidi[31m.[mPm_CountDevices[31m-[m[35m1[m [01;34mloop[m
	    [01;34mdeclare[m
	       Name [31m:[m Portmidi[31m.[mT_ErrorText[31m;[m
	    [01;34mbegin[m
	       Device[31m.[mThe_DeviceInfo[31m.[m[01;34mall[m [31m:=[m
		 [01;30mTo_pointer[m[31m([mPortmidi[31m.[m[01;30mPm_GetDeviceInfo[m[31m([mI[31m)).[m[01;34mall[m[31m;[m
	       [01;34mif[m Device[31m.[mThe_Deviceinfo[31m.[mOutput [31m=[m [35m1[m [01;34mthen[m
		  Name [31m:=[m [01;30mTo_Pointer[m[31m([mDevice[31m.[mThe_Deviceinfo[31m.[mname[31m).[m[01;34mall[m[31m;[m
		  [01;30mDevices_List[m[31m([mList_Index [31m+[m [35m1[m[31m).[mName [31m:=[m [01;34mnew[m [32mString[m ' [31m([mInterfaces[31m.[mC[31m.[m[01;30mTo_Ada[m[31m([mName[31m));[m
		  [01;30mDevices_List[m[31m([mList_Index [31m+[m [35m1[m[31m).[mId [31m:=[m I[31m;[m
		  List_Index [31m:=[m List_Index [31m+[m [35m1[m[31m;[m
	       [01;34mend[m [01;34mif[m[31m;[m
	    [01;34mend[m[31m;[m
	 [01;34mend[m [01;34mloop[m[31m;[m
	 [01;34mreturn[m Devices_List[31m;[m
      [01;34mend[m[31m;[m
   [01;34mend[m Outputs_List[31m;[m   
   
   [01;34muse[m Interfaces[31m;[m
   
   [01;34mfunction[m [01;30mControl_Of[m[31m([mMessage [31m:[m Interfaces[31m.[mC[31m.[mLong[31m)[m [01;34mreturn[m Control_Type [01;34mis[m
      
      The_Status  [31m:[m [01;34mconstant[m Unsigned_32 [31m:=[m [01;30mUnsigned_32[m[31m([mPortmidi[31m.[m[01;30mStatus[m[31m([mMessage[31m));[m
      Data        [31m:[m [01;34mconstant[m Unsigned_32 [31m:=[m [01;30mUnsigned_32[m[31m([mPortmidi[31m.[m[01;30mData1[m[31m([mMessage[31m));[m
      The_control [31m:[m Control_Type [31m:=[m Null_Item[31m;[m
   [01;34mbegin[m
      [01;34mif[m [31m(([mThe_Status [01;34mand[m [35m16[m#[35m70[m#[31m)[m [31m=[m [35m0[m[31m)[m [01;34mthen[m
	 The_Control [31m:=[m Note_Off[31m;[m
      [01;34melsif[m [31m(([mThe_Status [01;34mand[m [35m16[m#[35m60[m#[31m)[m [31m=[m [35m0[m[31m)[m [01;34mthen[m
	 The_Control [31m:=[m Note_on[31m;[m
      [01;34melsif[m [31m(([mThe_Status [01;34mand[m [35m16[m#[35m40[m#[31m)[m [31m=[m [35m0[m[31m)[m [01;34mthen[m
	 The_Control [31m:=[m Control[31m;[m
      [01;34melsif[m [31m(([mThe_Status [01;34mand[m [35m16[m#[35m30[m#[31m)[m [31m=[m [35m0[m[31m)[m [01;34mthen[m
	 The_Control [31m:=[m Program_Change[31m;[m
      [01;34melsif[m [31m(([mThe_Status [01;34mand[m [35m16[m#[35m20[m#[31m)[m [31m=[m [35m0[m[31m)[m [01;34mthen[m
	 The_Control [31m:=[m Channel_Pressure[31m;[m
      [01;34melsif[m [31m(([mThe_Status [01;34mand[m [35m16[m#[35m10[m#[31m)[m [31m=[m [35m0[m[31m)[m [01;34mthen[m
	 The_Control [31m:=[m Pitchbend[31m;[m
      [01;34mend[m [01;34mif[m[31m;[m
      [01;34mreturn[m The_Control[31m;[m
   [01;34mend[m Control_of[31m;[m
   
   
   
   [01;34mfunction[m [01;30mChannel_Of[m[31m([mMessage [31m:[m [01;34min[m Long[31m)[m [01;34mreturn[m Channel_Type [01;34mis[m      
   [01;34mbegin[m        
      [01;34mreturn[m [01;30mChannel_type[m[31m([m[01;30mUnsigned_32[m[31m([mPortmidi[31m.[m[01;30mStatus[m[31m([mMessage[31m))[m [01;34mand[m [35m16[m#0F#[31m);[m
   [01;34mend[m Channel_Of[31m;[m

   
   [01;34mprocedure[m [01;30mInitialize[m [31m([mDevice [31m:[m [01;34min[m [01;34mout[m Device_Type[31m;[m Mode [31m:[m [01;34min[m Mode_Type[31m;[m Info [31m:[m [01;34min[m Device_Info_type[31m)[m [01;34mis[m
      
   [01;34mbegin[m
      [01;34mcase[m Mode [01;34mis[m
         [01;34mwhen[m MIDI_Out [31m=>[m
            Device[31m.[mThe_DeviceInfo [31m:=[m [01;34mnew[m Portmidi[31m.[mDeviceInfo[31m;[m
            Device[31m.[mAddr [31m:=[m [01;34mnew[m System[31m.[mAddress[31m;[m
	    [01;34mfor[m I [01;34min[m [35m0[m[31m..[mPortmidi[31m.[mPm_CountDevices[31m-[m[35m1[m [01;34mloop[m
	       [01;34mdeclare[m
		  Name [31m:[m Portmidi[31m.[mT_ErrorText[31m;[m
	       [01;34mbegin[m
		  Device[31m.[mThe_DeviceInfo[31m.[m[01;34mall[m [31m:=[m
		    [01;30mTo_pointer[m[31m([mPortmidi[31m.[m[01;30mPm_GetDeviceInfo[m[31m([mI[31m)).[m[01;34mall[m[31m;[m
		  Name [31m:=[m [01;30mTo_Pointer[m[31m([mDevice[31m.[mThe_Deviceinfo[31m.[mname[31m).[m[01;34mall[m[31m;[m
		  [01;34mif[m Interfaces[31m.[mC[31m.[m[01;30mTo_Ada[m[31m([mName[31m)[m [31m=[m Info[31m.[mName[31m.[m[01;34mall[m [01;34mthen[m
		     [01;34mif[m Device[31m.[mThe_Deviceinfo[31m.[mOutput [31m=[m [35m1[m [01;34mThen[m
			Device[31m.[mID [31m:=[m I[31m;[m
			Device[31m.[mInitialized [31m:=[m True[31m;[m
			Device[31m.[mMode [31m:=[m MIDI_Out[31m;[m
			
			
			
			[01;34mexit[m[31m;[m		     
		     	
		     [01;34mend[m [01;34mif[m[31m;[m		 
		  [01;34mend[m [01;34mif[m[31m;[m
	       [01;34mend[m[31m;[m      
	    [01;34mend[m [01;34mloop[m[31m;[m
         [01;34mwhen[m MIDI_In [31m=>[m
            Device[31m.[mThe_DeviceInfo [31m:=[m [01;34mnew[m Portmidi[31m.[mDeviceInfo[31m;[m
            Device[31m.[mAddr [31m:=[m [01;34mnew[m System[31m.[mAddress[31m;[m	    
	    [01;34mfor[m I [01;34min[m [35m0[m[31m..[mPortmidi[31m.[mPm_CountDevices[31m-[m[35m1[m [01;34mloop[m
	       [01;34mdeclare[m
		  Name [31m:[m Portmidi[31m.[mT_ErrorText[31m;[m
	       [01;34mbegin[m        
		  Device[31m.[mThe_DeviceInfo[31m.[m[01;34mall[m [31m:=[m
		    [01;30mTo_pointer[m[31m([mPortmidi[31m.[m[01;30mPm_GetDeviceInfo[m[31m([mI[31m)).[m[01;34mall[m[31m;[m
		  Name [31m:=[m [01;30mTo_Pointer[m[31m([mDevice[31m.[mThe_Deviceinfo[31m.[mname[31m).[m[01;34mall[m[31m;[m
		  [01;34mif[m Interfaces[31m.[mC[31m.[m[01;30mTo_Ada[m[31m([mName[31m)[m [31m=[m Info[31m.[mName[31m.[m[01;34mall[m [01;34mthen[m
		     [01;34mif[m Device[31m.[mThe_Deviceinfo[31m.[mInput [31m=[m [35m1[m [01;34mThen[m
			
			Device[31m.[mID [31m:=[m I[31m;[m
			Device[31m.[mInitialized [31m:=[m True[31m;[m
			Device[31m.[mMode [31m:=[m MIDI_In[31m;[m
			Name [31m:=[m [01;30mTo_Pointer[m[31m([mDevice[31m.[mThe_Deviceinfo[31m.[mname[31m).[m[01;34mall[m[31m;[m
			
			
			[01;34mexit[m[31m;[m
			
		     [01;34mend[m [01;34mif[m[31m;[m
		  [01;34mend[m [01;34mif[m[31m;[m
	       [01;34mend[m[31m;[m
	    [01;34mend[m [01;34mloop[m[31m;[m
            
      [01;34mend[m [01;34mcase[m[31m;[m
   [01;34mend[m Initialize[31m;[m

   
   [01;34mprocedure[m [01;30mInitialize_Input[m[31m([mInput_Device_Driver [31m:[m [01;34min[m [01;34mout[m Input_Device_Driver_Type[31m;[m 
			      Device_Info [31m:[m [01;34min[m Device_Info_Type[31m)[m [01;34mis[m
   [01;34mbegin[m
      [01;34mif[m Device_Info [31m=[m Null_Device_Info [01;34mthen[m
	 Input_Device_Driver[31m.[mInput [31m:=[m [01;34mnull[m[31m;[m
	 
      [01;34melse[m
	 Input_Device_Driver[31m.[mInput [31m:=[m [01;34mnew[m Device_Type[31m;[m
	 
	 [01;30mInitialize[m[31m([mInput_Device_Driver[31m.[mInput[31m.[m[01;34mall[m[31m,[m MIDI_In[31m,[m Device_Info[31m);[m
	 Input_Device_Driver[31m.[mDevice_Info [31m:=[m Device_Info[31m;[m
      [01;34mend[m [01;34mif[m[31m;[m
   [01;34mend[m Initialize_Input[31m;[m
   
   [01;34mprocedure[m [01;30mInitialize_Output[m[31m([mOutput_Device_Driver [31m:[m [01;34min[m [01;34mout[m Output_Device_Driver_Type[31m;[m
			       Device_Info [31m:[m [01;34min[m Device_Info_Type[31m)[m [01;34mis[m
   [01;34mbegin[m
      [01;34mif[m Device_Info [31m=[m Null_Device_Info [01;34mthen[m
	 Output_Device_Driver[31m.[mOutput [31m:=[m [01;34mnull[m[31m;[m
      [01;34melse[m
	 Output_Device_Driver[31m.[mOutput [31m:=[m [01;34mnew[m Device_Type[31m;[m
	 [01;30mInitialize[m[31m([mOutput_Device_Driver[31m.[mOutput[31m.[m[01;34mall[m[31m,[m MIDI_Out[31m,[m Device_Info[31m);[m
	 Output_Device_Driver[31m.[mDevice_Info [31m:=[m Device_Info[31m;[m
      [01;34mend[m [01;34mif[m[31m;[m
   [01;34mend[m Initialize_Output[31m;[m


[01;34mend[m Gmface[31m.[mGm_MIDI[31m.[mDrivers[31m;[m
