# midilib
*Erlang MIDI Library*
[![Build Status][gh-actions-badge]][gh-actions]
[![Erlang Versions][erlang-badge]][versions]
[![Tag][github-tag-badge]][github-tag]
[![Project Logo][logo]][logo-large]
## Setup
Include one of the following in your project's `rebar.config`:
``` erlang
%% Latest Release
{deps, [
{midilib, "0.4.2"}
]}.
```
or
``` erlang
%% Development
{deps, [
{midilib, {git, "https://github.com/erlsci/midilib", {branch, "release/0.4.x"}}}
]}.
```
## `midimsg`
Functions for creating MIDI messages, designed to be used with `term_to_binary/1`
and sent to Ports-capabale servers.
## `midifile`
Reads and writes type 1 MIDI files (note that type 1 files may contain any number
of tracks that would be performed synchronously.
## `midilib_util`
Utility functions for handling note lengths, beats, quantization, and note
names, and more.
## Testing
Perform any checks / tests:
``` shell
$ rebar3 as test check
```
## Resources
* [MIDI](https://en.wikipedia.org/wiki/MIDI) on WikiPedia
* [MIDI 1.0 Specification](https://www.midi.org/specifications/item/the-midi-1-0-specification)
* [MIDI File Format Specification](https://www.midi.org/specifications/file-format-specifications/standard-midi-files)
## License
MIT License
[//]: ---Named-Links---
[logo]: priv/images/logo-v1-x250.png
[logo-large]: priv/images/logo-v1-x1000.png
[github]: https://github.com/erlsci/midilib
[gh-actions-badge]: https://github.com/erlsci/midilib/workflows/ci%2Fcd/badge.svg
[gh-actions]: https://github.com/erlsci/midilib/actions
[erlang-badge]: https://img.shields.io/badge/erlang-21%20to%2027-blue.svg
[versions]: https://github.com/erlsci/osc/blob/master/.github/workflows/cicd.yml
[github-tag]: https://github.com/erlsci/midilib/tags
[github-tag-badge]: https://img.shields.io/github/tag/erlsci/midilib.svg
[github-downloads]: https://img.shields.io/github/downloads/erlsci/midilib/total.svg