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@…
Copyright
libjdkmidi
Copyright 1986-2006 by J.D. Koftinoff Software, Ltd.
jeffk@…
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:
- current trunk: http://opensource.jdkoftinoff.com/jdks/svn/trunk/libjdkmidi/trunk/
- last official release: http://opensource.jdkoftinoff.com/jdks/svn/trunk/libjdkmidi/tags/libjdkmidi-0.8.0
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/
Header files for libjdkmidi
Source files for libjdkmidi
Source files for simple test programs
Place to do builds in for gnu gcc
MS Visual C++ 6 projects
Mac OS X xcode project added
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:
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.
- Michael Rentzsch's Diploma Thesis and Software: Developing and implementing methods for comparing symbolic musical instances - CoSMIc
- Text Melody: Sourceforge Japan page and Main Project Page or http://www.knatech.info/Tmelo.html
- The MIDI Player VST Plugin: http://www.dadev.com/developers_midiplayer.asp
- Aria Maestosa
- coJIVE: COllaborative Jazz ImproVisation Environment - (thesis paper)
- The I can play piano wizard
libjdkmidi on google code and google groups
- Google Code Repository and tickets: http://code.google.com/p/libjdkmidi (defunkt for now)
- Google Group: http://groups.google.com/group/libjdkmidi (also defunkt for now)
