MCPcopy Create free account
hub / github.com/EasyRPG/Player / load_default_sf

Function load_default_sf

src/decoder_fluidsynth.cpp:118–171  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

116}
117
118static bool load_default_sf(std::string& status_message, fluid_synth_t* syn) {
119 // Attempt loading a soundfont
120 std::vector<std::string> sf_paths;
121 std::string preferred_soundfont = Audio().GetFluidsynthSoundfont();
122 if (!preferred_soundfont.empty()) {
123 sf_paths.emplace_back(preferred_soundfont);
124 }
125 sf_paths.emplace_back("easyrpg.soundfont");
126
127#if FLUIDSYNTH_VERSION_MAJOR >= 2
128 char* default_sf = nullptr;
129 if (fluid_settings_dupstr(global_settings.get(), "synth.default-soundfont", &default_sf) == 0) {
130 if (default_sf != nullptr && default_sf[0] != '\0') {
131 sf_paths.emplace_back(default_sf);
132 }
133 }
134 fluid_free(default_sf);
135#endif
136
137 if (getenv("SDL_SOUNDFONTS")) {
138 auto sdl_sfs = Utils::Tokenize(getenv("SDL_SOUNDFONTS"), [](char32_t t) {
139#ifdef _WIN32
140 return t == ';';
141#else
142 return t == ':' || t == ';';
143#endif
144 });
145 sf_paths.insert(sf_paths.end(), sdl_sfs.begin(), sdl_sfs.end());
146 }
147
148#ifdef SYSTEM_DESKTOP_LINUX_BSD_MACOS
149 auto sf_files = {"FluidR3_GM.sf2"};
150 for (const auto& sf_file: sf_files) {
151 sf_paths.emplace_back(FileFinder::MakePath("/usr/share/soundfonts", sf_file));
152 sf_paths.emplace_back(FileFinder::MakePath("/usr/share/sounds/sf2", sf_file));
153 }
154#endif
155
156 bool sf_load_success = false;
157 for (const auto& sf_name: sf_paths) {
158 if (fluid_synth_sfload(syn, sf_name.c_str(), 1) != FLUID_FAILED) {
159 sf_load_success = true;
160 status_message = fmt::format("Using soundfont {}", sf_name);
161 break;
162 }
163 }
164
165 if (!sf_load_success) {
166 status_message = "Could not load soundfont.";
167 return false;
168 }
169
170 return true;
171}
172
173static fluid_synth_t* create_synth(std::string& status_message) {
174 fluid_synth_t* syn = new_fluid_synth(global_settings.get());

Callers 2

InitializeMethod · 0.85
ChangeGlobalSoundfontMethod · 0.85

Calls 5

emptyMethod · 0.45
getMethod · 0.45
endMethod · 0.45
beginMethod · 0.45

Tested by

no test coverage detected