with Gmface.Gm_Common;                    use Gmface.Gm_Common;
with Gmface.Gm_Virtual;                   use Gmface.Gm_Virtual;
with Gmface.Gm_MIDI.Messages;             use Gmface.Gm_MIDI.Messages;
with Gmface.Gm_Virtual.Gmface.Gmface_Plugins;
use Gmface.Gm_Virtual.Gmface.Gmface_Plugins;
package Gmface.Gm_Virtual.Gmface.Prgm_Change is
   
   type Prgm_Change_Type is
      record
	 MSB_Select   : Value_Type := 0;
	 LSB_Select   : Value_Type := 0;
	 Prgm_Num     : Program_Type := 0;
	 
	 
	 Id      : Positive := 1;
	 Bar     : Positive := 1;
	 Number  : Time_Number_Type := 1;
	 Step    : Time_Unit_Type := 1;
	 Played  : Boolean := False;
	 Note    : String_Access := new String ' ("");
	 In_Loop : Boolean := False;	 
      end record;
   
   
   type PC_Array is array (Positive range <>) of Prgm_Change_Type;
   
   
   type Prgm_Change_Plugin_Record is
     new Gmface_Plugin_Class(PC_List) with
      record
	 Sequencer : Pc_Array(1..128);
	 Bars_Max  : Positive := 128;	 	 
      end record;
   procedure Print (Filename : in String; Plug : in Prgm_Change_Plugin_Record);
end Gmface.Gm_Virtual.Gmface.Prgm_Change;