You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gentoo-overlay/media-plugins/calf/files/calf-0.90.1-fluidsynth-2.patch

67 lines
2.4 KiB

From bba03b6080dc198f3513b5c29fe1ba4ff9e4aa59 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
Date: Wed, 10 Oct 2018 00:22:46 +0200
Subject: [PATCH] fluidsynth: port to API for fluidsynth version > 2.0.0
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Build tested with fluidsynth 1.1.11 and 2.0.1
Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
---
src/fluidsynth.cpp | 25 +++++++++++++++++++++++++
1 file changed, 25 insertions(+)
diff --git a/src/fluidsynth.cpp b/src/fluidsynth.cpp
index c5d307d76..54023dc8b 100644
--- a/src/fluidsynth.cpp
+++ b/src/fluidsynth.cpp
@@ -74,6 +74,7 @@ fluid_synth_t *fluidsynth_audio_module::create_synth(int &new_sfid)
new_sfid = sid;
fluid_sfont_t* sfont = fluid_synth_get_sfont(s, 0);
+#if FLUIDSYNTH_VERSION_MAJOR < 2
soundfont_name = (*sfont->get_name)(sfont);
sfont->iteration_start(sfont);
@@ -92,6 +93,26 @@ fluid_synth_t *fluidsynth_audio_module::create_synth(int &new_sfid)
if (first_preset == -1)
first_preset = id;
}
+#else
+ soundfont_name = fluid_sfont_get_name(sfont);
+
+ fluid_sfont_iteration_start(sfont);
+
+ string preset_list;
+ fluid_preset_t* tmp;
+ int first_preset = -1;
+ while((tmp = fluid_sfont_iteration_next(sfont)))
+ {
+ string pname = fluid_preset_get_name(tmp);
+ int bank = fluid_preset_get_banknum(tmp);
+ int num = fluid_preset_get_num(tmp);
+ int id = num + 128 * bank;
+ sf_preset_names[id] = pname;
+ preset_list += calf_utils::i2s(id) + "\t" + pname + "\n";
+ if (first_preset == -1)
+ first_preset = id;
+ }
+#endif
if (first_preset != -1)
{
fluid_synth_bank_select(s, 0, first_preset >> 7);
@@ -134,7 +155,11 @@ void fluidsynth_audio_module::update_preset_num(int channel)
{
fluid_preset_t *p = fluid_synth_get_channel_preset(synth, channel);
if (p)
+#if FLUIDSYNTH_VERSION_MAJOR < 2
last_selected_presets[channel] = p->get_num(p) + 128 * p->get_banknum(p);
+#else
+ last_selected_presets[channel] = fluid_preset_get_num(p) + 128 * fluid_preset_get_banknum(p);
+#endif
else
last_selected_presets[channel] = -1;
status_serial++;