意外と簡単かも。

リンクには AudioToolbox と CoreMidi のフレームワークが必要


#include <AudioToolbox/AudioToolbox.h>

void midiplayer(char *fnMid)
{
MusicSequence sequence;
OSStatus err = NewMusicSequence(&sequence);
if( err == noErr ) {
FSRef fsRef;
err = FSPathMakeRef((const UInt8*)fnMid, &fsRef, 0);
err = MusicSequenceLoadSMFWithFlags (sequence, &fsRef, 0);
if( err == noErr ) {
MIDIClientRef theMidiClient;
MIDIClientCreate(CFSTR("Play Sequence"), NULL, NULL, &theMidiClient);
ItemCount destCount = MIDIGetNumberOfDestinations();
if( 0 < destCount ) {
err = MusicSequenceSetMIDIEndpoint (sequence, MIDIGetDestination(0));
}
}
if( err == noErr ) {
MusicPlayer mp;
err = NewMusicPlayer(&mp);
if( err == noErr ) {
err = MusicPlayerSetSequence(mp,sequence);
err = MusicPlayerStart(mp);


// 終わるのを待つ

err = MusicPlayerStop(mp);
err = DisposeMusicPlayer(mp);
}
}
err = DisposeMusicSequence(sequence);
}
}