From bee3de4dbbff09f90bfa2a67df4f9d37e60cd5ac Mon Sep 17 00:00:00 2001 From: Stefano Ceccherini Date: Sat, 20 Sep 2014 18:56:09 +0200 Subject: [PATCH] Midi Kit: Made it possible for the user to use a soundfont different from the one supplied by default. Since the PM move, it was not possible anymore to use a different soundfont, since the /boot/system/data folder became read only. Now the user has to put the soundfont (or, better, a symbolic link to it) into /home/config/settings/synth.sf2 In the future we'll supply a preflet to select the soundfont. --- src/kits/midi/SoftSynth.cpp | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/kits/midi/SoftSynth.cpp b/src/kits/midi/SoftSynth.cpp index 9bcc7570fb..58ea09bd13 100644 --- a/src/kits/midi/SoftSynth.cpp +++ b/src/kits/midi/SoftSynth.cpp @@ -24,6 +24,7 @@ using namespace BPrivate; +const static char* kSynthFileName = "synth.sf2"; BSoftSynth::BSoftSynth() : fInitCheck(false), @@ -83,8 +84,18 @@ BSoftSynth::IsLoaded(void) const status_t BSoftSynth::SetDefaultInstrumentsFile() { + // We first search for a softsynth file (or symlink to it) + // in the user settings directory BPath path; - if (B_OK == find_directory(B_SYNTH_DIRECTORY, &path, false, NULL)) { + if (find_directory(B_USER_SETTINGS_DIRECTORY, &path, false, NULL) == B_OK) { + path.Append(kSynthFileName); + if (BEntry(path.Path()).Exists()) + return SetInstrumentsFile(path.Path()); + } + + // If no link is present, fall back to the default + // softsynth (big_synth.sy) + if (find_directory(B_SYNTH_DIRECTORY, &path, false, NULL) == B_OK) { path.Append(B_BIG_SYNTH_FILE); return SetInstrumentsFile(path.Path()); } @@ -102,6 +113,7 @@ BSoftSynth::SetInstrumentsFile(const char* path) if (IsLoaded()) Unload(); + // TODO: Check for file existence ? fInstrumentsFile = strdup(path); return B_OK; }