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:
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user