Giter Club home page Giter Club logo

go-midi's Introduction

Go MIDI

Go implementation of a library to represent MIDI data.

This 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.

I 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.

Table of Contents

Installation

go get github.com/matthewfritz/go-midi

Roadmap

MIDI 1.0 Roadmap

Channel Voice Messages

Channel Voice Message Modifiers

System Common Messages

  • MTC Quarter Frame
  • Song Position Pointer
  • Song Select
  • Tune Request
  • End of Exclusive Messages (EOX)

System Timing Clock Messages

  • MIDI Start
  • MIDI Stop
  • MIDI Continue
  • Active Sensing
  • System Reset

System Exclusive Messages

  • Universal Non-Real-Time
  • Universal Real-Time

MIDI 2.0 Roadmap

Once the MIDI 1.0 Roadmap is at least halfway done I will start planning out the roadmap for implementing the current MIDI 2.0 specification.

Resources

Official Specifications

Official MIDI Specifications - the official MIDI 1.0 and 2.0 specifications from the MIDI Alliance.

Books

The Midi Manual 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.

Assorted MIDI and Digital Music Information

Assorted MIDI 1.0 Information

Summary of MIDI 1.0 Messages - ten-thousand foot view of MIDI 1.0 messages from the MIDI Association.

GM 1 Sound Set - general list of the sounds available in General MIDI Level 1 from the MIDI Association.

MIDI Tutorial for Programmers (Carnegie-Mellon University) | MIDI Tutorial for Programmers (Music-Software-Development.com) - tutorial about MIDI 1.0 from a software development perspective.

David's MIDI Spec - distilled version of the MIDI 1.0 specification from 1995 written by David Van Brink.

General MIDI Instrument Patch Map - general MIDI instruments and their family groups.

General MIDI Percussion Key Map - general MIDI note numbers within channel 10 (percussion channel).

Digital Music Information

An Introduction to Music Concepts - an introduction to music concepts, geared toward software developers, with examples in Java and written by Roger B. Dannenberg.

go-midi's People

Contributors

matthewfritz avatar

Watchers

 avatar  avatar

go-midi's Issues

Create Go module

Create the standard Go module and path it in the proper way.

Use Go 1.18 as the minimum version so we can take advantage of generics if we so choose.

Add Channel Voice Message: Pitch Bend Change

Add Pitch Bend Change channel voice messages.

This is the first slightly-odd channel voice message since the most-significant byte and the least-significant byte of the 16-bit pitch bend value are reversed in the actual message itself.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.