LibSMF is a BSD-licensed C library for handling SMF ("*.mid") files. It transparently handles conversions between time and pulses, tempo map handling etc. The only dependencies are C compiler and glib. Full API documentation and examples are included.
Note that the development has moved to https://github.com/nilsgey/libsmf.
Jack-smf-utils is a set of two utilities - jack-smf-player and jack-smf-recorder - whose purpose is to play and record MIDI streams from/to Standard MIDI Files (i.e. the files with .mid extension) using JACK MIDI. It uses libsmf as a backend.