Esta es una pequeña explicación de como transformar un midi a wav, lo primero que hay que señalar es que son formatos muy distintos. Un midi contiene la descripción de cómo hacer el sonido (algo así como una partitura que indica en que momento tiene que sonar una nota y que instrumento hay que utilizar para esa nota) y para que se produzca el sonido hay que utilizar un sintetizador que reproduzca el sonido (este sintetizador puede ser incluido en la tarjeta de sonido, como es el caso de las Sound Blaster o puede se por sofware, como el que incluye Microsoft en sus sistemas operativos) por lo cual en equipos diferentes un midi puede sonar de distinta manera, en contraste un wav es un formato de audio digital (algo así como una imagen o radiografía de la onda sonora), por lo que al reproducirlo en cualquier reproductor de WAVs debería sonar de la misma manera que del sonido original.

Ahora para pasar un midi a wav, hay que grabar digitalmente los sonidos que produce el sintetizador, cosa que podemos hacer por ejemplo con el Timidity++, que es el típico programa que se utiliza en GNU/Linux como sintetizador (para reproducir midis). Para ello en un terminal hacemos algo como esto:

$ timidity cancion.mid -Ow1S -s 44100 -o cancion.wav

Esto nos generara un un archivo wav a partir del midi, eso si el archivo no esta muy optimizado, así que pueden usar algún programa como el audacity para editarlo y si quieren guardarlo en otro formato.

Ahora hacer lo contrario (pasar un wav a midi) es mucho mas complicado, ya que un wav reúne información muy compleja sobre frecuencias, volúmenes, resolución, etc, y toda ella aparece mezclada y mientras mas instrumentos o voces contenga es mucho peor. Aunque existen programas que intentan separar e identificar los tonos de un wav y a partir de ellos, generan un archivo midi, los resultados de estos no siempre son de lo mejor. Algunos de estos programas son WaoN, fanr, etc. si quieren mas información sobre esto, en este blog hay un muy buen post que menciona a varios de ellos