Download raw body.
fluidsynth update 2.3.4
On Sun, Jan 21, 2024 at 01:13:16PM +0100, Sebastian Reitenbach wrote:
> Hi,
>
> On Sunday, January 21, 2024 00:07 CET, Thomas Frohwein <tfrohwein@fastmail.com> wrote:
>
> > Here is a version that restores sndio support again. I'm not sure how
> > best to test that what audio I'm hearing is from sndio and not sdl2,
> > but with this, sndio shows up again with fluidsynth -h as audio and
> > midi driver and a quick test with shockolate and simutrans still gives
> > me working audio.
> >
> > Please test and provide comments! I admit the CFLAGS+=-DSNDIO_SUPPORT
> > is a hack, but was the quickest way to a solution to the build system
> > pending a more thorough look where cmake needs to set this.
>
> it's not perfect yet, but makes it better. QSynth starts, takes input from my midi controller,
> but it also produces a humming noise. tested with a qsynth-0.9.12 (based on @rsadowsi's
> version he sent August last year)
>
> regarding CFLAGS, we should merge in some additional patches I sent off-list, I got it
> to propagate properly.
>
> Sebastian
Thanks, new diff with your cmake-related changes that doesn't need the CFLAGS+=
anymore.
ok?
Index: Makefile
===================================================================
RCS file: /cvs/ports/audio/fluidsynth/Makefile,v
retrieving revision 1.35
diff -u -p -r1.35 Makefile
--- Makefile 20 Jan 2024 20:01:56 -0000 1.35
+++ Makefile 21 Jan 2024 13:53:23 -0000
@@ -3,6 +3,7 @@ COMMENT = SoundFont2 software synthesiz
GH_ACCOUNT = FluidSynth
GH_PROJECT = fluidsynth
GH_TAGNAME = v2.3.4
+REVISION = 0
SHARED_LIBS += fluidsynth 3.0 # 6.0
Index: files/fluid_sndio.c
===================================================================
RCS file: /cvs/ports/audio/fluidsynth/files/fluid_sndio.c,v
retrieving revision 1.4
diff -u -p -r1.4 fluid_sndio.c
--- files/fluid_sndio.c 29 Mar 2013 12:37:43 -0000 1.4
+++ files/fluid_sndio.c 21 Jan 2024 13:53:23 -0000
@@ -66,8 +66,6 @@ typedef struct {
fluid_midi_parser_t *parser;
} fluid_sndio_midi_driver_t;
-int delete_fluid_sndio_audio_driver(fluid_audio_driver_t* p);
-
/* local utilities */
static void* fluid_sndio_audio_run(void* d);
static void* fluid_sndio_audio_run2(void* d);
@@ -76,7 +74,7 @@ static void* fluid_sndio_audio_run2(void
void
fluid_sndio_audio_driver_settings(fluid_settings_t* settings)
{
- fluid_settings_register_str(settings, "audio.sndio.device", "default", 0, NULL, NULL);
+ fluid_settings_register_str(settings, "audio.sndio.device", "default", 0);
}
/*
@@ -109,7 +107,7 @@ new_fluid_sndio_audio_driver(fluid_setti
dev->data = NULL;
dev->cont = 1;
- if (!fluid_settings_getstr(settings, "audio.sndio.device", &devname)) {
+ if (!fluid_settings_getstr_default(settings, "audio.sndio.device", &devname)) {
devname = NULL;
}
@@ -210,7 +208,7 @@ new_fluid_sndio_audio_driver2(fluid_sett
dev->data = data;
dev->cont = 1;
- if (!fluid_settings_getstr(settings, "audio.sndio.device", &devname)) {
+ if (!fluid_settings_getstr_default(settings, "audio.sndio.device", &devname)) {
devname = NULL;
}
@@ -286,19 +284,19 @@ error_recovery:
/*
* delete_fluid_sndio_audio_driver
*/
-int
+void
delete_fluid_sndio_audio_driver(fluid_audio_driver_t* p)
{
fluid_sndio_audio_driver_t* dev = (fluid_sndio_audio_driver_t*) p;
if (dev == NULL) {
- return FLUID_OK;
+ return;
}
dev->cont = 0;
if (dev->thread) {
if (pthread_join(dev->thread, NULL)) {
FLUID_LOG(FLUID_ERR, "Failed to join the audio thread");
- return FLUID_FAILED;
+ return;
}
}
if (dev->hdl) {
@@ -308,7 +306,7 @@ delete_fluid_sndio_audio_driver(fluid_au
FLUID_FREE(dev->buffer);
}
FLUID_FREE(dev);
- return FLUID_OK;
+ return;
}
/*
@@ -372,17 +370,17 @@ fluid_sndio_audio_run2(void* d)
void fluid_sndio_midi_driver_settings(fluid_settings_t* settings)
{
- fluid_settings_register_str(settings, "midi.sndio.device", "default", 0, NULL, NULL);
+ fluid_settings_register_str(settings, "midi.sndio.device", "default", 0);
}
-int
+void
delete_fluid_sndio_midi_driver(fluid_midi_driver_t *addr)
{
int err;
fluid_sndio_midi_driver_t *dev = (fluid_sndio_midi_driver_t *)addr;
if (dev == NULL) {
- return FLUID_OK;
+ return;
}
dev->status = FLUID_MIDI_DONE;
@@ -391,11 +389,11 @@ delete_fluid_sndio_midi_driver(fluid_mid
err = pthread_cancel(dev->thread);
if (err) {
FLUID_LOG(FLUID_ERR, "Failed to cancel the midi thread");
- return FLUID_FAILED;
+ return;
}
if (pthread_join(dev->thread, NULL)) {
FLUID_LOG(FLUID_ERR, "Failed to join the midi thread");
- return FLUID_FAILED;
+ return;
}
}
if (dev->hdl != NULL) {
@@ -405,7 +403,7 @@ delete_fluid_sndio_midi_driver(fluid_mid
delete_fluid_midi_parser(dev->parser);
}
FLUID_FREE(dev);
- return FLUID_OK;
+ return;
}
void *
@@ -493,7 +491,7 @@ new_fluid_sndio_midi_driver(fluid_settin
}
/* get the device name. if none is specified, use the default device. */
- if (!fluid_settings_getstr(settings, "midi.sndio.device", &device)) {
+ if (!fluid_settings_getstr_default(settings, "midi.sndio.device", &device)) {
device = NULL;
}
Index: patches/patch-FluidSynthConfig_cmake_in
===================================================================
RCS file: patches/patch-FluidSynthConfig_cmake_in
diff -N patches/patch-FluidSynthConfig_cmake_in
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-FluidSynthConfig_cmake_in 21 Jan 2024 13:53:23 -0000
@@ -0,0 +1,28 @@
+Index: FluidSynthConfig.cmake.in
+--- FluidSynthConfig.cmake.in.orig
++++ FluidSynthConfig.cmake.in
+@@ -1,4 +1,5 @@
+ # Audio / MIDI driver support
++set(FLUIDSYNTH_SUPPORT_SNDIO @SNDIO_SUPPORT@)
+ set(FLUIDSYNTH_SUPPORT_ALSA @ALSA_SUPPORT@)
+ set(FLUIDSYNTH_SUPPORT_COREAUDIO @COREAUDIO_SUPPORT@)
+ set(FLUIDSYNTH_SUPPORT_COREMIDI @COREMIDI_SUPPORT@)
+@@ -13,6 +14,7 @@ set(FLUIDSYNTH_SUPPORT_PIPEWIRE @PIPEWIRE_SUPPORT@)
+ set(FLUIDSYNTH_SUPPORT_PORTAUDIO @PORTAUDIO_SUPPORT@)
+ set(FLUIDSYNTH_SUPPORT_PULSE @PULSE_SUPPORT@)
+ set(FLUIDSYNTH_SUPPORT_SDL2 @SDL2_SUPPORT@)
++set(FLUIDSYNTH_SUPPORT_SNDIO @SNDIO_SUPPORT@)
+ set(FLUIDSYNTH_SUPPORT_WASAPI @WASAPI_SUPPORT@)
+ set(FLUIDSYNTH_SUPPORT_WAVEOUT @WAVEOUT_SUPPORT@)
+ set(FLUIDSYNTH_SUPPORT_WINMIDI @WINMIDI_SUPPORT@)
+@@ -134,6 +136,10 @@ if(NOT FLUIDSYNTH_IS_SHARED)
+
+ if(FLUIDSYNTH_SUPPORT_SDL2 AND NOT TARGET SDL2::SDL2)
+ find_dependency(SDL2)
++ endif()
++
++ if(FLUIDSYNTH_SUPPORT_SNDIO AND NOT TARGET SNDIO::SNDIO)
++ find_dependency(SNDIO)
+ endif()
+
+ if(FLUIDSYNTH_SUPPORT_SYSTEMD AND NOT Systemd::libsystemd)
Index: patches/patch-cmake_admin_report_cmake
===================================================================
RCS file: patches/patch-cmake_admin_report_cmake
diff -N patches/patch-cmake_admin_report_cmake
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-cmake_admin_report_cmake 21 Jan 2024 13:53:23 -0000
@@ -0,0 +1,16 @@
+Index: cmake_admin/report.cmake
+--- cmake_admin/report.cmake.orig
++++ cmake_admin/report.cmake
+@@ -85,6 +85,12 @@ else ( SDL2_SUPPORT )
+ set ( AUDIO_MIDI_REPORT "${AUDIO_MIDI_REPORT} SDL2: no\n" )
+ endif ( SDL2_SUPPORT )
+
++if ( SNDIO_SUPPORT )
++ set ( AUDIO_MIDI_REPORT "${AUDIO_MIDI_REPORT} sndio yes\n" )
++else ( SNDIO_SUPPORT )
++ set ( AUDIO_MIDI_REPORT "${AUDIO_MIDI_REPORT} sndio no\n" )
++endif ( SNDIO_SUPPORT )
++
+ if ( WASAPI_SUPPORT )
+ set ( AUDIO_MIDI_REPORT "${AUDIO_MIDI_REPORT} WASAPI: yes\n" )
+ else ( WASAPI_SUPPORT )
Index: patches/patch-src_CMakeLists_txt
===================================================================
RCS file: /cvs/ports/audio/fluidsynth/patches/patch-src_CMakeLists_txt,v
retrieving revision 1.1
diff -u -p -r1.1 patch-src_CMakeLists_txt
--- patches/patch-src_CMakeLists_txt 20 Jan 2024 20:01:56 -0000 1.1
+++ patches/patch-src_CMakeLists_txt 21 Jan 2024 13:53:23 -0000
@@ -6,13 +6,21 @@ Index: src/CMakeLists.txt
# ************ library ************
+if ( SNDIO_SUPPORT )
-+ set ( fluid_pulse_SOURCES drivers/fluid_sndio.c )
++ set ( fluid_sndio_SOURCES drivers/fluid_sndio.c )
+endif ( SNDIO_SUPPORT )
+
if ( PULSE_SUPPORT )
set ( fluid_pulse_SOURCES drivers/fluid_pulse.c )
endif ( PULSE_SUPPORT )
-@@ -366,6 +370,11 @@ target_link_libraries ( libfluidsynth-OBJ PUBLIC GLib2
+@@ -249,6 +253,7 @@ add_library ( libfluidsynth-OBJ OBJECT
+ ${fluid_waveout_SOURCES}
+ ${fluid_winmidi_SOURCES}
+ ${fluid_sdl2_SOURCES}
++ ${fluid_sndio_SOURCES}
+ ${fluid_libinstpatch_SOURCES}
+ ${libfluidsynth_SOURCES}
+ ${public_HEADERS}
+@@ -366,6 +371,11 @@ target_link_libraries ( libfluidsynth-OBJ PUBLIC GLib2
if ( TARGET SndFile::sndfile AND LIBSNDFILE_SUPPORT )
target_link_libraries ( libfluidsynth-OBJ PUBLIC SndFile::sndfile )
Index: patches/patch-src_config_cmake
===================================================================
RCS file: patches/patch-src_config_cmake
diff -N patches/patch-src_config_cmake
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_config_cmake 21 Jan 2024 13:53:23 -0000
@@ -0,0 +1,13 @@
+Index: src/config.cmake
+--- src/config.cmake.orig
++++ src/config.cmake
+@@ -208,6 +208,9 @@
+ /* Define to enable SDL2 audio driver */
+ #cmakedefine SDL2_SUPPORT @SDL2_SUPPORT@
+
++/* Define to enable sndio audio driver */
++#cmakedefine SNDIO_SUPPORT @SNDIO_SUPPORT@
++
+ /* Define to 1 if you have the ANSI C header files. */
+ #cmakedefine STDC_HEADERS @STDC_HEADERS@
+
Index: patches/patch-src_drivers_fluid_adriver_c
===================================================================
RCS file: patches/patch-src_drivers_fluid_adriver_c
diff -N patches/patch-src_drivers_fluid_adriver_c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_drivers_fluid_adriver_c 21 Jan 2024 13:53:23 -0000
@@ -0,0 +1,20 @@
+Index: src/drivers/fluid_adriver.c
+--- src/drivers/fluid_adriver.c.orig
++++ src/drivers/fluid_adriver.c
+@@ -40,6 +40,16 @@ struct _fluid_audriver_definition_t
+ /* Available audio drivers, listed in order of preference */
+ static const fluid_audriver_definition_t fluid_audio_drivers[] =
+ {
++#if SNDIO_SUPPORT
++ {
++ "sndio",
++ new_fluid_sndio_audio_driver,
++ new_fluid_sndio_audio_driver2,
++ delete_fluid_sndio_audio_driver,
++ fluid_sndio_audio_driver_settings
++ },
++#endif
++
+ #if ALSA_SUPPORT
+ {
+ "alsa",
Index: patches/patch-src_drivers_fluid_adriver_h
===================================================================
RCS file: patches/patch-src_drivers_fluid_adriver_h
diff -N patches/patch-src_drivers_fluid_adriver_h
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_drivers_fluid_adriver_h 21 Jan 2024 13:53:23 -0000
@@ -0,0 +1,19 @@
+Index: src/drivers/fluid_adriver.h
+--- src/drivers/fluid_adriver.h.orig
++++ src/drivers/fluid_adriver.h
+@@ -43,6 +43,15 @@ void fluid_audio_driver_settings(fluid_settings_t *set
+ /* Defined in fluid_filerenderer.c */
+ void fluid_file_renderer_settings(fluid_settings_t *settings);
+
++#if SNDIO_SUPPORT
++fluid_audio_driver_t *new_fluid_sndio_audio_driver(fluid_settings_t *settings,
++ fluid_synth_t *synth);
++fluid_audio_driver_t *new_fluid_sndio_audio_driver2(fluid_settings_t *settings,
++ fluid_audio_func_t func, void *data);
++void delete_fluid_sndio_audio_driver(fluid_audio_driver_t *p);
++void fluid_sndio_audio_driver_settings(fluid_settings_t *settings);
++#endif
++
+ #if PULSE_SUPPORT
+ fluid_audio_driver_t *new_fluid_pulse_audio_driver(fluid_settings_t *settings,
+ fluid_synth_t *synth);
Index: patches/patch-src_drivers_fluid_mdriver_c
===================================================================
RCS file: patches/patch-src_drivers_fluid_mdriver_c
diff -N patches/patch-src_drivers_fluid_mdriver_c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_drivers_fluid_mdriver_c 21 Jan 2024 13:53:23 -0000
@@ -0,0 +1,18 @@
+Index: src/drivers/fluid_mdriver.c
+--- src/drivers/fluid_mdriver.c.orig
++++ src/drivers/fluid_mdriver.c
+@@ -38,6 +38,14 @@ struct _fluid_mdriver_definition_t
+
+ static const fluid_mdriver_definition_t fluid_midi_drivers[] =
+ {
++#if SNDIO_SUPPORT
++ {
++ "sndio",
++ new_fluid_sndio_midi_driver,
++ delete_fluid_sndio_midi_driver,
++ fluid_sndio_midi_driver_settings
++ },
++#endif
+ #if ALSA_SUPPORT
+ {
+ "alsa_seq",
Index: patches/patch-src_drivers_fluid_mdriver_h
===================================================================
RCS file: patches/patch-src_drivers_fluid_mdriver_h
diff -N patches/patch-src_drivers_fluid_mdriver_h
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_drivers_fluid_mdriver_h 21 Jan 2024 13:53:23 -0000
@@ -0,0 +1,19 @@
+Index: src/drivers/fluid_mdriver.h
+--- src/drivers/fluid_mdriver.h.orig
++++ src/drivers/fluid_mdriver.h
+@@ -38,6 +38,15 @@ struct _fluid_midi_driver_t
+
+ void fluid_midi_driver_settings(fluid_settings_t *settings);
+
++/* sndio */
++#if SNDIO_SUPPORT
++fluid_midi_driver_t *new_fluid_sndio_midi_driver(fluid_settings_t *settings,
++ handle_midi_event_func_t handler,
++ void *event_handler_data);
++void delete_fluid_sndio_midi_driver(fluid_midi_driver_t *p);
++void fluid_sndio_midi_driver_settings(fluid_settings_t *settings);
++#endif
++
+ /* ALSA */
+ #if ALSA_SUPPORT
+ fluid_midi_driver_t *new_fluid_alsa_rawmidi_driver(fluid_settings_t *settings,
fluidsynth update 2.3.4