MIDI Reader
As a collaborative high school project, we developed a MIDI reader designed to interpret the hexadecimal data within MIDI files. The primary goal was to extract musical note and timing information, with the ultimate aim of sending these instructions to robotic musicians. While the physical robots were never completed due to an unrelated lab incident (a 3D printer malfunction), the MIDI reader component was successfully implemented, accurately parsing files and outputting the note and timing data to the console for verification.
Features
- Parses standard MIDI (.mid) files.
- Reads and interprets raw hexadecimal data from MIDI tracks.
- Extracts MIDI note events (note on/off, pitch, velocity).
- Calculates precise timing for note events (delta-times).
- Outputs structured note and timing data to the console.
- Designed as the data-processing core for robotic instrument control.
Gallery



Technical Details
The core of this project involved low-level file parsing. The program was designed to open a MIDI file, read its contents as hexadecimal data, and interpret the MIDI message specifications. This included identifying event types (like "note on" or "note off" messages), parsing the associated data bytes for parameters such as pitch (note value) and velocity (how hard the note is played), and crucially, calculating the precise timing for each event based on the MIDI file's delta-time system. The extracted information, representing a sequence of musical instructions, was then formatted and printed to the console, demonstrating the correct interpretation of the MIDI data stream. This was the first critical step in a larger system intended to automate musical performance by robots.