with System; with Libsens.MIDI.Portmidi; use Libsens.MIDI.Portmidi; with Interfaces.C; use Interfaces; package Libsens.MIDI.Devices is pragma Elaborate_Body(Libsens.MIDI.Devices); type Mode_Type is (MIDI_In, MIDI_Out); -- Le mode de dentrée/sortie type Device_Type is record Initialized : Boolean := False; Mode : Mode_Type; Id : Integer := -1; Addr : access System.Address; The_Deviceinfo : access Portmidi.DeviceInfo; end record; -- Le type Device_type.  type Device_Access is access Device_Type; procedure Initialize (Device : in out Device_Type; Mode : in Mode_Type); -- Initialise un périphérique MIDI function Initialized(Device : in Device_Type) return Boolean; -- Renvoie vrai si le périphérique est initialisé.  procedure Open (Device : in out Device_Type); -- Ouvre un périphérique selon le mode d'entrée sortie du périphérique. procedure Write (Device : in Device_Type; Message : in C.Long); -- Ecrit un message court à detisnation du périphérique de sortie. procedure Read (Device : in Device_Type; Message : out C.Long); -- Lit un message en provenance du périphérique d'entrée. procedure Close (Device : in out Device_Type); -- Ferme un périphérique. function Name(Device : in Device_Type) return String; -- Renvoie le nom du périphérique. Not_Initialized : exception; -- Sera levée si l'on tente d'ouvrir un périphérique non initilaisé. Mode_Error : exception; -- Sera levée si l'on tente d'écrire sur un périphérique d'entrée ou -- si l'on tente de lire sur un périphérique de sortie.  end Libsens.MIDI.Devices;