Donate to help support opensource for J.D. Koftinoff Software, Ltd
J.D. Koftinoff Software, Ltd.

Navigation: ( MidiLibraryFaq, MidiParser, MultiTrack, WikiStart, libjdkmidijava)


C++ MIDI Library - libjdkmidi

Overview

This library was originally a collection of utility functions for MIDI written in C back in 1986 for the Atari ST computer. Since then it has evolved into a fairly powerful C++ MIDI Library including:

  • MIDI parsing
  • MIDI Show Control message creation and handling
  • Standard MIDI File type 0 and type 1 reading and writing
  • Timestamped MIDI message and System Exclusive encapsulation
  • Efficient MIDI Track objects for sequencing
  • MIDI Track objects for editing MIDI events
  • MIDI message process chains
  • Containers for multiple MIDI Tracks with iterators
  • MIDI Sequencer core for sequencing and triggering GUI events
  • MIDI Driver abstractions for I/O and sequencing
  • MIDI Driver implementation for Win32 for I/O and sequencing
  • Tempo calculations
  • MIDI Matrix to count note on's and off's and hold pedals to avoid stuck notes and all-notes-off problems when merging midi streams
  • SMPTE management and calculations

For more information, please contact Jeff Koftinoff, jeffk@jdkoftinoff.com

libjdkmidi

Copyright 1986-2006 by J.D. Koftinoff Software, Ltd.

jeffk@jdkoftinoff.com

Released under the GPL: May 1, 2004 Please see the file COPYING

Downloads

Snapshot Files

Available at: http://opensource.jdkoftinoff.com/jdks/libjdkmidi/files/

SVN Repository

Access the read-only SVN repository:

The svn trunk has a few bugfixes in it that the latest official release does not have. Please use the svn trunk!

Quick Start

for gcc toolchains: linux,macosx,cygwin,mingw32,etc

Also see the information on the MagicMakefileV3

  svn co http://opensource.jdkoftinoff.com/jdks/svn/trunk/libjdkmidi/trunk/ libjdkmidi
  cd libjdkmidi/build/gnu
  make tests
  ./jdkmidi_test_multitrack ../../songs/jeffswedding.mid | less
  ./jdkmidi_rewrite_midifile ../../songs/jeffswedding.mid out.mid
  ./jdkmidi_test_show out.mid
  make clean
  less ../tests/jdkmidi_rewrite_midifile.cpp

FAQ

See that FAQ at MidiLibraryFaq

Directory List

Browse the source at: trunk/libjdkmidi/trunk/

include/jdkmidi/:

Header files for libjdkmidi

trunk/src/:

Source files for libjdkmidi

trunk/tests/:

Source files for simple test programs

trunk/build/gnu/:

Place to do builds in for gnu gcc

trunk/build/vc6/:

MS Visual C++ 6 projects

build/macosx:

Mac OS X xcode project added

songs:

Place I keep some MIDI files in for testing

docs:

Place to keep some documentation, autogenerated from doxygen

Usage with your own projects

Add the include directory:
    -I /libjdkmidi/include

Add the library directory:
    -L /libjdkmidi/lib

Link with libjdkmidi:
    -l jdkmidi

All symbols are in the c++ namespace jdkmidi

Documentation

The doxygen generated html documentation is available:

http://opensource.jdkoftinoff.com/jdks/docs/libjdkmidi/

The Midi Parser

The Midi Parser used in this library is documented in the page MidiParser.

CHANGELOG

See the changelog file from the repository directly at: trunk/libjdkmidi/trunk/CHANGELOG.txt

Or see the SVN logs at: libjdkmidi svn logs

Other projects that use libjdkmidi

*note:* some of these projects have licensing terms other than the GPLv2 by negotiating directly with me.

libjdkmidi on google code and google groups