Author: Andreas Tille <tille@debian.org>
Last-Update: 2025-09-11
Bug-Debian: https://bugs.debian.org/1114322
Description: Fix build with gcc-15

--- a/include/pyomodule.h
+++ b/include/pyomodule.h
@@ -611,9 +611,9 @@ extern PyTypeObject MMLZStreamType;
     PyObject_HEAD \
     PyObject *server; \
     Stream *stream; \
-    void (*mode_func_ptr)(); \
-    void (*proc_func_ptr)(); \
-    void (*muladd_func_ptr)(); \
+    void (*mode_func_ptr)(void *); \
+    void (*proc_func_ptr)(void *); \
+    void (*muladd_func_ptr)(void *); \
     PyObject *mul; \
     Stream *mul_stream; \
     PyObject *add; \
@@ -2147,4 +2147,4 @@ extern PyTypeObject MMLZStreamType;
     Py_INCREF(self); \
     return 0;
 
-#endif // _PYOMODULE_H
\ No newline at end of file
+#endif // _PYOMODULE_H
--- a/src/engine/dummymodule.c
+++ b/src/engine/dummymodule.c
@@ -26,19 +26,55 @@
 #include "servermodule.h"
 #include "dummymodule.h"
 
-static void Dummy_postprocessing_ii(Dummy *self) { POST_PROCESSING_II };
-static void Dummy_postprocessing_ai(Dummy *self) { POST_PROCESSING_AI };
-static void Dummy_postprocessing_ia(Dummy *self) { POST_PROCESSING_IA };
-static void Dummy_postprocessing_aa(Dummy *self) { POST_PROCESSING_AA };
-static void Dummy_postprocessing_ireva(Dummy *self) { POST_PROCESSING_IREVA };
-static void Dummy_postprocessing_areva(Dummy *self) { POST_PROCESSING_AREVA };
-static void Dummy_postprocessing_revai(Dummy *self) { POST_PROCESSING_REVAI };
-static void Dummy_postprocessing_revaa(Dummy *self) { POST_PROCESSING_REVAA };
-static void Dummy_postprocessing_revareva(Dummy *self) { POST_PROCESSING_REVAREVA };
+static void Dummy_postprocessing_ii(void *ptr) {
+    Dummy *self = (Dummy *)ptr;
+    POST_PROCESSING_II;
+}
+
+static void Dummy_postprocessing_ai(void *ptr) {
+    Dummy *self = (Dummy *)ptr;
+    POST_PROCESSING_AI;
+}
+
+static void Dummy_postprocessing_ia(void *ptr) {
+    Dummy *self = (Dummy *)ptr;
+    POST_PROCESSING_IA;
+}
+
+static void Dummy_postprocessing_aa(void *ptr) {
+    Dummy *self = (Dummy *)ptr;
+    POST_PROCESSING_AA;
+}
+
+static void Dummy_postprocessing_ireva(void *ptr) {
+    Dummy *self = (Dummy *)ptr;
+    POST_PROCESSING_IREVA;
+}
+
+static void Dummy_postprocessing_areva(void *ptr) {
+    Dummy *self = (Dummy *)ptr;
+    POST_PROCESSING_AREVA;
+}
+
+static void Dummy_postprocessing_revai(void *ptr) {
+    Dummy *self = (Dummy *)ptr;
+    POST_PROCESSING_REVAI;
+}
+
+static void Dummy_postprocessing_revaa(void *ptr) {
+    Dummy *self = (Dummy *)ptr;
+    POST_PROCESSING_REVAA;
+}
+
+static void Dummy_postprocessing_revareva(void *ptr) {
+    Dummy *self = (Dummy *)ptr;
+    POST_PROCESSING_REVAREVA;
+}
 
 static void
-Dummy_setProcMode(Dummy *self)
+Dummy_setProcMode(void *ptr)
 {
+    Dummy *self = (Dummy *)ptr;
     int muladdmode;
     muladdmode = self->modebuffer[0] + self->modebuffer[1] * 10;
 
@@ -82,6 +118,11 @@ Dummy_setProcMode(Dummy *self)
     }
 }
 
+static void Dummy_setProcMode_wrapper(void *ptr) {
+    Dummy *self = (Dummy *)ptr;
+    Dummy_setProcMode(self);
+}
+
 static void
 Dummy_compute_next_data_frame(Dummy *self)
 {
@@ -152,7 +193,7 @@ Dummy_initialize(Dummy *self)
 
     INIT_OBJECT_COMMON
     Stream_setFunctionPtr(self->stream, Dummy_compute_next_data_frame);
-    self->mode_func_ptr = Dummy_setProcMode;
+    self->mode_func_ptr = Dummy_setProcMode_wrapper;
 
     PyObject_CallMethod(self->server, "addStream", "O", self->stream);
 
@@ -327,19 +368,55 @@ typedef struct
     int modebuffer[2];
 } TriggerDummy;
 
-static void TriggerDummy_postprocessing_ii(TriggerDummy *self) { POST_PROCESSING_II };
-static void TriggerDummy_postprocessing_ai(TriggerDummy *self) { POST_PROCESSING_AI };
-static void TriggerDummy_postprocessing_ia(TriggerDummy *self) { POST_PROCESSING_IA };
-static void TriggerDummy_postprocessing_aa(TriggerDummy *self) { POST_PROCESSING_AA };
-static void TriggerDummy_postprocessing_ireva(TriggerDummy *self) { POST_PROCESSING_IREVA };
-static void TriggerDummy_postprocessing_areva(TriggerDummy *self) { POST_PROCESSING_AREVA };
-static void TriggerDummy_postprocessing_revai(TriggerDummy *self) { POST_PROCESSING_REVAI };
-static void TriggerDummy_postprocessing_revaa(TriggerDummy *self) { POST_PROCESSING_REVAA };
-static void TriggerDummy_postprocessing_revareva(TriggerDummy *self) { POST_PROCESSING_REVAREVA };
+static void TriggerDummy_postprocessing_ii(void *ptr) {
+    TriggerDummy *self = (TriggerDummy *)ptr;
+    POST_PROCESSING_II;
+}
+
+static void TriggerDummy_postprocessing_ai(void *ptr) {
+    TriggerDummy *self = (TriggerDummy *)ptr;
+    POST_PROCESSING_AI;
+}
+
+static void TriggerDummy_postprocessing_ia(void *ptr) {
+    TriggerDummy *self = (TriggerDummy *)ptr;
+    POST_PROCESSING_IA;
+}
+
+static void TriggerDummy_postprocessing_aa(void *ptr) {
+    TriggerDummy *self = (TriggerDummy *)ptr;
+    POST_PROCESSING_AA;
+}
+
+static void TriggerDummy_postprocessing_ireva(void *ptr) {
+    TriggerDummy *self = (TriggerDummy *)ptr;
+    POST_PROCESSING_IREVA;
+}
+
+static void TriggerDummy_postprocessing_areva(void *ptr) {
+    TriggerDummy *self = (TriggerDummy *)ptr;
+    POST_PROCESSING_AREVA;
+}
+
+static void TriggerDummy_postprocessing_revai(void *ptr) {
+    TriggerDummy *self = (TriggerDummy *)ptr;
+    POST_PROCESSING_REVAI;
+}
+
+static void TriggerDummy_postprocessing_revaa(void *ptr) {
+    TriggerDummy *self = (TriggerDummy *)ptr;
+    POST_PROCESSING_REVAA;
+}
+
+static void TriggerDummy_postprocessing_revareva(void *ptr) {
+    TriggerDummy *self = (TriggerDummy *)ptr;
+    POST_PROCESSING_REVAREVA;
+}
 
 static void
-TriggerDummy_setProcMode(TriggerDummy *self)
+TriggerDummy_setProcMode(void *ptr)
 {
+    TriggerDummy *self = (TriggerDummy *)ptr;
     int muladdmode;
     muladdmode = self->modebuffer[0] + self->modebuffer[1] * 10;
 
@@ -569,4 +646,4 @@ PyTypeObject TriggerDummyType =
     0,      /* tp_init */
     0,                         /* tp_alloc */
     TriggerDummy_new,                 /* tp_new */
-};
\ No newline at end of file
+};
--- a/src/engine/inputfadermodule.c
+++ b/src/engine/inputfadermodule.c
@@ -39,10 +39,13 @@ typedef struct
     double sampleToSec;
 } InputFader;
 
-static void InputFader_setProcMode(InputFader *self) {};
+static void InputFader_setProcMode(void *ptr) {
+    InputFader *self = (InputFader *)ptr;
+}
 
-static void InputFader_process_only_first(InputFader *self)
+static void InputFader_process_only_first(void *ptr)
 {
+    InputFader *self = (InputFader *)ptr;
     int i;
     MYFLT *in = Stream_getData((Stream *)self->input1_stream);
 
@@ -52,8 +55,9 @@ static void InputFader_process_only_firs
     }
 }
 
-static void InputFader_process_only_second(InputFader *self)
+static void InputFader_process_only_second(void *ptr)
 {
+    InputFader *self = (InputFader *)ptr;
     int i;
     MYFLT *in = Stream_getData((Stream *)self->input2_stream);
 
@@ -63,8 +67,9 @@ static void InputFader_process_only_seco
     }
 }
 
-static void InputFader_process_one(InputFader *self)
+static void InputFader_process_one(void *ptr)
 {
+    InputFader *self = (InputFader *)ptr;
     int i;
     MYFLT sclfade, val;
     MYFLT *in1 = Stream_getData((Stream *)self->input1_stream);
@@ -91,8 +96,9 @@ static void InputFader_process_one(Input
 
 }
 
-static void InputFader_process_two(InputFader *self)
+static void InputFader_process_two(void *ptr)
 {
+    InputFader *self = (InputFader *)ptr;
     int i;
     MYFLT sclfade, val;
     MYFLT *in1 = Stream_getData((Stream *)self->input1_stream);
--- a/src/engine/mixmodule.c
+++ b/src/engine/mixmodule.c
@@ -33,19 +33,47 @@ typedef struct
     int modebuffer[2];
 } Mix;
 
-static void Mix_postprocessing_ii(Mix *self) { POST_PROCESSING_II };
-static void Mix_postprocessing_ai(Mix *self) { POST_PROCESSING_AI };
-static void Mix_postprocessing_ia(Mix *self) { POST_PROCESSING_IA };
-static void Mix_postprocessing_aa(Mix *self) { POST_PROCESSING_AA };
-static void Mix_postprocessing_ireva(Mix *self) { POST_PROCESSING_IREVA };
-static void Mix_postprocessing_areva(Mix *self) { POST_PROCESSING_AREVA };
-static void Mix_postprocessing_revai(Mix *self) { POST_PROCESSING_REVAI };
-static void Mix_postprocessing_revaa(Mix *self) { POST_PROCESSING_REVAA };
-static void Mix_postprocessing_revareva(Mix *self) { POST_PROCESSING_REVAREVA };
+static void Mix_postprocessing_ii(void *ptr) {
+    Mix *self = (Mix *)ptr;
+    POST_PROCESSING_II;
+}
+static void Mix_postprocessing_ai(void *ptr) {
+    Mix *self = (Mix *)ptr;
+    POST_PROCESSING_AI;
+}
+static void Mix_postprocessing_ia(void *ptr) {
+    Mix *self = (Mix *)ptr;
+    POST_PROCESSING_IA;
+}
+static void Mix_postprocessing_aa(void *ptr) {
+    Mix *self = (Mix *)ptr;
+    POST_PROCESSING_AA;
+}
+static void Mix_postprocessing_ireva(void *ptr) {
+    Mix *self = (Mix *)ptr;
+    POST_PROCESSING_IREVA;
+}
+static void Mix_postprocessing_areva(void *ptr) {
+    Mix *self = (Mix *)ptr;
+    POST_PROCESSING_AREVA;
+}
+static void Mix_postprocessing_revai(void *ptr) {
+    Mix *self = (Mix *)ptr;
+    POST_PROCESSING_REVAI;
+}
+static void Mix_postprocessing_revaa(void *ptr) {
+    Mix *self = (Mix *)ptr;
+    POST_PROCESSING_REVAA;
+}
+static void Mix_postprocessing_revareva(void *ptr) {
+    Mix *self = (Mix *)ptr;
+    POST_PROCESSING_REVAREVA;
+}
 
 static void
-Mix_setProcMode(Mix *self)
+Mix_setProcMode(void *ptr)
 {
+    Mix *self = (Mix *)ptr;
     int muladdmode;
     muladdmode = self->modebuffer[0] + self->modebuffer[1] * 10;
 
--- a/include/streammodule.h
+++ b/include/streammodule.h
@@ -28,7 +28,7 @@ typedef struct
 {
     PyObject_HEAD
     PyObject *streamobject;
-    void (*funcptr)();
+    void (*funcptr)(void *);
     int sid;
     int chnl;
     int bufsize;
--- a/src/objects/analysismodule.c
+++ b/src/objects/analysismodule.c
@@ -45,8 +45,9 @@ typedef struct
 } Follower;
 
 static void
-Follower_filters_i(Follower *self)
+Follower_filters_i(void *ptr)
 {
+    Follower *self = (Follower *)ptr;
     MYFLT absin, freq;
     int i;
 
@@ -74,8 +75,9 @@ Follower_filters_i(Follower *self)
 }
 
 static void
-Follower_filters_a(Follower *self)
+Follower_filters_a(void *ptr)
 {
+    Follower *self = (Follower *)ptr;
     MYFLT freq, absin;
     int i;
 
@@ -104,19 +106,47 @@ Follower_filters_a(Follower *self)
     }
 }
 
-static void Follower_postprocessing_ii(Follower *self) { POST_PROCESSING_II };
-static void Follower_postprocessing_ai(Follower *self) { POST_PROCESSING_AI };
-static void Follower_postprocessing_ia(Follower *self) { POST_PROCESSING_IA };
-static void Follower_postprocessing_aa(Follower *self) { POST_PROCESSING_AA };
-static void Follower_postprocessing_ireva(Follower *self) { POST_PROCESSING_IREVA };
-static void Follower_postprocessing_areva(Follower *self) { POST_PROCESSING_AREVA };
-static void Follower_postprocessing_revai(Follower *self) { POST_PROCESSING_REVAI };
-static void Follower_postprocessing_revaa(Follower *self) { POST_PROCESSING_REVAA };
-static void Follower_postprocessing_revareva(Follower *self) { POST_PROCESSING_REVAREVA };
+static void Follower_postprocessing_ii(void *ptr) {
+    Follower *self = (Follower *)ptr;
+    POST_PROCESSING_II;
+}
+static void Follower_postprocessing_ai(void *ptr) {
+    Follower *self = (Follower *)ptr;
+    POST_PROCESSING_AI;
+}
+static void Follower_postprocessing_ia(void *ptr) {
+    Follower *self = (Follower *)ptr;
+    POST_PROCESSING_IA;
+}
+static void Follower_postprocessing_aa(void *ptr) {
+    Follower *self = (Follower *)ptr;
+    POST_PROCESSING_AA;
+}
+static void Follower_postprocessing_ireva(void *ptr) {
+    Follower *self = (Follower *)ptr;
+    POST_PROCESSING_IREVA;
+}
+static void Follower_postprocessing_areva(void *ptr) {
+    Follower *self = (Follower *)ptr;
+    POST_PROCESSING_AREVA;
+}
+static void Follower_postprocessing_revai(void *ptr) {
+    Follower *self = (Follower *)ptr;
+    POST_PROCESSING_REVAI;
+}
+static void Follower_postprocessing_revaa(void *ptr) {
+    Follower *self = (Follower *)ptr;
+    POST_PROCESSING_REVAA;
+}
+static void Follower_postprocessing_revareva(void *ptr) {
+    Follower *self = (Follower *)ptr;
+    POST_PROCESSING_REVAREVA;
+}
 
 static void
-Follower_setProcMode(Follower *self)
+Follower_setProcMode(void *ptr)
 {
+    Follower *self = (Follower *)ptr;
     int procmode, muladdmode;
     procmode = self->modebuffer[2];
     muladdmode = self->modebuffer[0] + self->modebuffer[1] * 10;
@@ -403,8 +433,9 @@ typedef struct
 } Follower2;
 
 static void
-Follower2_filters_ii(Follower2 *self)
+Follower2_filters_ii(void *ptr)
 {
+    Follower2 *self = (Follower2 *)ptr;
     MYFLT absin, risetime, falltime;
     int i;
 
@@ -446,8 +477,9 @@ Follower2_filters_ii(Follower2 *self)
 }
 
 static void
-Follower2_filters_ai(Follower2 *self)
+Follower2_filters_ai(void *ptr)
 {
+    Follower2 *self = (Follower2 *)ptr;
     MYFLT absin, risetime, falltime;
     int i;
 
@@ -490,8 +522,9 @@ Follower2_filters_ai(Follower2 *self)
 }
 
 static void
-Follower2_filters_ia(Follower2 *self)
+Follower2_filters_ia(void *ptr)
 {
+    Follower2 *self = (Follower2 *)ptr;
     MYFLT absin, risetime, falltime;
     int i;
 
@@ -535,8 +568,9 @@ Follower2_filters_ia(Follower2 *self)
 }
 
 static void
-Follower2_filters_aa(Follower2 *self)
+Follower2_filters_aa(void *ptr)
 {
+    Follower2 *self = (Follower2 *)ptr;
     MYFLT absin, risetime, falltime;
     int i;
 
@@ -580,19 +614,47 @@ Follower2_filters_aa(Follower2 *self)
     }
 }
 
-static void Follower2_postprocessing_ii(Follower2 *self) { POST_PROCESSING_II };
-static void Follower2_postprocessing_ai(Follower2 *self) { POST_PROCESSING_AI };
-static void Follower2_postprocessing_ia(Follower2 *self) { POST_PROCESSING_IA };
-static void Follower2_postprocessing_aa(Follower2 *self) { POST_PROCESSING_AA };
-static void Follower2_postprocessing_ireva(Follower2 *self) { POST_PROCESSING_IREVA };
-static void Follower2_postprocessing_areva(Follower2 *self) { POST_PROCESSING_AREVA };
-static void Follower2_postprocessing_revai(Follower2 *self) { POST_PROCESSING_REVAI };
-static void Follower2_postprocessing_revaa(Follower2 *self) { POST_PROCESSING_REVAA };
-static void Follower2_postprocessing_revareva(Follower2 *self) { POST_PROCESSING_REVAREVA };
+static void Follower2_postprocessing_ii(void *ptr) {
+    Follower2 *self = (Follower2 *)ptr;
+    POST_PROCESSING_II;
+}
+static void Follower2_postprocessing_ai(void *ptr) {
+    Follower2 *self = (Follower2 *)ptr;
+    POST_PROCESSING_AI;
+}
+static void Follower2_postprocessing_ia(void *ptr) {
+    Follower2 *self = (Follower2 *)ptr;
+    POST_PROCESSING_IA;
+}
+static void Follower2_postprocessing_aa(void *ptr) {
+    Follower2 *self = (Follower2 *)ptr;
+    POST_PROCESSING_AA;
+}
+static void Follower2_postprocessing_ireva(void *ptr) {
+    Follower2 *self = (Follower2 *)ptr;
+    POST_PROCESSING_IREVA;
+}
+static void Follower2_postprocessing_areva(void *ptr) {
+    Follower2 *self = (Follower2 *)ptr;
+    POST_PROCESSING_AREVA;
+}
+static void Follower2_postprocessing_revai(void *ptr) {
+    Follower2 *self = (Follower2 *)ptr;
+    POST_PROCESSING_REVAI;
+}
+static void Follower2_postprocessing_revaa(void *ptr) {
+    Follower2 *self = (Follower2 *)ptr;
+    POST_PROCESSING_REVAA;
+}
+static void Follower2_postprocessing_revareva(void *ptr) {
+    Follower2 *self = (Follower2 *)ptr;
+    POST_PROCESSING_REVAREVA;
+}
 
 static void
-Follower2_setProcMode(Follower2 *self)
+Follower2_setProcMode(void *ptr)
 {
+    Follower2 *self = (Follower2 *)ptr;
     int procmode, muladdmode;
     procmode = self->modebuffer[2] + self->modebuffer[3] * 10;
     muladdmode = self->modebuffer[0] + self->modebuffer[1] * 10;
@@ -895,8 +957,9 @@ typedef struct
 } ZCross;
 
 static void
-ZCross_process(ZCross *self)
+ZCross_process(void *ptr)
 {
+    ZCross *self = (ZCross *)ptr;
     int i;
     int count = 0;
     MYFLT inval;
@@ -924,19 +987,47 @@ ZCross_process(ZCross *self)
     self->lastValue = (MYFLT)count / self->bufsize;
 }
 
-static void ZCross_postprocessing_ii(ZCross *self) { POST_PROCESSING_II };
-static void ZCross_postprocessing_ai(ZCross *self) { POST_PROCESSING_AI };
-static void ZCross_postprocessing_ia(ZCross *self) { POST_PROCESSING_IA };
-static void ZCross_postprocessing_aa(ZCross *self) { POST_PROCESSING_AA };
-static void ZCross_postprocessing_ireva(ZCross *self) { POST_PROCESSING_IREVA };
-static void ZCross_postprocessing_areva(ZCross *self) { POST_PROCESSING_AREVA };
-static void ZCross_postprocessing_revai(ZCross *self) { POST_PROCESSING_REVAI };
-static void ZCross_postprocessing_revaa(ZCross *self) { POST_PROCESSING_REVAA };
-static void ZCross_postprocessing_revareva(ZCross *self) { POST_PROCESSING_REVAREVA };
+static void ZCross_postprocessing_ii(void *ptr) {
+    ZCross *self = (ZCross *)ptr;
+    POST_PROCESSING_II;
+}
+static void ZCross_postprocessing_ai(void *ptr) {
+    ZCross *self = (ZCross *)ptr;
+    POST_PROCESSING_AI;
+}
+static void ZCross_postprocessing_ia(void *ptr) {
+    ZCross *self = (ZCross *)ptr;
+    POST_PROCESSING_IA;
+}
+static void ZCross_postprocessing_aa(void *ptr) {
+    ZCross *self = (ZCross *)ptr;
+    POST_PROCESSING_AA;
+}
+static void ZCross_postprocessing_ireva(void *ptr) {
+    ZCross *self = (ZCross *)ptr;
+    POST_PROCESSING_IREVA;
+}
+static void ZCross_postprocessing_areva(void *ptr) {
+    ZCross *self = (ZCross *)ptr;
+    POST_PROCESSING_AREVA;
+}
+static void ZCross_postprocessing_revai(void *ptr) {
+    ZCross *self = (ZCross *)ptr;
+    POST_PROCESSING_REVAI;
+}
+static void ZCross_postprocessing_revaa(void *ptr) {
+    ZCross *self = (ZCross *)ptr;
+    POST_PROCESSING_REVAA;
+}
+static void ZCross_postprocessing_revareva(void *ptr) {
+    ZCross *self = (ZCross *)ptr;
+    POST_PROCESSING_REVAREVA;
+}
 
 static void
-ZCross_setProcMode(ZCross *self)
+ZCross_setProcMode(void *ptr)
 {
+    ZCross *self = (ZCross *)ptr;
     int muladdmode;
     muladdmode = self->modebuffer[0] + self->modebuffer[1] * 10;
 
@@ -1254,8 +1345,9 @@ typedef struct
 } Yin;
 
 static void
-Yin_process(Yin *self)
+Yin_process(void *ptr)
 {
+    Yin *self = (Yin *)ptr;
     int i, j, period, tau = 0;
     MYFLT candidate, tmp = 0.0, tmp2 = 0.0;
     MYFLT *in = Stream_getData((Stream *)self->input_stream);
@@ -1319,19 +1411,20 @@ founded:
     }
 }
 
-static void Yin_postprocessing_ii(Yin *self) { POST_PROCESSING_II };
-static void Yin_postprocessing_ai(Yin *self) { POST_PROCESSING_AI };
-static void Yin_postprocessing_ia(Yin *self) { POST_PROCESSING_IA };
-static void Yin_postprocessing_aa(Yin *self) { POST_PROCESSING_AA };
-static void Yin_postprocessing_ireva(Yin *self) { POST_PROCESSING_IREVA };
-static void Yin_postprocessing_areva(Yin *self) { POST_PROCESSING_AREVA };
-static void Yin_postprocessing_revai(Yin *self) { POST_PROCESSING_REVAI };
-static void Yin_postprocessing_revaa(Yin *self) { POST_PROCESSING_REVAA };
-static void Yin_postprocessing_revareva(Yin *self) { POST_PROCESSING_REVAREVA };
+static void Yin_postprocessing_ii(void *ptr) { Yin *self = (Yin *)ptr; POST_PROCESSING_II; }
+static void Yin_postprocessing_ai(void *ptr) { Yin *self = (Yin *)ptr; POST_PROCESSING_AI; }
+static void Yin_postprocessing_ia(void *ptr) { Yin *self = (Yin *)ptr; POST_PROCESSING_IA; }
+static void Yin_postprocessing_aa(void *ptr) { Yin *self = (Yin *)ptr; POST_PROCESSING_AA; }
+static void Yin_postprocessing_ireva(void *ptr) { Yin *self = (Yin *)ptr; POST_PROCESSING_IREVA; }
+static void Yin_postprocessing_areva(void *ptr) { Yin *self = (Yin *)ptr; POST_PROCESSING_AREVA; }
+static void Yin_postprocessing_revai(void *ptr) { Yin *self = (Yin *)ptr; POST_PROCESSING_REVAI; }
+static void Yin_postprocessing_revaa(void *ptr) { Yin *self = (Yin *)ptr; POST_PROCESSING_REVAA; }
+static void Yin_postprocessing_revareva(void *ptr) { Yin *self = (Yin *)ptr; POST_PROCESSING_REVAREVA; }
 
 static void
-Yin_setProcMode(Yin *self)
+Yin_setProcMode(void *ptr)
 {
+    Yin *self = (Yin *)ptr;
     int muladdmode;
     muladdmode = self->modebuffer[0] + self->modebuffer[1] * 10;
 
@@ -1697,8 +1790,9 @@ Centroid_alloc_memories(Centroid *self)
 }
 
 static void
-Centroid_process_i(Centroid *self)
+Centroid_process_i(void *ptr)
 {
+    Centroid *self = (Centroid *)ptr;
     int i;
     MYFLT re, im, tmp, sum1, sum2;
     MYFLT *in = Stream_getData((Stream *)self->input_stream);
@@ -1747,19 +1841,20 @@ Centroid_process_i(Centroid *self)
     }
 }
 
-static void Centroid_postprocessing_ii(Centroid *self) { POST_PROCESSING_II };
-static void Centroid_postprocessing_ai(Centroid *self) { POST_PROCESSING_AI };
-static void Centroid_postprocessing_ia(Centroid *self) { POST_PROCESSING_IA };
-static void Centroid_postprocessing_aa(Centroid *self) { POST_PROCESSING_AA };
-static void Centroid_postprocessing_ireva(Centroid *self) { POST_PROCESSING_IREVA };
-static void Centroid_postprocessing_areva(Centroid *self) { POST_PROCESSING_AREVA };
-static void Centroid_postprocessing_revai(Centroid *self) { POST_PROCESSING_REVAI };
-static void Centroid_postprocessing_revaa(Centroid *self) { POST_PROCESSING_REVAA };
-static void Centroid_postprocessing_revareva(Centroid *self) { POST_PROCESSING_REVAREVA };
+static void Centroid_postprocessing_ii(void *ptr) { Centroid *self = (Centroid *)ptr; POST_PROCESSING_II; }
+static void Centroid_postprocessing_ai(void *ptr) { Centroid *self = (Centroid *)ptr; POST_PROCESSING_AI; }
+static void Centroid_postprocessing_ia(void *ptr) { Centroid *self = (Centroid *)ptr; POST_PROCESSING_IA; }
+static void Centroid_postprocessing_aa(void *ptr) { Centroid *self = (Centroid *)ptr; POST_PROCESSING_AA; }
+static void Centroid_postprocessing_ireva(void *ptr) { Centroid *self = (Centroid *)ptr; POST_PROCESSING_IREVA; }
+static void Centroid_postprocessing_areva(void *ptr) { Centroid *self = (Centroid *)ptr; POST_PROCESSING_AREVA; }
+static void Centroid_postprocessing_revai(void *ptr) { Centroid *self = (Centroid *)ptr; POST_PROCESSING_REVAI; }
+static void Centroid_postprocessing_revaa(void *ptr) { Centroid *self = (Centroid *)ptr; POST_PROCESSING_REVAA; }
+static void Centroid_postprocessing_revareva(void *ptr) { Centroid *self = (Centroid *)ptr; POST_PROCESSING_REVAREVA; }
 
 static void
-Centroid_setProcMode(Centroid *self)
+Centroid_setProcMode(void *ptr)
 {
+    Centroid *self = (Centroid *)ptr;
     int muladdmode;
     muladdmode = self->modebuffer[0] + self->modebuffer[1] * 10;
 
@@ -2056,8 +2151,9 @@ typedef struct
 } AttackDetector;
 
 static void
-AttackDetector_process(AttackDetector *self)
+AttackDetector_process(void *ptr)
 {
+    AttackDetector *self = (AttackDetector *)ptr;
     int i, ind;
     MYFLT absin;
     MYFLT *in = Stream_getData((Stream *)self->input_stream);
@@ -2128,8 +2224,9 @@ static void AttackDetector_postprocessin
 static void AttackDetector_postprocessing_revareva(AttackDetector *self) { POST_PROCESSING_REVAREVA };
 
 static void
-AttackDetector_setProcMode(AttackDetector *self)
+AttackDetector_setProcMode(void *ptr)
 {
+    AttackDetector *self = (AttackDetector *)ptr;
     int muladdmode;
     muladdmode = self->modebuffer[0] + self->modebuffer[1] * 10;
 
@@ -3422,4 +3519,4 @@ PyTypeObject RMSType =
     0,                          /* tp_init */
     0,                                              /* tp_alloc */
     RMS_new,                                     /* tp_new */
-};
\ No newline at end of file
+};
--- a/src/objects/wgverbmodule.c
+++ b/src/objects/wgverbmodule.c
@@ -54,7 +54,7 @@ typedef struct
     Stream *cutoff_stream;
     PyObject *mix;
     Stream *mix_stream;
-    void (*mix_func_ptr)();
+    void (*mix_func_ptr)(void *);
     int modebuffer[5];
     MYFLT total_signal;
     MYFLT delays[8];
@@ -816,7 +816,7 @@ typedef struct
     Stream *cutoff_stream;
     PyObject *mix;
     Stream *mix_stream;
-    void (*mix_func_ptr)();
+    void (*mix_func_ptr)(void *);
     int modebuffer[4];
     MYFLT firstRefGain;
     MYFLT total_signal[2];
@@ -2215,4 +2215,4 @@ PyTypeObject STRevType =
     0,      /* tp_init */
     0,                         /* tp_alloc */
     STRev_new,                 /* tp_new */
-};
\ No newline at end of file
+};
--- a/src/objects/chorusmodule.c
+++ b/src/objects/chorusmodule.c
@@ -51,7 +51,7 @@ typedef struct
     Stream *depth_stream;
     PyObject *mix;
     Stream *mix_stream;
-    void (*mix_func_ptr)();
+    void (*mix_func_ptr)(void *);
     int modebuffer[5];
     MYFLT total_signal;
     MYFLT delays[8];
@@ -722,4 +722,4 @@ PyTypeObject ChorusType =
     0,      /* tp_init */
     0,                         /* tp_alloc */
     Chorus_new,                 /* tp_new */
-};
\ No newline at end of file
+};
--- a/src/objects/filtremodule.c
+++ b/src/objects/filtremodule.c
@@ -37,7 +37,7 @@ typedef struct
     Stream *freq_stream;
     PyObject *q;
     Stream *q_stream;
-    void (*coeffs_func_ptr)();
+    void (*coeffs_func_ptr)(void *);
     int init;
     int modebuffer[4]; // need at least 2 slots for mul & add
     int filtertype;
@@ -584,7 +584,7 @@ typedef struct
     Stream *freq_stream;
     PyObject *q;
     Stream *q_stream;
-    void (*coeffs_func_ptr)();
+    void (*coeffs_func_ptr)(void *);
     int init;
     int modebuffer[4]; // need at least 2 slots for mul & add
     int filtertype;
@@ -1619,7 +1619,7 @@ typedef struct
     Stream *q_stream;
     PyObject *boost;
     Stream *boost_stream;
-    void (*coeffs_func_ptr)();
+    void (*coeffs_func_ptr)(void *);
     int init;
     int modebuffer[5]; // need at least 2 slots for mul & add
     int filtertype;
--- a/src/objects/randommodule.c
+++ b/src/objects/randommodule.c
@@ -2437,7 +2437,7 @@ typedef struct
     Stream *x1_stream;
     Stream *x2_stream;
     Stream *freq_stream;
-    MYFLT (*type_func_ptr)();
+    MYFLT (*type_func_ptr)(void *);
     MYFLT xx1;
     MYFLT xx2;
     int type;
@@ -3363,7 +3363,7 @@ typedef struct
     Stream *x1_stream;
     Stream *x2_stream;
     Stream *freq_stream;
-    MYFLT (*type_func_ptr)();
+    MYFLT (*type_func_ptr)(void *);
     int scale; // 0 = Midi, 1 = frequency, 2 = transpo
     MYFLT xx1;
     MYFLT xx2;
@@ -4379,7 +4379,7 @@ typedef struct
     Stream *x2_stream;
     Stream *min_stream;
     Stream *max_stream;
-    MYFLT (*type_func_ptr)();
+    MYFLT (*type_func_ptr)(void *);
     MYFLT xx1;
     MYFLT xx2;
     int type;
--- a/src/objects/sfplayermodule.c
+++ b/src/objects/sfplayermodule.c
@@ -875,7 +875,7 @@ typedef struct
     MYFLT *markers;
     int markers_size;
     MYFLT x;
-    MYFLT (*type_func_ptr)();
+    MYFLT (*type_func_ptr)(void *);
     MYFLT (*interp_func_ptr)(MYFLT *, T_SIZE_T, MYFLT, T_SIZE_T);
 } SfMarkerShuffler;
 
@@ -2682,4 +2682,4 @@ PyTypeObject SfMarkerLoopType =
     0,      /* tp_init */
     0,                         /* tp_alloc */
     SfMarkerLoop_new,                 /* tp_new */
-};
\ No newline at end of file
+};
--- a/src/objects/trigmodule.c
+++ b/src/objects/trigmodule.c
@@ -2770,7 +2770,7 @@ typedef struct
     PyObject *x2;
     Stream *x1_stream;
     Stream *x2_stream;
-    MYFLT (*type_func_ptr)();
+    MYFLT (*type_func_ptr)(void *);
     MYFLT xx1;
     MYFLT xx2;
     int type;
@@ -3533,7 +3533,7 @@ typedef struct
     PyObject *x2;
     Stream *x1_stream;
     Stream *x2_stream;
-    MYFLT (*type_func_ptr)();
+    MYFLT (*type_func_ptr)(void *);
     int scale; // 0 = Midi, 1 = frequency, 2 = transpo
     int range_min;
     int range_max;
@@ -7161,4 +7161,4 @@ PyTypeObject TrigValType =
     0,                          /* tp_init */
     0,                                              /* tp_alloc */
     TrigVal_new,                                     /* tp_new */
-};
\ No newline at end of file
+};
