SF2_WORK ist ein Wrapper (eine grafische Benutzeroberfläche) für das Kommandozeilen-Programm SF2Comp.
Eigentlich hätte ich gerne die fremden Quelltexte direkt integriert, aber das war mir momentan doch zu viel Aufwand.
SF2_WORK benötigt in seinem Programmverzeichnis die Dateien SF2Comp.exe und SFEDT32.DLL, ausserdem wäre die Datei help.txt (aus dem SF2COMP-Paket) sinnvoll, denn dann lässt die sich direkt ins Programm laden.
Über F1 lässt sich eine aufs wesentliche dezimierte Übersicht aufrufen, aber die Darstellung ist nicht besonders.
Das Programm lässt sich über ESC beenden.
Ich habe versucht, die Anwendung möglichst leicht bedienbar zu machen. Das geschieht beispielsweise durch gezieltes Ausblenden von für die jeweilige Funktion nicht erforderlicher Elemente. Die einzelnen Anweisungen sind zugegeben teils ewas ungeschickt bzw. umständlich gesetzt und mir fehlte ausserdem die Geduld, die bereits integrierte Funktion "RunCaptured" auch einzusetzen, mit der sich die Ausgaben des Kommandozeilenprogramms SF2Comp in eine Textdatei umlenken lassen.
Im Verzeichnis von SF2_WORK sollte sich (so wie es von mir konzipiert wurde) eine Unterverzeichnis "SF2" befinden, in dem dann SoundFonts untergebracht werden können. Prinzipiell müssten sich Soundfonts aus jedem beliebigen Verzeichnis laden lassen, aber ich habe das nicht weiter getestet. Jedem bleibt selbst überlassen, es eigenen Wünschen anzupassen.
Für die Funktionen decompilieren, compilieren und resamplen werden jeweils eigene Unterverzeichnisse erzeugt, falls sie noch nicht existieren. Ich habe sie SF_COMPILED, SF2_DECOMPILIED und SF2_RESAMPLED genannt.
Für die einzelnen Switchss benutze ich zur Vereinfachung Preselektionen. Sowas lässt sich natürlich auf in INI-Dateien schreiben und daraus lesen, ebenso die Festlegungen für die einzelnen Pfade. Aber das war mir momentan zuviel Aufwand.
Für ein TabbedNoteBook anstelle moderner Komponenten habe ich mich wegen der einfacheren Bedienbarkeit entschieden.
Hiermit gebe ich dieses noch etwas an ein Fragment erinnernde, aber funktionsfähige Beispiel zur Weiterentwicklung frei.
Die Datei SF2COMP.ZIP enthält die 3 originalen ZIP-Dateien (
http://www.hammersound.net/mirrors/last_night/sf.htmhttps://www.swissdelphicenter.ch/de/showcode.php?id=990) und die Datei SF2_WORK.ZIP mein Beispielprogramm.
Vielen Dank an dieser Stelle an Delphi.Narium, der mich auf SF2Comp hingewiesen hat.
Fehlerkorrektur:
Wenn beim Programmstart noch kein Unterverzeichnis "SF2" existiert, gibt es eine Fehlermeldung. Um diese zu beheben, muss in Formcreate gleich hinter der Zeile "
SF_source_path :='SF2';" die folgende Anweisung eingefügt werden, die dann das Verzeichnis erzeugt:
IF NOT DirectoryExists(MainPath+SF_source_path)
THEN CreateDir(MainPath+SF_source_path);
neue Version
Weil die
Unit in künftige Versionen des Projekt "BassMidiTest" integriert wird, waren ein paar Anpassungen erforderlich.
Um unterscheiden zu können, ob die
Unit in ein anderes Programm eingebunden ist oder in einem eigenständiges Programm Verwendung findet, habe ich in "FormCreate" zur Prüfung auf Vorhandensein der beiden nötigen externen Dateien diese Unterscheidung eingesetzt:
Delphi-Quellcode:
IF NOT (FileExists(
DLL))
OR NOT (FileExists(EXE))
THEN BEGIN
IF ExtractFileName(Application.ExeName)='
SF2_WORK.exe'
then begin
ShowMessage('
The files "'+
DLL+'
" and "'+EXE+
'
" have to be in the path of this wrapper-program.');
Application.Terminate;
end else begin
ShowMessage('
The files "'+
DLL+'
" and "'+EXE+
'
" have to be in the mainpath of this program.');
exit;
end
END;
Wer also das Hauptprogramm anders benennen möchte, muß die entsprechende Auswertung ändern.
DLL meint die Datei "SFEDT32.DLL" und
EXE entsprechend "SF2Comp.exe" ...
Bei der Gelegenheit der Unitanpassung wurde auch gleich die zwar bisher schon integrierte, aber noch ungenutzte Funktion "RunCaptured" (basiert auf
https://www.swissdelphicenter.ch/de/showcode.php?id=990) an den erforderlichen Stellen eingesetzt.
Dadurch wird der Ablauf des externen Programms "SF2Comp.exe" protokolliert und kann als LOG-Datei (Voreinstellung) gespeichert werden.
Wenn das Programm nicht mehr zu reagieren scheint, handelt es sich um höchstwahrscheinlich um eine Windows-Falschmeldung aufgrund oft sehr langer Ausführungszeiten des externen Programms "SF2Comp.exe".
Wie auch schon bei "BassMidiTest" von mir bemerkt, gibt es fehlerhafte SF2-Soundfonts, die nicht nutzbar sind. Woran das liegt, weiß ich nicht. Meist kann sie auch das Programm "Polyphone" nicht laden.