[01;34mwith[m Interfaces[31m.[mC[31m;[m
[01;34muse[m Interfaces[31m.[mC[31m;[m
[01;34mwith[m Libsens[31m.[mMIDI[31m.[mDevices[31m;[m              [01;34muse[m Libsens[31m.[mMIDI[31m.[mDevices[31m;[m
[01;34mwith[m Libsens[31m.[mMIDI[31m.[mMessages[31m;[m             [01;34muse[m Libsens[31m.[mMIDI[31m.[mMessages[31m;[m

[01;34mwith[m Ada[31m.[mFinalization[31m;[m                  [01;34muse[m Ada[31m.[mFinalization[31m;[m
[01;34mpackage[m Libsens[31m.[mMIDI[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[31m;[m
   
   [01;34mtype[m Device_Info_Type [01;34mis[m
      [01;34mrecord[m
	 Name [31m:[m [01;34maccess[m [32mString[m[31m;[m
	 Id   [31m:[m Natural [31m:=[m [35m0[m[31m;[m
      [01;34mend[m [01;34mrecord[m[31m;[m
   
   Null_Device_Info [31m:[m [01;34mconstant[m Device_Info_Type [31m:=[m [31m([mName [31m=>[m [01;34mnull[m[31m,[m Id [31m=>[m [35m0[m[31m);[m
   
   [01;34mtype[m Devices_List_Type [01;34mis[m [01;34marray[m [31m([mPositive [01;34mrange[m [31m<>)[m [01;34mof[m Device_Info_Type[31m;[m
   
   [01;34mtype[m Devices_List_Access [01;34mis[m [01;34maccess[m Devices_List_Type[31m;[m
   
   
   [01;34mfunction[m Inputs_List [01;34mreturn[m Devices_List_Access[31m;[m
   [01;34mfunction[m Outputs_List [01;34mreturn[m Devices_List_Access[31m;[m   
   
   
   
   [01;34mtype[m Control_Type [01;34mis[m [31m([mNull_Item[31m,[m Note_On[31m,[m Note_Off[31m,[m 
			 Eq[31m,[m Osc1[31m,[m Osc2[31m,[m Filters[31m,[m Fx1[31m,[m Fx2[31m,[m MstFx[31m,[m 
			 Control[31m,[m Program_Change[31m,[m Channel_Pressure[31m,[m Pitchbend[31m,[m Mod_wheel[31m);[m
   [31m-- Définit la classe des messages reçus.[m
         
   [01;34mfunction[m [01;30mControl_of[m[31m([mMessage [31m:[m Interfaces[31m.[mC[31m.[mLong[31m)[m [01;34mreturn[m Control_Type [31m;[m
   [31m-- Renvoie le type du message reçu sous forme de Long.[m
      
   [01;34mfunction[m [01;30mChannel_Of[m[31m([mMessage [31m:[m [01;34min[m Long[31m)[m [01;34mreturn[m Channel_Type[31m;[m
   [31m-- Renvoie le cannal sur lequel a été émit le message.[m
   
   
   [01;34mtype[m Bank_Geometry_Type [01;34mis[m
      [01;34mrecord[m
	 MSB_Bank_Max [31m:[m Bank_Type [31m:=[m [35m0[m[31m;[m
	 LSB_Bank_Max [31m:[m Bank_Type [31m:=[m [35m127[m[31m;[m
      [01;34mend[m [01;34mrecord[m[31m;[m      
   
   [01;34msubtype[m Timbre_Id_Type [01;34mis[m Natural [01;34mrange[m [35m0[m[31m..[m[35m15[m[31m;[m
   
   [01;34mtype[m Map_Geometry_Type [01;34mis[m
      [01;34mrecord[m
	 Num_Timbre    [31m:[m Timbre_Id_Type [31m:=[m [35m0[m[31m;[m	 
	 Bank_Geometry [31m:[m Bank_Geometry_Type [31m:=[m [31m([mBank_Type[31m'first, Bank_Type'[mFirst[31m);[m
      [01;34mend[m [01;34mrecord[m[31m;[m      	 
   
   [01;34mtype[m Output_Device_Driver_Type[31m;[m
   
   [01;34mprotected[m [01;34mtype[m [01;30mOutputDriver_Type[m[31m([mDevice_Driver [31m:[m [01;34maccess[m Output_Device_Driver_Type[31m)[m [01;34mis[m
      [01;34mentry[m [01;30mReceive[m[31m([mMessage [31m:[m [01;34min[m Long[31m);[m   
   [01;34mend[m OutputDriver_Type[31m;[m
   
   [01;34mtype[m Output_Device_Driver_Type [01;34mis[m [01;34mlimited[m
      [01;34mrecord[m	 
	 Device_Info [31m:[m Device_Info_Type[31m;[m
	 Output [31m:[m Device_Access[31m;[m
	 Output_Driver [31m:[m [01;34maliased[m [01;30mOutputDriver_Type[m[31m([mOutput_Device_Driver_Type'[01;34mAccess[m[31m);[m	 
      [01;34mend[m [01;34mrecord[m[31m;[m            
   
   [01;34mtype[m Output_Device_Driver_Access [01;34mis[m [01;34maccess[m Output_Device_Driver_Type[31m;[m
   
   [01;34mtype[m Input_Device_Driver_Type[31m;[m
   [01;34mtask[m [01;34mtype[m [01;30mInputDriver_Type[m[31m([mDevice_Driver [31m:[m [01;34maccess[m Input_Device_Driver_Type[31m)[m [01;34mis[m
      [01;34mentry[m Start[31m;[m
      [01;34mentry[m Stop[31m;[m
      [01;34mentry[m Halt[31m;[m
      [01;34mentry[m [01;30mSend[m[31m([mMessage [31m:[m [01;34mout[m Long[31m);[m
   [01;34mend[m InputDriver_Type[31m;[m   
                  
   [01;34mtype[m Input_Device_Driver_Type [01;34mis[m [01;34mlimited[m
      [01;34mrecord[m
	 Device_Info   [31m:[m Device_Info_Type[31m;[m
	 Input         [31m:[m Device_Access[31m;[m
	 Input_Driver  [31m:[m [01;34maliased[m [01;30mInputDriver_Type[m[31m([mInput_Device_Driver_Type'[01;34mAccess[m[31m);[m	 	 
      [01;34mend[m [01;34mrecord[m[31m;[m      
   
   [01;34mtype[m Input_Device_Driver_Access [01;34mis[m [01;34maccess[m Input_Device_Driver_Type[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;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;34mtype[m Device_Driver_Record [01;34mis[m [01;34mnew[m Limited_Controlled [01;34mwith[m
      [01;34mrecord[m
	 Output_Device_Driver [31m:[m Output_Device_Driver_Access[31m;[m
	 Input_Device_Driver [31m:[m Input_Device_Driver_Access[31m;[m
	 Map_Geometry   [31m:[m Map_Geometry_Type[31m;[m
	 Sync       [31m:[m [32mBoolean[m [31m:=[m True[31m;[m
      [01;34mend[m [01;34mrecord[m[31m;[m
   
[01;34mend[m Libsens[31m.[mMIDI[31m.[mDrivers[31m;[m
