package Libsens.Virtual is pragma Pure (Libsens.Virtual); -- Form index. type Form_Index_Type is new Positive range 1..8; -- The forms used on mixed forms. type Forms_Names_Set_Type is array (Form_Index_Type) of access String; Forms_Names_Set : constant Forms_Names_Set_Type := ( new String ' ("Minimal"), new String ' ("Hard tech"), new String ' ("Acid"), new String ' ("Transe"), new String ' ("Techno"), new String ' ("Tribe"), new String ' ("Drums and Bass"), new String ' ("Hard Core")); -- Mixed forms type. type Mixed_Form_Type is (Fusion, Fission, Unmixed, Silence); type Category_Index_Type is new Positive range 1..16; type Categories_Set_Type is array (Category_Index_Type range <>) of access String; Categories_Default : constant Categories_Set_Type(1..16) := (new String ' ("lead"), new String ' ("bass"), new String ' ("string N pad"), new String ' ("Guitar N Pluck"), new String ' ("Fx"), new String ' ("synth hard"), new String ' ("synth soft"), new String ' ("keyboard"), new String ' ("hit N drum"), new String ' ("drums kit"), new String ' ("audio in"), new String ' ("motion"), new String ' ("bell N Decay"), new String ' ("user"), new String ' ("arp seq"), new String ' ("voccoder") ); type Categories_Record(Category_Max : Category_Index_Type) is tagged record Category : Categories_Set_type(1..Category_Max); Last : Category_Index_type := 1; end record; --type Categories_Access is access all Categories_Record'Class; type Break_Type is (Null_Break, Down_Break, Up_Break, Full_Break); type True_Table_Type is array (Category_Index_Type, Break_Type, Break_Type) of Boolean; function Is_Formed(True_Table : True_Table_Type; Category_Index : Category_Index_Type; Prev : Break_Type := Null_Break; Next : Break_Type := Null_Break) return Boolean; --True_Table_Default : True_Table_Type := (others => (others => (others => False))); type Breaks_Set_Type is array (Positive range <>) of Break_Type; --type Breaks_Set_Access is access Breaks_Set_Type; Key_Max : constant Positive := 128; type Key_Type is mod key_Max; Sens_Max : constant Positive := 128; type Sens_Type is mod Sens_Max; Length_Max : constant Positive := 128; type Length_Type is mod Length_Max; Key_Default : constant Key_Type := 0; Sens_Default : constant Sens_Type := 0; Length_Default : constant Length_Type := 1; type Note_Type is tagged record Key : Key_Type := Key_Default; Sens : Sens_Type := Sens_Default; Length : Length_Type := Length_Default; end record; Null_Note : constant Note_Type := (Key_Default, Sens_Default, Length_default); type Octave_Num is new Integer range -2 .. 2; type Device_Num is new Positive range 1 .. 128; type Channel_num is new Positive range 1 .. 16; type Plugin_num is new Positive range 1 .. 256; type Plugin_Enum is (Null_Plugin, PC_List, CC_List, Step_Seq, Arp_Seq, NN_Mono, NN_Poly, NN_Rythm, Gen_Bass, Gen_Synth, Gen_Drums, NL_Mod); end Libsens.Virtual;