------------------------------ROM_MIDI.vhd------------------------------------- library IEEE; use IEEE.std_logic_1164.all; use IEEE.numeric_std.all; --library work; --use work.midi_package.all; entity ROM_MIDI is port( Rom_Address : in std_logic_vector(5 downto 0); Rom_out : out std_logic_vector(7 downto 0)) ; end ROM_MIDI; architecture A of ROM_MIDI is type tab_rom is array (0 to 49) of std_logic_vector(7 downto 0); --dans les 33 cases du tab_rom il y a un vecteur de 8bits qui correspond à un byte du fichier midi constant filter_rom : tab_rom := (0 => x"4D" , 1 => x"54" , 2 => x"68" , 3 => x"64" , -- 4 => x"00" , 5 => x"00" , 6 => x"00" , 7 => x"06" , -- 8 => x"00" , 9 => x"01" , 10 => x"00" , 11 => x"01" , -- 12 => x"00" , 13 => x"80" , 14 => x"4D" , 15 => x"54" , -- 16 => x"72" , 17 => x"6B" , 18 => x"00" , 19 => x"00" , -- 20 => x"00" , 21 => x"0A" , 22 => x"3F" , 23 => x"90" , -- 24 => x"3C" , 25 => x"60" , 26 => x"3F" , 27 => x"90" , -- 28 => x"32" , 29 => x"20" , 30 => x"3F" , 31 => x"90" , 32 => x"35" , 33 => x"40" , 34 => x"7F" , 35 => x"80" , 36 => x"3C" , 37 => x"00" , 38 => x"5F" , 39 => x"80" , -- 40 => x"32" , 41 => x"00" , 42 => x"3F" , 43 => x"80", 44 => x"35" , 45 => x"00" , 46 => x"00" , 47 => x"FF", 48 => x"2F" , 49 => x"00" ) ; -- -- 4D 54 68 64 00 00 00 06 00 01 00 01 00 80 : HEADER -- 4D 54 72 6B 00 00 00 0A : TRACK HEADER -- 3F 90 3C 60 : NOTE ON -- 3F 90 32 20 : NOTE ON 2 -- 3F 90 35 40 : NOTE ON 3 -- 7F 80 3C 00 : NOTE OFF -- 5F 80 32 00 : NOTE OFF 2 -- 3F 80 35 00 : NOTE OFF 3 -- 00 FF 2F 00 : TRACK OUT begin Rom_out <= filter_rom(to_integer(unsigned(Rom_Address))); end A;