3 Stimmen

Programmatisches Abspielen von MIDI mit OpenAL und SF2

Ich kann eine einfache MIDI-Datei von Grund auf erstellen, verifiziert mit TiMidity++, und ich kenne genug OpenAL, um eine gestreamte Quelle aus einer Datei abzuspielen.

Ich frage mich nur, ob es möglich ist, ein Programm in C zu erstellen, um MIDI-Dateien zu spielen, indem man ein SF2 und MIDI-Datei einliest und OpenAL verwendet, um den Sound abzuspielen. Muss ich eine andere Bibliothek verwenden? Ich möchte im Voraus wissen, weil das SF2-Format ziemlich kompliziert aussieht.

0voto

griotspeak Punkte 12812

Kern-Audio ist der richtige Weg!

Wenn Sie dies auf einem Mac machen, tut DLSMusicDevice, was Sie wollen.

Wenn Sie auf iOS sind, müssen Sie viel 'per Hand' machen, aber es ist machbar (wenn auch mühsam). Wenn Sie diesen Weg gehen, schauen Sie sich den Beispielcode 'Mixer Host' an.

0voto

James Andrews Punkte 3209

Du musst ein CoreAudio verwenden. Erstelle einen AUGraph mit einem Sampler, der mit einem IOUnit verbunden ist. Schau dir die Header-Dateien AUComponent.h im AudioUnit-Framework an. Wenn du deinen Audiographen eingerichtet hast, kannst du eine Note mit der folgenden Funktion abspielen:

MusicDeviceMIDIEvent(sampler, status, note, velocity, 0);

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X