[libOpenMPT] Updated to version 0.6.4
Signed-off-by: Christopher Snowhill <kode54@gmail.com>swiftingly
parent
b675ced77b
commit
e84065ff5c
|
@ -218,7 +218,28 @@ LIBOPENMPT_SO_VERSION=$(LIBOPENMPT_LTVER_CURRENT)
|
||||||
|
|
||||||
# host setup
|
# host setup
|
||||||
|
|
||||||
ifeq ($(OS),Windows_NT)
|
ifneq ($(MSYSTEM)x,x)
|
||||||
|
|
||||||
|
HOST=unix
|
||||||
|
HOST_FLAVOUR=
|
||||||
|
|
||||||
|
TOOLCHAIN_SUFFIX=
|
||||||
|
|
||||||
|
CPPCHECK = cppcheck
|
||||||
|
|
||||||
|
MKDIR_P = mkdir -p
|
||||||
|
RM = rm -f
|
||||||
|
RMTREE = rm -rf
|
||||||
|
INSTALL = install
|
||||||
|
INSTALL_MAKE_DIR = install -d
|
||||||
|
INSTALL_DIR = cp -r -v
|
||||||
|
FIXPATH = $1
|
||||||
|
|
||||||
|
HOST_FLAVOUR=MSYS2
|
||||||
|
|
||||||
|
NUMTHREADS:=$(shell nproc)
|
||||||
|
|
||||||
|
else ifeq ($(OS),Windows_NT)
|
||||||
|
|
||||||
HOST=windows
|
HOST=windows
|
||||||
HOST_FLAVOUR=
|
HOST_FLAVOUR=
|
||||||
|
@ -1662,7 +1683,7 @@ endif
|
||||||
svn export ./libopenmpt/doc/xmp-openmpt.txt bin/dist-retro-win9x/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/XMPlay/xmp-openmpt.txt --native-eol CRLF
|
svn export ./libopenmpt/doc/xmp-openmpt.txt bin/dist-retro-win9x/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/XMPlay/xmp-openmpt.txt --native-eol CRLF
|
||||||
cp bin/xmp-openmpt.dll bin/dist-retro-win9x/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/XMPlay/xmp-openmpt.dll
|
cp bin/xmp-openmpt.dll bin/dist-retro-win9x/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/XMPlay/xmp-openmpt.dll
|
||||||
mkdir -p bin/dist-retro-win9x/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/Winamp
|
mkdir -p bin/dist-retro-win9x/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/Winamp
|
||||||
svn export ./libopenmpt/doc/xmp-openmpt.txt bin/dist-retro-win9x/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/Winamp/in_openmpt.txt --native-eol CRLF
|
svn export ./libopenmpt/doc/in_openmpt.txt bin/dist-retro-win9x/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/Winamp/in_openmpt.txt --native-eol CRLF
|
||||||
cp bin/in_openmpt.dll bin/dist-retro-win9x/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/Winamp/in_openmpt.dll
|
cp bin/in_openmpt.dll bin/dist-retro-win9x/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/Winamp/in_openmpt.dll
|
||||||
cd bin/dist-retro-win9x/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/ && ../../../build/tools/7zip/7z a -tzip -mx=9 ../libopenmpt-$(DIST_LIBOPENMPT_VERSION).bin.retro.win9x.zip *
|
cd bin/dist-retro-win9x/libopenmpt-$(DIST_LIBOPENMPT_VERSION)/ && ../../../build/tools/7zip/7z a -tzip -mx=9 ../libopenmpt-$(DIST_LIBOPENMPT_VERSION).bin.retro.win9x.zip *
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
|
|
||||||
MPT_SVNVERSION=17274
|
MPT_SVNVERSION=17506
|
||||||
MPT_SVNURL=https://source.openmpt.org/svn/openmpt/tags/libopenmpt-0.6.3
|
MPT_SVNURL=https://source.openmpt.org/svn/openmpt/tags/libopenmpt-0.6.4
|
||||||
MPT_SVNDATE=2022-04-24T13:18:24.140099Z
|
MPT_SVNDATE=2022-06-12T13:42:37.263635Z
|
||||||
|
|
|
@ -9,6 +9,26 @@ include build/make/config-clang.mk
|
||||||
DYNLINK=0
|
DYNLINK=0
|
||||||
SHARED_SONAME=0
|
SHARED_SONAME=0
|
||||||
|
|
||||||
|
else ifeq ($(HOST_FLAVOUR),MSYS2)
|
||||||
|
|
||||||
|
ifeq ($(MSYSTEM),MINGW64)
|
||||||
|
WINDOWS_ARCH=amd64
|
||||||
|
include build/make/config-mingw-w64.mk
|
||||||
|
else ifeq ($(MSYSTEM),MINGW32)
|
||||||
|
WINDOWS_ARCH=x86
|
||||||
|
include build/make/config-mingw-w64.mk
|
||||||
|
else ifeq ($(MSYSTEM),UCRT64)
|
||||||
|
WINDOWS_ARCH=amd64
|
||||||
|
include build/make/config-mingw-w64.mk
|
||||||
|
else ifeq ($(MSYSTEM),CLANG64)
|
||||||
|
WINDOWS_ARCH=amd64
|
||||||
|
MINGW_COMPILER=clang
|
||||||
|
include build/make/config-mingw-w64.mk
|
||||||
|
else
|
||||||
|
WINDOWS_ARCH=x86
|
||||||
|
include build/make/config-mingw-w64.mk
|
||||||
|
endif
|
||||||
|
|
||||||
else ifeq ($(HOST_FLAVOUR),LINUX)
|
else ifeq ($(HOST_FLAVOUR),LINUX)
|
||||||
|
|
||||||
include build/make/config-gcc.mk
|
include build/make/config-gcc.mk
|
||||||
|
|
|
@ -0,0 +1,118 @@
|
||||||
|
|
||||||
|
ifeq ($(WINDOWS_ARCH),)
|
||||||
|
MINGW_ARCH = i686
|
||||||
|
else ifeq ($(WINDOWS_ARCH),x86)
|
||||||
|
MINGW_ARCH = i686
|
||||||
|
else ifeq ($(WINDOWS_ARCH),amd64)
|
||||||
|
MINGW_ARCH = x86_64
|
||||||
|
#else ifeq ($(WINDOWS_ARCH),arm)
|
||||||
|
#MINGW_ARCH =
|
||||||
|
#else ifeq ($(WINDOWS_ARCH),arm64)
|
||||||
|
#MINGW_ARCH =
|
||||||
|
else
|
||||||
|
$(error unknown WINDOWS_ARCH)
|
||||||
|
endif
|
||||||
|
|
||||||
|
CC = $(MINGW_ARCH)-w64-mingw32-gcc$(MINGW_FLAVOUR)
|
||||||
|
CXX = $(MINGW_ARCH)-w64-mingw32-g++$(MINGW_FLAVOUR)
|
||||||
|
LD = $(MINGW_ARCH)-w64-mingw32-g++$(MINGW_FLAVOUR)
|
||||||
|
AR = $(MINGW_ARCH)-w64-mingw32-ar$(MINGW_FLAVOUR)
|
||||||
|
|
||||||
|
CXXFLAGS_STDCXX = -std=c++17 -fexceptions -frtti
|
||||||
|
CFLAGS_STDC = -std=c99
|
||||||
|
CXXFLAGS += $(CXXFLAGS_STDCXX)
|
||||||
|
CFLAGS += $(CFLAGS_STDC)
|
||||||
|
|
||||||
|
CPPFLAGS +=
|
||||||
|
CXXFLAGS += -municode -mconsole -mthreads
|
||||||
|
CFLAGS += -municode -mconsole -mthreads
|
||||||
|
LDFLAGS +=
|
||||||
|
LDLIBS += -lm -lole32 -lrpcrt4 -lwinmm
|
||||||
|
ARFLAGS := rcs
|
||||||
|
|
||||||
|
PC_LIBS_PRIVATE += -lole32 -lrpcrt4
|
||||||
|
|
||||||
|
ifeq ($(WINDOWS_FAMILY),)
|
||||||
|
# nothing
|
||||||
|
else ifeq ($(WINDOWS_FAMILY),desktop-app)
|
||||||
|
# nothing
|
||||||
|
else ifeq ($(WINDOWS_FAMILY),app)
|
||||||
|
CPPFLAGS += -DWINAPI_FAMILY=2
|
||||||
|
OPENMPT123=0
|
||||||
|
else ifeq ($(WINDOWS_FAMILY),phone-app)
|
||||||
|
CPPFLAGS += -DWINAPI_FAMILY=3
|
||||||
|
OPENMPT123=0
|
||||||
|
else ifeq ($(WINDOWS_FAMILY),pc-app)
|
||||||
|
CPPFLAGS += -DWINAPI_FAMILY=2
|
||||||
|
OPENMPT123=0
|
||||||
|
else
|
||||||
|
$(error unknown WINDOWS_FAMILY)
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(WINDOWS_VERSION),)
|
||||||
|
# nothing
|
||||||
|
else ifeq ($(WINDOWS_VERSION),win95)
|
||||||
|
CPPFLAGS += -D_WIN32_WINDOWS=0x0400
|
||||||
|
else ifeq ($(WINDOWS_VERSION),win98)
|
||||||
|
CPPFLAGS += -D_WIN32_WINDOWS=0x0410
|
||||||
|
else ifeq ($(WINDOWS_VERSION),winme)
|
||||||
|
CPPFLAGS += -D_WIN32_WINDOWS=0x0490
|
||||||
|
else ifeq ($(WINDOWS_VERSION),winnt4)
|
||||||
|
CPPFLAGS += -D_WIN32_WINNT=0x0400
|
||||||
|
else ifeq ($(WINDOWS_VERSION),win2000)
|
||||||
|
CPPFLAGS += -D_WIN32_WINNT=0x0500
|
||||||
|
else ifeq ($(WINDOWS_VERSION),winxp)
|
||||||
|
CPPFLAGS += -D_WIN32_WINNT=0x0501
|
||||||
|
else ifeq ($(WINDOWS_VERSION),winxp64)
|
||||||
|
CPPFLAGS += -D_WIN32_WINNT=0x0502
|
||||||
|
else ifeq ($(WINDOWS_VERSION),winvista)
|
||||||
|
CPPFLAGS += -DNTDDI_VERSION=0x06000000
|
||||||
|
else ifeq ($(WINDOWS_VERSION),win7)
|
||||||
|
CPPFLAGS += -DNTDDI_VERSION=0x06010000
|
||||||
|
else ifeq ($(WINDOWS_VERSION),win8)
|
||||||
|
CPPFLAGS += -DNTDDI_VERSION=0x06020000
|
||||||
|
else ifeq ($(WINDOWS_VERSION),win8.1)
|
||||||
|
CPPFLAGS += -DNTDDI_VERSION=0x06030000
|
||||||
|
else ifeq ($(WINDOWS_VERSION),win10)
|
||||||
|
CPPFLAGS += -DNTDDI_VERSION=0x0A000000
|
||||||
|
else
|
||||||
|
$(error unknown WINDOWS_VERSION)
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(MINGW_COMPILER),clang)
|
||||||
|
include build/make/warnings-clang.mk
|
||||||
|
else
|
||||||
|
include build/make/warnings-gcc.mk
|
||||||
|
endif
|
||||||
|
|
||||||
|
EXESUFFIX=.exe
|
||||||
|
SOSUFFIX=.dll
|
||||||
|
SOSUFFIXWINDOWS=1
|
||||||
|
|
||||||
|
DYNLINK=0
|
||||||
|
SHARED_LIB=1
|
||||||
|
STATIC_LIB=0
|
||||||
|
SHARED_SONAME=0
|
||||||
|
|
||||||
|
ifeq ($(HOST_FLAVOUR),MSYS2)
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
IS_CROSS=1
|
||||||
|
|
||||||
|
NO_ZLIB=1
|
||||||
|
NO_LTDL=1
|
||||||
|
NO_DL=1
|
||||||
|
NO_MPG123=1
|
||||||
|
NO_OGG=1
|
||||||
|
NO_VORBIS=1
|
||||||
|
NO_VORBISFILE=1
|
||||||
|
NO_PORTAUDIO=1
|
||||||
|
NO_PORTAUDIOCPP=1
|
||||||
|
NO_PULSEAUDIO=1
|
||||||
|
NO_SDL=1
|
||||||
|
NO_SDL2=1
|
||||||
|
NO_SNDFILE=1
|
||||||
|
NO_FLAC=1
|
||||||
|
|
||||||
|
endif
|
|
@ -1,10 +1,10 @@
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
#define OPENMPT_VERSION_SVNVERSION "17274"
|
#define OPENMPT_VERSION_SVNVERSION "17506"
|
||||||
#define OPENMPT_VERSION_REVISION 17274
|
#define OPENMPT_VERSION_REVISION 17506
|
||||||
#define OPENMPT_VERSION_DIRTY 0
|
#define OPENMPT_VERSION_DIRTY 0
|
||||||
#define OPENMPT_VERSION_MIXEDREVISIONS 0
|
#define OPENMPT_VERSION_MIXEDREVISIONS 0
|
||||||
#define OPENMPT_VERSION_URL "https://source.openmpt.org/svn/openmpt/tags/libopenmpt-0.6.3"
|
#define OPENMPT_VERSION_URL "https://source.openmpt.org/svn/openmpt/tags/libopenmpt-0.6.4"
|
||||||
#define OPENMPT_VERSION_DATE "2022-04-24T13:18:24.140099Z"
|
#define OPENMPT_VERSION_DATE "2022-06-12T13:42:37.263635Z"
|
||||||
#define OPENMPT_VERSION_IS_PACKAGE 1
|
#define OPENMPT_VERSION_IS_PACKAGE 1
|
||||||
|
|
||||||
|
|
|
@ -500,7 +500,9 @@
|
||||||
|
|
||||||
// windows.h excludes
|
// windows.h excludes
|
||||||
#define NOMEMMGR // GMEM_*, LMEM_*, GHND, LHND, associated routines
|
#define NOMEMMGR // GMEM_*, LMEM_*, GHND, LHND, associated routines
|
||||||
|
#ifndef NOMINMAX
|
||||||
#define NOMINMAX // Macros min(a,b) and max(a,b)
|
#define NOMINMAX // Macros min(a,b) and max(a,b)
|
||||||
|
#endif
|
||||||
#define NOSERVICE // All Service Controller routines, SERVICE_ equates, etc.
|
#define NOSERVICE // All Service Controller routines, SERVICE_ equates, etc.
|
||||||
#define NOCOMM // COMM driver routines
|
#define NOCOMM // COMM driver routines
|
||||||
#define NOKANJI // Kanji support stuff.
|
#define NOKANJI // Kanji support stuff.
|
||||||
|
|
|
@ -17,7 +17,7 @@ OPENMPT_NAMESPACE_BEGIN
|
||||||
// Version definitions. The only thing that needs to be changed when changing version number.
|
// Version definitions. The only thing that needs to be changed when changing version number.
|
||||||
#define VER_MAJORMAJOR 1
|
#define VER_MAJORMAJOR 1
|
||||||
#define VER_MAJOR 30
|
#define VER_MAJOR 30
|
||||||
#define VER_MINOR 04
|
#define VER_MINOR 05
|
||||||
#define VER_MINORMINOR 00
|
#define VER_MINORMINOR 00
|
||||||
|
|
||||||
OPENMPT_NAMESPACE_END
|
OPENMPT_NAMESPACE_END
|
||||||
|
|
|
@ -5,6 +5,21 @@ Changelog {#changelog}
|
||||||
For fully detailed change log, please see the source repository directly. This
|
For fully detailed change log, please see the source repository directly. This
|
||||||
is just a high-level summary.
|
is just a high-level summary.
|
||||||
|
|
||||||
|
### libopenmpt 0.6.4 (2022-06-12)
|
||||||
|
|
||||||
|
* [**Bug**] openmpt123: Linking failed when using Autotools build system
|
||||||
|
targeting MinGW.
|
||||||
|
* [**Bug**] tests: Linking failed when using Autotools build system targeting
|
||||||
|
MinGW.
|
||||||
|
* [**Bug**] examples: Linking failed when using Autotools build system
|
||||||
|
targeting MinGW.
|
||||||
|
|
||||||
|
* [**Change**] Support for mingw-std-threads when building for MinGW targets
|
||||||
|
is now deprecated because this is not supported for GCC 11 or later (see
|
||||||
|
<https://github.com/meganz/mingw-std-threads/issues/79>).
|
||||||
|
|
||||||
|
* Ping-pong sample loops sometimes stopped playing at the end of the loop.
|
||||||
|
|
||||||
### libopenmpt 0.6.3 (2022-04-24)
|
### libopenmpt 0.6.3 (2022-04-24)
|
||||||
|
|
||||||
* Pitch / Pan Separation and Random Variation instrument properties were not
|
* Pitch / Pan Separation and Random Variation instrument properties were not
|
||||||
|
|
|
@ -23,8 +23,7 @@ Dependencies
|
||||||
* **GCC 8.1** or higher
|
* **GCC 8.1** or higher
|
||||||
* **Clang 7** or higher
|
* **Clang 7** or higher
|
||||||
* **MinGW-W64 8.1** or higher (it is recommended to preferably use
|
* **MinGW-W64 8.1** or higher (it is recommended to preferably use
|
||||||
posix threading model as opposed to win32 threading model, or at least
|
posix threading model as opposed to win32 threading model)
|
||||||
have mingw-std-threads available otherwise)
|
|
||||||
* **emscripten 1.39.1** or higher
|
* **emscripten 1.39.1** or higher
|
||||||
* **DJGPP GCC 8.1** or higher
|
* **DJGPP GCC 8.1** or higher
|
||||||
* any other **C++17 compliant** compiler
|
* any other **C++17 compliant** compiler
|
||||||
|
|
|
@ -34,7 +34,9 @@
|
||||||
#if defined(MPT_WITH_MFC)
|
#if defined(MPT_WITH_MFC)
|
||||||
#define _AFX_NO_MFC_CONTROLS_IN_DIALOGS // Avoid binary bloat from linking unused MFC controls
|
#define _AFX_NO_MFC_CONTROLS_IN_DIALOGS // Avoid binary bloat from linking unused MFC controls
|
||||||
#endif // MPT_WITH_MFC
|
#endif // MPT_WITH_MFC
|
||||||
|
#ifndef NOMINMAX
|
||||||
#define NOMINMAX
|
#define NOMINMAX
|
||||||
|
#endif
|
||||||
#if defined(MPT_WITH_MFC)
|
#if defined(MPT_WITH_MFC)
|
||||||
#include <afxwin.h>
|
#include <afxwin.h>
|
||||||
#include <afxcmn.h>
|
#include <afxcmn.h>
|
||||||
|
|
|
@ -87,8 +87,12 @@ MPT_WARNING("Warning: libopenmpt for WinRT is built with reduced functionality.
|
||||||
MPT_WARNING("Warning: libopenmpt built in non thread-safe mode because mutexes are not supported by the C++ standard library available.")
|
MPT_WARNING("Warning: libopenmpt built in non thread-safe mode because mutexes are not supported by the C++ standard library available.")
|
||||||
#endif // MPT_MUTEX_NONE
|
#endif // MPT_MUTEX_NONE
|
||||||
|
|
||||||
#if (defined(__MINGW32__) || defined(__MINGW64__)) && !defined(_GLIBCXX_HAS_GTHREADS) && !defined(MPT_WITH_MINGWSTDTHREADS)
|
#if (defined(__MINGW32__) || defined(__MINGW64__)) && !defined(_GLIBCXX_HAS_GTHREADS)
|
||||||
MPT_WARNING("Warning: Building libopenmpt with MinGW-w64 without std::thread support is not recommended and is deprecated. Please use MinGW-w64 with posix threading model (as opposed to win32 threading model), or build with mingw-std-threads.")
|
#if defined(MPT_WITH_MINGWSTDTHREADS)
|
||||||
|
MPT_WARNING("Warning: Building with mingw-std-threads is deprecated because this is not supported with GCC 11 or later.")
|
||||||
|
#else // !MINGWSTDTHREADS
|
||||||
|
MPT_WARNING("Warning: Platform (Windows) supports multi-threading, however the toolchain (MinGW/GCC) does not. The resulting libopenmpt may not be thread-safe. This is a MinGW/GCC issue. You can avoid this warning by using a MinGW toolchain built with posix threading model as opposed to win32 threading model.")
|
||||||
|
#endif // MINGWSTDTHREADS
|
||||||
#endif // MINGW
|
#endif // MINGW
|
||||||
|
|
||||||
#if MPT_CLANG_AT_LEAST(5,0,0) && MPT_CLANG_BEFORE(11,0,0) && defined(__powerpc__) && !defined(__powerpc64__)
|
#if MPT_CLANG_AT_LEAST(5,0,0) && MPT_CLANG_BEFORE(11,0,0) && defined(__powerpc__) && !defined(__powerpc64__)
|
||||||
|
@ -99,8 +103,7 @@ MPT_WARNING("Warning: libopenmpt is known to trigger bad code generation with Cl
|
||||||
|
|
||||||
#if defined(MPT_ASSERT_HANDLER_NEEDED) && !defined(ENABLE_TESTS)
|
#if defined(MPT_ASSERT_HANDLER_NEEDED) && !defined(ENABLE_TESTS)
|
||||||
|
|
||||||
MPT_NOINLINE void AssertHandler(const mpt::source_location &loc, const char *expr, const char *msg)
|
MPT_NOINLINE void AssertHandler(const mpt::source_location &loc, const char *expr, const char *msg) {
|
||||||
{
|
|
||||||
if(msg) {
|
if(msg) {
|
||||||
mpt::log::GlobalLogger().SendLogMessage(loc, LogError, "ASSERT",
|
mpt::log::GlobalLogger().SendLogMessage(loc, LogError, "ASSERT",
|
||||||
MPT_USTRING("ASSERTION FAILED: ") + mpt::ToUnicode(mpt::CharsetSource, msg) + MPT_USTRING(" (") + mpt::ToUnicode(mpt::CharsetSource, expr) + MPT_USTRING(")")
|
MPT_USTRING("ASSERTION FAILED: ") + mpt::ToUnicode(mpt::CharsetSource, msg) + MPT_USTRING(" (") + mpt::ToUnicode(mpt::CharsetSource, expr) + MPT_USTRING(")")
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
/*! \brief libopenmpt minor version number */
|
/*! \brief libopenmpt minor version number */
|
||||||
#define OPENMPT_API_VERSION_MINOR 6
|
#define OPENMPT_API_VERSION_MINOR 6
|
||||||
/*! \brief libopenmpt patch version number */
|
/*! \brief libopenmpt patch version number */
|
||||||
#define OPENMPT_API_VERSION_PATCH 3
|
#define OPENMPT_API_VERSION_PATCH 4
|
||||||
/*! \brief libopenmpt pre-release tag */
|
/*! \brief libopenmpt pre-release tag */
|
||||||
#define OPENMPT_API_VERSION_PREREL ""
|
#define OPENMPT_API_VERSION_PREREL ""
|
||||||
/*! \brief libopenmpt pre-release flag */
|
/*! \brief libopenmpt pre-release flag */
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
LIBOPENMPT_VERSION_MAJOR=0
|
LIBOPENMPT_VERSION_MAJOR=0
|
||||||
LIBOPENMPT_VERSION_MINOR=6
|
LIBOPENMPT_VERSION_MINOR=6
|
||||||
LIBOPENMPT_VERSION_PATCH=3
|
LIBOPENMPT_VERSION_PATCH=4
|
||||||
LIBOPENMPT_VERSION_PREREL=
|
LIBOPENMPT_VERSION_PREREL=
|
||||||
|
|
||||||
LIBOPENMPT_LTVER_CURRENT=3
|
LIBOPENMPT_LTVER_CURRENT=3
|
||||||
LIBOPENMPT_LTVER_REVISION=3
|
LIBOPENMPT_LTVER_REVISION=4
|
||||||
LIBOPENMPT_LTVER_AGE=3
|
LIBOPENMPT_LTVER_AGE=3
|
||||||
|
|
|
@ -1057,6 +1057,7 @@ void render_loop( commandlineflags & flags, Tmod & mod, double & duration, texto
|
||||||
|
|
||||||
if ( multiline ) {
|
if ( multiline ) {
|
||||||
lines += 1;
|
lines += 1;
|
||||||
|
// cppcheck-suppress identicalInnerCondition
|
||||||
if ( flags.show_ui ) {
|
if ( flags.show_ui ) {
|
||||||
lines += 1;
|
lines += 1;
|
||||||
}
|
}
|
||||||
|
@ -1174,7 +1175,7 @@ void render_loop( commandlineflags & flags, Tmod & mod, double & duration, texto
|
||||||
cpu /= ( static_cast<double>( count ) ) / static_cast<double>( flags.samplerate );
|
cpu /= ( static_cast<double>( count ) ) / static_cast<double>( flags.samplerate );
|
||||||
double mix = ( static_cast<double>( count ) ) / static_cast<double>( flags.samplerate );
|
double mix = ( static_cast<double>( count ) ) / static_cast<double>( flags.samplerate );
|
||||||
cpu_smooth = ( 1.0 - mix ) * cpu_smooth + mix * cpu;
|
cpu_smooth = ( 1.0 - mix ) * cpu_smooth + mix * cpu;
|
||||||
sprintf( cpu_str, "%.2f%%", cpu_smooth * 100.0 );
|
std::snprintf( cpu_str, 64, "%.2f%%", cpu_smooth * 100.0 );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -30,7 +30,7 @@ namespace openmpt123 {
|
||||||
struct allegro42_exception : public exception {
|
struct allegro42_exception : public exception {
|
||||||
static std::string error_to_string() {
|
static std::string error_to_string() {
|
||||||
try {
|
try {
|
||||||
return allegro_error ? std::string( allegro_error ) : std::string();
|
return std::string( allegro_error );
|
||||||
} catch ( const std::bad_alloc & ) {
|
} catch ( const std::bad_alloc & ) {
|
||||||
return std::string();
|
return std::string();
|
||||||
}
|
}
|
||||||
|
|
|
@ -190,12 +190,21 @@ struct MixLoopState
|
||||||
// Part 2: Compute how many samples we can render until we reach the end of sample / loop boundary / etc.
|
// Part 2: Compute how many samples we can render until we reach the end of sample / loop boundary / etc.
|
||||||
|
|
||||||
SamplePosition nPos = chn.position;
|
SamplePosition nPos = chn.position;
|
||||||
// too big increment, and/or too small loop length
|
const SmpLength nPosInt = nPos.GetUInt();
|
||||||
if (nPos.GetInt() < nLoopStart)
|
if(nPos.GetInt() < nLoopStart)
|
||||||
{
|
{
|
||||||
if (nPos.IsNegative() || nInc.IsNegative()) return 0;
|
// too big increment, and/or too small loop length
|
||||||
|
if(nPos.IsNegative() || nInc.IsNegative())
|
||||||
|
return 0;
|
||||||
|
} else
|
||||||
|
{
|
||||||
|
// Not testing for equality since we might be going backwards from the very end of the sample
|
||||||
|
if(nPosInt > chn.nLength)
|
||||||
|
return 0;
|
||||||
|
// If going forwards and we're preceisely at the end, there's no point in going further
|
||||||
|
if(nPosInt == chn.nLength && nInc.IsPositive())
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
if (nPos.IsNegative() || nPos.GetUInt() >= chn.nLength) return 0;
|
|
||||||
uint32 nSmpCount = nSamples;
|
uint32 nSmpCount = nSamples;
|
||||||
SamplePosition nInv = nInc;
|
SamplePosition nInv = nInc;
|
||||||
if (nInc.IsNegative())
|
if (nInc.IsNegative())
|
||||||
|
@ -206,7 +215,6 @@ struct MixLoopState
|
||||||
SamplePosition incSamples = nInc * (nSamples - 1);
|
SamplePosition incSamples = nInc * (nSamples - 1);
|
||||||
int32 nPosDest = (nPos + incSamples).GetInt();
|
int32 nPosDest = (nPos + incSamples).GetInt();
|
||||||
|
|
||||||
const SmpLength nPosInt = nPos.GetUInt();
|
|
||||||
const bool isAtLoopStart = (nPosInt >= chn.nLoopStart && nPosInt < chn.nLoopStart + InterpolationLookaheadBufferSize);
|
const bool isAtLoopStart = (nPosInt >= chn.nLoopStart && nPosInt < chn.nLoopStart + InterpolationLookaheadBufferSize);
|
||||||
if(!isAtLoopStart)
|
if(!isAtLoopStart)
|
||||||
{
|
{
|
||||||
|
@ -217,7 +225,7 @@ struct MixLoopState
|
||||||
bool checkDest = true;
|
bool checkDest = true;
|
||||||
if(lookaheadPointer != nullptr)
|
if(lookaheadPointer != nullptr)
|
||||||
{
|
{
|
||||||
if(nPos.GetUInt() >= lookaheadStart)
|
if(nPosInt >= lookaheadStart)
|
||||||
{
|
{
|
||||||
#if 0
|
#if 0
|
||||||
const uint32 oldCount = nSmpCount;
|
const uint32 oldCount = nSmpCount;
|
||||||
|
|
|
@ -245,7 +245,7 @@ bool CSoundFile::ReadDSym(FileReader &file, ModLoadingFlags loadFlags)
|
||||||
ChnSettings[chn].nPan = (((chn & 3) == 1) || ((chn & 3) == 2)) ? 64 : 192;
|
ChnSettings[chn].nPan = (((chn & 3) == 1) || ((chn & 3) == 2)) ? 64 : 192;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8 sampleNameLength[64];
|
uint8 sampleNameLength[64] = {};
|
||||||
for(SAMPLEINDEX smp = 1; smp <= m_nSamples; smp++)
|
for(SAMPLEINDEX smp = 1; smp <= m_nSamples; smp++)
|
||||||
{
|
{
|
||||||
Samples[smp].Initialize(MOD_TYPE_MOD);
|
Samples[smp].Initialize(MOD_TYPE_MOD);
|
||||||
|
|
|
@ -371,12 +371,10 @@ static bool ImportMDLCommands(ModCommand &m, uint8 vol, uint8 e1, uint8 e2, uint
|
||||||
// Almost as easy
|
// Almost as easy
|
||||||
e2 = e1;
|
e2 = e1;
|
||||||
p2 = p1;
|
p2 = p1;
|
||||||
e1 = CMD_NONE;
|
|
||||||
} else if(e1 == e2 && e1 != CMD_S3MCMDEX)
|
} else if(e1 == e2 && e1 != CMD_S3MCMDEX)
|
||||||
{
|
{
|
||||||
// Digitrakker processes the effects left-to-right, so if both effects are the same, the
|
// Digitrakker processes the effects left-to-right, so if both effects are the same, the
|
||||||
// second essentially overrides the first.
|
// second essentially overrides the first.
|
||||||
e1 = CMD_NONE;
|
|
||||||
} else if(!vol)
|
} else if(!vol)
|
||||||
{
|
{
|
||||||
lostCommand |= (ModCommand::TwoRegularCommandsToMPT(e1, p1, e2, p2).first != CMD_NONE);
|
lostCommand |= (ModCommand::TwoRegularCommandsToMPT(e1, p1, e2, p2).first != CMD_NONE);
|
||||||
|
@ -389,6 +387,7 @@ static bool ImportMDLCommands(ModCommand &m, uint8 vol, uint8 e1, uint8 e2, uint
|
||||||
std::swap(e1, e2);
|
std::swap(e1, e2);
|
||||||
std::swap(p1, p2);
|
std::swap(p1, p2);
|
||||||
}
|
}
|
||||||
|
lostCommand = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
m.command = e2;
|
m.command = e2;
|
||||||
|
|
|
@ -305,6 +305,25 @@ void ModInstrument::Sanitize(MODTYPE modType)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
std::map<SAMPLEINDEX, int8> ModInstrument::CanConvertToDefaultNoteMap() const
|
||||||
|
{
|
||||||
|
std::map<SAMPLEINDEX, int8> transposeMap;
|
||||||
|
for(size_t i = 0; i < std::size(NoteMap); i++)
|
||||||
|
{
|
||||||
|
if(Keyboard[i] == 0)
|
||||||
|
continue;
|
||||||
|
if(!NoteMap[i] || NoteMap[i] == (i + 1))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
const int8 relativeNote = static_cast<int8>(NoteMap[i] - (i + NOTE_MIN));
|
||||||
|
if(transposeMap.count(Keyboard[i]) && transposeMap[Keyboard[i]] != relativeNote)
|
||||||
|
return {};
|
||||||
|
transposeMap[Keyboard[i]] = relativeNote;
|
||||||
|
}
|
||||||
|
return transposeMap;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void ModInstrument::Transpose(int8 amount)
|
void ModInstrument::Transpose(int8 amount)
|
||||||
{
|
{
|
||||||
for(auto ¬e : NoteMap)
|
for(auto ¬e : NoteMap)
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
#include "Snd_defs.h"
|
#include "Snd_defs.h"
|
||||||
#include "openmpt/base/FlagSet.hpp"
|
#include "openmpt/base/FlagSet.hpp"
|
||||||
#include "../common/misc_util.h"
|
#include "../common/misc_util.h"
|
||||||
|
#include <map>
|
||||||
#include <set>
|
#include <set>
|
||||||
|
|
||||||
OPENMPT_NAMESPACE_BEGIN
|
OPENMPT_NAMESPACE_BEGIN
|
||||||
|
@ -26,7 +27,7 @@ struct ModChannel;
|
||||||
// Instrument Nodes
|
// Instrument Nodes
|
||||||
struct EnvelopeNode
|
struct EnvelopeNode
|
||||||
{
|
{
|
||||||
using tick_t = uint16 ;
|
using tick_t = uint16;
|
||||||
using value_t = uint8;
|
using value_t = uint8;
|
||||||
|
|
||||||
tick_t tick = 0; // Envelope node position (x axis)
|
tick_t tick = 0; // Envelope node position (x axis)
|
||||||
|
@ -133,12 +134,13 @@ struct ModInstrument
|
||||||
// Reset note mapping (i.e. every note is mapped to itself)
|
// Reset note mapping (i.e. every note is mapped to itself)
|
||||||
void ResetNoteMap()
|
void ResetNoteMap()
|
||||||
{
|
{
|
||||||
for(size_t n = 0; n < std::size(NoteMap); n++)
|
std::iota(NoteMap.begin(), NoteMap.end(), static_cast<uint8>(NOTE_MIN));
|
||||||
{
|
|
||||||
NoteMap[n] = static_cast<uint8>(n + 1);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If the instrument has a non-default note mapping and can be simplified to use the default note mapping by transposing samples,
|
||||||
|
// the list of samples that would need to be transposed and the corresponding transpose values are returned - otherwise an empty map.
|
||||||
|
std::map<SAMPLEINDEX, int8> CanConvertToDefaultNoteMap() const;
|
||||||
|
|
||||||
// Transpose entire note mapping by given number of semitones
|
// Transpose entire note mapping by given number of semitones
|
||||||
void Transpose(int8 amount);
|
void Transpose(int8 amount);
|
||||||
|
|
||||||
|
|
|
@ -2045,6 +2045,7 @@ void TempoSwing::Normalize()
|
||||||
sum += i;
|
sum += i;
|
||||||
}
|
}
|
||||||
sum /= size();
|
sum /= size();
|
||||||
|
MPT_ASSERT(sum > 0); // clang-analyzer false-positive
|
||||||
int64 remain = Unity * size();
|
int64 remain = Unity * size();
|
||||||
for(auto &i : *this)
|
for(auto &i : *this)
|
||||||
{
|
{
|
||||||
|
|
|
@ -558,16 +558,26 @@ void ModCommand::Convert(MODTYPE fromType, MODTYPE toType, const CSoundFile &snd
|
||||||
switch(command)
|
switch(command)
|
||||||
{
|
{
|
||||||
case CMD_TONEPORTAVOL: // lacks memory -> 500 is the same as 300
|
case CMD_TONEPORTAVOL: // lacks memory -> 500 is the same as 300
|
||||||
if(param == 0x00) command = CMD_TONEPORTAMENTO;
|
if(param == 0x00)
|
||||||
|
command = CMD_TONEPORTAMENTO;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CMD_VIBRATOVOL: // lacks memory -> 600 is the same as 400
|
case CMD_VIBRATOVOL: // lacks memory -> 600 is the same as 400
|
||||||
if(param == 0x00) command = CMD_VIBRATO;
|
if(param == 0x00)
|
||||||
|
command = CMD_VIBRATO;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case CMD_PORTAMENTOUP: // lacks memory -> remove
|
||||||
|
case CMD_PORTAMENTODOWN:
|
||||||
|
case CMD_VOLUMESLIDE:
|
||||||
|
if(param == 0x00)
|
||||||
|
command = CMD_NONE;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CMD_MODCMDEX: // This would turn into "Set Active Macro", so let's better remove it
|
case CMD_MODCMDEX: // This would turn into "Set Active Macro", so let's better remove it
|
||||||
case CMD_S3MCMDEX:
|
case CMD_S3MCMDEX:
|
||||||
if((param & 0xF0) == 0xF0) command = CMD_NONE;
|
if((param & 0xF0) == 0xF0)
|
||||||
|
command = CMD_NONE;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
} // End if(oldTypeIsMOD && newTypeIsXM)
|
} // End if(oldTypeIsMOD && newTypeIsXM)
|
||||||
|
|
|
@ -180,7 +180,7 @@ CString Gargle::GetParamDisplay(PlugParamIndex param)
|
||||||
|
|
||||||
uint32 Gargle::RateInHertz() const
|
uint32 Gargle::RateInHertz() const
|
||||||
{
|
{
|
||||||
return mpt::saturate_round<uint32>(m_param[kGargleRate] * 999.0f) + 1;
|
return static_cast<uint32>(mpt::round(std::clamp(m_param[kGargleRate], 0.0f, 1.0f) * 999.0f)) + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -5,10 +5,9 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#include "mpt/base/macros.hpp"
|
||||||
#include "mpt/base/namespace.hpp"
|
#include "mpt/base/namespace.hpp"
|
||||||
|
|
||||||
#include <type_traits>
|
|
||||||
|
|
||||||
#include <cassert>
|
#include <cassert>
|
||||||
#include <cstddef>
|
#include <cstddef>
|
||||||
|
|
||||||
|
|
|
@ -8,6 +8,8 @@
|
||||||
#include "mpt/base/detect.hpp"
|
#include "mpt/base/detect.hpp"
|
||||||
#include "mpt/base/namespace.hpp"
|
#include "mpt/base/namespace.hpp"
|
||||||
|
|
||||||
|
#include <utility>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
namespace mpt {
|
namespace mpt {
|
||||||
|
|
|
@ -50,7 +50,9 @@
|
||||||
#elif defined(_MSC_VER)
|
#elif defined(_MSC_VER)
|
||||||
|
|
||||||
#define MPT_COMPILER_MSVC 1
|
#define MPT_COMPILER_MSVC 1
|
||||||
#if (_MSC_VER >= 1931)
|
#if (_MSC_VER >= 1932)
|
||||||
|
#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2022, 2)
|
||||||
|
#elif (_MSC_VER >= 1931)
|
||||||
#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2022, 1)
|
#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2022, 1)
|
||||||
#elif (_MSC_VER >= 1930)
|
#elif (_MSC_VER >= 1930)
|
||||||
#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2022, 0)
|
#define MPT_COMPILER_MSVC_VERSION MPT_COMPILER_MAKE_VERSION2(2022, 0)
|
||||||
|
|
Loading…
Reference in New Issue