Browse Source

Save&Restore soundfonts 16outs usage

tags/1.9.4
falkTX 12 years ago
parent
commit
dd8116dbb5
4 changed files with 55 additions and 0 deletions
  1. +23
    -0
      source/backend/engine/CarlaEngine.cpp
  2. +3
    -0
      source/backend/plugin/FluidSynthPlugin.cpp
  3. +3
    -0
      source/backend/plugin/LinuxSamplerPlugin.cpp
  4. +26
    -0
      source/utils/CarlaString.hpp

+ 23
- 0
source/backend/engine/CarlaEngine.cpp View File

@@ -1303,6 +1303,20 @@ bool CarlaEngine::loadFilename(const char* const filename)
return false;
}

bool charEndsWith(const char* const str, const char* const suffix)
{
if (str == nullptr || suffix == nullptr)
return false;

const size_t strLen(std::strlen(str));
const size_t suffixLen(std::strlen(suffix));

if (strLen < suffixLen)
return false;

return (std::strncmp(str + (strLen-suffixLen), suffix, suffixLen) == 0);
}

bool CarlaEngine::loadProject(const char* const filename)
{
CARLA_ASSERT(filename != nullptr);
@@ -1342,7 +1356,16 @@ bool CarlaEngine::loadProject(const char* const filename)
const void* extraStuff = nullptr;

if (std::strcmp(saveState.type, "DSSI") == 0)
{
extraStuff = findDSSIGUI(saveState.binary, saveState.label);
}
else if (std::strcmp(saveState.type, "SF2") == 0)
{
const char use16OutsSuffix[] = " (16 outs)";

if (charEndsWith(saveState.label, use16OutsSuffix))
extraStuff = (void*)0x1; // non-null
}

// TODO - proper find&load plugins
if (addPlugin(getPluginTypeFromString(saveState.type), saveState.binary, saveState.name, saveState.label, extraStuff))


+ 3
- 0
source/backend/plugin/FluidSynthPlugin.cpp View File

@@ -1571,6 +1571,9 @@ public:
fFilename = filename;
fLabel = label;

if (kUses16Outs && ! fLabel.endsWith(" (16 outs)"))
fLabel += " (16 outs)";

if (name != nullptr)
fName = kData->engine->getUniquePluginName(name);
else


+ 3
- 0
source/backend/plugin/LinuxSamplerPlugin.cpp View File

@@ -1049,6 +1049,9 @@ public:
fMaker = info.Artists.c_str();
fFilename = filename;

if (kUses16Outs && ! fLabel.endsWith(" (16 outs)"))
fLabel += " (16 outs)";

if (name != nullptr)
fName = kData->engine->getUniquePluginName(name);
else


+ 26
- 0
source/utils/CarlaString.hpp View File

@@ -178,6 +178,32 @@ public:
return (buffer[pos] >= '0' && buffer[pos] <= '9');
}

bool startsWith(const char* const prefix) const
{
if (prefix == nullptr)
return false;

const size_t prefixLen(std::strlen(prefix));

if (bufferLen < prefixLen)
return false;

return (std::strncmp(buffer + (bufferLen-prefixLen), prefix, prefixLen) == 0);
}

bool endsWith(const char* const suffix) const
{
if (suffix == nullptr)
return false;

const size_t suffixLen(std::strlen(suffix));

if (bufferLen < suffixLen)
return false;

return (std::strncmp(buffer + (bufferLen-suffixLen), suffix, suffixLen) == 0);
}

void clear()
{
truncate(0);


Loading…
Cancel
Save