[libOpenMPT] Updated to version 0.6.3
Signed-off-by: Christopher Snowhill <kode54@gmail.com>swiftingly
parent
af0a2436fc
commit
dd307d27a7
|
@ -39,7 +39,7 @@ How to compile
|
|||
|
||||
To compile the project, open `build/vsVERSIONwin7/OpenMPT.sln` (VERSION
|
||||
being 2017, 2019, or 2022) and hit the compile button. Other target
|
||||
systems can be found in the `vs2017*`, `vs2019*`, and `vs2022` sibling
|
||||
systems can be found in the `vs2017*`, `vs2019*`, and `vs2022*` sibling
|
||||
folders.
|
||||
|
||||
Note that you have to build the `PluginBridge` and `PluginBridgeLegacy`
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
|
||||
MPT_SVNVERSION=17108
|
||||
MPT_SVNURL=https://source.openmpt.org/svn/openmpt/tags/libopenmpt-0.6.2
|
||||
MPT_SVNDATE=2022-03-13T14:50:28.374505Z
|
||||
MPT_SVNVERSION=17274
|
||||
MPT_SVNURL=https://source.openmpt.org/svn/openmpt/tags/libopenmpt-0.6.3
|
||||
MPT_SVNDATE=2022-04-24T13:18:24.140099Z
|
||||
|
|
|
@ -3,6 +3,7 @@ ifeq ($(HOST),unix)
|
|||
|
||||
ifeq ($(HOST_FLAVOUR),MACOSX)
|
||||
|
||||
NO_PULSEAUDIO?=1
|
||||
include build/make/config-clang.mk
|
||||
# Mac OS X overrides
|
||||
DYNLINK=0
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
|
||||
#pragma once
|
||||
#define OPENMPT_VERSION_SVNVERSION "17108"
|
||||
#define OPENMPT_VERSION_REVISION 17108
|
||||
#define OPENMPT_VERSION_SVNVERSION "17274"
|
||||
#define OPENMPT_VERSION_REVISION 17274
|
||||
#define OPENMPT_VERSION_DIRTY 0
|
||||
#define OPENMPT_VERSION_MIXEDREVISIONS 0
|
||||
#define OPENMPT_VERSION_URL "https://source.openmpt.org/svn/openmpt/tags/libopenmpt-0.6.2"
|
||||
#define OPENMPT_VERSION_DATE "2022-03-13T14:50:28.374505Z"
|
||||
#define OPENMPT_VERSION_URL "https://source.openmpt.org/svn/openmpt/tags/libopenmpt-0.6.3"
|
||||
#define OPENMPT_VERSION_DATE "2022-04-24T13:18:24.140099Z"
|
||||
#define OPENMPT_VERSION_IS_PACKAGE 1
|
||||
|
||||
|
|
|
@ -20,6 +20,10 @@
|
|||
#endif // MODPLUG_TRACKER && MPT_OS_WINDOWS
|
||||
#endif // MPT_ENABLE_FILEIO
|
||||
|
||||
#if defined(MPT_ENABLE_FILEIO)
|
||||
#include <stdexcept>
|
||||
#endif // MPT_ENABLE_FILEIO
|
||||
|
||||
#ifdef MODPLUG_TRACKER
|
||||
#if MPT_OS_WINDOWS
|
||||
#include <windows.h>
|
||||
|
|
|
@ -17,7 +17,7 @@ OPENMPT_NAMESPACE_BEGIN
|
|||
// Version definitions. The only thing that needs to be changed when changing version number.
|
||||
#define VER_MAJORMAJOR 1
|
||||
#define VER_MAJOR 30
|
||||
#define VER_MINOR 03
|
||||
#define VER_MINOR 04
|
||||
#define VER_MINORMINOR 00
|
||||
|
||||
OPENMPT_NAMESPACE_END
|
||||
|
|
|
@ -193,6 +193,7 @@ cleanup:
|
|||
if ( pa_initialized ) {
|
||||
Pa_Terminate();
|
||||
pa_initialized = 0;
|
||||
(void)pa_initialized;
|
||||
}
|
||||
|
||||
if ( mod ) {
|
||||
|
|
|
@ -121,7 +121,7 @@ static blob_t * load_file( const char * filename ) {
|
|||
if ( tell_result < 0 ) {
|
||||
goto fail;
|
||||
}
|
||||
if ( (unsigned long)tell_result > SIZE_MAX ) {
|
||||
if ( (unsigned long)(size_t)(unsigned long)tell_result != (unsigned long)tell_result ) {
|
||||
goto fail;
|
||||
}
|
||||
blob->size = (size_t)tell_result;
|
||||
|
@ -283,6 +283,7 @@ cleanup:
|
|||
if ( pa_initialized ) {
|
||||
Pa_Terminate();
|
||||
pa_initialized = 0;
|
||||
(void)pa_initialized;
|
||||
}
|
||||
|
||||
if ( mod ) {
|
||||
|
|
|
@ -80,7 +80,6 @@ static int probe_file( const char * filename ) {
|
|||
#if ( LIBOPENMPT_EXAMPLE_PROBE_RESULT == LIBOPENMPT_EXAMPLE_PROBE_RESULT_BINARY )
|
||||
probe_file_header_result = openmpt_probe_file_header_from_stream( OPENMPT_PROBE_FILE_HEADER_FLAGS_DEFAULT, openmpt_stream_get_file_callbacks(), file, &libopenmpt_example_logfunc, NULL, &openmpt_error_func_default, NULL, &mod_err, NULL );
|
||||
probe_file_header_result_str = NULL;
|
||||
result_binary = 0;
|
||||
switch ( probe_file_header_result ) {
|
||||
case OPENMPT_PROBE_FILE_HEADER_RESULT_SUCCESS:
|
||||
probe_file_header_result_str = "Success ";
|
||||
|
@ -96,11 +95,13 @@ static int probe_file( const char * filename ) {
|
|||
break;
|
||||
case OPENMPT_PROBE_FILE_HEADER_RESULT_ERROR:
|
||||
result_binary = 0;
|
||||
(void)result_binary;
|
||||
fprintf( stderr, "Error: %s\n", "openmpt_probe_file_header() failed." );
|
||||
goto fail;
|
||||
break;
|
||||
default:
|
||||
result_binary = 0;
|
||||
(void)result_binary;
|
||||
fprintf( stderr, "Error: %s\n", "openmpt_probe_file_header() failed." );
|
||||
goto fail;
|
||||
break;
|
||||
|
|
|
@ -36,6 +36,7 @@
|
|||
#if ( defined( _WIN32 ) || defined( WIN32 ) ) && ( defined( _UNICODE ) || defined( UNICODE ) )
|
||||
#if defined( __GNUC__ )
|
||||
// mingw-w64 g++ does only default to special C linkage for "main", but not for "wmain" (see <https://sourceforge.net/p/mingw-w64/wiki2/Unicode%20apps/>).
|
||||
extern "C" int wmain( int /*argc*/, wchar_t * /*argv*/[] );
|
||||
extern "C" int wmain( int argc, wchar_t * argv[] ) {
|
||||
#else
|
||||
int wmain( int argc, wchar_t * argv[] ) {
|
||||
|
|
|
@ -5,6 +5,16 @@ Changelog {#changelog}
|
|||
For fully detailed change log, please see the source repository directly. This
|
||||
is just a high-level summary.
|
||||
|
||||
### libopenmpt 0.6.3 (2022-04-24)
|
||||
|
||||
* Pitch / Pan Separation and Random Variation instrument properties were not
|
||||
resetting properly when seeking, potentially causing instruments to be
|
||||
played e.g. at a vastly different pan position compared to playing the
|
||||
module continuously.
|
||||
* MED: Stereo samples were not imported correctly.
|
||||
|
||||
* zlib: Update to v1.2.12 (2022-03-27).
|
||||
|
||||
### libopenmpt 0.6.2 (2022-03-13)
|
||||
|
||||
* [**Sec**] Possible out-of-bounds write in malformed IT / XM / MPTM files
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
/*! \brief libopenmpt minor version number */
|
||||
#define OPENMPT_API_VERSION_MINOR 6
|
||||
/*! \brief libopenmpt patch version number */
|
||||
#define OPENMPT_API_VERSION_PATCH 2
|
||||
#define OPENMPT_API_VERSION_PATCH 3
|
||||
/*! \brief libopenmpt pre-release tag */
|
||||
#define OPENMPT_API_VERSION_PREREL ""
|
||||
/*! \brief libopenmpt pre-release flag */
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
LIBOPENMPT_VERSION_MAJOR=0
|
||||
LIBOPENMPT_VERSION_MINOR=6
|
||||
LIBOPENMPT_VERSION_PATCH=2
|
||||
LIBOPENMPT_VERSION_PATCH=3
|
||||
LIBOPENMPT_VERSION_PREREL=
|
||||
|
||||
LIBOPENMPT_LTVER_CURRENT=3
|
||||
LIBOPENMPT_LTVER_REVISION=2
|
||||
LIBOPENMPT_LTVER_REVISION=3
|
||||
LIBOPENMPT_LTVER_AGE=3
|
||||
|
|
|
@ -764,7 +764,10 @@ bool CSoundFile::ReadMED(FileReader &file, ModLoadingFlags loadFlags)
|
|||
if(instrOffsets[ins - 1] != 0 && file.Seek(instrOffsets[ins - 1]))
|
||||
{
|
||||
file.ReadStruct(instrHeader);
|
||||
sampleChunk = file.ReadChunk(instrHeader.length);
|
||||
uint32 chunkLength = instrHeader.length;
|
||||
if(instrHeader.type > 0 && (instrHeader.type & MMDInstrHeader::STEREO))
|
||||
chunkLength *= 2u;
|
||||
sampleChunk = file.ReadChunk(chunkLength);
|
||||
}
|
||||
const bool isSynth = instrHeader.type < 0;
|
||||
const size_t maskedType = static_cast<size_t>(instrHeader.type & MMDInstrHeader::TYPEMASK);
|
||||
|
@ -916,7 +919,7 @@ bool CSoundFile::ReadMED(FileReader &file, ModLoadingFlags loadFlags)
|
|||
sampleIO |= SampleIO::_16bit;
|
||||
length /= 2;
|
||||
}
|
||||
if (instrHeader.type & MMDInstrHeader::STEREO)
|
||||
if(instrHeader.type & MMDInstrHeader::STEREO)
|
||||
{
|
||||
sampleIO |= SampleIO::stereoSplit;
|
||||
length /= 2;
|
||||
|
|
|
@ -524,6 +524,7 @@ bool CSoundFile::ReadS3M(FileReader &file, ModLoadingFlags loadFlags)
|
|||
// All Scream Tracker versions except for some probably early revisions of Scream Tracker 3.00 write GUS addresses. GUS support might not have existed at that point (1992).
|
||||
// Hence if a file claims to be written with ST3 (but not ST3.00), but has no GUS addresses, we deduce that it must be written by some other software (e.g. some PSM -> S3M conversions)
|
||||
isST3 = false;
|
||||
MPT_UNUSED(isST3);
|
||||
m_modFormat.madeWithTracker = U_("Unknown");
|
||||
} else if(isST3)
|
||||
{
|
||||
|
|
|
@ -792,6 +792,7 @@ bool CSoundFile::ReadSTP(FileReader &file, ModLoadingFlags loadFlags)
|
|||
else if(m.param & 0xF0)
|
||||
m.param |= 0x0F;
|
||||
didVolSlide = true;
|
||||
MPT_UNUSED(didVolSlide);
|
||||
|
||||
} else if(chnMem.autoTremolo)
|
||||
{
|
||||
|
|
|
@ -155,6 +155,28 @@ void ModChannel::SetInstrumentPan(int32 pan, const CSoundFile &sndFile)
|
|||
}
|
||||
|
||||
|
||||
void ModChannel::RestorePanAndFilter()
|
||||
{
|
||||
if(nRestorePanOnNewNote > 0)
|
||||
{
|
||||
nPan = (nRestorePanOnNewNote & 0x7FFF) - 1;
|
||||
if(nRestorePanOnNewNote & 0x8000)
|
||||
dwFlags.set(CHN_SURROUND);
|
||||
nRestorePanOnNewNote = 0;
|
||||
}
|
||||
if(nRestoreResonanceOnNewNote > 0)
|
||||
{
|
||||
nResonance = nRestoreResonanceOnNewNote - 1;
|
||||
nRestoreResonanceOnNewNote = 0;
|
||||
}
|
||||
if(nRestoreCutoffOnNewNote > 0)
|
||||
{
|
||||
nCutOff = nRestoreCutoffOnNewNote - 1;
|
||||
nRestoreCutoffOnNewNote = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void ModChannel::RecalcTuningFreq(Tuning::RATIOTYPE vibratoFactor, Tuning::NOTEINDEXTYPE arpeggioSteps, const CSoundFile &sndFile)
|
||||
{
|
||||
if(!HasCustomTuning())
|
||||
|
|
|
@ -200,6 +200,7 @@ struct ModChannel
|
|||
void UpdateInstrumentVolume(const ModSample *smp, const ModInstrument *ins);
|
||||
|
||||
void SetInstrumentPan(int32 pan, const CSoundFile &sndFile);
|
||||
void RestorePanAndFilter();
|
||||
|
||||
void RecalcTuningFreq(Tuning::RATIOTYPE vibratoFactor, Tuning::NOTEINDEXTYPE arpeggioSteps, const CSoundFile &sndFile);
|
||||
|
||||
|
|
|
@ -1163,8 +1163,7 @@ bool CSoundFile::ReadS3ISample(SAMPLEINDEX nSample, FileReader &file)
|
|||
bool CSoundFile::SaveS3ISample(SAMPLEINDEX smp, std::ostream &f) const
|
||||
{
|
||||
const ModSample &sample = Samples[smp];
|
||||
S3MSampleHeader sampleHeader;
|
||||
MemsetZero(sampleHeader);
|
||||
S3MSampleHeader sampleHeader{};
|
||||
SmpLength length = sampleHeader.ConvertToS3M(sample);
|
||||
mpt::String::WriteBuf(mpt::String::nullTerminated, sampleHeader.name) = m_szNames[smp];
|
||||
mpt::String::WriteBuf(mpt::String::maybeNullTerminated, sampleHeader.reserved2) = mpt::ToCharset(mpt::Charset::UTF8, Version::Current().GetOpenMPTVersionString());
|
||||
|
@ -1186,9 +1185,10 @@ bool CSoundFile::SaveS3ISample(SAMPLEINDEX smp, std::ostream &f) const
|
|||
bool CSoundFile::ReadSBISample(SAMPLEINDEX sample, FileReader &file)
|
||||
{
|
||||
file.Rewind();
|
||||
if(!file.ReadMagic("SBI\x1A")
|
||||
|| !file.CanRead(32 + sizeof(OPLPatch))
|
||||
|| file.CanRead(64)) // Arbitrary threshold to reject files that are unlikely to be SBI files
|
||||
const auto magic = file.ReadArray<char, 4>();
|
||||
if((memcmp(magic.data(), "SBI\x1A", 4) && memcmp(magic.data(), "SBI\x1D", 4)) // 1D = broken JuceOPLVSTi files
|
||||
|| !file.CanRead(32 + sizeof(OPLPatch))
|
||||
|| file.CanRead(64)) // Arbitrary threshold to reject files that are unlikely to be SBI files
|
||||
return false;
|
||||
|
||||
if(!SupportsOPL())
|
||||
|
@ -1751,7 +1751,6 @@ bool CSoundFile::ReadCAFSample(SAMPLEINDEX nSample, FileReader &file, bool mayNo
|
|||
}
|
||||
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////
|
||||
// AIFF File I/O
|
||||
|
||||
|
|
|
@ -545,7 +545,10 @@ std::vector<GetLengthType> CSoundFile::GetLength(enmGetLengthResetMode adjustMod
|
|||
memory.chnSettings[nChn].vol = 0xFF;
|
||||
}
|
||||
if(chn.rowCommand.IsNote())
|
||||
{
|
||||
chn.nLastNote = note;
|
||||
chn.RestorePanAndFilter();
|
||||
}
|
||||
|
||||
// Update channel panning
|
||||
if(chn.rowCommand.IsNote() || chn.rowCommand.instr)
|
||||
|
@ -2806,23 +2809,7 @@ bool CSoundFile::ProcessEffects()
|
|||
CheckNNA(nChn, instr, note, false);
|
||||
}
|
||||
|
||||
if(chn.nRestorePanOnNewNote > 0)
|
||||
{
|
||||
chn.nPan = (chn.nRestorePanOnNewNote & 0x7FFF) - 1;
|
||||
if(chn.nRestorePanOnNewNote & 0x8000)
|
||||
chn.dwFlags.set(CHN_SURROUND);
|
||||
chn.nRestorePanOnNewNote = 0;
|
||||
}
|
||||
if(chn.nRestoreResonanceOnNewNote > 0)
|
||||
{
|
||||
chn.nResonance = chn.nRestoreResonanceOnNewNote - 1;
|
||||
chn.nRestoreResonanceOnNewNote = 0;
|
||||
}
|
||||
if(chn.nRestoreCutoffOnNewNote > 0)
|
||||
{
|
||||
chn.nCutOff = chn.nRestoreCutoffOnNewNote - 1;
|
||||
chn.nRestoreCutoffOnNewNote = 0;
|
||||
}
|
||||
chn.RestorePanAndFilter();
|
||||
}
|
||||
|
||||
// Instrument Change ?
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
#include <limits>
|
||||
|
||||
#include <cstddef>
|
||||
#include <cstdint>
|
||||
|
||||
|
||||
namespace mpt {
|
||||
|
|
|
@ -20,7 +20,7 @@ inline namespace MPT_INLINE_NS {
|
|||
|
||||
|
||||
namespace tests {
|
||||
namespace string_convert {
|
||||
namespace string_transcode {
|
||||
|
||||
#if MPT_COMPILER_CLANG
|
||||
#pragma clang diagnostic push
|
||||
|
@ -233,7 +233,7 @@ MPT_TEST_GROUP_INLINE("mpt/string_transcode")
|
|||
#endif // !MPT_COMPILER_QUIRK_NO_WCHAR
|
||||
}
|
||||
|
||||
} // namespace string_convert
|
||||
} // namespace string_transcode
|
||||
} // namespace tests
|
||||
|
||||
|
||||
|
|
|
@ -2329,7 +2329,6 @@
|
|||
83E5EFC61FFEF7CC00659F0F /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++17";
|
||||
CODE_SIGN_IDENTITY = "";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
|
@ -2352,7 +2351,6 @@
|
|||
83E5EFC71FFEF7CC00659F0F /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++17";
|
||||
CODE_SIGN_IDENTITY = "";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
|
|
Loading…
Reference in New Issue