with Libsens.Mal;                       use Libsens.Mal;
with Libsens.Common;                    use Libsens.Common;

with Libsens.MIDI.Messages;             use Libsens.MIDI.Messages;

package Libsens.Arch is

   use type Channel_Type;

   type Arche_Type(Form : Form_Type; Category : Category_Type) is abstract tagged
      record
	 Filename : access String;
      end record;
   type arche_access is access all arche_type'class;
   function Compose (Arche : in Arche_Type; Channel : in Channel_Type) return Seq_Vectors.Vector is abstract;

  type ACID_BASS_Type is new Arche_Type(Form => ACID, Category => BASS) with null record;
  type ACID_LEAD_Type is new Arche_Type(Form => ACID, Category => LEAD) with null record;
  type ACID_SYNTH_HARD_Type is new Arche_Type(Form => ACID, Category => SYNTH_HARD) with null record;
  type ACID_SYNTH_SOFT_Type is new Arche_Type(Form => ACID, Category => SYNTH_SOFT) with null record;
  type ACID_MOTION_Type is new Arche_Type(Form => ACID, Category => MOTION) with null record;
  type ACID_STRINGS_N_PADS_Type is new Arche_Type(Form => ACID, Category => STRINGS_N_PADS) with null record;
  type ACID_KEYBOARD_Type is new Arche_Type(Form => ACID, Category => KEYBOARD) with null record;
  type ACID_GUITARE_N_PLUCK_Type is new Arche_Type(Form => ACID, Category => GUITARE_N_PLUCK) with null record;
  type ACID_BELL_N_DECAY_Type is new Arche_Type(Form => ACID, Category => BELL_N_DECAY) with null record;
  type ACID_HIT_N_DRUM_Type is new Arche_Type(Form => ACID, Category => HIT_N_DRUM) with null record;
  type ACID_S_E_Type is new Arche_Type(Form => ACID, Category => S_E) with null record;
  type ACID_ARP_SEQ_Type is new Arche_Type(Form => ACID, Category => ARP_SEQ) with null record;
  type ACID_SPLIT_Type is new Arche_Type(Form => ACID, Category => SPLIT) with null record;
  type ACID_AUDIO_IN_Type is new Arche_Type(Form => ACID, Category => AUDIO_IN) with null record;
  type ACID_VOCODER_Type is new Arche_Type(Form => ACID, Category => VOCODER) with null record;
  type ACID_USER_Type is new Arche_Type(Form => ACID, Category => USER) with null record;
  type ACID_DRUMS_KIT_Type is new Arche_Type(Form => ACID, Category => DRUMS_KIT) with null record;
  type TECHNO_BASS_Type is new Arche_Type(Form => TECHNO, Category => BASS) with null record;
  type TECHNO_LEAD_Type is new Arche_Type(Form => TECHNO, Category => LEAD) with null record;
  type TECHNO_SYNTH_HARD_Type is new Arche_Type(Form => TECHNO, Category => SYNTH_HARD) with null record;
  type TECHNO_SYNTH_SOFT_Type is new Arche_Type(Form => TECHNO, Category => SYNTH_SOFT) with null record;
  type TECHNO_MOTION_Type is new Arche_Type(Form => TECHNO, Category => MOTION) with null record;
  type TECHNO_STRINGS_N_PADS_Type is new Arche_Type(Form => TECHNO, Category => STRINGS_N_PADS) with null record;
  type TECHNO_KEYBOARD_Type is new Arche_Type(Form => TECHNO, Category => KEYBOARD) with null record;
  type TECHNO_GUITARE_N_PLUCK_Type is new Arche_Type(Form => TECHNO, Category => GUITARE_N_PLUCK) with null record;
  type TECHNO_BELL_N_DECAY_Type is new Arche_Type(Form => TECHNO, Category => BELL_N_DECAY) with null record;
  type TECHNO_HIT_N_DRUM_Type is new Arche_Type(Form => TECHNO, Category => HIT_N_DRUM) with null record;
  type TECHNO_S_E_Type is new Arche_Type(Form => TECHNO, Category => S_E) with null record;
  type TECHNO_ARP_SEQ_Type is new Arche_Type(Form => TECHNO, Category => ARP_SEQ) with null record;
  type TECHNO_SPLIT_Type is new Arche_Type(Form => TECHNO, Category => SPLIT) with null record;
  type TECHNO_AUDIO_IN_Type is new Arche_Type(Form => TECHNO, Category => AUDIO_IN) with null record;
  type TECHNO_VOCODER_Type is new Arche_Type(Form => TECHNO, Category => VOCODER) with null record;
  type TECHNO_USER_Type is new Arche_Type(Form => TECHNO, Category => USER) with null record;
  type TECHNO_DRUMS_KIT_Type is new Arche_Type(Form => TECHNO, Category => DRUMS_KIT) with null record;
  type TRIBE_BASS_Type is new Arche_Type(Form => TRIBE, Category => BASS) with null record;
  type TRIBE_LEAD_Type is new Arche_Type(Form => TRIBE, Category => LEAD) with null record;
  type TRIBE_SYNTH_HARD_Type is new Arche_Type(Form => TRIBE, Category => SYNTH_HARD) with null record;
  type TRIBE_SYNTH_SOFT_Type is new Arche_Type(Form => TRIBE, Category => SYNTH_SOFT) with null record;
  type TRIBE_MOTION_Type is new Arche_Type(Form => TRIBE, Category => MOTION) with null record;
  type TRIBE_STRINGS_N_PADS_Type is new Arche_Type(Form => TRIBE, Category => STRINGS_N_PADS) with null record;
  type TRIBE_KEYBOARD_Type is new Arche_Type(Form => TRIBE, Category => KEYBOARD) with null record;
  type TRIBE_GUITARE_N_PLUCK_Type is new Arche_Type(Form => TRIBE, Category => GUITARE_N_PLUCK) with null record;
  type TRIBE_BELL_N_DECAY_Type is new Arche_Type(Form => TRIBE, Category => BELL_N_DECAY) with null record;
  type TRIBE_HIT_N_DRUM_Type is new Arche_Type(Form => TRIBE, Category => HIT_N_DRUM) with null record;
  type TRIBE_S_E_Type is new Arche_Type(Form => TRIBE, Category => S_E) with null record;
  type TRIBE_ARP_SEQ_Type is new Arche_Type(Form => TRIBE, Category => ARP_SEQ) with null record;
  type TRIBE_SPLIT_Type is new Arche_Type(Form => TRIBE, Category => SPLIT) with null record;
  type TRIBE_AUDIO_IN_Type is new Arche_Type(Form => TRIBE, Category => AUDIO_IN) with null record;
  type TRIBE_VOCODER_Type is new Arche_Type(Form => TRIBE, Category => VOCODER) with null record;
  type TRIBE_USER_Type is new Arche_Type(Form => TRIBE, Category => USER) with null record;
  type TRIBE_DRUMS_KIT_Type is new Arche_Type(Form => TRIBE, Category => DRUMS_KIT) with null record;
  type HARDTECH_BASS_Type is new Arche_Type(Form => HARDTECH, Category => BASS) with null record;
  type HARDTECH_LEAD_Type is new Arche_Type(Form => HARDTECH, Category => LEAD) with null record;
  type HARDTECH_SYNTH_HARD_Type is new Arche_Type(Form => HARDTECH, Category => SYNTH_HARD) with null record;
  type HARDTECH_SYNTH_SOFT_Type is new Arche_Type(Form => HARDTECH, Category => SYNTH_SOFT) with null record;
  type HARDTECH_MOTION_Type is new Arche_Type(Form => HARDTECH, Category => MOTION) with null record;
  type HARDTECH_STRINGS_N_PADS_Type is new Arche_Type(Form => HARDTECH, Category => STRINGS_N_PADS) with null record;
  type HARDTECH_KEYBOARD_Type is new Arche_Type(Form => HARDTECH, Category => KEYBOARD) with null record;
  type HARDTECH_GUITARE_N_PLUCK_Type is new Arche_Type(Form => HARDTECH, Category => GUITARE_N_PLUCK) with null record;
  type HARDTECH_BELL_N_DECAY_Type is new Arche_Type(Form => HARDTECH, Category => BELL_N_DECAY) with null record;
  type HARDTECH_HIT_N_DRUM_Type is new Arche_Type(Form => HARDTECH, Category => HIT_N_DRUM) with null record;
  type HARDTECH_S_E_Type is new Arche_Type(Form => HARDTECH, Category => S_E) with null record;
  type HARDTECH_ARP_SEQ_Type is new Arche_Type(Form => HARDTECH, Category => ARP_SEQ) with null record;
  type HARDTECH_SPLIT_Type is new Arche_Type(Form => HARDTECH, Category => SPLIT) with null record;
  type HARDTECH_AUDIO_IN_Type is new Arche_Type(Form => HARDTECH, Category => AUDIO_IN) with null record;
  type HARDTECH_VOCODER_Type is new Arche_Type(Form => HARDTECH, Category => VOCODER) with null record;
  type HARDTECH_USER_Type is new Arche_Type(Form => HARDTECH, Category => USER) with null record;
  type HARDTECH_DRUMS_KIT_Type is new Arche_Type(Form => HARDTECH, Category => DRUMS_KIT) with null record;
  type HARDCORE_BASS_Type is new Arche_Type(Form => HARDCORE, Category => BASS) with null record;
  type HARDCORE_LEAD_Type is new Arche_Type(Form => HARDCORE, Category => LEAD) with null record;
  type HARDCORE_SYNTH_HARD_Type is new Arche_Type(Form => HARDCORE, Category => SYNTH_HARD) with null record;
  type HARDCORE_SYNTH_SOFT_Type is new Arche_Type(Form => HARDCORE, Category => SYNTH_SOFT) with null record;
  type HARDCORE_MOTION_Type is new Arche_Type(Form => HARDCORE, Category => MOTION) with null record;
  type HARDCORE_STRINGS_N_PADS_Type is new Arche_Type(Form => HARDCORE, Category => STRINGS_N_PADS) with null record;
  type HARDCORE_KEYBOARD_Type is new Arche_Type(Form => HARDCORE, Category => KEYBOARD) with null record;
  type HARDCORE_GUITARE_N_PLUCK_Type is new Arche_Type(Form => HARDCORE, Category => GUITARE_N_PLUCK) with null record;
  type HARDCORE_BELL_N_DECAY_Type is new Arche_Type(Form => HARDCORE, Category => BELL_N_DECAY) with null record;
  type HARDCORE_HIT_N_DRUM_Type is new Arche_Type(Form => HARDCORE, Category => HIT_N_DRUM) with null record;
  type HARDCORE_S_E_Type is new Arche_Type(Form => HARDCORE, Category => S_E) with null record;
  type HARDCORE_ARP_SEQ_Type is new Arche_Type(Form => HARDCORE, Category => ARP_SEQ) with null record;
  type HARDCORE_SPLIT_Type is new Arche_Type(Form => HARDCORE, Category => SPLIT) with null record;
  type HARDCORE_AUDIO_IN_Type is new Arche_Type(Form => HARDCORE, Category => AUDIO_IN) with null record;
  type HARDCORE_VOCODER_Type is new Arche_Type(Form => HARDCORE, Category => VOCODER) with null record;
  type HARDCORE_USER_Type is new Arche_Type(Form => HARDCORE, Category => USER) with null record;
  type HARDCORE_DRUMS_KIT_Type is new Arche_Type(Form => HARDCORE, Category => DRUMS_KIT) with null record;
  type TRANCE_BASS_Type is new Arche_Type(Form => TRANCE, Category => BASS) with null record;
  type TRANCE_LEAD_Type is new Arche_Type(Form => TRANCE, Category => LEAD) with null record;
  type TRANCE_SYNTH_HARD_Type is new Arche_Type(Form => TRANCE, Category => SYNTH_HARD) with null record;
  type TRANCE_SYNTH_SOFT_Type is new Arche_Type(Form => TRANCE, Category => SYNTH_SOFT) with null record;
  type TRANCE_MOTION_Type is new Arche_Type(Form => TRANCE, Category => MOTION) with null record;
  type TRANCE_STRINGS_N_PADS_Type is new Arche_Type(Form => TRANCE, Category => STRINGS_N_PADS) with null record;
  type TRANCE_KEYBOARD_Type is new Arche_Type(Form => TRANCE, Category => KEYBOARD) with null record;
  type TRANCE_GUITARE_N_PLUCK_Type is new Arche_Type(Form => TRANCE, Category => GUITARE_N_PLUCK) with null record;
  type TRANCE_BELL_N_DECAY_Type is new Arche_Type(Form => TRANCE, Category => BELL_N_DECAY) with null record;
  type TRANCE_HIT_N_DRUM_Type is new Arche_Type(Form => TRANCE, Category => HIT_N_DRUM) with null record;
  type TRANCE_S_E_Type is new Arche_Type(Form => TRANCE, Category => S_E) with null record;
  type TRANCE_ARP_SEQ_Type is new Arche_Type(Form => TRANCE, Category => ARP_SEQ) with null record;
  type TRANCE_SPLIT_Type is new Arche_Type(Form => TRANCE, Category => SPLIT) with null record;
  type TRANCE_AUDIO_IN_Type is new Arche_Type(Form => TRANCE, Category => AUDIO_IN) with null record;
  type TRANCE_VOCODER_Type is new Arche_Type(Form => TRANCE, Category => VOCODER) with null record;
  type TRANCE_USER_Type is new Arche_Type(Form => TRANCE, Category => USER) with null record;
  type TRANCE_DRUMS_KIT_Type is new Arche_Type(Form => TRANCE, Category => DRUMS_KIT) with null record;
  type MINIMAL_BASS_Type is new Arche_Type(Form => MINIMAL, Category => BASS) with null record;
  type MINIMAL_LEAD_Type is new Arche_Type(Form => MINIMAL, Category => LEAD) with null record;
  type MINIMAL_SYNTH_HARD_Type is new Arche_Type(Form => MINIMAL, Category => SYNTH_HARD) with null record;
  type MINIMAL_SYNTH_SOFT_Type is new Arche_Type(Form => MINIMAL, Category => SYNTH_SOFT) with null record;
  type MINIMAL_MOTION_Type is new Arche_Type(Form => MINIMAL, Category => MOTION) with null record;
  type MINIMAL_STRINGS_N_PADS_Type is new Arche_Type(Form => MINIMAL, Category => STRINGS_N_PADS) with null record;
  type MINIMAL_KEYBOARD_Type is new Arche_Type(Form => MINIMAL, Category => KEYBOARD) with null record;
  type MINIMAL_GUITARE_N_PLUCK_Type is new Arche_Type(Form => MINIMAL, Category => GUITARE_N_PLUCK) with null record;
  type MINIMAL_BELL_N_DECAY_Type is new Arche_Type(Form => MINIMAL, Category => BELL_N_DECAY) with null record;
  type MINIMAL_HIT_N_DRUM_Type is new Arche_Type(Form => MINIMAL, Category => HIT_N_DRUM) with null record;
  type MINIMAL_S_E_Type is new Arche_Type(Form => MINIMAL, Category => S_E) with null record;
  type MINIMAL_ARP_SEQ_Type is new Arche_Type(Form => MINIMAL, Category => ARP_SEQ) with null record;
  type MINIMAL_SPLIT_Type is new Arche_Type(Form => MINIMAL, Category => SPLIT) with null record;
  type MINIMAL_AUDIO_IN_Type is new Arche_Type(Form => MINIMAL, Category => AUDIO_IN) with null record;
  type MINIMAL_VOCODER_Type is new Arche_Type(Form => MINIMAL, Category => VOCODER) with null record;
  type MINIMAL_USER_Type is new Arche_Type(Form => MINIMAL, Category => USER) with null record;
  type MINIMAL_DRUMS_KIT_Type is new Arche_Type(Form => MINIMAL, Category => DRUMS_KIT) with null record;
  type DNB_BASS_Type is new Arche_Type(Form => DNB, Category => BASS) with null record;
  type DNB_LEAD_Type is new Arche_Type(Form => DNB, Category => LEAD) with null record;
  type DNB_SYNTH_HARD_Type is new Arche_Type(Form => DNB, Category => SYNTH_HARD) with null record;
  type DNB_SYNTH_SOFT_Type is new Arche_Type(Form => DNB, Category => SYNTH_SOFT) with null record;
  type DNB_MOTION_Type is new Arche_Type(Form => DNB, Category => MOTION) with null record;
  type DNB_STRINGS_N_PADS_Type is new Arche_Type(Form => DNB, Category => STRINGS_N_PADS) with null record;
  type DNB_KEYBOARD_Type is new Arche_Type(Form => DNB, Category => KEYBOARD) with null record;
  type DNB_GUITARE_N_PLUCK_Type is new Arche_Type(Form => DNB, Category => GUITARE_N_PLUCK) with null record;
  type DNB_BELL_N_DECAY_Type is new Arche_Type(Form => DNB, Category => BELL_N_DECAY) with null record;
  type DNB_HIT_N_DRUM_Type is new Arche_Type(Form => DNB, Category => HIT_N_DRUM) with null record;
  type DNB_S_E_Type is new Arche_Type(Form => DNB, Category => S_E) with null record;
  type DNB_ARP_SEQ_Type is new Arche_Type(Form => DNB, Category => ARP_SEQ) with null record;
  type DNB_SPLIT_Type is new Arche_Type(Form => DNB, Category => SPLIT) with null record;
  type DNB_AUDIO_IN_Type is new Arche_Type(Form => DNB, Category => AUDIO_IN) with null record;
  type DNB_VOCODER_Type is new Arche_Type(Form => DNB, Category => VOCODER) with null record;
  type DNB_USER_Type is new Arche_Type(Form => DNB, Category => USER) with null record;
  type DNB_DRUMS_KIT_Type is new Arche_Type(Form => DNB, Category => DRUMS_KIT) with null record;


  function Compose (Arche : in ACID_BASS_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in ACID_LEAD_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in ACID_SYNTH_HARD_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in ACID_SYNTH_SOFT_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in ACID_MOTION_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in ACID_STRINGS_N_PADS_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in ACID_KEYBOARD_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in ACID_GUITARE_N_PLUCK_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in ACID_BELL_N_DECAY_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in ACID_HIT_N_DRUM_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in ACID_S_E_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in ACID_ARP_SEQ_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in ACID_SPLIT_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in ACID_AUDIO_IN_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in ACID_VOCODER_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in ACID_USER_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in ACID_DRUMS_KIT_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in TECHNO_BASS_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in TECHNO_LEAD_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in TECHNO_SYNTH_HARD_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in TECHNO_SYNTH_SOFT_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in TECHNO_MOTION_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in TECHNO_STRINGS_N_PADS_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in TECHNO_KEYBOARD_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in TECHNO_GUITARE_N_PLUCK_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in TECHNO_BELL_N_DECAY_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in TECHNO_HIT_N_DRUM_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in TECHNO_S_E_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in TECHNO_ARP_SEQ_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in TECHNO_SPLIT_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in TECHNO_AUDIO_IN_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in TECHNO_VOCODER_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in TECHNO_USER_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in TECHNO_DRUMS_KIT_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in TRIBE_BASS_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in TRIBE_LEAD_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in TRIBE_SYNTH_HARD_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in TRIBE_SYNTH_SOFT_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in TRIBE_MOTION_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in TRIBE_STRINGS_N_PADS_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in TRIBE_KEYBOARD_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in TRIBE_GUITARE_N_PLUCK_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in TRIBE_BELL_N_DECAY_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in TRIBE_HIT_N_DRUM_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in TRIBE_S_E_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in TRIBE_ARP_SEQ_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in TRIBE_SPLIT_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in TRIBE_AUDIO_IN_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in TRIBE_VOCODER_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in TRIBE_USER_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in TRIBE_DRUMS_KIT_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in HARDTECH_BASS_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in HARDTECH_LEAD_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in HARDTECH_SYNTH_HARD_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in HARDTECH_SYNTH_SOFT_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in HARDTECH_MOTION_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in HARDTECH_STRINGS_N_PADS_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in HARDTECH_KEYBOARD_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in HARDTECH_GUITARE_N_PLUCK_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in HARDTECH_BELL_N_DECAY_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in HARDTECH_HIT_N_DRUM_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in HARDTECH_S_E_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in HARDTECH_ARP_SEQ_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in HARDTECH_SPLIT_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in HARDTECH_AUDIO_IN_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in HARDTECH_VOCODER_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in HARDTECH_USER_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in HARDTECH_DRUMS_KIT_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in HARDCORE_BASS_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in HARDCORE_LEAD_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in HARDCORE_SYNTH_HARD_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in HARDCORE_SYNTH_SOFT_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in HARDCORE_MOTION_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in HARDCORE_STRINGS_N_PADS_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in HARDCORE_KEYBOARD_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in HARDCORE_GUITARE_N_PLUCK_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in HARDCORE_BELL_N_DECAY_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in HARDCORE_HIT_N_DRUM_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in HARDCORE_S_E_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in HARDCORE_ARP_SEQ_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in HARDCORE_SPLIT_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in HARDCORE_AUDIO_IN_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in HARDCORE_VOCODER_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in HARDCORE_USER_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in HARDCORE_DRUMS_KIT_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in TRANCE_BASS_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in TRANCE_LEAD_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in TRANCE_SYNTH_HARD_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in TRANCE_SYNTH_SOFT_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in TRANCE_MOTION_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in TRANCE_STRINGS_N_PADS_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in TRANCE_KEYBOARD_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in TRANCE_GUITARE_N_PLUCK_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in TRANCE_BELL_N_DECAY_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in TRANCE_HIT_N_DRUM_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in TRANCE_S_E_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in TRANCE_ARP_SEQ_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in TRANCE_SPLIT_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in TRANCE_AUDIO_IN_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in TRANCE_VOCODER_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in TRANCE_USER_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in TRANCE_DRUMS_KIT_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in MINIMAL_BASS_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in MINIMAL_LEAD_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in MINIMAL_SYNTH_HARD_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in MINIMAL_SYNTH_SOFT_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in MINIMAL_MOTION_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in MINIMAL_STRINGS_N_PADS_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in MINIMAL_KEYBOARD_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in MINIMAL_GUITARE_N_PLUCK_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in MINIMAL_BELL_N_DECAY_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in MINIMAL_HIT_N_DRUM_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in MINIMAL_S_E_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in MINIMAL_ARP_SEQ_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in MINIMAL_SPLIT_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in MINIMAL_AUDIO_IN_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in MINIMAL_VOCODER_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in MINIMAL_USER_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in MINIMAL_DRUMS_KIT_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in DNB_BASS_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in DNB_LEAD_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in DNB_SYNTH_HARD_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in DNB_SYNTH_SOFT_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in DNB_MOTION_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in DNB_STRINGS_N_PADS_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in DNB_KEYBOARD_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in DNB_GUITARE_N_PLUCK_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in DNB_BELL_N_DECAY_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in DNB_HIT_N_DRUM_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in DNB_S_E_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in DNB_ARP_SEQ_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in DNB_SPLIT_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in DNB_AUDIO_IN_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in DNB_VOCODER_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in DNB_USER_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;
  function Compose (Arche : in DNB_DRUMS_KIT_Type; Channel : in Channel_Type) return Seq_Vectors.Vector;


  procedure Finalize;

end Libsens.Arch;