Drei zeilen bzw.. nur eine um einen MIDI Ton ausgeben zulassen ist nicht gerade schwer oder?
Es scheint aber nicht zu funktionieren.
Ich versuche Dir nur zu erklären wie man es richtig macht.
1.) sämtlicher Code für die Ansteuerung für MIDI gehört in eine
eigene Unit.
2.) In dieser
Unit gibt es eine
Klasse mit diversen Methoden wie z.B. NoteOn(), NoteOff(),...
Es kann nur eine Klasse sein, denn die
API-Funktion MidiOutOpen() liefert ein
Handle zurück, dass man für alle weiteren
API-Aufrufe aufbewahren muss.
Dafür braucht man eine Klasse; eine globale Variable wäre unprofesionell, da es mehr als ein MIDI-Device geben kann.
3.) diese
Unit muss getestet und schrittweise verbessert werden.
Das ist keine Zeitverschwendung sondern absolut notwendig.
4.) zum Testen könnte man eine
VCL,
NonVCL oder Konsolenanwendung verwenden.
Sinnvoller Weise verwendet man eine
VCL-Anwendung.
5.) die Testanwendung wird nicht weggeworfen, sondern zusammen mit der
NonVCL-Anwendung für spätere Tests aufbewahrt.
6.) Die MIDI-Out-Klasse stellt eine Abstraktionsschicht um die Windows-
API dar.
In der Anwendung finden sich daher keine Konstanten wie z.B. $90(=Note-On).
Schau Dir mal die
Unit JclMidi aus der
Jedi Code Library an. So muss das aussehen!
Wobei du für deine Zwecke die MIDI-Klasse etwas einfacher halten kannst.