with Libsens.MIDI.Messages; use Libsens.MIDI.Messages; with Libsens.Mal; use Libsens.Mal; package Libsens.Data is type Word16_Type is mod 2**16; -- Definit un type de 16 bits. -- Est utilisé pour construire des phrases. -- Un bit à 1 signifit que la note sera jouer, 0 si non. type Word16_Index_Type is mod 16; -- Définit un index permettant d'adresser un bit dans un Word16_Type; type Note_Word16_Type is record key : Value_Type := 36; sens : Value_Type := 100; Length : Value_Type := 0; Sentence : Word16_Type := 0; end record; -- Définit une phrase de 16 pas pour une note avec une vélocité et une durée de note. Null_Note : constant Note_Word16_Type := (36,100, 0, 0); -- La phrase par defaut dans les tableaux de phrases. type Sentence_Type is array (Value_Type range <>) of Note_Word16_Type; -- Un tableau de phrases. function Beat(Word16 : in Word16_Type; Index : in Natural) return Boolean; -- Renvoie Vrai si le bit correspondant à l'"index" à pour valeur 1. -- La position dans le mot est calculé modulo 16. procedure Pattern(From : in Sentence_Type; Channel : in Channel_Type; Seq : in out Seq_Vectors.vector); end Libsens.Data;