Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package wildmidi for openSUSE:Factory 
checked in at 2021-03-21 23:20:43
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/wildmidi (Old)
 and      /work/SRC/openSUSE:Factory/.wildmidi.new.2401 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "wildmidi"

Sun Mar 21 23:20:43 2021 rev:2 rq:880402 version:0.4.4

Changes:
--------
--- /work/SRC/openSUSE:Factory/wildmidi/wildmidi.changes        2020-04-02 
17:43:26.473400016 +0200
+++ /work/SRC/openSUSE:Factory/.wildmidi.new.2401/wildmidi.changes      
2021-03-21 23:20:44.460746893 +0100
@@ -1,0 +2,12 @@
+Sun Mar 21 13:29:09 UTC 2021 - Martin Hauke <[email protected]>
+
+- Update to versino 0.4.4
+  * Fixed integer overflow in midi parser sample count calculation.
+  * Fixed 8 bit ping pong GUS patch loaders.
+  * Fixed wrong variable use in reverb code.
+  * Reset block status of tty after playback.
+  * Fixed broken file name handling for 'save as midi' command
+    during playback.
+  * Clamp MUS volume commands.
+
+-------------------------------------------------------------------

Old:
----
  wildmidi-0.4.3.tar.gz

New:
----
  wildmidi-0.4.4.tar.gz

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

Other differences:
------------------
++++++ wildmidi.spec ++++++
--- /var/tmp/diff_new_pack.yhImU9/_old  2021-03-21 23:20:45.012747082 +0100
+++ /var/tmp/diff_new_pack.yhImU9/_new  2021-03-21 23:20:45.016747083 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package wildmidi
 #
-# Copyright (c) 2020 SUSE LLC
+# Copyright (c) 2021 SUSE LLC
 # Copyright (c) 2007-2016 Hans de Goede <[email protected]>
 # Copyright (c) 2016 Pauline Emily <[email protected]>
 #
@@ -20,7 +20,7 @@
 
 %define soname  libWildMidi2
 Name:           wildmidi
-Version:        0.4.3
+Version:        0.4.4
 Release:        0
 Summary:        Softsynth midi player
 License:        GPL-3.0-or-later
@@ -28,7 +28,7 @@
 URL:            https://www.mindwerks.net/projects/wildmidi
 Source:         
https://github.com/Mindwerks/wildmidi/archive/%{name}-%{version}.tar.gz
 Source1:        %{name}.cfg
-BuildRequires:  cmake
+BuildRequires:  cmake >= 3.1
 BuildRequires:  dos2unix
 BuildRequires:  pkgconfig
 BuildRequires:  pkgconfig(alsa)
@@ -87,6 +87,7 @@
 %{_includedir}/%{name}_lib.h
 %{_libdir}/libWildMidi.so
 %{_libdir}/pkgconfig/wildmidi.pc
+%{_libdir}/cmake/WildMidi
 %{_mandir}/man3/WildMidi_*.3%{?ext_man}
 
 %files -n %{soname}

++++++ wildmidi-0.4.3.tar.gz -> wildmidi-0.4.4.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wildmidi-wildmidi-0.4.3/.chklist 
new/wildmidi-wildmidi-0.4.4/.chklist
--- old/wildmidi-wildmidi-0.4.3/.chklist        2018-11-24 09:55:50.000000000 
+0100
+++ new/wildmidi-wildmidi-0.4.4/.chklist        2021-03-21 09:55:50.000000000 
+0100
@@ -5,6 +5,7 @@
 - android/jni/config.h
 - macosx/config.h
 - macosx/Makefile
+- mingw/config.h
 
 Edit files for possibly other changes:
 - djgpp/Makefile
@@ -14,4 +15,5 @@
 - android/*
 - android/jni/*.mk
 - macosx/Makefile (make sure to update dylib versions here..)
+- mingw/makefile
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wildmidi-wildmidi-0.4.3/.github/workflows/main.yml 
new/wildmidi-wildmidi-0.4.4/.github/workflows/main.yml
--- old/wildmidi-wildmidi-0.4.3/.github/workflows/main.yml      1970-01-01 
01:00:00.000000000 +0100
+++ new/wildmidi-wildmidi-0.4.4/.github/workflows/main.yml      2021-03-21 
09:55:50.000000000 +0100
@@ -0,0 +1,33 @@
+name: build
+
+on: [push, pull_request]
+
+jobs:
+  build:
+    strategy:
+      matrix:
+        config:
+          - { os: macos-latest, c: "clang", player: "ON", static: "ON", alsa: 
"OFF", openal: "ON", oss: "OFF" }
+          - { os: ubuntu-latest, c: "clang", player: "ON", static: "ON", alsa: 
"ON", openal: "ON", oss: "ON" }
+          - { os: ubuntu-latest, c: "gcc", player: "ON", static: "ON", alsa: 
"ON", openal: "ON", oss: "ON" }
+          - { os: windows-latest, c: "cl", player: "OFF", static: "ON", alsa: 
"OFF", openal: "OFF", oss: "OFF" }
+    runs-on: ${{ matrix.config.os }}
+    steps:
+      - name: Checkout
+        uses: actions/checkout@v2
+      - name: Install dependencies (Linux)
+        if: matrix.config.os == 'ubuntu-latest'
+        run: |
+          sudo apt-get update
+          sudo apt-get install libasound2-dev libopenal-dev
+      - name: Install dependencies (macOS)
+        if: matrix.config.os == 'macos-latest'
+        run: |
+          brew install openal-soft
+      - name: Build with ${{ matrix.config.os }} / ${{ matrix.config.c }}
+        env:
+          CC: ${{ matrix.config.c }}
+        run: |
+          cmake -B build -DWANT_PLAYER=${{ matrix.config.player }} 
-DWANT_STATIC=${{ matrix.config.static }} -DWANT_ALSA=${{ matrix.config.alsa }} 
-DWANT_OPENAL=${{ matrix.config.openal }} -DWANT_OSS=${{ matrix.config.oss }}
+          cmake --build build -j2
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wildmidi-wildmidi-0.4.3/.travis.yml 
new/wildmidi-wildmidi-0.4.4/.travis.yml
--- old/wildmidi-wildmidi-0.4.3/.travis.yml     2018-11-24 09:55:50.000000000 
+0100
+++ new/wildmidi-wildmidi-0.4.4/.travis.yml     2021-03-21 09:55:50.000000000 
+0100
@@ -1,18 +1,26 @@
 os:
- - linux
- - osx
-osx_image: xcode8.3
-dist: trusty
-sudo: required
+  - linux
+  - osx
+dist: focal
+
+addons:
+  apt:
+    packages:
+      - libopenal-dev
+  homebrew:
+    packages:
+      - openal-soft
+      - pkg-config
+
 language: c
 env:
- - BUILD_TYPE=Debug
- - BUILD_TYPE=Release
+  - BUILD_TYPE=Debug
+  - BUILD_TYPE=Release
 matrix:
   include:
     - os: linux
       env:
-        ANALYZE="scan-build-3.6 --use-cc clang-3.6 --use-c++ clang++-3.6 "
+        ANALYZE="scan-build --use-cc clang --use-c++ clang++"
       compiler: clang
 branches:
   only:
@@ -20,18 +28,12 @@
     - coverity_scan
     - /wildmidi-.*$/
 
-before_install:
- - if [ "${TRAVIS_OS_NAME}" = "linux" ]; then ./CI/before_install.linux.sh; fi
- - if [ "${TRAVIS_OS_NAME}" = "osx" ]; then ./CI/before_install.osx.sh; fi
-before_script:
- - if [ "${TRAVIS_OS_NAME}" = "linux" ]; then ./CI/before_script.linux.sh; fi
- - if [ "${TRAVIS_OS_NAME}" = "osx" ]; then ./CI/before_script.osx.sh; fi
 script:
- - cd ./build
- - if [ "$COVERITY_SCAN_BRANCH" != 1 ]; then ${ANALYZE}make -j3; fi
+  - cmake -B build -DWANT_PLAYER=ON -DWANT_ALSA=OFF -DWANT_OPENAL=ON 
-DWANT_OSS=OFF
+  - ${ANALYZE} cmake --build build -j3 --verbose
 
 notifications:
-  irc:    
+  irc:
     channels:
       - "chat.freenode.net#wildmidi"
     on_success: change
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wildmidi-wildmidi-0.4.3/CI/before_install.linux.sh 
new/wildmidi-wildmidi-0.4.4/CI/before_install.linux.sh
--- old/wildmidi-wildmidi-0.4.3/CI/before_install.linux.sh      2018-11-24 
09:55:50.000000000 +0100
+++ new/wildmidi-wildmidi-0.4.4/CI/before_install.linux.sh      1970-01-01 
01:00:00.000000000 +0100
@@ -1,19 +0,0 @@
-#!/bin/sh
-
-if [ "${ANALYZE}" ]; then
-  echo "yes" | sudo add-apt-repository "deb http://llvm.org/apt/`lsb_release 
-sc`/ llvm-toolchain-`lsb_release -sc`-3.6 main"
-  wget -O - http://llvm.org/apt/llvm-snapshot.gpg.key|sudo apt-key add -
-fi
-
-echo "yes" | sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu 
`lsb_release -sc` main universe restricted multiverse"
-echo "yes" | sudo apt-add-repository ppa:psi29a/`lsb_release -sc`
-sudo apt-get update -qq
-sudo apt-get install -qq libgtest-dev google-mock
-sudo apt-get install -qq libopenal-dev
-if [ "${ANALYZE}" ]; then sudo apt-get install -qq clang-3.6; fi
-sudo mkdir /usr/src/gtest/build
-cd /usr/src/gtest/build
-sudo cmake ..
-sudo make -j4
-sudo ln -s /usr/src/gtest/build/libgtest.so /usr/lib/libgtest.so
-sudo ln -s /usr/src/gtest/build/libgtest_main.so /usr/lib/libgtest_main.so
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wildmidi-wildmidi-0.4.3/CI/before_install.osx.sh 
new/wildmidi-wildmidi-0.4.4/CI/before_install.osx.sh
--- old/wildmidi-wildmidi-0.4.3/CI/before_install.osx.sh        2018-11-24 
09:55:50.000000000 +0100
+++ new/wildmidi-wildmidi-0.4.4/CI/before_install.osx.sh        1970-01-01 
01:00:00.000000000 +0100
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-brew update
-brew outdated cmake || brew upgrade cmake
-brew outdated pkgconfig || brew upgrade pkgconfig
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wildmidi-wildmidi-0.4.3/CI/before_script.linux.sh 
new/wildmidi-wildmidi-0.4.4/CI/before_script.linux.sh
--- old/wildmidi-wildmidi-0.4.3/CI/before_script.linux.sh       2018-11-24 
09:55:50.000000000 +0100
+++ new/wildmidi-wildmidi-0.4.4/CI/before_script.linux.sh       1970-01-01 
01:00:00.000000000 +0100
@@ -1,8 +0,0 @@
-#!/bin/sh
-
-free -m
-mkdir build
-cd build
-export CODE_COVERAGE=1
-if [ "${CC}" = "clang" ]; then export CODE_COVERAGE=0; fi
-${ANALYZE}cmake .. -DBUILD_WITH_CODE_COVERAGE=${CODE_COVERAGE} 
-DBUILD_UNITTESTS=1 -DCMAKE_INSTALL_PREFIX=/usr -DBINDIR=/usr/bin  
-DCMAKE_BUILD_TYPE="None"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wildmidi-wildmidi-0.4.3/CI/before_script.msvc.sh 
new/wildmidi-wildmidi-0.4.4/CI/before_script.msvc.sh
--- old/wildmidi-wildmidi-0.4.3/CI/before_script.msvc.sh        2018-11-24 
09:55:50.000000000 +0100
+++ new/wildmidi-wildmidi-0.4.4/CI/before_script.msvc.sh        2021-03-21 
09:55:50.000000000 +0100
@@ -261,7 +261,7 @@
 
        # OpenAL
        download "OpenAL-Soft 1.16.0" \
-               
http://kcat.strangesoft.net/openal-binaries/openal-soft-1.16.0-bin.zip \
+               
https://openal-soft.org/openal-binaries/openal-soft-1.16.0-bin.zip \
                OpenAL-Soft-1.16.0.zip
 
 fi
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wildmidi-wildmidi-0.4.3/CI/before_script.osx.sh 
new/wildmidi-wildmidi-0.4.4/CI/before_script.osx.sh
--- old/wildmidi-wildmidi-0.4.3/CI/before_script.osx.sh 2018-11-24 
09:55:50.000000000 +0100
+++ new/wildmidi-wildmidi-0.4.4/CI/before_script.osx.sh 1970-01-01 
01:00:00.000000000 +0100
@@ -1,19 +0,0 @@
-#!/bin/sh
-
-export CXX=clang++
-export CC=clang
-
-DEPENDENCIES_ROOT="/private/tmp/wildmidi-deps/wildmidi-deps"
-
-mkdir build
-cd build
-
-cmake \
--D CMAKE_EXE_LINKER_FLAGS="-lz" \
--D CMAKE_PREFIX_PATH="$DEPENDENCIES_ROOT" \
--D CMAKE_OSX_DEPLOYMENT_TARGET="10.9" \
--D CMAKE_OSX_SYSROOT="macosx10.12" \
--D CMAKE_BUILD_TYPE=Release \
--D WANT_OSX_DEPLOYMENT=TRUE \
--G"Unix Makefiles" \
-..
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wildmidi-wildmidi-0.4.3/CMakeLists.txt 
new/wildmidi-wildmidi-0.4.4/CMakeLists.txt
--- old/wildmidi-wildmidi-0.4.3/CMakeLists.txt  2018-11-24 09:55:50.000000000 
+0100
+++ new/wildmidi-wildmidi-0.4.4/CMakeLists.txt  2021-03-21 09:55:50.000000000 
+0100
@@ -1,24 +1,22 @@
 # ########## Project setup ##########
-PROJECT(wildmidi C)
-CMAKE_MINIMUM_REQUIRED(VERSION 2.8.11)
+CMAKE_MINIMUM_REQUIRED(VERSION 3.1)
+PROJECT(wildmidi LANGUAGES C VERSION 0.4.4)
 
 # WildMIDI Version
-SET(VERSION_MAJOR 0)
-SET(VERSION_MINOR 4)
-SET(VERSION_RELEASE 3)
-SET(WILDMIDI_VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_RELEASE}")
+SET(WILDMIDI_VERSION ${PROJECT_VERSION})
 
 # Lib Versions
 SET(SOVERSION 2)
 SET(VERSION 2.1.0)
 
 # Find Macros
-SET(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake)
+SET(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake)
 
 INCLUDE(CMakeDependentOption)
 INCLUDE(CheckCCompilerFlag)
 INCLUDE(CheckCSourceCompiles)
 INCLUDE(CheckIncludeFile)
+INCLUDE(GNUInstallDirs)
 INCLUDE(TestBigEndian)
 
 # Set a default build type if none was specified
@@ -65,12 +63,6 @@
     )
 ENDIF (UNIX)
 
-# Usage of RPATH for macOS is enabled by default; this just suppresses the 
CMP0042 warning
-# when building libwildmidi_dynamic.
-IF (POLICY CMP0042)
-    CMAKE_POLICY(SET CMP0042 NEW)
-ENDIF ()
-
 IF (OPENBSD)  # Set RPATH for OpenBSD so WildMIDI can find libWildMidi.so
     # use, i.e. don't skip the full RPATH for the build tree
     SET(CMAKE_SKIP_BUILD_RPATH FALSE)
@@ -101,7 +93,7 @@
 ENDIF (WIN32)
 
 # Compiler specific settings
-IF (CMAKE_COMPILER_IS_GNUCC OR (CMAKE_C_COMPILER_ID MATCHES "Clang"))
+IF ((CMAKE_C_COMPILER_ID MATCHES "GNU") OR (CMAKE_C_COMPILER_ID MATCHES 
"Clang"))
     ADD_DEFINITIONS(
             -Wall -W
             -fno-common
@@ -234,13 +226,6 @@
     IF (NOT M_LIBRARY)
         SET(M_LIBRARY "")
     ENDIF ()
-
-    ## Debian and non debian Linux building
-    IF (DPKG_PROGRAM)
-        ## Debian specific
-    ELSE ()
-        ## Non debian specific
-    ENDIF ()
 ENDIF (UNIX AND NOT APPLE)
 
 IF (APPLE AND WANT_PLAYER)
@@ -265,18 +250,10 @@
     ENDIF ()
 ENDIF ()
 
-IF (WIN32)
-    IF (WANT_PLAYER)
-        LINK_LIBRARIES(winmm)
-    ENDIF ()
-ENDIF (WIN32)
-
 # ######### General setup ##########
-INCLUDE_DIRECTORIES(BEFORE "${CMAKE_SOURCE_DIR}/include")
-FILE(MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/include")
-INCLUDE_DIRECTORIES(BEFORE "${CMAKE_BINARY_DIR}/include")
+INCLUDE_DIRECTORIES(BEFORE "${PROJECT_SOURCE_DIR}/include" 
"${PROJECT_BINARY_DIR}/include")
 IF (NOT HAVE_STDINT_H) # AND NOT HAVE_INTTYPES_H
-    INCLUDE_DIRECTORIES(BEFORE "${CMAKE_SOURCE_DIR}/include/stdint")
+    INCLUDE_DIRECTORIES(BEFORE "${PROJECT_SOURCE_DIR}/include/stdint")
 ENDIF ()
 
 IF (AMIGA OR AROS)
@@ -298,6 +275,6 @@
 ENDIF (APPLE)
 
 # Setup up our config file
-CONFIGURE_FILE("${CMAKE_SOURCE_DIR}/include/config.h.cmake" 
"${CMAKE_BINARY_DIR}/include/config.h")
+CONFIGURE_FILE("${PROJECT_SOURCE_DIR}/include/config.h.cmake" 
"${PROJECT_BINARY_DIR}/include/config.h")
 
 ADD_SUBDIRECTORY(src)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wildmidi-wildmidi-0.4.3/README.md 
new/wildmidi-wildmidi-0.4.4/README.md
--- old/wildmidi-wildmidi-0.4.3/README.md       2018-11-24 09:55:50.000000000 
+0100
+++ new/wildmidi-wildmidi-0.4.4/README.md       2021-03-21 09:55:50.000000000 
+0100
@@ -1,12 +1,12 @@
 WildMIDI is a simple software midi player which has a core softsynth
-library that can be use with other applications.
+library that can be used in other applications.
 
 The WildMIDI library uses Gravis Ultrasound patch files to convert MIDI
 files into audio which is then passed back to the calling application.
 The library API is designed so that it is easy to include WildMIDI into
 applications that wish to include MIDI file playback.
 
-Version: 0.4.3
+Version: 0.4.4
 Licenses: GPLv3+ and LGPLv3
 Website: http://www.mindwerks.net/projects/wildmidi
 
@@ -36,6 +36,18 @@
 
 CHANGELOG
 
+0.4.4
+* Fixed integer overflow in midi parser sample count calculation
+ (bug #200).
+* Fixed 8 bit ping pong GUS patch loaders (bug #207).
+* Fixed wrong variable use in reverb code (bug #210).
+* Reset block status of tty after playback (bug #211).
+* Fixed broken file name handling for 'save as midi' command during
+  playback.
+* Clamp MUS volume commands (PR #226).
+* CMake project improvements (bugs: #214, #216, #217, #218) - cmake
+  version 3.1 or newer is now required.
+
 0.4.3
 * New API addition: WildMidi_InitVIO().  It is like WildMidi_Init(),
   but tells the library to use caller-provided functions for file IO.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wildmidi-wildmidi-0.4.3/amiga/config.h 
new/wildmidi-wildmidi-0.4.4/amiga/config.h
--- old/wildmidi-wildmidi-0.4.3/amiga/config.h  2018-11-24 09:55:50.000000000 
+0100
+++ new/wildmidi-wildmidi-0.4.4/amiga/config.h  2021-03-21 09:55:50.000000000 
+0100
@@ -6,7 +6,7 @@
 #define PACKAGE_URL "http://www.mindwerks.net/projects/wildmidi/";
 #define PACKAGE_BUGREPORT "https://github.com/Mindwerks/wildmidi/issues";
 
-#define PACKAGE_VERSION "0.4.3"
+#define PACKAGE_VERSION "0.4.4"
 
 #define HAVE_C_INLINE
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wildmidi-wildmidi-0.4.3/android/jni/config.h 
new/wildmidi-wildmidi-0.4.4/android/jni/config.h
--- old/wildmidi-wildmidi-0.4.3/android/jni/config.h    2018-11-24 
09:55:50.000000000 +0100
+++ new/wildmidi-wildmidi-0.4.4/android/jni/config.h    2021-03-21 
09:55:50.000000000 +0100
@@ -13,16 +13,16 @@
 #define PACKAGE_NAME "WildMidi"
 
 /* Define to the full name and version of this package. */
-#define PACKAGE_STRING "WildMidi 0.4.3"
+#define PACKAGE_STRING "WildMidi 0.4.4"
 
 /* Define to the one symbol short name of this package. */
 #define PACKAGE_TARNAME "wildmidi"
 
 /* Define to the version of this package. */
-#define PACKAGE_VERSION "0.4.3"
+#define PACKAGE_VERSION "0.4.4"
 
 /* Version number of package */
-#define VERSION "0.4.3"
+#define VERSION "0.4.4"
 
 /* Define this to the location of the wildmidi config file */
 /* #undef WILDMIDI_CFG "/etc/wildmidi/wildmidi.cfg" */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wildmidi-wildmidi-0.4.3/djgpp/config.h 
new/wildmidi-wildmidi-0.4.4/djgpp/config.h
--- old/wildmidi-wildmidi-0.4.3/djgpp/config.h  2018-11-24 09:55:50.000000000 
+0100
+++ new/wildmidi-wildmidi-0.4.4/djgpp/config.h  2021-03-21 09:55:50.000000000 
+0100
@@ -3,7 +3,7 @@
 #define PACKAGE_URL "http://www.mindwerks.net/projects/wildmidi/";
 #define PACKAGE_BUGREPORT "https://github.com/Mindwerks/wildmidi/issues";
 
-#define PACKAGE_VERSION "0.4.3"
+#define PACKAGE_VERSION "0.4.4"
 
 #define HAVE_C_INLINE
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wildmidi-wildmidi-0.4.3/include/getopt_long.h 
new/wildmidi-wildmidi-0.4.4/include/getopt_long.h
--- old/wildmidi-wildmidi-0.4.3/include/getopt_long.h   2018-11-24 
09:55:50.000000000 +0100
+++ new/wildmidi-wildmidi-0.4.4/include/getopt_long.h   2021-03-21 
09:55:50.000000000 +0100
@@ -32,6 +32,7 @@
 
 #ifndef _GETOPT_H_
 #define _GETOPT_H_
+
 /*
  * GNU-like getopt_long()
  */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wildmidi-wildmidi-0.4.3/include/wildmidi_lib.h 
new/wildmidi-wildmidi-0.4.4/include/wildmidi_lib.h
--- old/wildmidi-wildmidi-0.4.3/include/wildmidi_lib.h  2018-11-24 
09:55:50.000000000 +0100
+++ new/wildmidi-wildmidi-0.4.4/include/wildmidi_lib.h  2021-03-21 
09:55:50.000000000 +0100
@@ -27,7 +27,7 @@
 /* library version number */
 #define LIBWILDMIDI_VER_MAJOR 0L
 #define LIBWILDMIDI_VER_MINOR 4L
-#define LIBWILDMIDI_VER_MICRO 3L
+#define LIBWILDMIDI_VER_MICRO 4L
 #define LIBWILDMIDI_VERSION     \
       ((LIBWILDMIDI_VER_MAJOR << 16) | \
        (LIBWILDMIDI_VER_MINOR <<  8) | \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wildmidi-wildmidi-0.4.3/macosx/config.h 
new/wildmidi-wildmidi-0.4.4/macosx/config.h
--- old/wildmidi-wildmidi-0.4.3/macosx/config.h 2018-11-24 09:55:50.000000000 
+0100
+++ new/wildmidi-wildmidi-0.4.4/macosx/config.h 2021-03-21 09:55:50.000000000 
+0100
@@ -3,7 +3,7 @@
 #define PACKAGE_URL "http://www.mindwerks.net/projects/wildmidi/";
 #define PACKAGE_BUGREPORT "https://github.com/Mindwerks/wildmidi/issues";
 
-#define PACKAGE_VERSION "0.4.3"
+#define PACKAGE_VERSION "0.4.4"
 
 #define HAVE_C_INLINE
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wildmidi-wildmidi-0.4.3/mingw/Makefile 
new/wildmidi-wildmidi-0.4.4/mingw/Makefile
--- old/wildmidi-wildmidi-0.4.3/mingw/Makefile  1970-01-01 01:00:00.000000000 
+0100
+++ new/wildmidi-wildmidi-0.4.4/mingw/Makefile  2021-03-21 09:55:50.000000000 
+0100
@@ -0,0 +1,106 @@
+# Makefile to build WildMidi library and player for Windows using MinGW / 
MinGW-w64.
+
+# Set to 1 for debug build
+DEBUG = 0
+
+# The tools
+ifeq ($(CROSS),)
+CC=gcc
+AS=as
+AR=ar
+RANLIB=ranlib
+else
+CC=$(CROSS)-gcc
+AS=$(CROSS)-as
+AR=$(CROSS)-ar
+RANLIB=$(CROSS)-ranlib
+endif
+LD = $(CC)
+
+LIBNAME=WildMidi
+LIBSTATIC=lib$(LIBNAME).a
+LIBSHARED=lib$(LIBNAME).dll
+DEFNAME=lib$(LIBNAME).def
+IMPLIB=lib$(LIBNAME).dll.a
+PLAYER=wildmidi.exe
+PLAYER_STATIC=wildmidi-static.exe
+
+INCLUDE=-I. -I../include
+ARFLAGS=cr
+CFLAGS=$(INCLUDE) -Wall -W -fno-common
+LDFLAGS=
+LDLIBS=
+ifeq ($(DEBUG),1)
+CFLAGS+=-g
+else
+CFLAGS+=-O2 -fomit-frame-pointer -ffast-math
+endif
+
+CFLAGS_LIB=$(CFLAGS) -DWILDMIDI_BUILD
+LDFLAGS_LIB=$(LDFLAGS) -shared -mconsole
+LDLIBS_LIB=$(LDLIBS)
+LDFLAGS_LIB+=-Wl,--enable-auto-image-base -Wl,--no-undefined \
+               -Xlinker --output-def -Xlinker $(DEFNAME) \
+               -Xlinker --out-implib -Xlinker $(IMPLIB)
+
+CFLAGS_EXE=$(CFLAGS)
+LDFLAGS_EXE=$(LDFLAGS) -mconsole
+LDLIBS_EXE=$(LDLIBS)
+# Standard WinMM output support:
+LDLIBS_EXE+=-lwinmm
+# OpenAL output support (if really wanted)
+#CFLAGS_EXE+=-DAUDIODRV_OPENAL
+#LDFLAGS_EXE+=-lOpenAL32
+LDLIBS_EXE+=-L. -l$(LIBNAME)
+
+# Objects
+LIB_OBJ = wm_error.o file_io.o lock.o wildmidi_lib.o reverb.o gus_pat.o
+LIB_OBJ+= f_xmidi.o f_mus.o f_hmp.o f_midi.o f_hmi.o mus2mid.o xmi2mid.o 
internal_midi.o patches.o sample.o
+PLAYER_OBJ = wm_tty.o getopt_long.o wildmidi.o
+
+.PHONY: clean distclean
+
+help:
+       @echo "Valid targets:"
+       @echo ""
+       @echo "  $(MAKE) shared"
+       @echo "  $(MAKE) static"
+       @echo ""
+
+shared: $(LIBSHARED) $(PLAYER)
+shared: CFLAGS_LIB+=-DDLL_EXPORT
+
+static: $(LIBSTATIC) $(PLAYER_STATIC)
+static: CFLAGS+=-DWILDMIDI_STATIC
+
+$(LIBSHARED): $(LIB_OBJ)
+       $(CC) $^ $(LDFLAGS_LIB) $(LDLIBS_LIB) -o $@
+
+$(LIBSTATIC): $(LIB_OBJ)
+       $(AR) $(ARFLAGS) $@ $^
+       $(RANLIB) $@
+
+$(PLAYER): $(PLAYER_OBJ) $(LIBSHARED)
+       $(LD) $(PLAYER_OBJ) $(LDFLAGS_EXE) $(LDLIBS_EXE) -o $@
+
+$(PLAYER_STATIC): $(PLAYER_OBJ) $(LIBSTATIC)
+       $(LD) $(PLAYER_OBJ) $(LDFLAGS_EXE) $(LDLIBS_EXE) -o $@
+
+# Build rules
+%.o: %.c
+       $(CC) -c $(CFLAGS_LIB) -o $@ $<
+%.o: ../src/%.c
+       $(CC) -c $(CFLAGS_LIB) -o $@ $<
+# for player objects:
+wildmidi.o: ../src/wildmidi.c
+       $(CC) -c $(CFLAGS_EXE) -o $@ $<
+wm_tty.o: ../src/wm_tty.c
+       $(CC) -c $(CFLAGS_EXE) -o $@ $<
+getopt_long.o: ../src/getopt_long.c
+       $(CC) -c $(CFLAGS_EXE) -o $@ $<
+
+clean:
+       rm -rf $(LIB_OBJ) $(PLAYER_OBJ)
+
+distclean: clean
+       rm -rf *.a *.dll *.def *.exe
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wildmidi-wildmidi-0.4.3/mingw/config.h 
new/wildmidi-wildmidi-0.4.4/mingw/config.h
--- old/wildmidi-wildmidi-0.4.3/mingw/config.h  1970-01-01 01:00:00.000000000 
+0100
+++ new/wildmidi-wildmidi-0.4.4/mingw/config.h  2021-03-21 09:55:50.000000000 
+0100
@@ -0,0 +1,18 @@
+#define WILDMIDI_CFG "wildmidi.cfg"
+
+#define PACKAGE_URL "http://www.mindwerks.net/projects/wildmidi/";
+#define PACKAGE_BUGREPORT "https://github.com/Mindwerks/wildmidi/issues";
+
+#define PACKAGE_VERSION "0.4.4"
+
+#define HAVE_C_INLINE
+
+#if (__GNUC__ > 2) || (__GNUC__ == 2 && __GNUC_MINOR >= 96)
+#define HAVE___BUILTIN_EXPECT
+#endif
+#ifndef HAVE___BUILTIN_EXPECT
+#define __builtin_expect(x,c) x
+#endif
+
+#define HAVE_STDINT_H 1
+#define HAVE_INTTYPES_H 1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wildmidi-wildmidi-0.4.3/os2/config.h 
new/wildmidi-wildmidi-0.4.4/os2/config.h
--- old/wildmidi-wildmidi-0.4.3/os2/config.h    2018-11-24 09:55:50.000000000 
+0100
+++ new/wildmidi-wildmidi-0.4.4/os2/config.h    2021-03-21 09:55:50.000000000 
+0100
@@ -3,7 +3,7 @@
 #define PACKAGE_URL "http://www.mindwerks.net/projects/wildmidi/";
 #define PACKAGE_BUGREPORT "https://github.com/Mindwerks/wildmidi/issues";
 
-#define PACKAGE_VERSION "0.4.3"
+#define PACKAGE_VERSION "0.4.4"
 
 #define HAVE_C_INLINE
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wildmidi-wildmidi-0.4.3/src/CMakeLists.txt 
new/wildmidi-wildmidi-0.4.4/src/CMakeLists.txt
--- old/wildmidi-wildmidi-0.4.3/src/CMakeLists.txt      2018-11-24 
09:55:50.000000000 +0100
+++ new/wildmidi-wildmidi-0.4.4/src/CMakeLists.txt      2021-03-21 
09:55:50.000000000 +0100
@@ -39,127 +39,111 @@
         ../include/xmi2mid.h
         )
 
+SET(wildmidi_executable_SRCS
+        wm_tty.c
+        wildmidi.c
+        )
+
 IF (MSVC)
-    SET(GETOPT getopt_long.c)
-ELSE ()
-    SET(GETOPT)
+    LIST(APPEND wildmidi_executable_SRCS getopt_long.c)
 ENDIF ()
 
 IF (AMIGA OR AROS)
-    SET(SYS_OTHER amiga.c)
-ELSE ()
-    SET(SYS_OTHER)
+    LIST(APPEND wildmidi_executable_SRCS amiga.c)
 ENDIF ()
 
-SET(wildmidi_executable_SRCS
-        ${GETOPT}
-        ${SYS_OTHER}
-        wm_tty.c
-        wildmidi.c
-        )
-
 SET(wildmidi_executable_HDRS
         ../include/wm_tty.h
         ../include/getopt_long.h
         )
 
 # set our target paths
-SET(EXECUTABLE_OUTPUT_PATH "${CMAKE_BINARY_DIR}")
-SET(LIBRARY_OUTPUT_PATH "${CMAKE_BINARY_DIR}")
+SET(EXECUTABLE_OUTPUT_PATH "${PROJECT_BINARY_DIR}")
+SET(LIBRARY_OUTPUT_PATH "${PROJECT_BINARY_DIR}")
 
 # set our library names
-IF (WIN32 AND NOT CMAKE_COMPILER_IS_MINGW) # windows uses *.lib for both 
static and dynamic, workaround
-    SET(LIBRARY_DYN_NAME "wildmidi_dynamic")
-    SET(LIBRARY_STATIC_NAME "wildmidi_static")
+IF (MSVC) # windows uses *.lib for both static and dynamic, workaround
+    SET(LIBRARY_DYN_NAME "libWildMidi")
+    SET(LIBRARY_STATIC_NAME "libWildMidi-static")
 ELSE () # everyone else uses .a and .so
     SET(LIBRARY_DYN_NAME "WildMidi")
     SET(LIBRARY_STATIC_NAME "WildMidi")
 ENDIF ()
 
-# do we want a static library?
-IF (WANT_STATIC)
-    ADD_LIBRARY(libwildmidi_static STATIC
-            ${wildmidi_library_SRCS}
-            ${wildmidi_library_HDRS}
-            )
+ADD_LIBRARY(libwildmidi-static STATIC
+        ${wildmidi_library_SRCS}
+        ${wildmidi_library_HDRS}
+        )
+
+SET_TARGET_PROPERTIES(libwildmidi-static PROPERTIES
+        OUTPUT_NAME ${LIBRARY_STATIC_NAME} CLEAN_DIRECT_OUTPUT 1
+        COMPILE_DEFINITIONS WILDMIDI_BUILD
+        )
+
+TARGET_COMPILE_DEFINITIONS(libwildmidi-static INTERFACE
+        WILDMIDI_STATIC
+        )
+
+TARGET_INCLUDE_DIRECTORIES(libwildmidi-static INTERFACE
+        $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
+        $<INSTALL_INTERFACE:include>
+        )
 
-    SET_TARGET_PROPERTIES(libwildmidi_static PROPERTIES
-            OUTPUT_NAME ${LIBRARY_STATIC_NAME} CLEAN_DIRECT_OUTPUT 1
-            COMPILE_DEFINITIONS WILDMIDI_BUILD
+# If the static library was not requested, we do not add it to the "all" & 
"install" targets
+IF (WANT_STATIC)
+    LIST(APPEND wildmidi_lib_install libwildmidi-static)
+ELSE ()
+    SET_TARGET_PROPERTIES(libwildmidi-static PROPERTIES
+            EXCLUDE_FROM_ALL ON
             )
 ENDIF (WANT_STATIC)
 
 IF (BUILD_SHARED_LIBS)
     # dynamic library
-    ADD_LIBRARY(libwildmidi_dynamic SHARED
+    ADD_LIBRARY(libwildmidi SHARED
             ${wildmidi_library_SRCS}
             ${wildmidi_library_HDRS}
             )
 
-    TARGET_LINK_LIBRARIES(libwildmidi_dynamic
+    TARGET_LINK_LIBRARIES(libwildmidi
             ${EXTRA_LDFLAGS}
             ${M_LIBRARY}
             )
 
-    SET_TARGET_PROPERTIES(libwildmidi_dynamic PROPERTIES
+    SET_TARGET_PROPERTIES(libwildmidi PROPERTIES
             SOVERSION ${SOVERSION}
             VERSION ${VERSION}
             OUTPUT_NAME ${LIBRARY_DYN_NAME} CLEAN_DIRECT_OUTPUT 1
             )
 
     IF (WIN32)
-        SET_TARGET_PROPERTIES(libwildmidi_dynamic PROPERTIES
+        SET_TARGET_PROPERTIES(libwildmidi PROPERTIES
                 DEFINE_SYMBOL DLL_EXPORT
                 COMPILE_DEFINITIONS WILDMIDI_BUILD
                 )
     ELSEIF (HAVE_VISIBILITY_HIDDEN AND HAVE_VISIBILITY_DEFAULT) # GCC, Clang
-        SET_TARGET_PROPERTIES(libwildmidi_dynamic PROPERTIES
+        SET_TARGET_PROPERTIES(libwildmidi PROPERTIES
                 COMPILE_DEFINITIONS "WILDMIDI_BUILD;SYM_VISIBILITY"
                 COMPILE_FLAGS "-fvisibility=hidden"
                 )
     #ELSEIF (HAVE_LDSCOPE_HIDDEN AND HAVE_VISIBILITY_DEFAULT) # SunPro 
(__SUNPRO_C >= 0x590)
-    #   SET_TARGET_PROPERTIES(libwildmidi_dynamic PROPERTIES
+    #   SET_TARGET_PROPERTIES(libwildmidi PROPERTIES
     #           COMPILE_DEFINITIONS "WILDMIDI_BUILD;SYM_VISIBILITY"
     #           COMPILE_FLAGS "-xldscope=hidden"
     #           )
     ELSEIF (HAVE_LDSCOPE_HIDDEN AND HAVE_LDSCOPE_GLOBAL) # SunPro (__SUNPRO_C 
>= 0x550)
-        SET_TARGET_PROPERTIES(libwildmidi_dynamic PROPERTIES
+        SET_TARGET_PROPERTIES(libwildmidi PROPERTIES
                 COMPILE_DEFINITIONS "WILDMIDI_BUILD;SYM_LDSCOPE"
                 COMPILE_FLAGS "-xldscope=hidden"
                 )
     ELSE ()
-        SET_TARGET_PROPERTIES(libwildmidi_dynamic PROPERTIES
+        SET_TARGET_PROPERTIES(libwildmidi PROPERTIES
                 COMPILE_DEFINITIONS WILDMIDI_BUILD
                 )
     ENDIF ()
+    LIST(APPEND wildmidi_lib_install libwildmidi)
 ENDIF (BUILD_SHARED_LIBS)
 
-# Set our default and then look at the possible locations
-SET(WILDMIDILIB "${CMAKE_BINARY_DIR}/lib${LIBRARY_DYN_NAME}.so")
-SET(WILDMIDILIBSTATIC "${CMAKE_BINARY_DIR}/lib${LIBRARY_STATIC_NAME}.a")
-
-# MS Visual Studio
-IF (MSVC)
-    SET(WILDMIDILIB 
"${CMAKE_BINARY_DIR}\\${CMAKE_BUILD_TYPE}\\${LIBRARY_DYN_NAME}.lib")
-    SET(WILDMIDILIBSTATIC 
"${CMAKE_BINARY_DIR}\\${CMAKE_BUILD_TYPE}\\${LIBRARY_STATIC_NAME}.lib")
-ENDIF (MSVC)
-
-# MinGW or MinGW-w64
-IF (CMAKE_COMPILER_IS_MINGW)
-    SET(WILDMIDILIB "${CMAKE_BINARY_DIR}/lib${LIBRARY_DYN_NAME}.dll.a")
-    SET(WILDMIDIDLL "${CMAKE_BINARY_DIR}/lib${LIBRARY_DYN_NAME}.dll")
-    SET(WILDMIDILIBSTATIC "${CMAKE_BINARY_DIR}/lib${LIBRARY_STATIC_NAME}.a")
-ENDIF (CMAKE_COMPILER_IS_MINGW)
-
-# Apple's Xcode
-IF (CMAKE_GENERATOR STREQUAL "Xcode")
-    SET(WILDMIDILIB 
"${CMAKE_BINARY_DIR}/${CMAKE_BUILD_TYPE}/lib${LIBRARY_DYN_NAME}.dylib")
-    SET(WILDMIDILIBSTATIC 
"${CMAKE_BINARY_DIR}/${CMAKE_BUILD_TYPE}/lib${LIBRARY_STATIC_NAME}.a")
-ELSEIF (APPLE) # Apple's CLI default
-    SET(WILDMIDILIB "${CMAKE_BINARY_DIR}/lib${LIBRARY_DYN_NAME}.dylib")
-    SET(WILDMIDILIBSTATIC "${CMAKE_BINARY_DIR}/lib${LIBRARY_STATIC_NAME}.a")
-ENDIF (CMAKE_GENERATOR STREQUAL "Xcode")
-
 # do we want the wildmidi player?
 IF (WANT_PLAYER AND BUILD_SHARED_LIBS)
     ADD_EXECUTABLE(wildmidi
@@ -167,8 +151,6 @@
             ${wildmidi_executable_HDRS}
             )
 
-    ADD_DEPENDENCIES(wildmidi libwildmidi_dynamic)
-
     IF (AUDIODRV_OPENAL)
         TARGET_INCLUDE_DIRECTORIES(wildmidi PRIVATE
                 ${OPENAL_INCLUDE_DIR}
@@ -183,10 +165,14 @@
 
     TARGET_LINK_LIBRARIES(wildmidi
             ${EXTRA_LDFLAGS}
-            ${WILDMIDILIB}
+            libwildmidi
             ${AUDIO_LIBRARY}
             ${M_LIBRARY}
             )
+    IF (WIN32)
+        TARGET_LINK_LIBRARIES(wildmidi winmm)
+    ENDIF ()
+    LIST(APPEND wildmidi_install wildmidi)
 ENDIF ()
 
 IF (WANT_PLAYERSTATIC)
@@ -195,8 +181,6 @@
             ${wildmidi_executable_HDRS}
             )
 
-    ADD_DEPENDENCIES(wildmidi-static libwildmidi_static)
-
     SET_TARGET_PROPERTIES(wildmidi-static PROPERTIES
             COMPILE_DEFINITIONS WILDMIDI_STATIC
             )
@@ -215,101 +199,69 @@
 
     TARGET_LINK_LIBRARIES(wildmidi-static
             ${EXTRA_LDFLAGS}
-            ${WILDMIDILIBSTATIC}
+            libwildmidi-static
             ${AUDIO_LIBRARY}
             ${M_LIBRARY}
             )
+    IF (WIN32)
+        TARGET_LINK_LIBRARIES(wildmidi-static winmm)
+    ENDIF ()
+    LIST(APPEND wildmidi_install wildmidi-static)
 ENDIF (WANT_PLAYERSTATIC)
 
 IF (WANT_DEVTEST)
     SET(wildmidi-devtest_executable_SRCS
-            ${GETOPT}
             DevTest.c
             )
+    IF (MSVC)
+        LIST(APPEND wildmidi-devtest_executable_SRCS getopt_long.c)
+    ENDIF ()
     ADD_EXECUTABLE(wildmidi-devtest
             ${wildmidi-devtest_executable_SRCS}
             )
+    LIST(APPEND wildmidi_install wildmidi-devtest)
 ENDIF (WANT_DEVTEST)
 
-# convenience variables
-SET(WILDMIDILIB_INSTALLDIR "lib${LIB_SUFFIX}")
-SET(WILDMIDIDLL_INSTALLDIR "bin${LIB_SUFFIX}")
-
-# add multiarch folder, if needed
-IF (CMAKE_LIBRARY_ARCHITECTURE)
-    SET(WILDMIDILIB_INSTALLDIR 
"${WILDMIDILIB_INSTALLDIR}/${CMAKE_LIBRARY_ARCHITECTURE}")
-    SET(WILDMIDIDLL_INSTALLDIR 
"${WILDMIDIDLL_INSTALLDIR}/${CMAKE_LIBRARY_ARCHITECTURE}")
-ENDIF ()
-
 # prepare pkg-config file
-SET(WILDMIDILIB_PREFIX "${CMAKE_INSTALL_PREFIX}")
-SET(WILDMIDILIB_LIBDIR "${WILDMIDILIB_INSTALLDIR}")
-CONFIGURE_FILE("wildmidi.pc.in" "${CMAKE_BINARY_DIR}/wildmidi.pc" @ONLY)
-
-# install target (*nix OSes)
-IF (UNIX AND NOT APPLE)
-    # install our libraries
-    IF (WANT_STATIC)
-        INSTALL(TARGETS libwildmidi_static DESTINATION 
${WILDMIDILIB_INSTALLDIR})
-        IF (WANT_PLAYERSTATIC)
-            INSTALL(TARGETS wildmidi-static DESTINATION bin)
-        ENDIF ()
-    ENDIF (WANT_STATIC)
-
-    IF (BUILD_SHARED_LIBS)
-        INSTALL(TARGETS libwildmidi_dynamic DESTINATION 
${WILDMIDILIB_INSTALLDIR})
-        IF (WANT_PLAYER)
-            INSTALL(TARGETS wildmidi DESTINATION bin)
-        ENDIF ()
-    ENDIF ()
-
-    # install our devtest if asked for
-    IF (WANT_DEVTEST)
-        INSTALL(TARGETS wildmidi-devtest DESTINATION bin)
-    ENDIF (WANT_DEVTEST)
-
-    # install pkg-config file
-    INSTALL(FILES ${CMAKE_BINARY_DIR}/wildmidi.pc DESTINATION 
"${WILDMIDILIB_INSTALLDIR}/pkgconfig")
-
-    # install supporting man pages and headers
-    INSTALL(FILES ${CMAKE_SOURCE_DIR}/include/wildmidi_lib.h DESTINATION 
include)
-    INSTALL(DIRECTORY ${CMAKE_SOURCE_DIR}/docs/man/ DESTINATION share/man)
-ENDIF (UNIX AND NOT APPLE)
-
-# install target (Windows: MinGW or MinGW-w64)
-IF (WIN32 AND CMAKE_COMPILER_IS_MINGW)
-    IF ("${CMAKE_INSTALL_PREFIX}" STREQUAL "")
-        MESSAGE("INSTALL PREFIX IS EMPTY")
-        SET(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/wildmidi_lib" CACHE 
STRING "Install Prefix" FORCE)
-        MESSAGE("INSTALL PREFIX NOW: ${CMAKE_INSTALL_PREFIX}")
-    ENDIF ("${CMAKE_INSTALL_PREFIX}" STREQUAL "")
-    # install our libraries
-    IF (WANT_STATIC)
-        INSTALL(TARGETS libwildmidi_static DESTINATION 
${WILDMIDILIB_INSTALLDIR})
-        IF (WANT_PLAYERSTATIC)
-            INSTALL(TARGETS wildmidi-static DESTINATION bin)
-        ENDIF ()
-    ENDIF (WANT_STATIC)
-    IF (BUILD_SHARED_LIBS)
-        INSTALL(FILES ${WILDMIDILIB} DESTINATION ${WILDMIDILIB_INSTALLDIR})
-        INSTALL(FILES ${WILDMIDIDLL} DESTINATION ${WILDMIDIDLL_INSTALLDIR})
-        IF (WANT_PLAYER)
-            INSTALL(TARGETS wildmidi DESTINATION bin)
-        ENDIF ()
-    ENDIF ()
+CONFIGURE_FILE("wildmidi.pc.in" "${PROJECT_BINARY_DIR}/wildmidi.pc" @ONLY)
 
-    # install our devtest if asked for
-    IF (WANT_DEVTEST)
-        INSTALL(TARGETS wildmidi-devtest DESTINATION bin)
-    ENDIF (WANT_DEVTEST)
-
-    # install pkg-config file
-    INSTALL(FILES ${CMAKE_BINARY_DIR}/wildmidi.pc DESTINATION 
"${WILDMIDILIB_INSTALLDIR}/pkgconfig")
-
-    # install supporting man pages and headers
-    INSTALL(FILES ${CMAKE_SOURCE_DIR}/include/wildmidi_lib.h DESTINATION 
include)
-    INSTALL(DIRECTORY ${CMAKE_SOURCE_DIR}/docs/man/ DESTINATION share/man)
-ENDIF (WIN32 AND CMAKE_COMPILER_IS_MINGW)
+INSTALL(TARGETS ${wildmidi_lib_install}
+    EXPORT WildMidi-export
+    ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+    LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+    RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+    )
+INSTALL(TARGETS ${wildmidi_install}
+    RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+    )
+
+INSTALL(FILES ${PROJECT_BINARY_DIR}/wildmidi.pc DESTINATION 
"${CMAKE_INSTALL_LIBDIR}/pkgconfig")
+INSTALL(FILES ${PROJECT_SOURCE_DIR}/include/wildmidi_lib.h DESTINATION 
${CMAKE_INSTALL_INCLUDEDIR})
+INSTALL(DIRECTORY ${PROJECT_SOURCE_DIR}/docs/man/ DESTINATION 
${CMAKE_INSTALL_MANDIR})
+INSTALL(EXPORT WildMidi-export FILE WildMidiTargets.cmake
+    NAMESPACE WildMidi:: DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/WildMidi
+    )
+
+INCLUDE(CMakePackageConfigHelpers)
+CONFIGURE_PACKAGE_CONFIG_FILE(
+    "${PROJECT_SOURCE_DIR}/src/WildMidiConfig.cmake.in"
+    "${PROJECT_BINARY_DIR}/WildMidiConfig.cmake"
+    INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/WildMidi"
+    NO_SET_AND_CHECK_MACRO
+    NO_CHECK_REQUIRED_COMPONENTS_MACRO
+    )
+
+WRITE_BASIC_PACKAGE_VERSION_FILE(
+    "${PROJECT_BINARY_DIR}/WildMidiConfigVersion.cmake"
+    VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}"
+    COMPATIBILITY AnyNewerVersion
+    )
+
+INSTALL(FILES
+    "${PROJECT_BINARY_DIR}/WildMidiConfig.cmake"
+    "${PROJECT_BINARY_DIR}/WildMidiConfigVersion.cmake"
+    DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/WildMidi"
+    )
 
 IF (WIN32 AND MSVC)
     IF (WANT_MP_BUILD)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wildmidi-wildmidi-0.4.3/src/WildMidiConfig.cmake.in 
new/wildmidi-wildmidi-0.4.4/src/WildMidiConfig.cmake.in
--- old/wildmidi-wildmidi-0.4.3/src/WildMidiConfig.cmake.in     1970-01-01 
01:00:00.000000000 +0100
+++ new/wildmidi-wildmidi-0.4.4/src/WildMidiConfig.cmake.in     2021-03-21 
09:55:50.000000000 +0100
@@ -0,0 +1,3 @@
+@PACKAGE_INIT@
+
+INCLUDE ( "${CMAKE_CURRENT_LIST_DIR}/WildMidiTargets.cmake" )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wildmidi-wildmidi-0.4.3/src/f_hmi.c 
new/wildmidi-wildmidi-0.4.4/src/f_hmi.c
--- old/wildmidi-wildmidi-0.4.3/src/f_hmi.c     2018-11-24 09:55:50.000000000 
+0100
+++ new/wildmidi-wildmidi-0.4.4/src/f_hmi.c     2021-03-21 09:55:50.000000000 
+0100
@@ -129,7 +129,7 @@
 
     hmi_data += 370;
 
-    smallest_delta = 0xffffffff;
+    smallest_delta = 0x7fffffff;
 
     hmi_track_offset[0] = *hmi_data; // To keep Xcode happy
 
@@ -193,6 +193,21 @@
         }
     }
 
+    if (smallest_delta >= 0x7fffffff) {
+        //DEBUG
+        //fprintf(stderr,"CRAZY SMALLEST DELTA %u\n", smallest_delta);
+        _WM_GLOBAL_ERROR(__FUNCTION__, __LINE__, WM_ERR_CORUPT, NULL, 0);
+        goto _hmi_end;
+    }
+
+    if ((float)smallest_delta >= 0x7fffffff / samples_per_delta_f) {
+        //DEBUG
+        //fprintf(stderr,"INTEGER OVERFLOW (samples_per_delta: %f, 
smallest_delta: %u)\n",
+        //        samples_per_delta_f, smallest_delta);
+        _WM_GLOBAL_ERROR(__FUNCTION__, __LINE__, WM_ERR_CORUPT, NULL, 0);
+        goto _hmi_end;
+    }
+
     subtract_delta = smallest_delta;
     sample_count_f= (((float) smallest_delta * samples_per_delta_f) + 
sample_remainder);
 
@@ -368,6 +383,13 @@
         }
 
         // convert smallest delta to samples till next
+        if ((float)smallest_delta >= 0x7fffffff / samples_per_delta_f) {
+            //DEBUG
+            //fprintf(stderr,"INTEGER OVERFLOW (samples_per_delta: %f, 
smallest_delta: %u)\n",
+            //        samples_per_delta_f, smallest_delta);
+            _WM_GLOBAL_ERROR(__FUNCTION__, __LINE__, WM_ERR_CORUPT, NULL, 0);
+            goto _hmi_end;
+        }
         subtract_delta = smallest_delta;
         sample_count_f= (((float) smallest_delta * samples_per_delta_f) + 
sample_remainder);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wildmidi-wildmidi-0.4.3/src/f_hmp.c 
new/wildmidi-wildmidi-0.4.4/src/f_hmp.c
--- old/wildmidi-wildmidi-0.4.3/src/f_hmp.c     2018-11-24 09:55:50.000000000 
+0100
+++ new/wildmidi-wildmidi-0.4.4/src/f_hmp.c     2021-03-21 09:55:50.000000000 
+0100
@@ -196,7 +196,7 @@
     chunk_ofs = (uint32_t *) malloc(sizeof(uint32_t) * hmp_chunks);
     chunk_end = (uint8_t *) malloc(sizeof(uint8_t) * hmp_chunks);
 
-    smallest_delta = 0xffffffff;
+    smallest_delta = 0x7fffffff;
     // store chunk info for use, and check chunk lengths
     for (i = 0; i < hmp_chunks; i++) {
         /* FIXME: add proper size checks!!! */
@@ -255,6 +255,21 @@
         chunk_end[i] = 0;
     }
 
+    if (smallest_delta >= 0x7fffffff) {
+        //DEBUG
+        //fprintf(stderr,"CRAZY SMALLEST DELTA %u\n", smallest_delta);
+        _WM_GLOBAL_ERROR(__FUNCTION__, __LINE__, WM_ERR_CORUPT, NULL, 0);
+        goto _hmp_end;
+    }
+
+    if ((float)smallest_delta >= 0x7fffffff / samples_per_delta_f) {
+        //DEBUG
+        //fprintf(stderr,"INTEGER OVERFLOW (samples_per_delta: %f, 
smallest_delta: %u)\n",
+        //        samples_per_delta_f, smallest_delta);
+        _WM_GLOBAL_ERROR(__FUNCTION__, __LINE__, WM_ERR_CORUPT, NULL, 0);
+        goto _hmp_end;
+    }
+
     subtract_delta = smallest_delta;
     sample_count_f = (((float) smallest_delta * samples_per_delta_f) + 
sample_remainder);
 
@@ -342,6 +357,14 @@
         NEXT_CHUNK: continue;
         }
 
+        if ((float)smallest_delta >= 0x7fffffff / samples_per_delta_f) {
+            //DEBUG
+            //fprintf(stderr,"INTEGER OVERFLOW (samples_per_delta: %f, 
smallest_delta: %u)\n",
+            //        samples_per_delta_f, smallest_delta);
+            _WM_GLOBAL_ERROR(__FUNCTION__, __LINE__, WM_ERR_CORUPT, NULL, 0);
+            goto _hmp_end;
+        }
+
         subtract_delta = smallest_delta;
         sample_count_f= (((float) smallest_delta * samples_per_delta_f) + 
sample_remainder);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wildmidi-wildmidi-0.4.3/src/f_midi.c 
new/wildmidi-wildmidi-0.4.4/src/f_midi.c
--- old/wildmidi-wildmidi-0.4.3/src/f_midi.c    2018-11-24 09:55:50.000000000 
+0100
+++ new/wildmidi-wildmidi-0.4.4/src/f_midi.c    2021-03-21 09:55:50.000000000 
+0100
@@ -152,7 +152,7 @@
     track_end = (uint8_t *) malloc(sizeof(uint8_t) * no_tracks);
     running_event = (uint8_t *) malloc(sizeof(uint8_t) * no_tracks);
 
-    smallest_delta = 0xffffffff;
+    smallest_delta = 0x7fffffff;
     for (i = 0; i < no_tracks; i++) {
         if (midi_size < 8) {
             _WM_GLOBAL_ERROR(__FUNCTION__, __LINE__, WM_ERR_CORUPT, "(too 
short)", 0);
@@ -230,6 +230,21 @@
         }
     }
 
+    if (smallest_delta >= 0x7fffffff) {
+        //DEBUG
+        //fprintf(stderr,"CRAZY SMALLEST DELTA %u\n", smallest_delta);
+        _WM_GLOBAL_ERROR(__FUNCTION__, __LINE__, WM_ERR_CORUPT, NULL, 0);
+        goto _end;
+    }
+
+    if ((float)smallest_delta >= 0x7fffffff / samples_per_delta_f) {
+        //DEBUG
+        //fprintf(stderr,"INTEGER OVERFLOW (samples_per_delta: %f, 
smallest_delta: %u)\n",
+        //        samples_per_delta_f, smallest_delta);
+        _WM_GLOBAL_ERROR(__FUNCTION__, __LINE__, WM_ERR_CORUPT, NULL, 0);
+        goto _end;
+    }
+
     subtract_delta = smallest_delta;
     sample_count_f = (((float) smallest_delta * samples_per_delta_f) + 
sample_remainder);
     sample_count = (uint32_t) sample_count_f;
@@ -310,6 +325,13 @@
             NEXT_TRACK: continue;
             }
 
+            if ((float)smallest_delta >= 0x7fffffff / samples_per_delta_f) {
+                //DEBUG
+                //fprintf(stderr,"INTEGER OVERFLOW (samples_per_delta: %f, 
smallest_delta: %u)\n",
+                //        samples_per_delta_f, smallest_delta);
+                _WM_GLOBAL_ERROR(__FUNCTION__, __LINE__, WM_ERR_CORUPT, NULL, 
0);
+                goto _end;
+            }
             subtract_delta = smallest_delta;
             sample_count_f = (((float) smallest_delta * samples_per_delta_f)
                               + sample_remainder);
@@ -377,6 +399,13 @@
                 tracks[i]++;
                 track_size[i]--;
 
+                if ((float)smallest_delta >= 0x7fffffff / samples_per_delta_f) 
{
+                    //DEBUG
+                    //fprintf(stderr,"INTEGER OVERFLOW (samples_per_delta: %f, 
smallest_delta: %u)\n",
+                    //        samples_per_delta_f, smallest_delta);
+                    _WM_GLOBAL_ERROR(__FUNCTION__, __LINE__, WM_ERR_CORUPT, 
NULL, 0);
+                    goto _end;
+                }
                 sample_count_f = (((float) track_delta[i] * 
samples_per_delta_f)
                                   + sample_remainder);
                 sample_count = (uint32_t) sample_count_f;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wildmidi-wildmidi-0.4.3/src/f_mus.c 
new/wildmidi-wildmidi-0.4.4/src/f_mus.c
--- old/wildmidi-wildmidi-0.4.3/src/f_mus.c     2018-11-24 09:55:50.000000000 
+0100
+++ new/wildmidi-wildmidi-0.4.4/src/f_mus.c     2021-03-21 09:55:50.000000000 
+0100
@@ -163,6 +163,11 @@
                     mus_event[0] = 0x90 | (mus_data[mus_data_ofs] & 0x0f);
                     mus_event[1] = mus_data[mus_data_ofs + 1] & 0x7f;
                     mus_event[2] = mus_data[mus_data_ofs + 2];
+                    // The maximum volume is 127, but it is encoded as
+                    // a byte. Some songs erroneously use values higher
+                    // than 127, so we have to clamp them down.
+                    // https://github.com/Mindwerks/wildmidi/pull/226
+                    if (mus_event[2] > 0x7f) mus_event[2] = 0x7f;
                     mus_event[3] = 0;
                     mus_prev_vol[mus_data[mus_data_ofs] & 0x0f] = mus_event[2];
                 } else {
@@ -259,6 +264,11 @@
                         mus_event[0] = 0xb0 | (mus_data[mus_data_ofs] & 0x0f);
                         mus_event[1] = 7;
                         mus_event[2] = mus_data[mus_data_ofs + 2];
+                        // The maximum volume is 127, but it is encoded as
+                        // a byte. Some songs erroneously use values higher
+                        // than 127, so we have to clamp them down.
+                        // https://github.com/Mindwerks/wildmidi/pull/226
+                        if (mus_event[2] > 0x7f) mus_event[2] = 0x7f;
                         mus_event[3] = 0;
                         break;
                     case 4: // Pan
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wildmidi-wildmidi-0.4.3/src/f_xmidi.c 
new/wildmidi-wildmidi-0.4.4/src/f_xmidi.c
--- old/wildmidi-wildmidi-0.4.3/src/f_xmidi.c   2018-11-24 09:55:50.000000000 
+0100
+++ new/wildmidi-wildmidi-0.4.4/src/f_xmidi.c   2021-03-21 09:55:50.000000000 
+0100
@@ -228,6 +228,14 @@
                                 xmi_tmpdata = xmi_delta;
                             }
 
+                            if ((float)xmi_tmpdata >= 0x7fffffff / 
xmi_samples_per_delta_f) {
+                                //DEBUG
+                                //fprintf(stderr,"INTEGER OVERFLOW 
(samples_per_delta: %f, smallest_delta: %u)\n",
+                                //        xmi_samples_per_delta_f, 
xmi_tmpdata);
+                                _WM_GLOBAL_ERROR(__FUNCTION__, __LINE__, 
WM_ERR_CORUPT, NULL, 0);
+                                goto _xmi_end;
+                            }
+
                             xmi_sample_count_f= (((float) xmi_tmpdata * 
xmi_samples_per_delta_f) + xmi_sample_remainder);
 
                             xmi_sample_count = (uint32_t) xmi_sample_count_f;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wildmidi-wildmidi-0.4.3/src/getopt_long.c 
new/wildmidi-wildmidi-0.4.4/src/getopt_long.c
--- old/wildmidi-wildmidi-0.4.3/src/getopt_long.c       2018-11-24 
09:55:50.000000000 +0100
+++ new/wildmidi-wildmidi-0.4.4/src/getopt_long.c       2021-03-21 
09:55:50.000000000 +0100
@@ -1,8 +1,8 @@
-/*     $OpenBSD: getopt_long.c,v 1.26 2013/06/08 22:47:56 millert Exp $        
*/
+/*     $OpenBSD: getopt_long.c,v 1.32 2020/05/27 22:25:09 schwarze Exp $       
*/
 /*     $NetBSD: getopt_long.c,v 1.15 2002/01/31 22:43:40 tv Exp $      */
 
 /*
- * Copyright (c) 2002 Todd C. Miller <[email protected]>
+ * Copyright (c) 2002 Todd C. Miller <[email protected]>
  *
  * Permission to use, copy, modify, and distribute this software for any
  * purpose with or without fee is hereby granted, provided that the above
@@ -142,9 +142,7 @@
                        else
                                pos += nopts;
                        swap = nargv[pos];
-                       /* LINTED const cast */
-                       ((char **) nargv)[pos] = nargv[cstart];
-                       /* LINTED const cast */
+                       ((char **)nargv)[pos] = nargv[cstart];
                        ((char **)nargv)[cstart] = swap;
                }
        }
@@ -413,15 +411,7 @@
        }
 
        if ((optchar = (int)*place++) == (int)':' ||
-           (optchar == (int)'-' && *place != '\0') ||
            (oli = strchr(options, optchar)) == NULL) {
-               /*
-                * If the user specified "-" and  '-' isn't listed in
-                * options, return -1 (non-option) as per POSIX.
-                * Otherwise, it is an unknown option character (or ':').
-                */
-               if (optchar == (int)'-' && *place == '\0')
-                       return (-1);
                if (!*place)
                        ++optind;
                if (PRINT_ERROR)
@@ -473,12 +463,11 @@
 /*
  * getopt --
  *     Parse argc/argv argument vector.
- *
- * [eventually this will replace the BSD getopt]
  */
 int
 getopt(int nargc, char * const *nargv, const char *options)
 {
+
        /*
         * We don't pass FLAG_PERMUTE to getopt_internal() since
         * the BSD getopt(3) (unlike GNU) has never done this.
@@ -498,6 +487,7 @@
 getopt_long(int nargc, char * const *nargv, const char *options,
     const struct option *long_options, int *idx)
 {
+
        return (getopt_internal(nargc, nargv, options, long_options, idx,
            FLAG_PERMUTE));
 }
@@ -510,6 +500,7 @@
 getopt_long_only(int nargc, char * const *nargv, const char *options,
     const struct option *long_options, int *idx)
 {
+
        return (getopt_internal(nargc, nargv, options, long_options, idx,
            FLAG_PERMUTE|FLAG_LONGONLY));
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wildmidi-wildmidi-0.4.3/src/gus_pat.c 
new/wildmidi-wildmidi-0.4.4/src/gus_pat.c
--- old/wildmidi-wildmidi-0.4.3/src/gus_pat.c   2018-11-24 09:55:50.000000000 
+0100
+++ new/wildmidi-wildmidi-0.4.4/src/gus_pat.c   2021-03-21 09:55:50.000000000 
+0100
@@ -94,9 +94,9 @@
     gus_sample->data = (int16_t *) calloc((new_length + 2), sizeof(int16_t));
     if (__builtin_expect((gus_sample->data != NULL), 1)) {
         write_data = gus_sample->data;
-        do {
+        while (read_data < read_end) {
             *write_data++ = (*read_data++) << 8;
-        } while (read_data != read_end);
+        }
 
         *write_data = (*read_data++ << 8);
         write_data_a = write_data + dloop_length;
@@ -114,10 +114,8 @@
         *write_data = (*read_data++ << 8);
         *write_data_b++ = *write_data;
         read_end = data + gus_sample->data_length;
-        if (__builtin_expect((read_data != read_end), 1)) {
-            do {
-                *write_data_b++ = (*read_data++) << 8;
-            } while (read_data != read_end);
+        while (read_data < read_end) {
+            *write_data_b++ = (*read_data++) << 8;
         }
         gus_sample->loop_start += loop_length;
         gus_sample->loop_end += dloop_length;
@@ -243,9 +241,9 @@
     gus_sample->data = (int16_t *) calloc((new_length + 2), sizeof(int16_t));
     if (__builtin_expect((gus_sample->data != NULL), 1)) {
         write_data = gus_sample->data;
-        do {
+        while (read_data < read_end) {
             *write_data++ = ((*read_data++) ^ 0x80) << 8;
-        } while (read_data != read_end);
+        }
 
         *write_data = ((*read_data++) ^ 0x80) << 8;
         write_data_a = write_data + dloop_length;
@@ -263,11 +261,10 @@
         *write_data = ((*read_data++) ^ 0x80) << 8;
         *write_data_b++ = *write_data;
         read_end = data + gus_sample->data_length;
-        if (__builtin_expect((read_data != read_end), 1)) {
-            do {
-                *write_data_b++ = ((*read_data++) ^ 0x80) << 8;
-            } while (read_data != read_end);
+        while (read_data < read_end) {
+            *write_data_b++ = ((*read_data++) ^ 0x80) << 8;
         }
+
         gus_sample->loop_start += loop_length;
         gus_sample->loop_end += dloop_length;
         gus_sample->data_length = new_length;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wildmidi-wildmidi-0.4.3/src/mus2mid.c 
new/wildmidi-wildmidi-0.4.4/src/mus2mid.c
--- old/wildmidi-wildmidi-0.4.3/src/mus2mid.c   2018-11-24 09:55:50.000000000 
+0100
+++ new/wildmidi-wildmidi-0.4.4/src/mus2mid.c   2021-03-21 09:55:50.000000000 
+0100
@@ -64,7 +64,6 @@
  * QLS: MPQN/1000000 = 1.745673
  * TDPS: QLS/PPQN = 1.745673 / 89 = 0.019614303 (seconds per tick)
  * PPQN: (TDPS = QLS/PPQN) (0.019614303 = 1.745673/PPQN) (0.019614303*PPQN = 
1.745673) (PPQN = 89.000001682)
- *
  */
 
 #define MUSEVENT_KEYOFF             0
@@ -221,7 +220,7 @@
     MUSHeader header;
     const uint8_t *cur, *end;
     uint32_t track_size_pos, begin_track_pos, current_pos;
-    int32_t delta_time;/* Delta time for midi event */
+    int32_t delta_time; /* Delta time for midi event */
     int temp, ret = -1;
     int channel_volume[MIDI_MAXCHANNELS];
     int channelMap[MIDI_MAXCHANNELS];
@@ -351,8 +350,16 @@
             case MUSEVENT_KEYON:
                 status |= 0x90;
                 bit1 = *cur & 127;
-                if (*cur++ & 128)   /* volume bit? */
+                if (*cur++ & 128) { /* volume bit? */
                     channel_volume[channelMap[channel]] = *cur++;
+                    /* The maximum volume is 127, but it is encoded as
+                       a byte. Some songs erroneously use values higher
+                       than 127, so we have to clamp them down.
+                       https://github.com/Mindwerks/wildmidi/pull/226 */
+                    if (channel_volume[channelMap[channel]] > 127) {
+                        channel_volume[channelMap[channel]] = 127;
+                    }
+                }
                 bit2 = channel_volume[channelMap[channel]];
                 break;
             case MUSEVENT_PITCHWHEEL:
@@ -375,7 +382,7 @@
                     cur++;
                     status |= 0xC0;
                     bit1 = *cur++;
-                    bit2 = 0;/* silence bogus warnings */
+                    bit2 = 0; /* silence bogus warnings */
                     bitc = 1;
                 } else {
                     status |= 0xB0;
@@ -386,6 +393,11 @@
                     }
                     bit1 = midimap[*cur++];
                     bit2 = *cur++;
+                    /* The maximum volume is 127, but it is encoded as
+                       a byte. Some songs erroneously use values higher
+                       than 127, so we have to clamp them down.
+                       https://github.com/Mindwerks/wildmidi/pull/226 */
+                    if (bit1 == 0x07 && bit2 > 127) bit2 = 127;
                 }
                 break;
             case MUSEVENT_END:  /* End */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wildmidi-wildmidi-0.4.3/src/reverb.c 
new/wildmidi-wildmidi-0.4.4/src/reverb.c
--- old/wildmidi-wildmidi-0.4.3/src/reverb.c    2018-11-24 09:55:50.000000000 
+0100
+++ new/wildmidi-wildmidi-0.4.4/src/reverb.c    2021-03-21 09:55:50.000000000 
+0100
@@ -183,42 +183,42 @@
         double RFN_YOFS = listen_y - RFN[j].y;
         RFN_DST[j] = sqrt((RFN_XOFS * RFN_XOFS) + (RFN_YOFS * RFN_YOFS));
 
-        SPL_RFL_XOFS = SPL.x - RFN[i].x;
-        SPL_RFL_YOFS = SPL.y - RFN[i].y;
-        SPR_RFL_XOFS = SPR.x - RFN[i].x;
-        SPR_RFL_YOFS = SPR.y - RFN[i].y;
-        SPL_DST[i] = sqrt(
+        SPL_RFL_XOFS = SPL.x - RFN[j].x;
+        SPL_RFL_YOFS = SPL.y - RFN[j].y;
+        SPR_RFL_XOFS = SPR.x - RFN[j].x;
+        SPR_RFL_YOFS = SPR.y - RFN[j].y;
+        SPL_DST[j] = sqrt(
                 (SPL_RFL_XOFS * SPL_RFL_XOFS) + (SPL_RFL_YOFS * SPL_RFL_YOFS));
-        SPR_DST[i] = sqrt(
+        SPR_DST[j] = sqrt(
                 (SPR_RFL_XOFS * SPR_RFL_XOFS) + (SPR_RFL_YOFS * SPR_RFL_YOFS));
         /*
          add the 2 distances together and remove the speaker to listener 
distance
          so we dont have to delay the initial output
          */
-        SPL_DST[i] += RFN_DST[i];
+        SPL_DST[j] += RFN_DST[j];
 
         /* so i dont have to delay speaker output */
-        SPL_DST[i] -= SPL_LSN_DST;
+        SPL_DST[j] -= SPL_LSN_DST;
 
-        if (i < 4) {
-            if (SPL_DST[i] > MAXL_DST)
-                MAXL_DST = SPL_DST[i];
+        if (j < 4) {
+            if (SPL_DST[j] > MAXL_DST)
+                MAXL_DST = SPL_DST[j];
         } else {
-            if (SPL_DST[i] > MAXR_DST)
-                MAXR_DST = SPL_DST[i];
+            if (SPL_DST[j] > MAXR_DST)
+                MAXR_DST = SPL_DST[j];
         }
 
-        SPR_DST[i] += RFN_DST[i];
+        SPR_DST[j] += RFN_DST[j];
 
         /* so i dont have to delay speaker output */
-        SPR_DST[i] -= SPR_LSN_DST;
+        SPR_DST[j] -= SPR_LSN_DST;
 
-        if (i < 4) {
-            if (SPR_DST[i] > MAXL_DST)
-                MAXL_DST = SPR_DST[i];
+        if (j < 4) {
+            if (SPR_DST[j] > MAXL_DST)
+                MAXL_DST = SPR_DST[j];
         } else {
-            if (SPR_DST[i] > MAXR_DST)
-                MAXR_DST = SPR_DST[i];
+            if (SPR_DST[j] > MAXR_DST)
+                MAXR_DST = SPR_DST[j];
         }
 
         RFN_DST[j] *= 2.0;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wildmidi-wildmidi-0.4.3/src/wildmidi.c 
new/wildmidi-wildmidi-0.4.4/src/wildmidi.c
--- old/wildmidi-wildmidi-0.4.3/src/wildmidi.c  2018-11-24 09:55:50.000000000 
+0100
+++ new/wildmidi-wildmidi-0.4.4/src/wildmidi.c  2021-03-21 09:55:50.000000000 
+0100
@@ -391,6 +391,28 @@
  */
 static char midi_file[1024];
 
+static void mk_midifile_name(const char *src) {
+    char *p;
+    int len;
+
+    strncpy(midi_file, src, sizeof(midi_file) - 1);
+    midi_file[sizeof(midi_file) - 1] = 0;
+
+    p = strrchr(midi_file, '.');
+    if (p && (len = strlen(p)) <= 4) {
+        if (p - midi_file <= (int)sizeof(midi_file) - 5) {
+            memcpy(p, ".mid", 5);
+            return;
+        }
+    }
+
+    len = strlen(midi_file);
+    if (len > (int)sizeof(midi_file) - 5)
+        len = (int)sizeof(midi_file) - 5;
+    p = &midi_file[len];
+    memcpy(p, ".mid", 5);
+}
+
 static int write_midi_output(void *output_data, int output_size) {
     if (midi_file[0] == '\0')
         return (-1);
@@ -1977,13 +1999,7 @@
                         char *real_file = FIND_LAST_DIRSEP(argv[optind-1]);
                         if (!real_file) real_file = argv[optind];
                         else real_file++;
-
-                        strncpy(midi_file, real_file, strlen(real_file));
-                        midi_file[strlen(real_file)-4] = '.';
-                        midi_file[strlen(real_file)-3] = 'm';
-                        midi_file[strlen(real_file)-2] = 'i';
-                        midi_file[strlen(real_file)-1] = 'd';
-
+                        mk_midifile_name(real_file);
                         printf("\rWriting %s: %u bytes.\r\n", midi_file, 
getmidisize);
                         write_midi_output(getmidibuffer,getmidisize);
                         free(getmidibuffer);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wildmidi-wildmidi-0.4.3/src/wildmidi.pc.in 
new/wildmidi-wildmidi-0.4.4/src/wildmidi.pc.in
--- old/wildmidi-wildmidi-0.4.3/src/wildmidi.pc.in      2018-11-24 
09:55:50.000000000 +0100
+++ new/wildmidi-wildmidi-0.4.4/src/wildmidi.pc.in      2021-03-21 
09:55:50.000000000 +0100
@@ -1,9 +1,9 @@
 # WildMIDI pkg-config file
 
-prefix=@WILDMIDILIB_PREFIX@
+prefix=@CMAKE_INSTALL_PREFIX@
 exec_prefix=${prefix}
-libdir=${exec_prefix}/@WILDMIDILIB_LIBDIR@
-includedir=${exec_prefix}/include
+libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@
+includedir=${exec_prefix}/@CMAKE_INSTALL_INCLUDEDIR@
 
 Name: WildMIDI
 Description: software synthesizer library
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wildmidi-wildmidi-0.4.3/src/wm_tty.c 
new/wildmidi-wildmidi-0.4.4/src/wm_tty.c
--- old/wildmidi-wildmidi-0.4.3/src/wm_tty.c    2018-11-24 09:55:50.000000000 
+0100
+++ new/wildmidi-wildmidi-0.4.4/src/wm_tty.c    2021-03-21 09:55:50.000000000 
+0100
@@ -40,6 +40,7 @@
 struct termios _tty;
 static tcflag_t _res_oflg = 0;
 static tcflag_t _res_lflg = 0;
+static int _res_block = 0;
 
 void wm_inittty(void) {
     if (!isatty(STDIN_FILENO))
@@ -49,6 +50,7 @@
     tcgetattr(STDIN_FILENO, &_tty);
     _res_oflg = _tty.c_oflag;
     _res_lflg = _tty.c_lflag;
+    _res_block=fcntl(STDIN_FILENO, F_GETFL, FNONBLOCK);
 
     /* set raw: */
     _tty.c_lflag &= ~(ICANON | ICRNL | ISIG);
@@ -66,5 +68,7 @@
     _tty.c_oflag = _res_oflg;
     _tty.c_lflag = _res_lflg;
     tcsetattr(STDIN_FILENO, TCSADRAIN, &_tty);
+
+    fcntl(STDIN_FILENO, F_SETFL, _res_block);
 }
 #endif /* !(_WIN32,__DJGPP__,__OS2__) */

Reply via email to