Pregunta

¿Cómo puedo enviar mensajes MIDI a partir de un programa en C ++ y hacer que se juegan el sonido del banco General MIDI?

He mirado alrededor y no parece ser una respuesta sencilla, y mis arranques del cerebro para fundir después de leer los manuales de largo cerca de CoreMIDI y cosas por el estilo.

Tengo un simple juego de C ++ / sintetizador de proyecto, y lo único que quiero hacer es, por ejemplo, cuando el balón golpea el suelo, desencadenar un C4 del banco de piano de cola. Estoy bien con la mayor parte del programa, pero hasta ahora la parte MIDI integral ha sido totalmente opaco a mí.

Me gustaría utilizar CoreMIDI, ya que parece que podría ser más simple, pero algo multiplataforma sería una ventaja.

Muchas gracias por cualquier ayuda!

¿Fue útil?

Solución

Otra opción sería RtMIDI

Está dirigido para ser simple y multiplataforma

He utilizado el RTAudio similar para audio en tiempo real de E / S, y era relativamente fácil de usar.

debe ser capaz de enumerar todos los dispositivos MIDI con el código de ejemplo, a continuación, seleccione el banco GM, y enviar el mensaje MIDI adecuado (nota de encendido / apagado del mensaje), después de seleccionar el piano con un mensaje de cambio de programa. Wikipedia tiene un página útiles para comenzar

Otros consejos

He escrito un tutorial que podría ayudar a alguien que se encuentra con el mismo problema usando CoreMIDI. En él se explica cómo leer un archivo MIDI y salida de la AUGraph a través de un uso de efectos de sonido de un archivo de sonido de fuente. También se explica cómo utilizar un punto final virtual para obtener acceso a los mensajes MIDI en tiempo real. Aquí .

Para hacer lo que está buscando hacer que podría modificar el proyecto de ejemplo que proporcione la siguiente:

result = MusicDeviceMIDIEvent ([AUSampler], midiStatus, note, velocity, 0);

Cuando AUSampler es un puntero a la AUSampler es decir, el punto de inicio en el AUGraph. En vez de leer de un archivo se puede utilizar el siguiente comando para enviar una nota MIDI para ser jugado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top