Kuck mal dieses Stückchen Code an:
Delphi-Quellcode:
case Event.Data1 of
12 : BassPlayer.PlaySound(path+'C0.WAV',vol);
13 : BassPlayer.PlaySound(path+'C#0.WAV',vol);
14 : BassPlayer.PlaySound(path+'D0.WAV',vol);
[...]
117 : BassPlayer.PlaySound(path+'A8.WAV',vol);
end;
Ständige Wiederholungen von immer gleichem Code; das ist schlecht!
Mach' Dir eine Unterfunktion, die für jeden Midinote den Namen der Wav-Datei liefert:
Delphi-Quellcode:
function MidiNote2Wav(note:integer):string;
begin
case note of
12 : Result := 'C0.WAV';
13 : Result := 'C#0.WAV';
14 : result := 'D0.WAV';
[...]
117 : result := 'A8.WAV';
end;
end;
Und dann baust du noch eine Prüfung ein ob die Datei überhaupt existiert:
Delphi-Quellcode:
procedure TForm1.MidiMessageInFile(event: PMidiEvent);
var
temp:string;
ex: boolean;
vol: extended;
note: integer;
filename : string;
begin
Inc(events);
Label4.Caption := IntToStr(events);
...
try
note := Event^.data1;
filename := path + MidiNote2Wav(note); // NEU
if not FileExists(filename) then
ShowMessageFmt('%s nicht vorhanden', [filename]);
BassPlayer.PlaySound(filename,vol);
finally
FreeMem(event);
end;
ListBox1.Items.Add(IntToStr(shit));
PlaySomething;
end;