2009-07-26 14 views

Respuesta

8

Se podría tratar de interactuar de alguna manera con Timidity, que es Open Source:

TiMidity ++ es un sintetizador de software. Puede reproducir archivos MIDI convirtiéndolos en datos de forma de onda PCM; dale datos MIDI junto con archivos de datos digitales del instrumento, luego los sintetiza en tiempo real y reproduce. No solo puede reproducir sonidos, sino que también puede guardar las formas de onda generadas en discos duros como varios formatos de archivos de audio.

FluidSynth es un proyecto de código abierto más reciente actualización en la misma línea:

FluidSynth es un sintetizador de software en tiempo real basado en la SoundFont 2 especificaciones.

Puede descargar algunas fuentes de sonido libres (los datos PCM reales usados ​​por estos sintetizadores para "hacer" los archivos MIDI) de los sitios en this list.

+0

Buen enlace, Jacob. –

+0

Gracias, lo descubrí hace mucho tiempo. Funciona bien con fuentes de sonido de esta lista: http://en.wikipedia.org/wiki/SoundFont#Free_SoundFont_downloads – Jacob

+0

Jacob, excelente trabajo con estos enlaces. Estoy seguro de que serán útiles. Me gusta especialmente la función TiMidity ++: 'Reproduce archivos MIDI remotos a través de la red' ¿Sabes dónde puedo encontrar un archivo .exe? Siempre me confunden cuando configuro las aplicaciones del enlazador C++ (no soy un gran programador de C++) – vondip

8

MIDI files contienen solo información de notas y controladores, no sonidos. Para obtener sonidos de un archivo MIDI, debe pasar el archivo a través de un sintetizador o muestreador de música, que convertirá la nota y la información del controlador en sonidos reales.

En la práctica esto significa que cualquier archivo MIDI dado no tiene un sonido específico. El sonido que resulta de convertir un archivo MIDI a audio variará según la calidad del sintetizador o la biblioteca de muestras, y los sonidos que se seleccionen para realizar la conversión.

Muchas tarjetas de sonido tienen la capacidad de producir sonido a partir de archivos MIDI. Pueden hacerlo porque muchos archivos MIDI siguen un estándar llamado General MIDI specification. La especificación general MIDI proporciona una forma estandarizada para asignar asignaciones de instrumentos específicos. Si su archivo MIDI cumple con este estándar, puede reproducirlo a través de un generador de sonido General MIDI y esperar que un tambor suene como un tambor, y no como una trompeta.

Si tiene un paquete de producción de música sofisticado como Cakewalk, puede cargar un archivo MIDI en él, y usará sus bibliotecas de sonido integradas para procesar un archivo de sonido, y esto puede hacerse más rápido que en tiempo real (es decir, no tiene que reproducir el sonido a través de la tarjeta de sonido y capturar la salida).

Creo que lo que estoy tratando de decir es que hay muchas partes móviles en esto. No hay una sola pieza de código o un módulo de clase que haga esto por usted.

+0

Deseo poder reproducir archivos midi en lugar de Silverlight, ¿me estoy expandiendo demasiado? – vondip

+0

No creo que deba convertir MIDI a WAV para poder reproducirlo en Silverlight. Si Silverlight no puede manejar archivos MIDI de forma nativa, puede acceder a la API multimedia de Windows para reproducir los archivos MIDI. – MusiGenesis

+0

¿Cómo hago eso? El entorno de Silverlight me impide acceder a eso. ¿Cómo puedo agregar una referencia de com a la API multimedia de Windows? – vondip

0

Hay una serie de programas que puede comprar que harán esto (google "convert midi to WAV"), pero nunca he encontrado un código .Net disponible públicamente que haga esto (creo que algunos de estos programas están escritos en .Net, pero el código fuente no está disponible).

Tengo un amigo en línea que está trabajando en un convertidor comercial MIDI-a-WAV, pero no está en .Net y no será de código abierto. Como mencionó Robert Harvey, esta no es una tarea sencilla en absoluto, ya que básicamente implica escribir tu propio sintetizador de software (una tarea según mi propio corazón).

Cuestiones relacionadas