Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package fluidsynth for openSUSE:Factory 
checked in at 2022-05-12 22:57:32
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/fluidsynth (Old)
 and      /work/SRC/openSUSE:Factory/.fluidsynth.new.1538 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "fluidsynth"

Thu May 12 22:57:32 2022 rev:66 rq:976008 version:2.2.7

Changes:
--------
--- /work/SRC/openSUSE:Factory/fluidsynth/fluidsynth.changes    2022-03-28 
16:59:13.340860245 +0200
+++ /work/SRC/openSUSE:Factory/.fluidsynth.new.1538/fluidsynth.changes  
2022-05-12 22:57:36.396574965 +0200
@@ -1,0 +2,9 @@
+Mon Apr 25 18:48:28 UTC 2022 - Tom Mbrt <[email protected]>
+
+- Update to 2.2.7
+  * Fix file driver not working correctly on Windows
+  * Add a function to create a sequencer event from a midi event
+  * Precompiled x86 binaries are now x87-FPU compatible
+  * Fix fluidsynth not responding to SIGINT and SIGTERM when using recent SDL2
+
+-------------------------------------------------------------------

Old:
----
  fluidsynth-2.2.6.tar.gz

New:
----
  fluidsynth-2.2.7.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ fluidsynth.spec ++++++
--- /var/tmp/diff_new_pack.N1JPU2/_old  2022-05-12 22:57:36.948575706 +0200
+++ /var/tmp/diff_new_pack.N1JPU2/_new  2022-05-12 22:57:36.960575722 +0200
@@ -18,7 +18,7 @@
 
 %define sover   3
 Name:           fluidsynth
-Version:        2.2.6
+Version:        2.2.7
 Release:        0
 Summary:        A Real-Time Software Synthesizer That Uses Soundfont(tm)
 License:        LGPL-2.1-or-later

++++++ fluidsynth-2.2.6.tar.gz -> fluidsynth-2.2.7.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fluidsynth-2.2.6/.azure/azure-pipelines-vcpkg.yml 
new/fluidsynth-2.2.7/.azure/azure-pipelines-vcpkg.yml
--- old/fluidsynth-2.2.6/.azure/azure-pipelines-vcpkg.yml       2022-03-19 
12:49:15.000000000 +0100
+++ new/fluidsynth-2.2.7/.azure/azure-pipelines-vcpkg.yml       2022-04-25 
20:18:10.000000000 +0200
@@ -31,7 +31,7 @@
   toolset: 'v142'
   generator: 'Visual Studio 16 2019'
   configuration: 'RelWithDebInfo'
-  VCPKG_REVISION: 'e6dcc079c81161786eb7b052209a2047e79f2c6c'
+  VCPKG_REVISION: 'e809a42f87565e803b2178a0c11263f462d1800a'
 
 jobs:
 - job: vcpkg
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fluidsynth-2.2.6/.azure/azure-pipelines-win.yml 
new/fluidsynth-2.2.7/.azure/azure-pipelines-win.yml
--- old/fluidsynth-2.2.6/.azure/azure-pipelines-win.yml 2022-03-19 
12:49:15.000000000 +0100
+++ new/fluidsynth-2.2.7/.azure/azure-pipelines-win.yml 2022-04-25 
20:18:10.000000000 +0200
@@ -24,11 +24,15 @@
         gtk-bundle: $(gtk-bundle-x86)
         libsndfile-url: $(libsndfile-url-x86)
         artifact-prefix: "fluidsynth"
+        CFLAGS: "/arch:IA32"
+        CXXFLAGS: "/arch:IA32"
       x64:
         platform: x64
         gtk-bundle: $(gtk-bundle-x64)
         libsndfile-url: $(libsndfile-url-x64)
         artifact-prefix: "fluidsynth"
+        CFLAGS: ""
+        CXXFLAGS: ""
   pool:
     vmImage: 'windows-2019'
   steps:
@@ -38,7 +42,7 @@
         # https://dev.azure.com/tommbrt/_apis/projects?api-version=5.0
         project: 'd3638885-de4a-4ce7-afe7-f237ae461c07'
         pipeline: 1
-        artifactName: libinstpatch-$(platform)
+        artifactName: libinstpatch-XP-$(platform)
         downloadPath: '$(Build.ArtifactStagingDirectory)'
       displayName: 'Get libinstpatch'
     - script: |
@@ -52,11 +56,11 @@
         REM need to fix the naming of libsndfile otherwise the linker won't 
find it
         mv lib\libsndfile-1.lib lib\sndfile.lib || exit -1
         mv lib\libsndfile-1.def lib\sndfile.def || exit -1
-        cd $(Build.ArtifactStagingDirectory)\libinstpatch-$(platform)
+        cd $(Build.ArtifactStagingDirectory)\libinstpatch-XP-$(platform)
         cp -rf * d:\deps\
         mv -f * ..
         cd ..
-        rmdir $(Build.ArtifactStagingDirectory)\libinstpatch-$(platform)\
+        rmdir $(Build.ArtifactStagingDirectory)\libinstpatch-XP-$(platform)\
         DEL /F C:\Strawberry\perl\bin\pkg-config.bat
       displayName: 'Prerequisites'
     - script: |
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fluidsynth-2.2.6/CMakeLists.txt 
new/fluidsynth-2.2.7/CMakeLists.txt
--- old/fluidsynth-2.2.6/CMakeLists.txt 2022-03-19 12:49:15.000000000 +0100
+++ new/fluidsynth-2.2.7/CMakeLists.txt 2022-04-25 20:18:10.000000000 +0200
@@ -38,7 +38,7 @@
 # FluidSynth package version
 set ( FLUIDSYNTH_VERSION_MAJOR 2 )
 set ( FLUIDSYNTH_VERSION_MINOR 2 )
-set ( FLUIDSYNTH_VERSION_MICRO 6 )
+set ( FLUIDSYNTH_VERSION_MICRO 7 )
 set ( VERSION 
"${FLUIDSYNTH_VERSION_MAJOR}.${FLUIDSYNTH_VERSION_MINOR}.${FLUIDSYNTH_VERSION_MICRO}"
 )
 set ( FLUIDSYNTH_VERSION "\"${VERSION}\"" )
 
@@ -52,8 +52,8 @@
 # if any interfaces have been removed/changed (compatibility broken): AGE=0
 # This is not exactly the same algorithm as the libtool one, but the results 
are the same.
 set ( LIB_VERSION_CURRENT 3 )
-set ( LIB_VERSION_AGE 0 )
-set ( LIB_VERSION_REVISION 6 )
+set ( LIB_VERSION_AGE 1 )
+set ( LIB_VERSION_REVISION 0 )
 set ( LIB_VERSION_INFO
       "${LIB_VERSION_CURRENT}.${LIB_VERSION_AGE}.${LIB_VERSION_REVISION}" )
 
@@ -651,7 +651,7 @@
 
     unset ( SDL2_SUPPORT CACHE )
     if ( enable-sdl2 )
-        pkg_check_modules ( SDL2 sdl2 )
+        pkg_check_modules ( SDL2 sdl2>=2.0.4 )
         set ( SDL2_SUPPORT ${SDL2_FOUND} )
         if ( SDL2_SUPPORT )
           list( APPEND PC_REQUIRES_PRIV "sdl2")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fluidsynth-2.2.6/doc/fluidsynth-v20-devdoc.txt 
new/fluidsynth-2.2.7/doc/fluidsynth-v20-devdoc.txt
--- old/fluidsynth-2.2.6/doc/fluidsynth-v20-devdoc.txt  2022-03-19 
12:49:15.000000000 +0100
+++ new/fluidsynth-2.2.7/doc/fluidsynth-v20-devdoc.txt  2022-04-25 
20:18:10.000000000 +0200
@@ -8,8 +8,8 @@
 \author David Henningsson
 \author Tom Moebert
 \author Copyright &copy; 2003-2022 Peter Hanappe, Conrad Berh??rster, Antoine 
Schmitt, Pedro L??pez-Cabanillas, Josh Green, David Henningsson, Tom Moebert
-\version Revision 2.2.6
-\date 2022-03-19
+\version Revision 2.2.7
+\date 2022-04-25
 
 All the source code examples in this document are in the public domain; you 
can use them as you please. This document is licensed under the Creative 
Commons Attribution-Share Alike 3.0 Unported License. To view a copy of this 
license, visit https://creativecommons.org/licenses/by-sa/3.0/ . The FluidSynth 
library is distributed under the GNU Lesser General Public License. A copy of 
the GNU Lesser General Public License is contained in the FluidSynth package; 
if not, visit https://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt or write 
to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
MA 02110-1301 USA.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fluidsynth-2.2.6/doc/recent_changes.txt 
new/fluidsynth-2.2.7/doc/recent_changes.txt
--- old/fluidsynth-2.2.6/doc/recent_changes.txt 2022-03-19 12:49:15.000000000 
+0100
+++ new/fluidsynth-2.2.7/doc/recent_changes.txt 2022-04-25 20:18:10.000000000 
+0200
@@ -1,6 +1,12 @@
 /*!
 
 \page RecentChanges Recent Changes
+\section NewIn2_2_7 What's new in 2.2.7?
+
+- Most getter functions of the MIDI event API are now const correct
+- fluid_event_from_midi_event() has been added
+
+
 \section NewIn2_2_0 What's new in 2.2.0?
 
 - #fluid_file_callbacks_t <span style="color:red">now uses <code>long 
long</code> as file-offset type (see #fluid_long_long_t).</span><span 
style="color:red;font-weight:bold">This is a breaking change</span>, which 
allows to load SoundFonts bigger than 2GiB on Windows. This change required to 
bump fluidsynth's SOVERSION.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fluidsynth-2.2.6/include/fluidsynth/event.h 
new/fluidsynth-2.2.7/include/fluidsynth/event.h
--- old/fluidsynth-2.2.6/include/fluidsynth/event.h     2022-03-19 
12:49:15.000000000 +0100
+++ new/fluidsynth-2.2.7/include/fluidsynth/event.h     2022-04-25 
20:18:10.000000000 +0200
@@ -117,6 +117,7 @@
 FLUIDSYNTH_API void fluid_event_unregistering(fluid_event_t *evt);
 
 FLUIDSYNTH_API void fluid_event_scale(fluid_event_t *evt, double new_scale);
+FLUIDSYNTH_API int fluid_event_from_midi_event(fluid_event_t *, const 
fluid_midi_event_t *);
 
 /* Accessing event data */
 FLUIDSYNTH_API int fluid_event_get_type(fluid_event_t *evt);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fluidsynth-2.2.6/include/fluidsynth/midi.h 
new/fluidsynth-2.2.7/include/fluidsynth/midi.h
--- old/fluidsynth-2.2.6/include/fluidsynth/midi.h      2022-03-19 
12:49:15.000000000 +0100
+++ new/fluidsynth-2.2.7/include/fluidsynth/midi.h      2022-04-25 
20:18:10.000000000 +0200
@@ -114,20 +114,20 @@
 /** @endlifecycle */
 
 FLUIDSYNTH_API int fluid_midi_event_set_type(fluid_midi_event_t *evt, int 
type);
-FLUIDSYNTH_API int fluid_midi_event_get_type(fluid_midi_event_t *evt);
+FLUIDSYNTH_API int fluid_midi_event_get_type(const fluid_midi_event_t *evt);
 FLUIDSYNTH_API int fluid_midi_event_set_channel(fluid_midi_event_t *evt, int 
chan);
-FLUIDSYNTH_API int fluid_midi_event_get_channel(fluid_midi_event_t *evt);
-FLUIDSYNTH_API int fluid_midi_event_get_key(fluid_midi_event_t *evt);
+FLUIDSYNTH_API int fluid_midi_event_get_channel(const fluid_midi_event_t *evt);
+FLUIDSYNTH_API int fluid_midi_event_get_key(const fluid_midi_event_t *evt);
 FLUIDSYNTH_API int fluid_midi_event_set_key(fluid_midi_event_t *evt, int key);
-FLUIDSYNTH_API int fluid_midi_event_get_velocity(fluid_midi_event_t *evt);
+FLUIDSYNTH_API int fluid_midi_event_get_velocity(const fluid_midi_event_t 
*evt);
 FLUIDSYNTH_API int fluid_midi_event_set_velocity(fluid_midi_event_t *evt, int 
vel);
-FLUIDSYNTH_API int fluid_midi_event_get_control(fluid_midi_event_t *evt);
+FLUIDSYNTH_API int fluid_midi_event_get_control(const fluid_midi_event_t *evt);
 FLUIDSYNTH_API int fluid_midi_event_set_control(fluid_midi_event_t *evt, int 
ctrl);
-FLUIDSYNTH_API int fluid_midi_event_get_value(fluid_midi_event_t *evt);
+FLUIDSYNTH_API int fluid_midi_event_get_value(const fluid_midi_event_t *evt);
 FLUIDSYNTH_API int fluid_midi_event_set_value(fluid_midi_event_t *evt, int 
val);
-FLUIDSYNTH_API int fluid_midi_event_get_program(fluid_midi_event_t *evt);
+FLUIDSYNTH_API int fluid_midi_event_get_program(const fluid_midi_event_t *evt);
 FLUIDSYNTH_API int fluid_midi_event_set_program(fluid_midi_event_t *evt, int 
val);
-FLUIDSYNTH_API int fluid_midi_event_get_pitch(fluid_midi_event_t *evt);
+FLUIDSYNTH_API int fluid_midi_event_get_pitch(const fluid_midi_event_t *evt);
 FLUIDSYNTH_API int fluid_midi_event_set_pitch(fluid_midi_event_t *evt, int 
val);
 FLUIDSYNTH_API int fluid_midi_event_set_sysex(fluid_midi_event_t *evt, void 
*data,
         int size, int dynamic);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fluidsynth-2.2.6/include/fluidsynth/seqbind.h 
new/fluidsynth-2.2.7/include/fluidsynth/seqbind.h
--- old/fluidsynth-2.2.6/include/fluidsynth/seqbind.h   2022-03-19 
12:49:15.000000000 +0100
+++ new/fluidsynth-2.2.7/include/fluidsynth/seqbind.h   2022-04-25 
20:18:10.000000000 +0200
@@ -34,8 +34,8 @@
  */
 FLUIDSYNTH_API
 fluid_seq_id_t fluid_sequencer_register_fluidsynth(fluid_sequencer_t *seq, 
fluid_synth_t *synth);
-FLUIDSYNTH_API int
-fluid_sequencer_add_midi_event_to_buffer(void *data, fluid_midi_event_t 
*event);
+FLUIDSYNTH_API 
+int fluid_sequencer_add_midi_event_to_buffer(void *data, fluid_midi_event_t 
*event);
 /* @} */
 
 #ifdef __cplusplus
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fluidsynth-2.2.6/src/drivers/fluid_aufile.c 
new/fluidsynth-2.2.7/src/drivers/fluid_aufile.c
--- old/fluidsynth-2.2.6/src/drivers/fluid_aufile.c     2022-03-19 
12:49:15.000000000 +0100
+++ new/fluidsynth-2.2.7/src/drivers/fluid_aufile.c     2022-04-25 
20:18:10.000000000 +0200
@@ -39,7 +39,6 @@
 typedef struct
 {
     fluid_audio_driver_t driver;
-    fluid_audio_func_t callback;
     void *data;
     fluid_file_renderer_t *renderer;
     int period_size;
@@ -49,7 +48,7 @@
 } fluid_file_audio_driver_t;
 
 
-static int fluid_file_audio_run_s16(void *d, unsigned int msec);
+static int fluid_file_audio_run(void *d, unsigned int msec);
 
 /**************************************************************
  *
@@ -78,7 +77,6 @@
     fluid_settings_getnum(settings, "synth.sample-rate", &dev->sample_rate);
 
     dev->data = synth;
-    dev->callback = (fluid_audio_func_t) fluid_synth_process;
     dev->samples = 0;
 
     dev->renderer = new_fluid_file_renderer(synth);
@@ -89,7 +87,7 @@
     }
 
     msec = (int)(0.5 + dev->period_size / dev->sample_rate * 1000.0);
-    dev->timer = new_fluid_timer(msec, fluid_file_audio_run_s16, (void *) dev, 
TRUE, FALSE, TRUE);
+    dev->timer = new_fluid_timer(msec, fluid_file_audio_run, (void *) dev, 
TRUE, FALSE, TRUE);
 
     if(dev->timer == NULL)
     {
@@ -115,7 +113,7 @@
     FLUID_FREE(dev);
 }
 
-static int fluid_file_audio_run_s16(void *d, unsigned int clock_time)
+static int fluid_file_audio_run(void *d, unsigned int clock_time)
 {
     fluid_file_audio_driver_t *dev = (fluid_file_audio_driver_t *) d;
     unsigned int sample_time;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fluidsynth-2.2.6/src/fluidsynth.c 
new/fluidsynth-2.2.7/src/fluidsynth.c
--- old/fluidsynth-2.2.6/src/fluidsynth.c       2022-03-19 12:49:15.000000000 
+0100
+++ new/fluidsynth-2.2.7/src/fluidsynth.c       2022-04-25 20:18:10.000000000 
+0200
@@ -400,7 +400,8 @@
 #endif
 
 #if SDL2_SUPPORT
-
+    // Tell SDL that it shouldn't intercept signals, otherwise SIGINT and 
SIGTERM won't quit fluidsynth
+    SDL_SetHint(SDL_HINT_NO_SIGNAL_HANDLERS, "1");
     if(SDL_Init(SDL_INIT_AUDIO) != 0)
     {
         fprintf(stderr, "Warning: Unable to initialize SDL2 Audio: %s", 
SDL_GetError());
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fluidsynth-2.2.6/src/midi/fluid_midi.c 
new/fluidsynth-2.2.7/src/midi/fluid_midi.c
--- old/fluidsynth-2.2.6/src/midi/fluid_midi.c  2022-03-19 12:49:15.000000000 
+0100
+++ new/fluidsynth-2.2.7/src/midi/fluid_midi.c  2022-04-25 20:18:10.000000000 
+0200
@@ -1106,7 +1106,7 @@
  * @return Event type field (MIDI status byte without channel)
  */
 int
-fluid_midi_event_get_type(fluid_midi_event_t *evt)
+fluid_midi_event_get_type(const fluid_midi_event_t *evt)
 {
     return evt->type;
 }
@@ -1130,7 +1130,7 @@
  * @return Channel field
  */
 int
-fluid_midi_event_get_channel(fluid_midi_event_t *evt)
+fluid_midi_event_get_channel(const fluid_midi_event_t *evt)
 {
     return evt->channel;
 }
@@ -1154,7 +1154,7 @@
  * @return MIDI note number (0-127)
  */
 int
-fluid_midi_event_get_key(fluid_midi_event_t *evt)
+fluid_midi_event_get_key(const fluid_midi_event_t *evt)
 {
     return evt->param1;
 }
@@ -1178,7 +1178,7 @@
  * @return MIDI velocity number (0-127)
  */
 int
-fluid_midi_event_get_velocity(fluid_midi_event_t *evt)
+fluid_midi_event_get_velocity(const fluid_midi_event_t *evt)
 {
     return evt->param2;
 }
@@ -1202,7 +1202,7 @@
  * @return MIDI control number
  */
 int
-fluid_midi_event_get_control(fluid_midi_event_t *evt)
+fluid_midi_event_get_control(const fluid_midi_event_t *evt)
 {
     return evt->param1;
 }
@@ -1226,7 +1226,7 @@
  * @return Value field
  */
 int
-fluid_midi_event_get_value(fluid_midi_event_t *evt)
+fluid_midi_event_get_value(const fluid_midi_event_t *evt)
 {
     return evt->param2;
 }
@@ -1250,7 +1250,7 @@
  * @return MIDI program number (0-127)
  */
 int
-fluid_midi_event_get_program(fluid_midi_event_t *evt)
+fluid_midi_event_get_program(const fluid_midi_event_t *evt)
 {
     return evt->param1;
 }
@@ -1274,7 +1274,7 @@
  * @return Pitch value (14 bit value, 0-16383, 8192 is center)
  */
 int
-fluid_midi_event_get_pitch(fluid_midi_event_t *evt)
+fluid_midi_event_get_pitch(const fluid_midi_event_t *evt)
 {
     return evt->param1;
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fluidsynth-2.2.6/src/midi/fluid_seqbind.c 
new/fluidsynth-2.2.7/src/midi/fluid_seqbind.c
--- old/fluidsynth-2.2.6/src/midi/fluid_seqbind.c       2022-03-19 
12:49:15.000000000 +0100
+++ new/fluidsynth-2.2.7/src/midi/fluid_seqbind.c       2022-04-25 
20:18:10.000000000 +0200
@@ -367,64 +367,20 @@
  *
  * @since 1.1.0
  */
-int
-fluid_sequencer_add_midi_event_to_buffer(void *data, fluid_midi_event_t *event)
+int fluid_sequencer_add_midi_event_to_buffer(void *data, fluid_midi_event_t 
*event)
 {
     fluid_event_t evt;
     fluid_sequencer_t *seq;
-    int chan;
 
     fluid_return_val_if_fail(data != NULL, FLUID_FAILED);
     fluid_return_val_if_fail(event != NULL, FLUID_FAILED);
 
-    seq = (fluid_sequencer_t *) data;
-    chan = fluid_midi_event_get_channel(event);
+    seq = (fluid_sequencer_t *)data;
 
     fluid_event_clear(&evt);
+    fluid_event_from_midi_event(&evt, event);
     fluid_event_set_dest(&evt, get_fluidsynth_dest(seq));
 
-    switch(fluid_midi_event_get_type(event))
-    {
-    case NOTE_OFF:
-        fluid_event_noteoff(&evt, chan, 
(short)fluid_midi_event_get_key(event));
-        break;
-
-    case NOTE_ON:
-        fluid_event_noteon(&evt, fluid_midi_event_get_channel(event),
-                           (short)fluid_midi_event_get_key(event), 
(short)fluid_midi_event_get_velocity(event));
-        break;
-
-    case CONTROL_CHANGE:
-        fluid_event_control_change(&evt, chan, 
(short)fluid_midi_event_get_control(event),
-                                   (short)fluid_midi_event_get_value(event));
-        break;
-
-    case PROGRAM_CHANGE:
-        fluid_event_program_change(&evt, chan, 
(short)fluid_midi_event_get_program(event));
-        break;
-
-    case PITCH_BEND:
-        fluid_event_pitch_bend(&evt, chan, fluid_midi_event_get_pitch(event));
-        break;
-
-    case CHANNEL_PRESSURE:
-        fluid_event_channel_pressure(&evt, chan, 
(short)fluid_midi_event_get_program(event));
-        break;
-
-    case KEY_PRESSURE:
-        fluid_event_key_pressure(&evt, chan,
-                                 (short)fluid_midi_event_get_key(event),
-                                 (short)fluid_midi_event_get_value(event));
-        break;
-
-    case MIDI_SYSTEM_RESET:
-        fluid_event_system_reset(&evt);
-        break;
-
-    default:  /* Not yet implemented */
-        return FLUID_FAILED;
-    }
-
     /* Schedule for sending at next call to fluid_sequencer_process */
     return fluid_sequencer_send_at(seq, &evt, 0, 0);
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fluidsynth-2.2.6/src/synth/fluid_event.c 
new/fluidsynth-2.2.7/src/synth/fluid_event.c
--- old/fluidsynth-2.2.6/src/synth/fluid_event.c        2022-03-19 
12:49:15.000000000 +0100
+++ new/fluidsynth-2.2.7/src/synth/fluid_event.c        2022-04-25 
20:18:10.000000000 +0200
@@ -30,6 +30,7 @@
 
 #include "fluid_event.h"
 #include "fluidsynth_priv.h"
+#include "fluid_midi.h"
 
 /***************************************************************
  *
@@ -577,7 +578,88 @@
     evt->type = FLUID_SEQ_SYSTEMRESET;
 }
 
+/**
+ * Transforms an incoming MIDI event (from a MIDI driver or MIDI router) to a
+ * sequencer event.
+ *
+ * @param evt Sequencer event structure
+ * @param event MIDI event
+ * @return #FLUID_OK or #FLUID_FAILED
+ *
+ * @note This function copies the fields of the MIDI event into the provided
+ * sequencer event. Calling applications must create the sequencer event and 
set
+ * additional fields such as the source and destination of the sequencer event.
+ *
+ * @code{.cpp}
+ * // ... get MIDI event, e.g. using player_callback()
+ *
+ * // Send MIDI event to sequencer to play
+ * fluid_event_t *evt = new_fluid_event();
+ * fluid_event_set_source(evt, -1);
+ * fluid_event_set_dest(evt, seqid);
+ * fluid_event_from_midi_event(evt, event);
+ * fluid_sequencer_send_at(sequencer, evt, 50, 0); // relative time
+ * delete_fluid_event(evt);
+ * @endcode
+ *
+ * @since 2.2.7
+ */
+int fluid_event_from_midi_event(fluid_event_t *evt, const fluid_midi_event_t 
*event)
+{
+    int chan;
+    fluid_return_val_if_fail(event != NULL, FLUID_FAILED);
+
+    chan = fluid_midi_event_get_channel(event);
+
+    switch (fluid_midi_event_get_type(event))
+    {
+        case NOTE_OFF:
+            fluid_event_noteoff(evt, chan, 
(short)fluid_midi_event_get_key(event));
+            break;
+
+        case NOTE_ON:
+            fluid_event_noteon(evt,
+                               fluid_midi_event_get_channel(event),
+                               (short)fluid_midi_event_get_key(event),
+                               (short)fluid_midi_event_get_velocity(event));
+            break;
+
+        case CONTROL_CHANGE:
+            fluid_event_control_change(evt,
+                                       chan,
+                                       
(short)fluid_midi_event_get_control(event),
+                                       
(short)fluid_midi_event_get_value(event));
+            break;
+
+        case PROGRAM_CHANGE:
+            fluid_event_program_change(evt, chan, 
(short)fluid_midi_event_get_program(event));
+            break;
+
+        case PITCH_BEND:
+            fluid_event_pitch_bend(evt, chan, 
fluid_midi_event_get_pitch(event));
+            break;
+
+        case CHANNEL_PRESSURE:
+            fluid_event_channel_pressure(evt, chan, 
(short)fluid_midi_event_get_program(event));
+            break;
 
+        case KEY_PRESSURE:
+            fluid_event_key_pressure(evt,
+                                     chan,
+                                     (short)fluid_midi_event_get_key(event),
+                                     (short)fluid_midi_event_get_value(event));
+            break;
+
+        case MIDI_SYSTEM_RESET:
+            fluid_event_system_reset(evt);
+            break;
+
+        default: /* Not yet implemented */
+            return FLUID_FAILED;
+    }
+
+    return FLUID_OK;
+}
 
 /*
  * Accessing event data
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fluidsynth-2.2.6/src/utils/fluid_sys.c 
new/fluidsynth-2.2.7/src/utils/fluid_sys.c
--- old/fluidsynth-2.2.6/src/utils/fluid_sys.c  2022-03-19 12:49:15.000000000 
+0100
+++ new/fluidsynth-2.2.7/src/utils/fluid_sys.c  2022-04-25 20:18:10.000000000 
+0200
@@ -387,17 +387,17 @@
  */
 unsigned int fluid_curtime(void)
 {
-    float now;
-    static float initial_time = 0;
+    double now;
+    static double initial_time = 0;
 
     if(initial_time == 0)
     {
-        initial_time = (float)fluid_utime();
+        initial_time = fluid_utime();
     }
 
-    now = (float)fluid_utime();
+    now = fluid_utime();
 
-    return (unsigned int)((now - initial_time) / 1000.0f);
+    return (unsigned int)((now - initial_time) / 1000.0);
 }
 
 /**

Reply via email to