GithubHelp home page GithubHelp logo

midi's Introduction

#Arduino MIDI Library v4.2

This library enables MIDI I/O communications on the Arduino serial ports. The purpose of this library is not to make a big synthetizer out of an Arduino board, the application remains yours. However, it will help you interfacing it with other MIDI devices.

Download the latest version here.

Features

  • Compatible with all Arduino boards (and clones with an AVR processor)
  • Simple and fast way to send and receive every kind of MIDI message (including all System messages, SysEx, Clock, etc..).
  • OMNI input reading (read all channels).
  • Software Thru, with message filtering.
  • Callbacks to handle input messages more easily.
  • Last received message is saved until a new one arrives.
  • Configurable: overridable template-based settings.
  • Create more than one MIDI port for mergers/splitters applications.
  • Use any serial port, hardware or software.

Changelog

  • 11/06/2014 : Version 4.2 released. Bug fix for SysEx, overridable template settings.
  • 16/04/2014 : Version 4.1 released. Bug fixes regarding running status.
  • 13/02/2014 : Version 4.0 released. Moved to GitHub, added multiple instances & software serial support, and a few bug fixes.
  • 29/01/2012 : Version 3.2 released. Release notes are here
  • 06/05/2011 : Version 3.1 released. Added callback support.
  • 06/03/2011 : Version 3.0 released. Project is now hosted on SourceForge.
  • 14/12/2009 : Version 2.5 released.
  • 28/07/2009 : Version 2.0 released.
  • 28/03/2009 : Simplified version of MIDI.begin, Fast mode is now on by default.
  • 08/03/2009 : Thru method operational. Added some features to enable thru.

Warning: this library requires Arduino 1.0 or more recent versions.

What do I need to do?

  • Download the library (link)
  • Follow the installation instructions there: http://arduino.cc/en/Guide/Libraries
  • Include the library in your sketch using the menu in the IDE, or type #include <MIDI.h>
  • Create the MIDI instance using MIDI_CREATE_DEFAULT_INSTANCE(); or take a look at the documentation for custom serial port, settings etc..

You are now ready to use the library. Look at the reference page to learn how to use it, or the examples given. Just don't forget to enable the I/O communications with MIDI.begin...

##Reference

See the extended reference here (Mirror).

Using MIDI.begin

In the setup() function of the Arduino, you must call the MIDI.begin() method. If you don't give any argument to this method, the input channel for MIDI in will be set to 1 (channels are going from 1 to 16, plus `MIDI_CHANNEL_OMNI to listen to all channels at the same time).

This method will:

  • Start the serial port at the MIDI baudrate (31250)
  • Set the input channel at the argument given (if any, else 1)
  • Enable Soft Thru, without filtering (everything at the input is sent back)

MIDI Thru

The MIDI Thru allows you to redirect your incoming messages to the MIDI output. It replaces the need of a MIDI Thru connector, as it copies every valid incoming message from the input. For good performance, you might want to call read() in a fast loop, for low latency.

Incoming unread bytes/messages are kept in the Arduino serial buffer, in order not to flood it, check regularily with MIDI.read. See the reference for Thru explanations.

Thru is enabled by default, you can turn it off using appropriate methods.

Hardware

Take a look at the MIDI.org schematic

Contact

if you have any comment or support request to make, feel free to contact me: [email protected]

You can also get informations about bug fixes and updates on my twitter account: @fortysevenfx.

midi's People

Contributors

ivankravets avatar paulstoffregen avatar

Watchers

James Cloos avatar  avatar

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.