summaryrefslogtreecommitdiff
path: root/media-plugins/calf/files/calf-0.90.1-fluidsynth-2.patch
blob: 083b1e95d7dcb532ed70dbd32bec3c2455fca8c7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
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++;