So bin wieder da.
Muss doch noch nachfragen. Will ja nur das umändern was du nicht brauchst, bei meinem Vorschlag.
MIDIFileInfo
MidiNote
Währe schön wenn Du mir die den Aufbau gibst.
Ist es MIDIFileInfo wo Du alles ablegst und zur Laufzeit für die Audioausgabe ausliest, vermute ich mal.
Code:
// Spielgeschwindigkeit auf default wert setzen
Tempo := round(300 / 127 * MidiNote.Velocity);
Velocity ist doch die Anschlagsdynamic, bzw kann man auch für NoteOn bzw NoteOff benutzten
Frage mich wie dies mit dem Tempo zusammenhängt?
EDIT:
Stelle fest das es dochn nicht so einfach ist Deine Variant anzupassen
Bei meinem Vorschlag muss ich ja nicht Prufen ob eine note >1000 ist
ConvertMidiNote? warscheinlich auch nicht!
Code:
for IntA := 0 to High(TmpGrid) do
begin
Grid[IntI - 1, IntA] := TmpGrid[IntA];//<--Grid[array] füllen, Was zur anzeige kommt?
InstGrid[IntI - 1, IntA] := TmpInstGrid[IntA];//<---????
end;
Es stellen sich also mehr Fragen als Lösungen an
Denn
// Grid zeichnen
DrawGrid(
Handle);
müsste ja auch angepasst werden!
Auch wenn es bei mir nicht läuft, währe es besser ich könnte den code sehen, als hier tausend Fragen zu stellen. dann passe ich es als demo an mit meinem Vorschlag und Du kannst es testen
Gruss alfold