{"id":37220375,"url":"https://github.com/matthewfritz/go-midi","last_synced_at":"2026-01-15T01:23:23.290Z","repository":{"id":93299084,"uuid":"527352114","full_name":"matthewfritz/go-midi","owner":"matthewfritz","description":"Go implementation of a library to represent MIDI data.","archived":false,"fork":false,"pushed_at":"2022-09-05T01:41:57.000Z","size":73,"stargazers_count":0,"open_issues_count":12,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-06-19T18:13:24.890Z","etag":null,"topics":["go","go-library","golang","golang-library","midi","midi-api","midi-messages","midi-parser"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/matthewfritz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-08-21T23:35:44.000Z","updated_at":"2022-08-25T04:55:37.000Z","dependencies_parsed_at":"2023-06-27T20:47:11.506Z","dependency_job_id":null,"html_url":"https://github.com/matthewfritz/go-midi","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/matthewfritz/go-midi","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matthewfritz%2Fgo-midi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matthewfritz%2Fgo-midi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matthewfritz%2Fgo-midi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matthewfritz%2Fgo-midi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/matthewfritz","download_url":"https://codeload.github.com/matthewfritz/go-midi/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matthewfritz%2Fgo-midi/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28441031,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-15T00:55:22.719Z","status":"ssl_error","status_checked_at":"2026-01-15T00:55:20.945Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["go","go-library","golang","golang-library","midi","midi-api","midi-messages","midi-parser"],"created_at":"2026-01-15T01:23:21.111Z","updated_at":"2026-01-15T01:23:23.227Z","avatar_url":"https://github.com/matthewfritz.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Go MIDI\n\nGo implementation of a library to represent MIDI data.\n\nThis began as a passion project to learn and implement a workable amount of the MIDI 1.0 specification from scratch so I could have complete control over certain specific digital instruments and DAW controls.\n\nI had been trying to solve a very specific problem I was having with a hardware MIDI controller and its percussion pads too. The library then began growing into a general representation of the specification(s) from there.\n\n## Table of Contents\n\n   * [Installation](#installation)\n   * [Roadmap](#roadmap)\n      * [MIDI 1.0 Roadmap](#midi-10-roadmap)\n      * [MIDI 2.0 Roadmap](#midi-20-roadmap)\n   * [Resources](#resources)\n      * [Official Specifications](#official-specifications)\n      * [Books](#books)\n      * [Assorted MIDI and Digital Music Information](#assorted-midi-and-digital-music-information)\n         * [Assorted MIDI 1.0 Information](#assorted-midi-10-information)\n         * [Digital Music Information](#digital-music-information)\n\n## Installation\n\n```\ngo get github.com/matthewfritz/go-midi\n```\n\n## Roadmap\n\n### MIDI 1.0 Roadmap\n\n#### Channel Voice Messages\n\n   * ✅ [Note-On](https://github.com/matthewfritz/go-midi/issues/3)\n   * ✅ [Note-Off](https://github.com/matthewfritz/go-midi/issues/4)\n   * ✅ [Polyphonic Key Pressure](https://github.com/matthewfritz/go-midi/issues/5)\n   * ✅ [Channel Pressure](https://github.com/matthewfritz/go-midi/issues/6)\n   * ✅ [Program Change](https://github.com/matthewfritz/go-midi/issues/7)\n   * ✅ [Pitch Bend Change](https://github.com/matthewfritz/go-midi/issues/8)\n   * Control Change\n\n#### Channel Voice Message Modifiers\n\n   * ✅ [Velocity](https://github.com/matthewfritz/go-midi/issues/2)\n   * ✅ [Running Status](https://github.com/matthewfritz/go-midi/issues/20)\n   * ✅ [Pitch](https://github.com/matthewfritz/go-midi/issues/8)\n   * Modulation\n\n#### System Common Messages\n\n   * MTC Quarter Frame\n   * Song Position Pointer\n   * Song Select\n   * Tune Request\n   * End of Exclusive Messages (EOX)\n\n#### System Timing Clock Messages\n\n   * MIDI Start\n   * MIDI Stop\n   * MIDI Continue\n   * Active Sensing\n   * System Reset\n\n#### System Exclusive Messages\n\n   * Universal Non-Real-Time\n   * Universal Real-Time\n\n### MIDI 2.0 Roadmap\n\nOnce the [MIDI 1.0 Roadmap](#midi-10-roadmap) is at least halfway done I will start planning out the roadmap for implementing the current MIDI 2.0 specification.\n\n## Resources\n\n### Official Specifications\n\n[Official MIDI Specifications](https://www.midi.org/specifications) - the official MIDI 1.0 and 2.0 specifications from the MIDI Alliance.\n\n### Books\n\n[_The Midi Manual_](https://www.amazon.com/dp/0367549980?psc=1\u0026ref=ppx_yo2ov_dt_b_product_details) by David Miles Huber. Reading this book was the catalyst for breaking into MIDI programming and gave me enough of a technical foundation to begin this project.\n\n### Assorted MIDI and Digital Music Information\n\n#### Assorted MIDI 1.0 Information\n\n[Summary of MIDI 1.0 Messages](https://www.midi.org/specifications-old/item/table-1-summary-of-midi-message) - ten-thousand foot view of MIDI 1.0 messages from the MIDI Association.\n\n[GM 1 Sound Set](https://www.midi.org/specifications-old/item/gm-level-1-sound-set) - general list of the sounds available in General MIDI Level 1 from the MIDI Association.\n\n[MIDI Tutorial for Programmers (Carnegie-Mellon University)](https://www.cs.cmu.edu/~music/cmsip/readings/MIDI%20tutorial%20for%20programmers.html) | [MIDI Tutorial for Programmers (Music-Software-Development.com)](http://www.music-software-development.com/midi-tutorial.html) - tutorial about MIDI 1.0 from a software development perspective.\n\n[David's MIDI Spec](https://www.cs.cmu.edu/~music/cmsip/readings/davids-midi-spec.htm) - distilled version of the MIDI 1.0 specification from 1995 written by David Van Brink.\n\n[General MIDI Instrument Patch Map](https://www.cs.cmu.edu/~music/cmsip/readings/GMSpecs_Patches.htm) - general MIDI instruments and their family groups.\n\n[General MIDI Percussion Key Map](https://www.cs.cmu.edu/~music/cmsip/readings/GMSpecs_PercMap.htm) - general MIDI note numbers within channel 10 (percussion channel).\n\n#### Digital Music Information\n\n[An Introduction to Music Concepts](https://www.cs.cmu.edu/~music/cmsip/readings/music-theory-java.htm) - an introduction to music concepts, geared toward software developers, with examples in Java and written by Roger B. Dannenberg.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmatthewfritz%2Fgo-midi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmatthewfritz%2Fgo-midi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmatthewfritz%2Fgo-midi/lists"}