MCPcopy Create free account
hub / github.com/audacity/audacity / FindFactoryPresets

Method FindFactoryPresets

libraries/lib-vst3/VST3Wrapper.cpp:970–1026  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

968}
969
970std::vector<VST3Wrapper::FactoryPresetDesc> VST3Wrapper::FindFactoryPresets() const
971{
972 using namespace Steinberg;
973
974 wxArrayString paths;
975 wxDir::GetAllFiles(VST3Utils::GetFactoryPresetsPath(mEffectClassInfo), &paths);
976
977 std::vector<FactoryPresetDesc> result;
978 for(auto& path : paths)
979 {
980 wxFileName filename(path);
981 result.push_back({ filename.GetFullPath(), filename.GetName() });
982 }
983
984 auto cache = GetCache(mEffectClassInfo.ID());
985 if(cache->rootUnitProgramChangeParameterID != Vst::kNoParamId &&
986 cache->rootUnitProgramCount > 0)
987 {
988 Vst::String128 programName;
989 if(cache->rootUnitProgramListID != Vst::kNoProgramListId)
990 {
991 auto unitInfoProvider = FUnknownPtr<Vst::IUnitInfo>(mEditController);
992
993 for(int32 programIndex = 0, programCount = cache->rootUnitProgramCount;
994 programIndex < programCount;
995 ++programIndex)
996 {
997 if(unitInfoProvider->getProgramName(cache->rootUnitProgramListID, programIndex, programName) != kResultOk)
998 programName[0] = 0;
999 auto presetDisplayName = VST3Utils::ToWxString(programName);
1000 if(presetDisplayName.empty())
1001 presetDisplayName = wxString::Format("Unit %03d - %04d", Vst::kRootUnitId, programIndex);
1002
1003 result.push_back({
1004 VST3Utils::MakeFactoryPresetID(Vst::kRootUnitId, programIndex),
1005 presetDisplayName
1006 });
1007 }
1008 }
1009 else
1010 {
1011 for(int32_t programIndex = 0; programIndex < cache->rootUnitProgramCount; ++programIndex)
1012 {
1013 auto normalizedValue = mEditController->plainParamToNormalized(cache->rootUnitProgramChangeParameterID, programIndex);
1014 if(mEditController->getParamStringByValue(cache->rootUnitProgramChangeParameterID, normalizedValue, programName) == kResultOk)
1015 {
1016 result.push_back({
1017 VST3Utils::MakeFactoryPresetID(Vst::kRootUnitId, programIndex),
1018 VST3Utils::ToWxString(programName)
1019 });
1020 }
1021 }
1022 }
1023 }
1024
1025 return result;
1026}
1027

Callers 1

GetFactoryPresetsMethod · 0.80

Calls 5

GetCacheFunction · 0.85
push_backMethod · 0.45
GetNameMethod · 0.45
IDMethod · 0.45
emptyMethod · 0.45

Tested by

no test coverage detected