Domanda

Come posso inviare messaggi MIDI fuori da un programma C ++ e farli giocare il suono da parte della banca General MIDI?

Ho guardato intorno e ci non sembra essere una risposta semplice, e il mio cervello inizia a sciogliersi dopo aver letto lunghi manuali circa CoreMIDI e cose del genere.

Ho un semplice progetto di gioco / sintetizzatore C ++, e tutto quello che voglio fare è, per esempio, quando questa palla colpisce il pavimento, innescare un C4 dal Piano banca Grande. Io sto bene con la maggior parte del programma, ma la parte MIDI integrale è stato finora assolutamente opaca per me.

Mi piacerebbe usare CoreMIDI, perché sembra che potrebbe essere più semplice, ma qualcosa di multi-piattaforma sarebbe un bonus.

La ringrazio molto per tutto l'aiuto!

È stato utile?

Soluzione

Un'altra opzione sarebbe quella rtmidi

E 'inoltre progettato per essere semplice e multipiattaforma

Ho usato il RTAudio simile per l'audio in tempo reale i / o, ed è stato relativamente facile da usare.

Si dovrebbe essere in grado di elencare tutti i dispositivi MIDI con il codice di esempio, quindi selezionare il banco GM, e inviare il messaggio MIDI appropriata (nota sul messaggio / off), dopo aver selezionato il pianoforte con un messaggio di cambiamento di programma. Wikipedia ha una utile per iniziare

Altri suggerimenti

Ho scritto un tutorial che può aiutare qualcuno che si imbatte lo stesso problema usando CoreMIDI. Spiega come leggere un file MIDI e uscita attraverso un AUGraph utilizzando gli effetti sonori da un file audio di carattere. Spiega inoltre come utilizzare un punto finale virtuale per ottenere l'accesso ai messaggi MIDI in tempo reale. Qui .

Per fare quello che stai cercando di fare è possibile modificare il progetto di esempio fornisco con il seguente:

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

Dove AUSampler è un puntatore alla AUSampler cioè il punto iniziale nella AUGraph. Piuttosto che la lettura da un file è possibile utilizzare il seguente comando per inviare una nota MIDI da riprodurre.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top