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.
This commit is contained in:
Stefano Ceccherini
2014-09-20 19:01:41 +02:00
parent 937e70aa28
commit bee3de4dbb
+13 -1
View File
@@ -24,6 +24,7 @@
using namespace BPrivate; using namespace BPrivate;
const static char* kSynthFileName = "synth.sf2";
BSoftSynth::BSoftSynth() BSoftSynth::BSoftSynth()
: fInitCheck(false), : fInitCheck(false),
@@ -83,8 +84,18 @@ BSoftSynth::IsLoaded(void) const
status_t status_t
BSoftSynth::SetDefaultInstrumentsFile() BSoftSynth::SetDefaultInstrumentsFile()
{ {
// We first search for a softsynth file (or symlink to it)
// in the user settings directory
BPath path; 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); path.Append(B_BIG_SYNTH_FILE);
return SetInstrumentsFile(path.Path()); return SetInstrumentsFile(path.Path());
} }
@@ -102,6 +113,7 @@ BSoftSynth::SetInstrumentsFile(const char* path)
if (IsLoaded()) if (IsLoaded())
Unload(); Unload();
// TODO: Check for file existence ?
fInstrumentsFile = strdup(path); fInstrumentsFile = strdup(path);
return B_OK; return B_OK;
} }