Oye maro el codigo anterior que publicastes solo sirve para archivos wav?
Encontre un código para reproducir archivos midi/mid por si te sirve:
Los ficheros mid pueden reproducirse de la siguiente forma :Private Declare Function mciSendString Lib "winmm.dll" Alias _
"mciSendStringA" (ByVal lpstrCommand As String, ByVal _
lpstrReturnString As Any, ByVal uReturnLength As Long, ByVal _
hwndCallback As Long) As Long
'lo de las dobles comillas es para evitar problemas con nombres largosDim ret As Integer
ret = mciSendString("open ""c:\windows\media\canyon.mid"" type sequencer alias cancion", 0&, 0, 0)
ret = mciSendString("play cancion wait", 0&, 0, 0)
ret = mciSendString("close cancion", 0&, 0, 0)
Con esto tu programa se detiene hasta que finaliza la "canción".
Si quieres que emnpiece a sonar y siga tu programa debes hacer :ret = mciSendString("open ""c:\windows\media\canyon.mid"" type sequencer alias cancion", 0&, 0, 0)
ret = mciSendString("play cancion", 0&, 0, 0)
Y cuando quieras que pare de sonar (o antes de cerrar tu programa) :Dim ret As Long
ret = mciSendString("stop cancion", 0&, 0, 0)
ret = mciSendString("close cancion", 0&, 0, 0)
Créditos