Miami 🌴📼
parsing midi files is not as scary as it sounds. 🐔
A lightweight, minimal dependency MIDI file parser designed for resource-constrained environments, making it great for WebAssembly applications.
Features
- Efficient MIDI Parsing: Parse MIDI chunks and their associated data with minimal overhead.
- Error Handling: Comprehensive error reporting for invalid or unsupported chunks.
Getting Started
Installation
Add the following to your Cargo.toml:
[]
= "0.1"
For serde support include the serde feature flag ;)
Example Usage
The following example demonstrates how to read and process MIDI chunks from a file:
use ;
Core Concepts
Raw MIDI Chunk
A raw MIDI chunk consists of a 4-character ASCII type identifier and a 32-bit unsigned integer specifying the length of its data:
Parsed MIDI Chunk
Parsed chunks are categorized into meaningful types such as HeaderChunk and TrackChunk:
Header Chunk
The HeaderChunk struct stores essential MIDI metadata:
The Future
There is currently still a lot of work I want to do with miami, mainly MIDI file generation and a MIDI runtime potentially based in WASM. I'm planning to continue maintaining and working on this for the foreseeable future.
Contributions
Contributions are welcome! If you find a bug or have a feature request, feel free to open an issue or submit a pull request.
License
This project is licensed under the MIT License. See the LICENSE file for details.