You can subscribe to this list here.
2006 |
Jan
|
Feb
|
Mar
(1) |
Apr
(1) |
May
|
Jun
(1) |
Jul
|
Aug
(10) |
Sep
|
Oct
|
Nov
|
Dec
(3) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2007 |
Jan
(1) |
Feb
(2) |
Mar
(3) |
Apr
(2) |
May
(10) |
Jun
(2) |
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
(3) |
Dec
|
2008 |
Jan
(6) |
Feb
(4) |
Mar
(5) |
Apr
(2) |
May
(1) |
Jun
(1) |
Jul
(4) |
Aug
(6) |
Sep
(2) |
Oct
(9) |
Nov
(1) |
Dec
(4) |
2009 |
Jan
(9) |
Feb
(2) |
Mar
(2) |
Apr
(2) |
May
(6) |
Jun
(18) |
Jul
(33) |
Aug
(39) |
Sep
(33) |
Oct
(24) |
Nov
(23) |
Dec
(22) |
2010 |
Jan
(29) |
Feb
(32) |
Mar
(51) |
Apr
(17) |
May
(31) |
Jun
(21) |
Jul
(32) |
Aug
(28) |
Sep
(35) |
Oct
(27) |
Nov
(11) |
Dec
(13) |
2011 |
Jan
(14) |
Feb
(13) |
Mar
(27) |
Apr
(27) |
May
(28) |
Jun
(20) |
Jul
(43) |
Aug
(52) |
Sep
(66) |
Oct
(61) |
Nov
(11) |
Dec
(8) |
2012 |
Jan
(20) |
Feb
(30) |
Mar
(38) |
Apr
(21) |
May
(33) |
Jun
(21) |
Jul
(25) |
Aug
(9) |
Sep
(24) |
Oct
(42) |
Nov
(27) |
Dec
(41) |
2013 |
Jan
(20) |
Feb
(35) |
Mar
(156) |
Apr
(298) |
May
(258) |
Jun
(201) |
Jul
(105) |
Aug
(60) |
Sep
(193) |
Oct
(245) |
Nov
(280) |
Dec
(194) |
2014 |
Jan
(63) |
Feb
(202) |
Mar
(200) |
Apr
(23) |
May
(53) |
Jun
(105) |
Jul
(18) |
Aug
(26) |
Sep
(110) |
Oct
(187) |
Nov
(97) |
Dec
(74) |
2015 |
Jan
(45) |
Feb
(55) |
Mar
(116) |
Apr
(116) |
May
(193) |
Jun
(164) |
Jul
(50) |
Aug
(111) |
Sep
(98) |
Oct
(71) |
Nov
(103) |
Dec
(63) |
2016 |
Jan
(33) |
Feb
(101) |
Mar
(182) |
Apr
(139) |
May
(140) |
Jun
(103) |
Jul
(165) |
Aug
(286) |
Sep
(208) |
Oct
(127) |
Nov
(97) |
Dec
(54) |
2017 |
Jan
(64) |
Feb
(335) |
Mar
(202) |
Apr
(212) |
May
(139) |
Jun
(127) |
Jul
(294) |
Aug
(154) |
Sep
(170) |
Oct
(152) |
Nov
(156) |
Dec
(62) |
2018 |
Jan
(168) |
Feb
(237) |
Mar
(196) |
Apr
(174) |
May
(174) |
Jun
(161) |
Jul
(127) |
Aug
(88) |
Sep
(149) |
Oct
(66) |
Nov
(52) |
Dec
(135) |
2019 |
Jan
(146) |
Feb
(126) |
Mar
(104) |
Apr
(58) |
May
(60) |
Jun
(28) |
Jul
(197) |
Aug
(129) |
Sep
(141) |
Oct
(148) |
Nov
(63) |
Dec
(100) |
2020 |
Jan
(74) |
Feb
(37) |
Mar
(59) |
Apr
(154) |
May
(194) |
Jun
(133) |
Jul
(313) |
Aug
(197) |
Sep
(49) |
Oct
(162) |
Nov
(143) |
Dec
(57) |
2021 |
Jan
(120) |
Feb
(107) |
Mar
(314) |
Apr
(157) |
May
(524) |
Jun
(169) |
Jul
(72) |
Aug
(133) |
Sep
(135) |
Oct
(146) |
Nov
(198) |
Dec
(325) |
2022 |
Jan
(409) |
Feb
(249) |
Mar
(138) |
Apr
(95) |
May
(102) |
Jun
(221) |
Jul
(66) |
Aug
(120) |
Sep
(192) |
Oct
(131) |
Nov
(53) |
Dec
(171) |
2023 |
Jan
(357) |
Feb
(82) |
Mar
(168) |
Apr
(218) |
May
(196) |
Jun
(86) |
Jul
(115) |
Aug
(49) |
Sep
(190) |
Oct
(102) |
Nov
(45) |
Dec
(76) |
2024 |
Jan
(86) |
Feb
(50) |
Mar
(324) |
Apr
(209) |
May
(197) |
Jun
(232) |
Jul
(194) |
Aug
(247) |
Sep
(219) |
Oct
(266) |
Nov
(328) |
Dec
(304) |
2025 |
Jan
(191) |
Feb
(115) |
Mar
(137) |
Apr
(32) |
May
(126) |
Jun
(403) |
Jul
(202) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <sv...@op...> - 2024-12-01 11:36:03
|
Author: sagamusix Date: Sun Dec 1 12:35:40 2024 New Revision: 22380 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22380 Log: Merged revision(s) 22056, 22377 from trunk/OpenMPT: [Imp] Warn when Startrekker AM companion file for synthesized instruments is most likely missing. ........ [Imp] Allow Startrekker AM external sample check to also work for libopenmpt. ........ Modified: branches/OpenMPT-1.29/ (props changed) branches/OpenMPT-1.29/soundlib/Load_mod.cpp Modified: branches/OpenMPT-1.29/soundlib/Load_mod.cpp ============================================================================== --- branches/OpenMPT-1.29/soundlib/Load_mod.cpp Sun Dec 1 12:35:15 2024 (r22379) +++ branches/OpenMPT-1.29/soundlib/Load_mod.cpp Sun Dec 1 12:35:40 2024 (r22380) @@ -1038,6 +1038,7 @@ // Reading patterns Patterns.ResizeArray(numPatterns); + std::bitset<32> referencedSamples; for(PATTERNINDEX pat = 0; pat < numPatterns; pat++) { ModCommand *rowBase = nullptr; @@ -1145,6 +1146,8 @@ if(m.instr != 0) { lastInstrument[chn] = m.instr; + if(isStartrekker) + referencedSamples.set(m.instr & 0x1F); } } if(hasSpeedOnRow && hasTempoOnRow) @@ -1271,7 +1274,7 @@ m_nInstruments = 31; #endif - for(SAMPLEINDEX smp = 1; smp <= m_nInstruments; smp++) + for(SAMPLEINDEX smp = 1; smp <= GetNumInstruments(); smp++) { // For Startrekker AM synthesis, we need instrument envelopes. ModInstrument *ins = AllocateInstrument(smp, smp); @@ -1294,6 +1297,32 @@ } #endif // MPT_EXTERNAL_SAMPLES || MPT_BUILD_FUZZER + if((loadFlags & loadSampleData) && isStartrekker && !m_nInstruments) + { + uint8 emptySampleReferences = 0; + for(SAMPLEINDEX smp = 1; smp <= 31; smp++) + { + if(referencedSamples[smp] && !Samples[smp].nLength) + { + if(++emptySampleReferences > 1) + { + mpt::ustring filenameHint; + if(file.GetOptionalFileName()) + { + const auto filename = file.GetOptionalFileName()->GetFilename().ToUnicode(); + filenameHint = MPT_UFORMAT(" ({}.nt or {}.as)")(filename, filename); + } +#ifdef MPT_EXTERNAL_SAMPLES + AddToLog(LogWarning, MPT_UFORMAT("This Startrekker AM file is most likely missing its companion file{}. Synthesized instruments will not play.")(filenameHint)); +#else + AddToLog(LogWarning, U_("This appears to be a Startrekker AM file with external synthesizes instruments. External instruments are currently not supported.")); +#endif // MPT_EXTERNAL_SAMPLES + break; + } + } + } + } + // Fix VBlank MODs. Arbitrary threshold: 8 minutes (enough for "frame of mind" by Dascon...). // Basically, this just converts all tempo commands into speed commands // for MODs which are supposed to have VBlank timing (instead of CIA timing). |
From: <sv...@op...> - 2024-12-01 11:35:22
|
Author: sagamusix Date: Sun Dec 1 12:35:15 2024 New Revision: 22379 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22379 Log: Merged revision(s) 22056, 22377 from trunk/OpenMPT: [Imp] Warn when Startrekker AM companion file for synthesized instruments is most likely missing. ........ [Imp] Allow Startrekker AM external sample check to also work for libopenmpt. ........ Modified: branches/OpenMPT-1.30/ (props changed) branches/OpenMPT-1.30/soundlib/Load_mod.cpp Modified: branches/OpenMPT-1.30/soundlib/Load_mod.cpp ============================================================================== --- branches/OpenMPT-1.30/soundlib/Load_mod.cpp Sun Dec 1 12:34:21 2024 (r22378) +++ branches/OpenMPT-1.30/soundlib/Load_mod.cpp Sun Dec 1 12:35:15 2024 (r22379) @@ -1041,6 +1041,7 @@ // Reading patterns Patterns.ResizeArray(numPatterns); + std::bitset<32> referencedSamples; for(PATTERNINDEX pat = 0; pat < numPatterns; pat++) { ModCommand *rowBase = nullptr; @@ -1148,6 +1149,8 @@ if(m.instr != 0) { lastInstrument[chn] = m.instr; + if(isStartrekker) + referencedSamples.set(m.instr & 0x1F); } } if(hasSpeedOnRow && hasTempoOnRow) @@ -1278,7 +1281,7 @@ m_nInstruments = 31; #endif - for(SAMPLEINDEX smp = 1; smp <= m_nInstruments; smp++) + for(SAMPLEINDEX smp = 1; smp <= GetNumInstruments(); smp++) { // For Startrekker AM synthesis, we need instrument envelopes. ModInstrument *ins = AllocateInstrument(smp, smp); @@ -1301,6 +1304,32 @@ } #endif // MPT_EXTERNAL_SAMPLES || MPT_BUILD_FUZZER + if((loadFlags & loadSampleData) && isStartrekker && !m_nInstruments) + { + uint8 emptySampleReferences = 0; + for(SAMPLEINDEX smp = 1; smp <= 31; smp++) + { + if(referencedSamples[smp] && !Samples[smp].nLength) + { + if(++emptySampleReferences > 1) + { + mpt::ustring filenameHint; + if(file.GetOptionalFileName()) + { + const auto filename = file.GetOptionalFileName()->GetFilename().ToUnicode(); + filenameHint = MPT_UFORMAT(" ({}.nt or {}.as)")(filename, filename); + } +#ifdef MPT_EXTERNAL_SAMPLES + AddToLog(LogWarning, MPT_UFORMAT("This Startrekker AM file is most likely missing its companion file{}. Synthesized instruments will not play.")(filenameHint)); +#else + AddToLog(LogWarning, U_("This appears to be a Startrekker AM file with external synthesizes instruments. External instruments are currently not supported.")); +#endif // MPT_EXTERNAL_SAMPLES + break; + } + } + } + } + // Fix VBlank MODs. Arbitrary threshold: 8 minutes (enough for "frame of mind" by Dascon...). // Basically, this just converts all tempo commands into speed commands // for MODs which are supposed to have VBlank timing (instead of CIA timing). |
From: <sv...@op...> - 2024-12-01 11:34:43
|
Author: sagamusix Date: Sun Dec 1 12:34:21 2024 New Revision: 22378 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22378 Log: Merged revision(s) 22377 from trunk/OpenMPT: [Imp] Allow Startrekker AM external sample check to also work for libopenmpt. ........ Modified: branches/OpenMPT-1.31/ (props changed) branches/OpenMPT-1.31/soundlib/Load_mod.cpp Modified: branches/OpenMPT-1.31/soundlib/Load_mod.cpp ============================================================================== --- branches/OpenMPT-1.31/soundlib/Load_mod.cpp Sun Dec 1 12:34:00 2024 (r22377) +++ branches/OpenMPT-1.31/soundlib/Load_mod.cpp Sun Dec 1 12:34:21 2024 (r22378) @@ -1343,30 +1343,34 @@ // This extra padding is probably present to have identical block sizes for AM and FM instruments. amData.Skip(120 - sizeof(AMInstrument)); } + } +#endif // MPT_EXTERNAL_SAMPLES || MPT_BUILD_FUZZER - if(!m_nInstruments) + if((loadFlags & loadSampleData) && isStartrekker && !m_nInstruments) + { + uint8 emptySampleReferences = 0; + for(SAMPLEINDEX smp = 1; smp <= 31; smp++) { - uint8 emptySampleReferences = 0; - for(SAMPLEINDEX smp = 1; smp <= 31; smp++) + if(referencedSamples[smp] && !Samples[smp].nLength) { - if(referencedSamples[smp] && !Samples[smp].nLength) + if(++emptySampleReferences > 1) { - if(++emptySampleReferences > 1) + mpt::ustring filenameHint; + if(file.GetOptionalFileName()) { - mpt::ustring filenameHint; - if(file.GetOptionalFileName()) - { - const auto filename = file.GetOptionalFileName()->GetFilename().ToUnicode(); - filenameHint = MPT_UFORMAT(" ({}.nt or {}.as)")(filename, filename); - } - AddToLog(LogWarning, MPT_UFORMAT("This Startrekker AM file is most likely missing its companion file{}. Synthesized instruments will not play.")(filenameHint)); - break; + const auto filename = file.GetOptionalFileName()->GetFilename().ToUnicode(); + filenameHint = MPT_UFORMAT(" ({}.nt or {}.as)")(filename, filename); } +#ifdef MPT_EXTERNAL_SAMPLES + AddToLog(LogWarning, MPT_UFORMAT("This Startrekker AM file is most likely missing its companion file{}. Synthesized instruments will not play.")(filenameHint)); +#else + AddToLog(LogWarning, U_("This appears to be a Startrekker AM file with external synthesizes instruments. External instruments are currently not supported.")); +#endif // MPT_EXTERNAL_SAMPLES + break; } } } } -#endif // MPT_EXTERNAL_SAMPLES || MPT_BUILD_FUZZER // Fix VBlank MODs. Arbitrary threshold: 8 minutes (enough for "frame of mind" by Dascon...). // Basically, this just converts all tempo commands into speed commands |
From: <sv...@op...> - 2024-12-01 11:34:09
|
Author: sagamusix Date: Sun Dec 1 12:34:00 2024 New Revision: 22377 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22377 Log: [Imp] Allow Startrekker AM external sample check to also work for libopenmpt. Modified: trunk/OpenMPT/soundlib/Load_mod.cpp Modified: trunk/OpenMPT/soundlib/Load_mod.cpp ============================================================================== --- trunk/OpenMPT/soundlib/Load_mod.cpp Sun Dec 1 12:25:15 2024 (r22376) +++ trunk/OpenMPT/soundlib/Load_mod.cpp Sun Dec 1 12:34:00 2024 (r22377) @@ -771,30 +771,34 @@ // This extra padding is probably present to have identical block sizes for AM and FM instruments. amData.Skip(120 - sizeof(AMInstrument)); } + } +#endif // MPT_EXTERNAL_SAMPLES || MPT_BUILD_FUZZER - if(!m_nInstruments) + if((loadFlags & loadSampleData) && isStartrekker && !m_nInstruments) + { + uint8 emptySampleReferences = 0; + for(SAMPLEINDEX smp = 1; smp <= 31; smp++) { - uint8 emptySampleReferences = 0; - for(SAMPLEINDEX smp = 1; smp <= 31; smp++) + if(referencedSamples[smp] && !Samples[smp].nLength) { - if(referencedSamples[smp] && !Samples[smp].nLength) + if(++emptySampleReferences > 1) { - if(++emptySampleReferences > 1) + mpt::ustring filenameHint; + if(file.GetOptionalFileName()) { - mpt::ustring filenameHint; - if(file.GetOptionalFileName()) - { - const auto filename = file.GetOptionalFileName()->GetFilename().ToUnicode(); - filenameHint = MPT_UFORMAT(" ({}.nt or {}.as)")(filename, filename); - } - AddToLog(LogWarning, MPT_UFORMAT("This Startrekker AM file is most likely missing its companion file{}. Synthesized instruments will not play.")(filenameHint)); - break; + const auto filename = file.GetOptionalFileName()->GetFilename().ToUnicode(); + filenameHint = MPT_UFORMAT(" ({}.nt or {}.as)")(filename, filename); } +#ifdef MPT_EXTERNAL_SAMPLES + AddToLog(LogWarning, MPT_UFORMAT("This Startrekker AM file is most likely missing its companion file{}. Synthesized instruments will not play.")(filenameHint)); +#else + AddToLog(LogWarning, U_("This appears to be a Startrekker AM file with external synthesizes instruments. External instruments are currently not supported.")); +#endif // MPT_EXTERNAL_SAMPLES + break; } } } } -#endif // MPT_EXTERNAL_SAMPLES || MPT_BUILD_FUZZER // His Master's Noise "Mupp" instrument extensions if((loadFlags & loadSampleData) && isHMNT) |
From: <sv...@op...> - 2024-12-01 11:25:26
|
Author: sagamusix Date: Sun Dec 1 12:25:15 2024 New Revision: 22376 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22376 Log: [Fix] Fix infinite loop in MIDI message parser in case of !outputRunningStatus. Modified: trunk/OpenMPT/soundlib/MIDIMacroParser.cpp Modified: trunk/OpenMPT/soundlib/MIDIMacroParser.cpp ============================================================================== --- trunk/OpenMPT/soundlib/MIDIMacroParser.cpp Sun Dec 1 02:39:40 2024 (r22375) +++ trunk/OpenMPT/soundlib/MIDIMacroParser.cpp Sun Dec 1 12:25:15 2024 (r22376) @@ -60,6 +60,7 @@ m_runningstatusOldData = m_data[m_sendPos]; m_data[m_sendPos] = m_runningStatus; m_runningStatusPos = m_sendPos; + continue; } else { sendLen = std::min(static_cast<uint32>(MIDIEvents::GetEventLength(m_runningStatus) - 1), outSize - m_sendPos); @@ -68,8 +69,8 @@ { // No running status to re-use; skip this byte m_sendPos++; + continue; } - continue; } else { // Other MIDI messages |
From: <sv...@op...> - 2024-12-01 01:39:52
|
Author: sagamusix Date: Sun Dec 1 02:39:40 2024 New Revision: 22375 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22375 Log: [Fix] Fix compilation. Modified: branches/OpenMPT-1.31/mptrack/ChannelManagerDlg.cpp Modified: branches/OpenMPT-1.31/mptrack/ChannelManagerDlg.cpp ============================================================================== --- branches/OpenMPT-1.31/mptrack/ChannelManagerDlg.cpp Sun Dec 1 02:17:18 2024 (r22374) +++ branches/OpenMPT-1.31/mptrack/ChannelManagerDlg.cpp Sun Dec 1 02:39:40 2024 (r22375) @@ -177,7 +177,9 @@ { CRect rect; pTI->hwnd = m_hWnd; - pTI->uId = ButtonHit(point, &rect); + CHANNELINDEX chn = CHANNELINDEX_INVALID; + ButtonHit(point, &chn, &rect); + pTI->uId = chn; pTI->rect = rect; pTI->lpszText = LPSTR_TEXTCALLBACK; if(pTI->uId == CHANNELINDEX_INVALID) @@ -189,11 +191,11 @@ BOOL CChannelManagerDlg::OnToolTipText(UINT, NMHDR *pNMHDR, LRESULT *) { TOOLTIPTEXT *pTTT = reinterpret_cast<TOOLTIPTEXT *>(pNMHDR); - if((pTTT->uFlags & TTF_IDISHWND) || !m_ModDoc || pNMHDR->idFrom >= m_states.size()) + if((pTTT->uFlags & TTF_IDISHWND) || !m_ModDoc || pNMHDR->idFrom >= MAX_BASECHANNELS) return FALSE; CString text; - const CHANNELINDEX chn = m_states[pNMHDR->idFrom].sourceChn; + const CHANNELINDEX chn = pattern[pNMHDR->idFrom]; const auto &chnSettings = m_ModDoc->GetSoundFile().ChnSettings[chn]; if(!chnSettings.szName.empty()) text = MPT_CFORMAT("{}: {}")(chn + 1, mpt::ToWin(m_ModDoc->GetSoundFile().GetCharsetInternal(), chnSettings.szName)); @@ -217,12 +219,9 @@ text += chnSettings.dwFlags[CHN_NOFX] ? _T(" (Plugins Bypassed)") : _T(" (Plugins Enabled)"); break; case kReorderRemove: - if(m_states[pNMHDR->idFrom].removed) + if(removed[chn]) text += _T(" (Marked for Removal)"); break; - case kNumTabs: - MPT_ASSERT_NOTREACHED(); - break; } mpt::String::WriteCStringBuf(pTTT->szText) = text; return TRUE; |
From: <sv...@op...> - 2024-12-01 01:17:31
|
Author: sagamusix Date: Sun Dec 1 02:17:18 2024 New Revision: 22374 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22374 Log: Merged revision(s) 22344 from trunk/OpenMPT: [Imp] Add long file path support to TempFileGuard and various mpt::native_fs functions. ........ Modified: branches/OpenMPT-1.31/ (props changed) branches/OpenMPT-1.31/common/mptFileTemporary.cpp branches/OpenMPT-1.31/src/mpt/fs/fs.hpp Modified: branches/OpenMPT-1.31/common/mptFileTemporary.cpp ============================================================================== --- branches/OpenMPT-1.31/common/mptFileTemporary.cpp Sun Dec 1 02:12:11 2024 (r22373) +++ branches/OpenMPT-1.31/common/mptFileTemporary.cpp Sun Dec 1 02:17:18 2024 (r22374) @@ -68,7 +68,7 @@ { if(!filename.empty()) { - DeleteFile(filename.AsNative().c_str()); + DeleteFile(mpt::support_long_path(filename.AsNative()).c_str()); } } @@ -80,7 +80,7 @@ { return; } - if(::CreateDirectory(dirname.AsNative().c_str(), NULL) == 0) + if(::CreateDirectory(mpt::support_long_path(dirname.AsNative()).c_str(), NULL) == 0) { // fail dirname = mpt::PathString(); } Modified: branches/OpenMPT-1.31/src/mpt/fs/fs.hpp ============================================================================== --- branches/OpenMPT-1.31/src/mpt/fs/fs.hpp Sun Dec 1 02:12:11 2024 (r22373) +++ branches/OpenMPT-1.31/src/mpt/fs/fs.hpp Sun Dec 1 02:17:18 2024 (r22374) @@ -8,6 +8,7 @@ #include "mpt/base/detect.hpp" #include "mpt/base/namespace.hpp" #include "mpt/path/native_path.hpp" +#include "mpt/path/os_path_long.hpp" #if MPT_OS_WINDOWS #include <vector> @@ -42,37 +43,38 @@ // Verify if this path represents a valid directory on the file system. bool is_directory(const mpt::native_path & path) { - // Using PathIsDirectoryW here instead would increase libopenmpt dependencies by shlwapi.dll. + // Using PathIsDirectoryW here instead would increase libopenmpt dependencies by shlwapi.dll (and it would only work with paths up to MAX_PATH). // GetFileAttributesW also does the job just fine. -#if MPT_OS_WINDOWS_WINRT - WIN32_FILE_ATTRIBUTE_DATA data = {}; - if (::GetFileAttributesExW(path.AsNative().c_str(), GetFileExInfoStandard, &data) == 0) { - return false; - } - DWORD dwAttrib = data.dwFileAttributes; -#else // !MPT_OS_WINDOWS_WINRT - DWORD dwAttrib = ::GetFileAttributes(path.AsNative().c_str()); -#endif // MPT_OS_WINDOWS_WINRT + DWORD dwAttrib = get_file_attributes(path); return ((dwAttrib != INVALID_FILE_ATTRIBUTES) && (dwAttrib & FILE_ATTRIBUTE_DIRECTORY)); } // Verify if this path exists and is a file on the file system. bool is_file(const mpt::native_path & path) { + DWORD dwAttrib = get_file_attributes(path); + return ((dwAttrib != INVALID_FILE_ATTRIBUTES) && !(dwAttrib & FILE_ATTRIBUTE_DIRECTORY)); + } + + // Verify that a path exists (no matter what type) + bool exists(const mpt::native_path & path) { + DWORD dwAttrib = get_file_attributes(path); + return (dwAttrib != INVALID_FILE_ATTRIBUTES); + } + + + +private: + + DWORD get_file_attributes(const mpt::native_path & path) { #if MPT_OS_WINDOWS_WINRT WIN32_FILE_ATTRIBUTE_DATA data = {}; if (::GetFileAttributesExW(path.AsNative().c_str(), GetFileExInfoStandard, &data) == 0) { - return false; + return INVALID_FILE_ATTRIBUTES; } - DWORD dwAttrib = data.dwFileAttributes; + return data.dwFileAttributes; #else // !MPT_OS_WINDOWS_WINRT - DWORD dwAttrib = ::GetFileAttributes(path.AsNative().c_str()); + return ::GetFileAttributes(path.AsNative().c_str()); #endif // MPT_OS_WINDOWS_WINRT - return ((dwAttrib != INVALID_FILE_ATTRIBUTES) && !(dwAttrib & FILE_ATTRIBUTE_DIRECTORY)); - } - - // Verify that a path exists (no matter what type) - bool exists(const mpt::native_path & path) { - return ::PathFileExists(path.AsNative().c_str()) != FALSE; } @@ -81,12 +83,13 @@ #if !(MPT_WINRT_BEFORE(MPT_WIN_10)) mpt::native_path absolute(const mpt::native_path & path) { - DWORD size = ::GetFullPathName(path.AsNative().c_str(), 0, nullptr, nullptr); + const auto long_path = mpt::support_long_path(path.AsNative()); + DWORD size = ::GetFullPathName(long_path.c_str(), 0, nullptr, nullptr); if (size == 0) { return path; } std::vector<TCHAR> fullPathName(size, TEXT('\0')); - if (::GetFullPathName(path.AsNative().c_str(), size, fullPathName.data(), nullptr) == 0) { + if (::GetFullPathName(long_path.c_str(), size, fullPathName.data(), nullptr) == 0) { return path; } return mpt::native_path::FromNative(fullPathName.data()); @@ -116,7 +119,7 @@ path = path.WithTrailingSlash(); HANDLE hFind = NULL; WIN32_FIND_DATA wfd = {}; - hFind = ::FindFirstFile((path + MPT_NATIVE_PATH("*.*")).AsNative().c_str(), &wfd); + hFind = ::FindFirstFile(mpt::support_long_path((path + MPT_NATIVE_PATH("*.*")).AsNative()).c_str(), &wfd); if (hFind != NULL && hFind != INVALID_HANDLE_VALUE) { do { mpt::native_path filename = mpt::native_path::FromNative(wfd.cFileName); |
From: <sv...@op...> - 2024-12-01 01:12:23
|
Author: sagamusix Date: Sun Dec 1 02:12:11 2024 New Revision: 22373 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22373 Log: Merged revision(s) 22248-22249, 22254 from trunk/OpenMPT: [Mod] Tree view: Explicitly avoid opening an empty path name when choosing "Open in Explorer". It doesn't do anything, but still better to explicitly document the possibility of the path being empty. ........ [Mod] Autosave: Don't use relative paths for external samples when autosaving to a user-specified folder. Prerequisite for https://bugs.openmpt.org/view.php?id=1837 ........ [Imp] Channel Manager Dialog: Add tooltips. ........ Modified: branches/OpenMPT-1.31/ (props changed) branches/OpenMPT-1.31/common/mptPathString.cpp branches/OpenMPT-1.31/mptrack/AutoSaver.cpp branches/OpenMPT-1.31/mptrack/ChannelManagerDlg.cpp branches/OpenMPT-1.31/mptrack/ChannelManagerDlg.h branches/OpenMPT-1.31/mptrack/View_tre.cpp branches/OpenMPT-1.31/test/test.cpp Modified: branches/OpenMPT-1.31/common/mptPathString.cpp ============================================================================== --- branches/OpenMPT-1.31/common/mptPathString.cpp Sun Dec 1 01:51:15 2024 (r22372) +++ branches/OpenMPT-1.31/common/mptPathString.cpp Sun Dec 1 02:12:11 2024 (r22373) @@ -55,7 +55,7 @@ using namespace path_literals; using char_type = RawPathString::value_type; mpt::PathString result = path; - if(path.empty()) + if(path.empty() || relativeTo.empty()) { return result; } @@ -79,7 +79,7 @@ using namespace path_literals; using char_type = RawPathString::value_type; mpt::PathString result = path; - if(path.empty()) + if(path.empty() || relativeTo.empty()) { return result; } Modified: branches/OpenMPT-1.31/mptrack/AutoSaver.cpp ============================================================================== --- branches/OpenMPT-1.31/mptrack/AutoSaver.cpp Sun Dec 1 01:51:15 2024 (r22372) +++ branches/OpenMPT-1.31/mptrack/AutoSaver.cpp Sun Dec 1 02:12:11 2024 (r22373) @@ -141,7 +141,7 @@ { mpt::PathString name = GetBasePath(modDoc, true) + GetBaseName(modDoc); const CString timeStamp = CTime::GetCurrentTime().Format(_T(".AutoSave.%Y%m%d.%H%M%S.")); - name += mpt::PathString::FromCString(timeStamp); //append backtup tag + timestamp + name += mpt::PathString::FromCString(timeStamp); // Append backtup tag + timestamp name += mpt::PathString::FromUnicode(modDoc.GetSoundFile().GetModSpecifications().GetFileExtension()); return name; } @@ -167,8 +167,8 @@ case MOD_TYPE_MOD: success = sndFile.SaveMod(f); break; case MOD_TYPE_S3M: success = sndFile.SaveS3M(f); break; case MOD_TYPE_XM: success = sndFile.SaveXM(f); break; - case MOD_TYPE_IT: success = sndFile.SaveIT(f, fileName); break; - case MOD_TYPE_MPT: success = sndFile.SaveIT(f, fileName); break; + case MOD_TYPE_IT: success = sndFile.SaveIT(f, GetUseOriginalPath() ? fileName : mpt::PathString{}); break; + case MOD_TYPE_MPT: success = sndFile.SaveIT(f, GetUseOriginalPath() ? fileName : mpt::PathString{}); break; } } Modified: branches/OpenMPT-1.31/mptrack/ChannelManagerDlg.cpp ============================================================================== --- branches/OpenMPT-1.31/mptrack/ChannelManagerDlg.cpp Sun Dec 1 01:51:15 2024 (r22372) +++ branches/OpenMPT-1.31/mptrack/ChannelManagerDlg.cpp Sun Dec 1 02:12:11 2024 (r22373) @@ -29,23 +29,25 @@ ON_WM_MOUSEMOVE() ON_WM_LBUTTONUP() ON_WM_LBUTTONDOWN() + ON_WM_LBUTTONDBLCLK() ON_WM_RBUTTONUP() ON_WM_RBUTTONDOWN() + ON_WM_RBUTTONDBLCLK() ON_WM_MBUTTONDOWN() ON_WM_CLOSE() - ON_COMMAND(IDC_BUTTON1, &CChannelManagerDlg::OnApply) - ON_COMMAND(IDC_BUTTON2, &CChannelManagerDlg::OnClose) - ON_COMMAND(IDC_BUTTON3, &CChannelManagerDlg::OnSelectAll) - ON_COMMAND(IDC_BUTTON4, &CChannelManagerDlg::OnInvert) - ON_COMMAND(IDC_BUTTON5, &CChannelManagerDlg::OnAction1) - ON_COMMAND(IDC_BUTTON6, &CChannelManagerDlg::OnAction2) - ON_COMMAND(IDC_BUTTON7, &CChannelManagerDlg::OnStore) - ON_COMMAND(IDC_BUTTON8, &CChannelManagerDlg::OnRestore) - ON_NOTIFY(TCN_SELCHANGE, IDC_TAB1, &CChannelManagerDlg::OnTabSelchange) - - ON_WM_LBUTTONDBLCLK() - ON_WM_RBUTTONDBLCLK() + ON_COMMAND(IDC_BUTTON1, &CChannelManagerDlg::OnApply) + ON_COMMAND(IDC_BUTTON2, &CChannelManagerDlg::OnClose) + ON_COMMAND(IDC_BUTTON3, &CChannelManagerDlg::OnSelectAll) + ON_COMMAND(IDC_BUTTON4, &CChannelManagerDlg::OnInvert) + ON_COMMAND(IDC_BUTTON5, &CChannelManagerDlg::OnAction1) + ON_COMMAND(IDC_BUTTON6, &CChannelManagerDlg::OnAction2) + ON_COMMAND(IDC_BUTTON7, &CChannelManagerDlg::OnStore) + ON_COMMAND(IDC_BUTTON8, &CChannelManagerDlg::OnRestore) + + ON_NOTIFY(TCN_SELCHANGE, IDC_TAB1, &CChannelManagerDlg::OnTabSelchange) + ON_NOTIFY_EX(TTN_NEEDTEXT, 0, &CChannelManagerDlg::OnToolTipText) + END_MESSAGE_MAP() CChannelManagerDlg * CChannelManagerDlg::sharedInstance_ = nullptr; @@ -166,10 +168,67 @@ m_buttonHeight = MulDiv(CM_BT_HEIGHT, Util::GetDPIy(m_hWnd), 96); ::ShowWindow(::GetDlgItem(m_hWnd, IDC_BUTTON1), SW_HIDE); + EnableToolTips(); return TRUE; } +INT_PTR CChannelManagerDlg::OnToolHitTest(CPoint point, TOOLINFO *pTI) const +{ + CRect rect; + pTI->hwnd = m_hWnd; + pTI->uId = ButtonHit(point, &rect); + pTI->rect = rect; + pTI->lpszText = LPSTR_TEXTCALLBACK; + if(pTI->uId == CHANNELINDEX_INVALID) + return -1; + return pTI->uId; +} + + +BOOL CChannelManagerDlg::OnToolTipText(UINT, NMHDR *pNMHDR, LRESULT *) +{ + TOOLTIPTEXT *pTTT = reinterpret_cast<TOOLTIPTEXT *>(pNMHDR); + if((pTTT->uFlags & TTF_IDISHWND) || !m_ModDoc || pNMHDR->idFrom >= m_states.size()) + return FALSE; + + CString text; + const CHANNELINDEX chn = m_states[pNMHDR->idFrom].sourceChn; + const auto &chnSettings = m_ModDoc->GetSoundFile().ChnSettings[chn]; + if(!chnSettings.szName.empty()) + text = MPT_CFORMAT("{}: {}")(chn + 1, mpt::ToWin(m_ModDoc->GetSoundFile().GetCharsetInternal(), chnSettings.szName)); + else + text = MPT_CFORMAT("Channel {}")(chn + 1); + + switch(m_currentTab) + { + case kSoloMute: + text += chnSettings.dwFlags[CHN_MUTE] ? _T(" (Muted)") : _T(" (Unmuted)"); + break; + case kRecordSelect: + switch(m_ModDoc->GetChannelRecordGroup(chn)) + { + case RecordGroup::NoGroup: text += _T(" (No Record Group)"); break; + case RecordGroup::Group1: text += _T(" (Record Group 1)"); break; + case RecordGroup::Group2: text += _T(" (Record Group 2)"); break; + } + break; + case kPluginState: + text += chnSettings.dwFlags[CHN_NOFX] ? _T(" (Plugins Bypassed)") : _T(" (Plugins Enabled)"); + break; + case kReorderRemove: + if(m_states[pNMHDR->idFrom].removed) + text += _T(" (Marked for Removal)"); + break; + case kNumTabs: + MPT_ASSERT_NOTREACHED(); + break; + } + mpt::String::WriteCStringBuf(pTTT->szText) = text; + return TRUE; +} + + void CChannelManagerDlg::OnApply() { if(!m_ModDoc) return; Modified: branches/OpenMPT-1.31/mptrack/ChannelManagerDlg.h ============================================================================== --- branches/OpenMPT-1.31/mptrack/ChannelManagerDlg.h Sun Dec 1 01:51:15 2024 (r22372) +++ branches/OpenMPT-1.31/mptrack/ChannelManagerDlg.h Sun Dec 1 02:12:11 2024 (r22373) @@ -88,8 +88,10 @@ //{{AFX_VIRTUAL(CChannelManagerDlg) BOOL OnInitDialog() override; + INT_PTR OnToolHitTest(CPoint point, TOOLINFO *pTI) const override; //}}AFX_VIRTUAL //{{AFX_MSG(CChannelManagerDlg) + afx_msg BOOL OnToolTipText(UINT, NMHDR *pNMHDR, LRESULT *); afx_msg void OnApply(); afx_msg void OnClose(); afx_msg void OnSelectAll(); Modified: branches/OpenMPT-1.31/mptrack/View_tre.cpp ============================================================================== --- branches/OpenMPT-1.31/mptrack/View_tre.cpp Sun Dec 1 01:51:15 2024 (r22372) +++ branches/OpenMPT-1.31/mptrack/View_tre.cpp Sun Dec 1 02:12:11 2024 (r22373) @@ -1792,7 +1792,8 @@ switch(modItem.type) { case MODITEM_HDR_SONG: - CTrackApp::OpenDirectory(GetDocumentFromItem(hItem)->GetPathNameMpt()); + if(const auto pathName = GetDocumentFromItem(hItem)->GetPathNameMpt(); !pathName.empty()) + CTrackApp::OpenDirectory(pathName); break; case MODITEM_INSLIB_SONG: theApp.OpenDocumentFile(InsLibGetFullPath(hItem).ToCString()); Modified: branches/OpenMPT-1.31/test/test.cpp ============================================================================== --- branches/OpenMPT-1.31/test/test.cpp Sun Dec 1 01:51:15 2024 (r22372) +++ branches/OpenMPT-1.31/test/test.cpp Sun Dec 1 02:12:11 2024 (r22373) @@ -2405,6 +2405,8 @@ VERIFY_EQUAL(mpt::RelativePathToAbsolute(P_("\\foo"), exePath), P_("C:\\foo")); VERIFY_EQUAL(mpt::AbsolutePathToRelative(P_("\\\\server\\path\\file"), exePath), P_("\\\\server\\path\\file")); VERIFY_EQUAL(mpt::RelativePathToAbsolute(P_("\\\\server\\path\\file"), exePath), P_("\\\\server\\path\\file")); + VERIFY_EQUAL(mpt::AbsolutePathToRelative(P_("C:\\OpenMPT"), mpt::PathString{}), P_("C:\\OpenMPT")); + VERIFY_EQUAL(mpt::RelativePathToAbsolute(P_("C:\\OpenMPT"), mpt::PathString{}), P_("C:\\OpenMPT")); #endif #ifdef MODPLUG_TRACKER |
From: <sv...@op...> - 2024-12-01 00:51:27
|
Author: sagamusix Date: Sun Dec 1 01:51:15 2024 New Revision: 22372 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22372 Log: [Fix] Compile fix for compilers without std::span. Modified: trunk/OpenMPT/soundlib/MIDIMacroParser.cpp trunk/OpenMPT/soundlib/MIDIMacroParser.h Modified: trunk/OpenMPT/soundlib/MIDIMacroParser.cpp ============================================================================== --- trunk/OpenMPT/soundlib/MIDIMacroParser.cpp Sun Dec 1 01:40:19 2024 (r22371) +++ trunk/OpenMPT/soundlib/MIDIMacroParser.cpp Sun Dec 1 01:51:15 2024 (r22372) @@ -91,7 +91,7 @@ } -MIDIMacroParser::MIDIMacroParser(const CSoundFile &sndFile, PlayState *playState, CHANNELINDEX nChn, bool isSmooth, const mpt::span<const char> macro, const mpt::span<uint8> out, uint8 param, PLUGINDEX plugin) +MIDIMacroParser::MIDIMacroParser(const CSoundFile &sndFile, PlayState *playState, CHANNELINDEX nChn, bool isSmooth, const mpt::span<const char> macro, mpt::span<uint8> out, uint8 param, PLUGINDEX plugin) : m_data{out} { // Need to be able to add potentially missing F7 (End Of SysEx) Modified: trunk/OpenMPT/soundlib/MIDIMacroParser.h ============================================================================== --- trunk/OpenMPT/soundlib/MIDIMacroParser.h Sun Dec 1 01:40:19 2024 (r22371) +++ trunk/OpenMPT/soundlib/MIDIMacroParser.h Sun Dec 1 01:51:15 2024 (r22372) @@ -23,7 +23,7 @@ { public: // Parse the given MIDI macro into the out span. out needs to be at least one byte longer than the input string to support the longest possible macro translation. - MIDIMacroParser(const CSoundFile &sndFile, PlayState *playState, CHANNELINDEX nChn, bool isSmooth, const mpt::span<const char> macro, const mpt::span<uint8> out, uint8 param = 0, PLUGINDEX plugin = 0); + MIDIMacroParser(const CSoundFile &sndFile, PlayState *playState, CHANNELINDEX nChn, bool isSmooth, const mpt::span<const char> macro, mpt::span<uint8> out, uint8 param = 0, PLUGINDEX plugin = 0); // Split a raw MIDI dump into multiple messages. Note that in order to support running status, NextMessage() may temporarily alter the provided data. // When the MIDIMacroParser destructor has run, the data will be back in its original state. MIDIMacroParser(mpt::span<uint8> data) : m_data{data} {} |
Author: sagamusix Date: Sun Dec 1 01:40:19 2024 New Revision: 22371 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22371 Log: [New] The MIDI I/O plugin can now send an initial MIDI dump on playback start. [New] The MIDI I/O plugin now has its own extended MIDI macro system: Automating parameters 100-999 (via PC events or, maybe a bit pointlessly, Zxx macros) sends MIDI macros that follow the same format as Zxx macros, but not limited in length. [New] The MIDI I/O plugin editor is now resizable. [Mod] OpenMPT: Version is now 1.32.00.34 Added: trunk/OpenMPT/soundlib/MIDIMacroParser.cpp - copied, changed from r22367, trunk/OpenMPT/soundlib/Snd_fx.cpp trunk/OpenMPT/soundlib/MIDIMacroParser.h (contents, props changed) Modified: trunk/OpenMPT/build/android_ndk/Android.mk trunk/OpenMPT/build/autotools/Makefile.am trunk/OpenMPT/build/vs2017winxp/OpenMPT-ANSI.vcxproj trunk/OpenMPT/build/vs2017winxp/OpenMPT-ANSI.vcxproj.filters trunk/OpenMPT/build/vs2017winxp/OpenMPT-UTF8.vcxproj trunk/OpenMPT/build/vs2017winxp/OpenMPT-UTF8.vcxproj.filters trunk/OpenMPT/build/vs2017winxp/OpenMPT.vcxproj trunk/OpenMPT/build/vs2017winxp/OpenMPT.vcxproj.filters trunk/OpenMPT/build/vs2017winxp/libopenmpt-small.vcxproj trunk/OpenMPT/build/vs2017winxp/libopenmpt-small.vcxproj.filters trunk/OpenMPT/build/vs2017winxp/libopenmpt.vcxproj trunk/OpenMPT/build/vs2017winxp/libopenmpt.vcxproj.filters trunk/OpenMPT/build/vs2017winxp/libopenmpt_test.vcxproj trunk/OpenMPT/build/vs2017winxp/libopenmpt_test.vcxproj.filters trunk/OpenMPT/build/vs2017winxpansi/OpenMPT-ANSI.vcxproj trunk/OpenMPT/build/vs2017winxpansi/OpenMPT-ANSI.vcxproj.filters trunk/OpenMPT/build/vs2017winxpansi/OpenMPT-UTF8.vcxproj trunk/OpenMPT/build/vs2017winxpansi/OpenMPT-UTF8.vcxproj.filters trunk/OpenMPT/build/vs2017winxpansi/OpenMPT.vcxproj trunk/OpenMPT/build/vs2017winxpansi/OpenMPT.vcxproj.filters trunk/OpenMPT/build/vs2017winxpansi/libopenmpt-small.vcxproj trunk/OpenMPT/build/vs2017winxpansi/libopenmpt-small.vcxproj.filters trunk/OpenMPT/build/vs2017winxpansi/libopenmpt.vcxproj trunk/OpenMPT/build/vs2017winxpansi/libopenmpt.vcxproj.filters trunk/OpenMPT/build/vs2017winxpansi/libopenmpt_test.vcxproj trunk/OpenMPT/build/vs2017winxpansi/libopenmpt_test.vcxproj.filters trunk/OpenMPT/build/vs2019win7/OpenMPT-ANSI.vcxproj trunk/OpenMPT/build/vs2019win7/OpenMPT-ANSI.vcxproj.filters trunk/OpenMPT/build/vs2019win7/OpenMPT-UTF8.vcxproj trunk/OpenMPT/build/vs2019win7/OpenMPT-UTF8.vcxproj.filters trunk/OpenMPT/build/vs2019win7/OpenMPT.vcxproj trunk/OpenMPT/build/vs2019win7/OpenMPT.vcxproj.filters trunk/OpenMPT/build/vs2019win7/libopenmpt-small.vcxproj trunk/OpenMPT/build/vs2019win7/libopenmpt-small.vcxproj.filters trunk/OpenMPT/build/vs2019win7/libopenmpt.vcxproj trunk/OpenMPT/build/vs2019win7/libopenmpt.vcxproj.filters trunk/OpenMPT/build/vs2019win7/libopenmpt_test.vcxproj trunk/OpenMPT/build/vs2019win7/libopenmpt_test.vcxproj.filters trunk/OpenMPT/build/vs2022win10/OpenMPT-ANSI.vcxproj trunk/OpenMPT/build/vs2022win10/OpenMPT-ANSI.vcxproj.filters trunk/OpenMPT/build/vs2022win10/OpenMPT-UTF8.vcxproj trunk/OpenMPT/build/vs2022win10/OpenMPT-UTF8.vcxproj.filters trunk/OpenMPT/build/vs2022win10/OpenMPT.vcxproj trunk/OpenMPT/build/vs2022win10/OpenMPT.vcxproj.filters trunk/OpenMPT/build/vs2022win10/libopenmpt-small.vcxproj trunk/OpenMPT/build/vs2022win10/libopenmpt-small.vcxproj.filters trunk/OpenMPT/build/vs2022win10/libopenmpt.vcxproj trunk/OpenMPT/build/vs2022win10/libopenmpt.vcxproj.filters trunk/OpenMPT/build/vs2022win10/libopenmpt_test.vcxproj trunk/OpenMPT/build/vs2022win10/libopenmpt_test.vcxproj.filters trunk/OpenMPT/build/vs2022win10clang/OpenMPT-ANSI.vcxproj trunk/OpenMPT/build/vs2022win10clang/OpenMPT-ANSI.vcxproj.filters trunk/OpenMPT/build/vs2022win10clang/OpenMPT-UTF8.vcxproj trunk/OpenMPT/build/vs2022win10clang/OpenMPT-UTF8.vcxproj.filters trunk/OpenMPT/build/vs2022win10clang/OpenMPT.vcxproj trunk/OpenMPT/build/vs2022win10clang/OpenMPT.vcxproj.filters trunk/OpenMPT/build/vs2022win10clang/libopenmpt-small.vcxproj trunk/OpenMPT/build/vs2022win10clang/libopenmpt-small.vcxproj.filters trunk/OpenMPT/build/vs2022win10clang/libopenmpt.vcxproj trunk/OpenMPT/build/vs2022win10clang/libopenmpt.vcxproj.filters trunk/OpenMPT/build/vs2022win10clang/libopenmpt_test.vcxproj trunk/OpenMPT/build/vs2022win10clang/libopenmpt_test.vcxproj.filters trunk/OpenMPT/build/vs2022win10uwp/libopenmpt-small.vcxproj trunk/OpenMPT/build/vs2022win10uwp/libopenmpt-small.vcxproj.filters trunk/OpenMPT/build/vs2022win10uwp/libopenmpt.vcxproj trunk/OpenMPT/build/vs2022win10uwp/libopenmpt.vcxproj.filters trunk/OpenMPT/build/vs2022win10uwp/libopenmpt_test.vcxproj trunk/OpenMPT/build/vs2022win10uwp/libopenmpt_test.vcxproj.filters trunk/OpenMPT/build/vs2022win7/OpenMPT-ANSI.vcxproj trunk/OpenMPT/build/vs2022win7/OpenMPT-ANSI.vcxproj.filters trunk/OpenMPT/build/vs2022win7/OpenMPT-UTF8.vcxproj trunk/OpenMPT/build/vs2022win7/OpenMPT-UTF8.vcxproj.filters trunk/OpenMPT/build/vs2022win7/OpenMPT.vcxproj trunk/OpenMPT/build/vs2022win7/OpenMPT.vcxproj.filters trunk/OpenMPT/build/vs2022win7/libopenmpt-small.vcxproj trunk/OpenMPT/build/vs2022win7/libopenmpt-small.vcxproj.filters trunk/OpenMPT/build/vs2022win7/libopenmpt.vcxproj trunk/OpenMPT/build/vs2022win7/libopenmpt.vcxproj.filters trunk/OpenMPT/build/vs2022win7/libopenmpt_test.vcxproj trunk/OpenMPT/build/vs2022win7/libopenmpt_test.vcxproj.filters trunk/OpenMPT/build/vs2022win8/OpenMPT-ANSI.vcxproj trunk/OpenMPT/build/vs2022win8/OpenMPT-ANSI.vcxproj.filters trunk/OpenMPT/build/vs2022win8/OpenMPT-UTF8.vcxproj trunk/OpenMPT/build/vs2022win8/OpenMPT-UTF8.vcxproj.filters trunk/OpenMPT/build/vs2022win8/OpenMPT.vcxproj trunk/OpenMPT/build/vs2022win8/OpenMPT.vcxproj.filters trunk/OpenMPT/build/vs2022win8/libopenmpt-small.vcxproj trunk/OpenMPT/build/vs2022win8/libopenmpt-small.vcxproj.filters trunk/OpenMPT/build/vs2022win8/libopenmpt.vcxproj trunk/OpenMPT/build/vs2022win8/libopenmpt.vcxproj.filters trunk/OpenMPT/build/vs2022win8/libopenmpt_test.vcxproj trunk/OpenMPT/build/vs2022win8/libopenmpt_test.vcxproj.filters trunk/OpenMPT/build/vs2022win81/OpenMPT-ANSI.vcxproj trunk/OpenMPT/build/vs2022win81/OpenMPT-ANSI.vcxproj.filters trunk/OpenMPT/build/vs2022win81/OpenMPT-UTF8.vcxproj trunk/OpenMPT/build/vs2022win81/OpenMPT-UTF8.vcxproj.filters trunk/OpenMPT/build/vs2022win81/OpenMPT.vcxproj trunk/OpenMPT/build/vs2022win81/OpenMPT.vcxproj.filters trunk/OpenMPT/build/vs2022win81/libopenmpt-small.vcxproj trunk/OpenMPT/build/vs2022win81/libopenmpt-small.vcxproj.filters trunk/OpenMPT/build/vs2022win81/libopenmpt.vcxproj trunk/OpenMPT/build/vs2022win81/libopenmpt.vcxproj.filters trunk/OpenMPT/build/vs2022win81/libopenmpt_test.vcxproj trunk/OpenMPT/build/vs2022win81/libopenmpt_test.vcxproj.filters trunk/OpenMPT/build/xcode-ios/libopenmpt.xcodeproj/project.pbxproj trunk/OpenMPT/build/xcode-macosx/libopenmpt.xcodeproj/project.pbxproj trunk/OpenMPT/common/versionNumber.h trunk/OpenMPT/mptrack/AbstractVstEditor.cpp trunk/OpenMPT/mptrack/AbstractVstEditor.h trunk/OpenMPT/mptrack/DefaultVstEditor.cpp trunk/OpenMPT/mptrack/DefaultVstEditor.h trunk/OpenMPT/mptrack/MIDIMacroDialog.cpp trunk/OpenMPT/mptrack/MIDIMacroDialog.h trunk/OpenMPT/mptrack/Mptrack.cpp trunk/OpenMPT/mptrack/Mptrack.h trunk/OpenMPT/mptrack/PluginComboBox.cpp trunk/OpenMPT/mptrack/View_gen.cpp trunk/OpenMPT/mptrack/View_pat.cpp trunk/OpenMPT/mptrack/Vstplug.cpp trunk/OpenMPT/mptrack/Vstplug.h trunk/OpenMPT/mptrack/mod2midi.cpp trunk/OpenMPT/mptrack/mptrack.rc trunk/OpenMPT/mptrack/plugins/MidiInOut.cpp trunk/OpenMPT/mptrack/plugins/MidiInOut.h trunk/OpenMPT/mptrack/plugins/MidiInOutEditor.cpp trunk/OpenMPT/mptrack/plugins/MidiInOutEditor.h trunk/OpenMPT/soundlib/Snd_fx.cpp trunk/OpenMPT/soundlib/Sndfile.h trunk/OpenMPT/soundlib/plugins/DigiBoosterEcho.cpp trunk/OpenMPT/soundlib/plugins/DigiBoosterEcho.h trunk/OpenMPT/soundlib/plugins/LFOPlugin.cpp trunk/OpenMPT/soundlib/plugins/LFOPlugin.h trunk/OpenMPT/soundlib/plugins/PlugInterface.h trunk/OpenMPT/soundlib/plugins/SymMODEcho.cpp trunk/OpenMPT/soundlib/plugins/SymMODEcho.h trunk/OpenMPT/soundlib/plugins/dmo/Chorus.cpp trunk/OpenMPT/soundlib/plugins/dmo/Chorus.h trunk/OpenMPT/soundlib/plugins/dmo/Compressor.cpp trunk/OpenMPT/soundlib/plugins/dmo/Compressor.h trunk/OpenMPT/soundlib/plugins/dmo/DMOPlugin.cpp trunk/OpenMPT/soundlib/plugins/dmo/DMOPlugin.h trunk/OpenMPT/soundlib/plugins/dmo/Distortion.cpp trunk/OpenMPT/soundlib/plugins/dmo/Distortion.h trunk/OpenMPT/soundlib/plugins/dmo/Echo.cpp trunk/OpenMPT/soundlib/plugins/dmo/Echo.h trunk/OpenMPT/soundlib/plugins/dmo/Flanger.cpp trunk/OpenMPT/soundlib/plugins/dmo/Flanger.h trunk/OpenMPT/soundlib/plugins/dmo/Gargle.cpp trunk/OpenMPT/soundlib/plugins/dmo/Gargle.h trunk/OpenMPT/soundlib/plugins/dmo/I3DL2Reverb.cpp trunk/OpenMPT/soundlib/plugins/dmo/I3DL2Reverb.h trunk/OpenMPT/soundlib/plugins/dmo/ParamEq.cpp trunk/OpenMPT/soundlib/plugins/dmo/ParamEq.h trunk/OpenMPT/soundlib/plugins/dmo/WavesReverb.cpp trunk/OpenMPT/soundlib/plugins/dmo/WavesReverb.h Modified: trunk/OpenMPT/build/android_ndk/Android.mk ============================================================================== --- trunk/OpenMPT/build/android_ndk/Android.mk Sun Dec 1 00:30:19 2024 (r22370) +++ trunk/OpenMPT/build/android_ndk/Android.mk Sun Dec 1 01:40:19 2024 (r22371) @@ -205,6 +205,7 @@ soundlib/Load_xmf.cpp \ soundlib/Message.cpp \ soundlib/MIDIEvents.cpp \ + soundlib/MIDIMacroParser.cpp \ soundlib/MIDIMacros.cpp \ soundlib/MixerLoops.cpp \ soundlib/MixerSettings.cpp \ Modified: trunk/OpenMPT/build/autotools/Makefile.am ============================================================================== --- trunk/OpenMPT/build/autotools/Makefile.am Sun Dec 1 00:30:19 2024 (r22370) +++ trunk/OpenMPT/build/autotools/Makefile.am Sun Dec 1 01:40:19 2024 (r22371) @@ -447,6 +447,8 @@ MPT_FILES_SOUNDLIB += soundlib/Message.h MPT_FILES_SOUNDLIB += soundlib/MIDIEvents.cpp MPT_FILES_SOUNDLIB += soundlib/MIDIEvents.h +MPT_FILES_SOUNDLIB += soundlib/MIDIMacroParser.cpp +MPT_FILES_SOUNDLIB += soundlib/MIDIMacroParser.h MPT_FILES_SOUNDLIB += soundlib/MIDIMacros.cpp MPT_FILES_SOUNDLIB += soundlib/MIDIMacros.h MPT_FILES_SOUNDLIB += soundlib/Mixer.h Modified: trunk/OpenMPT/build/vs2017winxp/OpenMPT-ANSI.vcxproj ============================================================================== --- trunk/OpenMPT/build/vs2017winxp/OpenMPT-ANSI.vcxproj Sun Dec 1 00:30:19 2024 (r22370) +++ trunk/OpenMPT/build/vs2017winxp/OpenMPT-ANSI.vcxproj Sun Dec 1 01:40:19 2024 (r22371) @@ -921,6 +921,7 @@ <ClInclude Include="..\..\soundlib\IntMixer.h" /> <ClInclude Include="..\..\soundlib\Loaders.h" /> <ClInclude Include="..\..\soundlib\MIDIEvents.h" /> + <ClInclude Include="..\..\soundlib\MIDIMacroParser.h" /> <ClInclude Include="..\..\soundlib\MIDIMacros.h" /> <ClInclude Include="..\..\soundlib\MODTools.h" /> <ClInclude Include="..\..\soundlib\MPEGFrame.h" /> @@ -1414,6 +1415,7 @@ <ClCompile Include="..\..\soundlib\Load_xm.cpp" /> <ClCompile Include="..\..\soundlib\Load_xmf.cpp" /> <ClCompile Include="..\..\soundlib\MIDIEvents.cpp" /> + <ClCompile Include="..\..\soundlib\MIDIMacroParser.cpp" /> <ClCompile Include="..\..\soundlib\MIDIMacros.cpp" /> <ClCompile Include="..\..\soundlib\MODTools.cpp" /> <ClCompile Include="..\..\soundlib\MPEGFrame.cpp" /> Modified: trunk/OpenMPT/build/vs2017winxp/OpenMPT-ANSI.vcxproj.filters ============================================================================== --- trunk/OpenMPT/build/vs2017winxp/OpenMPT-ANSI.vcxproj.filters Sun Dec 1 00:30:19 2024 (r22370) +++ trunk/OpenMPT/build/vs2017winxp/OpenMPT-ANSI.vcxproj.filters Sun Dec 1 01:40:19 2024 (r22371) @@ -726,6 +726,9 @@ <ClInclude Include="..\..\soundlib\MIDIEvents.h"> <Filter>soundlib</Filter> </ClInclude> + <ClInclude Include="..\..\soundlib\MIDIMacroParser.h"> + <Filter>soundlib</Filter> + </ClInclude> <ClInclude Include="..\..\soundlib\MIDIMacros.h"> <Filter>soundlib</Filter> </ClInclude> @@ -2201,6 +2204,9 @@ <ClCompile Include="..\..\soundlib\MIDIEvents.cpp"> <Filter>soundlib</Filter> </ClCompile> + <ClCompile Include="..\..\soundlib\MIDIMacroParser.cpp"> + <Filter>soundlib</Filter> + </ClCompile> <ClCompile Include="..\..\soundlib\MIDIMacros.cpp"> <Filter>soundlib</Filter> </ClCompile> Modified: trunk/OpenMPT/build/vs2017winxp/OpenMPT-UTF8.vcxproj ============================================================================== --- trunk/OpenMPT/build/vs2017winxp/OpenMPT-UTF8.vcxproj Sun Dec 1 00:30:19 2024 (r22370) +++ trunk/OpenMPT/build/vs2017winxp/OpenMPT-UTF8.vcxproj Sun Dec 1 01:40:19 2024 (r22371) @@ -921,6 +921,7 @@ <ClInclude Include="..\..\soundlib\IntMixer.h" /> <ClInclude Include="..\..\soundlib\Loaders.h" /> <ClInclude Include="..\..\soundlib\MIDIEvents.h" /> + <ClInclude Include="..\..\soundlib\MIDIMacroParser.h" /> <ClInclude Include="..\..\soundlib\MIDIMacros.h" /> <ClInclude Include="..\..\soundlib\MODTools.h" /> <ClInclude Include="..\..\soundlib\MPEGFrame.h" /> @@ -1414,6 +1415,7 @@ <ClCompile Include="..\..\soundlib\Load_xm.cpp" /> <ClCompile Include="..\..\soundlib\Load_xmf.cpp" /> <ClCompile Include="..\..\soundlib\MIDIEvents.cpp" /> + <ClCompile Include="..\..\soundlib\MIDIMacroParser.cpp" /> <ClCompile Include="..\..\soundlib\MIDIMacros.cpp" /> <ClCompile Include="..\..\soundlib\MODTools.cpp" /> <ClCompile Include="..\..\soundlib\MPEGFrame.cpp" /> Modified: trunk/OpenMPT/build/vs2017winxp/OpenMPT-UTF8.vcxproj.filters ============================================================================== --- trunk/OpenMPT/build/vs2017winxp/OpenMPT-UTF8.vcxproj.filters Sun Dec 1 00:30:19 2024 (r22370) +++ trunk/OpenMPT/build/vs2017winxp/OpenMPT-UTF8.vcxproj.filters Sun Dec 1 01:40:19 2024 (r22371) @@ -726,6 +726,9 @@ <ClInclude Include="..\..\soundlib\MIDIEvents.h"> <Filter>soundlib</Filter> </ClInclude> + <ClInclude Include="..\..\soundlib\MIDIMacroParser.h"> + <Filter>soundlib</Filter> + </ClInclude> <ClInclude Include="..\..\soundlib\MIDIMacros.h"> <Filter>soundlib</Filter> </ClInclude> @@ -2201,6 +2204,9 @@ <ClCompile Include="..\..\soundlib\MIDIEvents.cpp"> <Filter>soundlib</Filter> </ClCompile> + <ClCompile Include="..\..\soundlib\MIDIMacroParser.cpp"> + <Filter>soundlib</Filter> + </ClCompile> <ClCompile Include="..\..\soundlib\MIDIMacros.cpp"> <Filter>soundlib</Filter> </ClCompile> Modified: trunk/OpenMPT/build/vs2017winxp/OpenMPT.vcxproj ============================================================================== --- trunk/OpenMPT/build/vs2017winxp/OpenMPT.vcxproj Sun Dec 1 00:30:19 2024 (r22370) +++ trunk/OpenMPT/build/vs2017winxp/OpenMPT.vcxproj Sun Dec 1 01:40:19 2024 (r22371) @@ -921,6 +921,7 @@ <ClInclude Include="..\..\soundlib\IntMixer.h" /> <ClInclude Include="..\..\soundlib\Loaders.h" /> <ClInclude Include="..\..\soundlib\MIDIEvents.h" /> + <ClInclude Include="..\..\soundlib\MIDIMacroParser.h" /> <ClInclude Include="..\..\soundlib\MIDIMacros.h" /> <ClInclude Include="..\..\soundlib\MODTools.h" /> <ClInclude Include="..\..\soundlib\MPEGFrame.h" /> @@ -1414,6 +1415,7 @@ <ClCompile Include="..\..\soundlib\Load_xm.cpp" /> <ClCompile Include="..\..\soundlib\Load_xmf.cpp" /> <ClCompile Include="..\..\soundlib\MIDIEvents.cpp" /> + <ClCompile Include="..\..\soundlib\MIDIMacroParser.cpp" /> <ClCompile Include="..\..\soundlib\MIDIMacros.cpp" /> <ClCompile Include="..\..\soundlib\MODTools.cpp" /> <ClCompile Include="..\..\soundlib\MPEGFrame.cpp" /> Modified: trunk/OpenMPT/build/vs2017winxp/OpenMPT.vcxproj.filters ============================================================================== --- trunk/OpenMPT/build/vs2017winxp/OpenMPT.vcxproj.filters Sun Dec 1 00:30:19 2024 (r22370) +++ trunk/OpenMPT/build/vs2017winxp/OpenMPT.vcxproj.filters Sun Dec 1 01:40:19 2024 (r22371) @@ -726,6 +726,9 @@ <ClInclude Include="..\..\soundlib\MIDIEvents.h"> <Filter>soundlib</Filter> </ClInclude> + <ClInclude Include="..\..\soundlib\MIDIMacroParser.h"> + <Filter>soundlib</Filter> + </ClInclude> <ClInclude Include="..\..\soundlib\MIDIMacros.h"> <Filter>soundlib</Filter> </ClInclude> @@ -2201,6 +2204,9 @@ <ClCompile Include="..\..\soundlib\MIDIEvents.cpp"> <Filter>soundlib</Filter> </ClCompile> + <ClCompile Include="..\..\soundlib\MIDIMacroParser.cpp"> + <Filter>soundlib</Filter> + </ClCompile> <ClCompile Include="..\..\soundlib\MIDIMacros.cpp"> <Filter>soundlib</Filter> </ClCompile> Modified: trunk/OpenMPT/build/vs2017winxp/libopenmpt-small.vcxproj ============================================================================== --- trunk/OpenMPT/build/vs2017winxp/libopenmpt-small.vcxproj Sun Dec 1 00:30:19 2024 (r22370) +++ trunk/OpenMPT/build/vs2017winxp/libopenmpt-small.vcxproj Sun Dec 1 01:40:19 2024 (r22371) @@ -703,6 +703,7 @@ <ClInclude Include="..\..\soundlib\IntMixer.h" /> <ClInclude Include="..\..\soundlib\Loaders.h" /> <ClInclude Include="..\..\soundlib\MIDIEvents.h" /> + <ClInclude Include="..\..\soundlib\MIDIMacroParser.h" /> <ClInclude Include="..\..\soundlib\MIDIMacros.h" /> <ClInclude Include="..\..\soundlib\MODTools.h" /> <ClInclude Include="..\..\soundlib\MPEGFrame.h" /> @@ -1038,6 +1039,7 @@ <ClCompile Include="..\..\soundlib\Load_xm.cpp" /> <ClCompile Include="..\..\soundlib\Load_xmf.cpp" /> <ClCompile Include="..\..\soundlib\MIDIEvents.cpp" /> + <ClCompile Include="..\..\soundlib\MIDIMacroParser.cpp" /> <ClCompile Include="..\..\soundlib\MIDIMacros.cpp" /> <ClCompile Include="..\..\soundlib\MODTools.cpp" /> <ClCompile Include="..\..\soundlib\MPEGFrame.cpp" /> Modified: trunk/OpenMPT/build/vs2017winxp/libopenmpt-small.vcxproj.filters ============================================================================== --- trunk/OpenMPT/build/vs2017winxp/libopenmpt-small.vcxproj.filters Sun Dec 1 00:30:19 2024 (r22370) +++ trunk/OpenMPT/build/vs2017winxp/libopenmpt-small.vcxproj.filters Sun Dec 1 01:40:19 2024 (r22371) @@ -348,6 +348,9 @@ <ClInclude Include="..\..\soundlib\MIDIEvents.h"> <Filter>soundlib</Filter> </ClInclude> + <ClInclude Include="..\..\soundlib\MIDIMacroParser.h"> + <Filter>soundlib</Filter> + </ClInclude> <ClInclude Include="..\..\soundlib\MIDIMacros.h"> <Filter>soundlib</Filter> </ClInclude> @@ -1349,6 +1352,9 @@ <ClCompile Include="..\..\soundlib\MIDIEvents.cpp"> <Filter>soundlib</Filter> </ClCompile> + <ClCompile Include="..\..\soundlib\MIDIMacroParser.cpp"> + <Filter>soundlib</Filter> + </ClCompile> <ClCompile Include="..\..\soundlib\MIDIMacros.cpp"> <Filter>soundlib</Filter> </ClCompile> Modified: trunk/OpenMPT/build/vs2017winxp/libopenmpt.vcxproj ============================================================================== --- trunk/OpenMPT/build/vs2017winxp/libopenmpt.vcxproj Sun Dec 1 00:30:19 2024 (r22370) +++ trunk/OpenMPT/build/vs2017winxp/libopenmpt.vcxproj Sun Dec 1 01:40:19 2024 (r22371) @@ -703,6 +703,7 @@ <ClInclude Include="..\..\soundlib\IntMixer.h" /> <ClInclude Include="..\..\soundlib\Loaders.h" /> <ClInclude Include="..\..\soundlib\MIDIEvents.h" /> + <ClInclude Include="..\..\soundlib\MIDIMacroParser.h" /> <ClInclude Include="..\..\soundlib\MIDIMacros.h" /> <ClInclude Include="..\..\soundlib\MODTools.h" /> <ClInclude Include="..\..\soundlib\MPEGFrame.h" /> @@ -1038,6 +1039,7 @@ <ClCompile Include="..\..\soundlib\Load_xm.cpp" /> <ClCompile Include="..\..\soundlib\Load_xmf.cpp" /> <ClCompile Include="..\..\soundlib\MIDIEvents.cpp" /> + <ClCompile Include="..\..\soundlib\MIDIMacroParser.cpp" /> <ClCompile Include="..\..\soundlib\MIDIMacros.cpp" /> <ClCompile Include="..\..\soundlib\MODTools.cpp" /> <ClCompile Include="..\..\soundlib\MPEGFrame.cpp" /> Modified: trunk/OpenMPT/build/vs2017winxp/libopenmpt.vcxproj.filters ============================================================================== --- trunk/OpenMPT/build/vs2017winxp/libopenmpt.vcxproj.filters Sun Dec 1 00:30:19 2024 (r22370) +++ trunk/OpenMPT/build/vs2017winxp/libopenmpt.vcxproj.filters Sun Dec 1 01:40:19 2024 (r22371) @@ -348,6 +348,9 @@ <ClInclude Include="..\..\soundlib\MIDIEvents.h"> <Filter>soundlib</Filter> </ClInclude> + <ClInclude Include="..\..\soundlib\MIDIMacroParser.h"> + <Filter>soundlib</Filter> + </ClInclude> <ClInclude Include="..\..\soundlib\MIDIMacros.h"> <Filter>soundlib</Filter> </ClInclude> @@ -1349,6 +1352,9 @@ <ClCompile Include="..\..\soundlib\MIDIEvents.cpp"> <Filter>soundlib</Filter> </ClCompile> + <ClCompile Include="..\..\soundlib\MIDIMacroParser.cpp"> + <Filter>soundlib</Filter> + </ClCompile> <ClCompile Include="..\..\soundlib\MIDIMacros.cpp"> <Filter>soundlib</Filter> </ClCompile> Modified: trunk/OpenMPT/build/vs2017winxp/libopenmpt_test.vcxproj ============================================================================== --- trunk/OpenMPT/build/vs2017winxp/libopenmpt_test.vcxproj Sun Dec 1 00:30:19 2024 (r22370) +++ trunk/OpenMPT/build/vs2017winxp/libopenmpt_test.vcxproj Sun Dec 1 01:40:19 2024 (r22371) @@ -733,6 +733,7 @@ <ClInclude Include="..\..\soundlib\IntMixer.h" /> <ClInclude Include="..\..\soundlib\Loaders.h" /> <ClInclude Include="..\..\soundlib\MIDIEvents.h" /> + <ClInclude Include="..\..\soundlib\MIDIMacroParser.h" /> <ClInclude Include="..\..\soundlib\MIDIMacros.h" /> <ClInclude Include="..\..\soundlib\MODTools.h" /> <ClInclude Include="..\..\soundlib\MPEGFrame.h" /> @@ -1080,6 +1081,7 @@ <ClCompile Include="..\..\soundlib\Load_xm.cpp" /> <ClCompile Include="..\..\soundlib\Load_xmf.cpp" /> <ClCompile Include="..\..\soundlib\MIDIEvents.cpp" /> + <ClCompile Include="..\..\soundlib\MIDIMacroParser.cpp" /> <ClCompile Include="..\..\soundlib\MIDIMacros.cpp" /> <ClCompile Include="..\..\soundlib\MODTools.cpp" /> <ClCompile Include="..\..\soundlib\MPEGFrame.cpp" /> Modified: trunk/OpenMPT/build/vs2017winxp/libopenmpt_test.vcxproj.filters ============================================================================== --- trunk/OpenMPT/build/vs2017winxp/libopenmpt_test.vcxproj.filters Sun Dec 1 00:30:19 2024 (r22370) +++ trunk/OpenMPT/build/vs2017winxp/libopenmpt_test.vcxproj.filters Sun Dec 1 01:40:19 2024 (r22371) @@ -366,6 +366,9 @@ <ClInclude Include="..\..\soundlib\MIDIEvents.h"> <Filter>soundlib</Filter> </ClInclude> + <ClInclude Include="..\..\soundlib\MIDIMacroParser.h"> + <Filter>soundlib</Filter> + </ClInclude> <ClInclude Include="..\..\soundlib\MIDIMacros.h"> <Filter>soundlib</Filter> </ClInclude> @@ -1403,6 +1406,9 @@ <ClCompile Include="..\..\soundlib\MIDIEvents.cpp"> <Filter>soundlib</Filter> </ClCompile> + <ClCompile Include="..\..\soundlib\MIDIMacroParser.cpp"> + <Filter>soundlib</Filter> + </ClCompile> <ClCompile Include="..\..\soundlib\MIDIMacros.cpp"> <Filter>soundlib</Filter> </ClCompile> Modified: trunk/OpenMPT/build/vs2017winxpansi/OpenMPT-ANSI.vcxproj ============================================================================== --- trunk/OpenMPT/build/vs2017winxpansi/OpenMPT-ANSI.vcxproj Sun Dec 1 00:30:19 2024 (r22370) +++ trunk/OpenMPT/build/vs2017winxpansi/OpenMPT-ANSI.vcxproj Sun Dec 1 01:40:19 2024 (r22371) @@ -921,6 +921,7 @@ <ClInclude Include="..\..\soundlib\IntMixer.h" /> <ClInclude Include="..\..\soundlib\Loaders.h" /> <ClInclude Include="..\..\soundlib\MIDIEvents.h" /> + <ClInclude Include="..\..\soundlib\MIDIMacroParser.h" /> <ClInclude Include="..\..\soundlib\MIDIMacros.h" /> <ClInclude Include="..\..\soundlib\MODTools.h" /> <ClInclude Include="..\..\soundlib\MPEGFrame.h" /> @@ -1414,6 +1415,7 @@ <ClCompile Include="..\..\soundlib\Load_xm.cpp" /> <ClCompile Include="..\..\soundlib\Load_xmf.cpp" /> <ClCompile Include="..\..\soundlib\MIDIEvents.cpp" /> + <ClCompile Include="..\..\soundlib\MIDIMacroParser.cpp" /> <ClCompile Include="..\..\soundlib\MIDIMacros.cpp" /> <ClCompile Include="..\..\soundlib\MODTools.cpp" /> <ClCompile Include="..\..\soundlib\MPEGFrame.cpp" /> Modified: trunk/OpenMPT/build/vs2017winxpansi/OpenMPT-ANSI.vcxproj.filters ============================================================================== --- trunk/OpenMPT/build/vs2017winxpansi/OpenMPT-ANSI.vcxproj.filters Sun Dec 1 00:30:19 2024 (r22370) +++ trunk/OpenMPT/build/vs2017winxpansi/OpenMPT-ANSI.vcxproj.filters Sun Dec 1 01:40:19 2024 (r22371) @@ -726,6 +726,9 @@ <ClInclude Include="..\..\soundlib\MIDIEvents.h"> <Filter>soundlib</Filter> </ClInclude> + <ClInclude Include="..\..\soundlib\MIDIMacroParser.h"> + <Filter>soundlib</Filter> + </ClInclude> <ClInclude Include="..\..\soundlib\MIDIMacros.h"> <Filter>soundlib</Filter> </ClInclude> @@ -2201,6 +2204,9 @@ <ClCompile Include="..\..\soundlib\MIDIEvents.cpp"> <Filter>soundlib</Filter> </ClCompile> + <ClCompile Include="..\..\soundlib\MIDIMacroParser.cpp"> + <Filter>soundlib</Filter> + </ClCompile> <ClCompile Include="..\..\soundlib\MIDIMacros.cpp"> <Filter>soundlib</Filter> </ClCompile> Modified: trunk/OpenMPT/build/vs2017winxpansi/OpenMPT-UTF8.vcxproj ============================================================================== --- trunk/OpenMPT/build/vs2017winxpansi/OpenMPT-UTF8.vcxproj Sun Dec 1 00:30:19 2024 (r22370) +++ trunk/OpenMPT/build/vs2017winxpansi/OpenMPT-UTF8.vcxproj Sun Dec 1 01:40:19 2024 (r22371) @@ -921,6 +921,7 @@ <ClInclude Include="..\..\soundlib\IntMixer.h" /> <ClInclude Include="..\..\soundlib\Loaders.h" /> <ClInclude Include="..\..\soundlib\MIDIEvents.h" /> + <ClInclude Include="..\..\soundlib\MIDIMacroParser.h" /> <ClInclude Include="..\..\soundlib\MIDIMacros.h" /> <ClInclude Include="..\..\soundlib\MODTools.h" /> <ClInclude Include="..\..\soundlib\MPEGFrame.h" /> @@ -1414,6 +1415,7 @@ <ClCompile Include="..\..\soundlib\Load_xm.cpp" /> <ClCompile Include="..\..\soundlib\Load_xmf.cpp" /> <ClCompile Include="..\..\soundlib\MIDIEvents.cpp" /> + <ClCompile Include="..\..\soundlib\MIDIMacroParser.cpp" /> <ClCompile Include="..\..\soundlib\MIDIMacros.cpp" /> <ClCompile Include="..\..\soundlib\MODTools.cpp" /> <ClCompile Include="..\..\soundlib\MPEGFrame.cpp" /> Modified: trunk/OpenMPT/build/vs2017winxpansi/OpenMPT-UTF8.vcxproj.filters ============================================================================== --- trunk/OpenMPT/build/vs2017winxpansi/OpenMPT-UTF8.vcxproj.filters Sun Dec 1 00:30:19 2024 (r22370) +++ trunk/OpenMPT/build/vs2017winxpansi/OpenMPT-UTF8.vcxproj.filters Sun Dec 1 01:40:19 2024 (r22371) @@ -726,6 +726,9 @@ <ClInclude Include="..\..\soundlib\MIDIEvents.h"> <Filter>soundlib</Filter> </ClInclude> + <ClInclude Include="..\..\soundlib\MIDIMacroParser.h"> + <Filter>soundlib</Filter> + </ClInclude> <ClInclude Include="..\..\soundlib\MIDIMacros.h"> <Filter>soundlib</Filter> </ClInclude> @@ -2201,6 +2204,9 @@ <ClCompile Include="..\..\soundlib\MIDIEvents.cpp"> <Filter>soundlib</Filter> </ClCompile> + <ClCompile Include="..\..\soundlib\MIDIMacroParser.cpp"> + <Filter>soundlib</Filter> + </ClCompile> <ClCompile Include="..\..\soundlib\MIDIMacros.cpp"> <Filter>soundlib</Filter> </ClCompile> Modified: trunk/OpenMPT/build/vs2017winxpansi/OpenMPT.vcxproj ============================================================================== --- trunk/OpenMPT/build/vs2017winxpansi/OpenMPT.vcxproj Sun Dec 1 00:30:19 2024 (r22370) +++ trunk/OpenMPT/build/vs2017winxpansi/OpenMPT.vcxproj Sun Dec 1 01:40:19 2024 (r22371) @@ -921,6 +921,7 @@ <ClInclude Include="..\..\soundlib\IntMixer.h" /> <ClInclude Include="..\..\soundlib\Loaders.h" /> <ClInclude Include="..\..\soundlib\MIDIEvents.h" /> + <ClInclude Include="..\..\soundlib\MIDIMacroParser.h" /> <ClInclude Include="..\..\soundlib\MIDIMacros.h" /> <ClInclude Include="..\..\soundlib\MODTools.h" /> <ClInclude Include="..\..\soundlib\MPEGFrame.h" /> @@ -1414,6 +1415,7 @@ <ClCompile Include="..\..\soundlib\Load_xm.cpp" /> <ClCompile Include="..\..\soundlib\Load_xmf.cpp" /> <ClCompile Include="..\..\soundlib\MIDIEvents.cpp" /> + <ClCompile Include="..\..\soundlib\MIDIMacroParser.cpp" /> <ClCompile Include="..\..\soundlib\MIDIMacros.cpp" /> <ClCompile Include="..\..\soundlib\MODTools.cpp" /> <ClCompile Include="..\..\soundlib\MPEGFrame.cpp" /> Modified: trunk/OpenMPT/build/vs2017winxpansi/OpenMPT.vcxproj.filters ============================================================================== --- trunk/OpenMPT/build/vs2017winxpansi/OpenMPT.vcxproj.filters Sun Dec 1 00:30:19 2024 (r22370) +++ trunk/OpenMPT/build/vs2017winxpansi/OpenMPT.vcxproj.filters Sun Dec 1 01:40:19 2024 (r22371) @@ -726,6 +726,9 @@ <ClInclude Include="..\..\soundlib\MIDIEvents.h"> <Filter>soundlib</Filter> </ClInclude> + <ClInclude Include="..\..\soundlib\MIDIMacroParser.h"> + <Filter>soundlib</Filter> + </ClInclude> <ClInclude Include="..\..\soundlib\MIDIMacros.h"> <Filter>soundlib</Filter> </ClInclude> @@ -2201,6 +2204,9 @@ <ClCompile Include="..\..\soundlib\MIDIEvents.cpp"> <Filter>soundlib</Filter> </ClCompile> + <ClCompile Include="..\..\soundlib\MIDIMacroParser.cpp"> + <Filter>soundlib</Filter> + </ClCompile> <ClCompile Include="..\..\soundlib\MIDIMacros.cpp"> <Filter>soundlib</Filter> </ClCompile> Modified: trunk/OpenMPT/build/vs2017winxpansi/libopenmpt-small.vcxproj ============================================================================== --- trunk/OpenMPT/build/vs2017winxpansi/libopenmpt-small.vcxproj Sun Dec 1 00:30:19 2024 (r22370) +++ trunk/OpenMPT/build/vs2017winxpansi/libopenmpt-small.vcxproj Sun Dec 1 01:40:19 2024 (r22371) @@ -703,6 +703,7 @@ <ClInclude Include="..\..\soundlib\IntMixer.h" /> <ClInclude Include="..\..\soundlib\Loaders.h" /> <ClInclude Include="..\..\soundlib\MIDIEvents.h" /> + <ClInclude Include="..\..\soundlib\MIDIMacroParser.h" /> <ClInclude Include="..\..\soundlib\MIDIMacros.h" /> <ClInclude Include="..\..\soundlib\MODTools.h" /> <ClInclude Include="..\..\soundlib\MPEGFrame.h" /> @@ -1038,6 +1039,7 @@ <ClCompile Include="..\..\soundlib\Load_xm.cpp" /> <ClCompile Include="..\..\soundlib\Load_xmf.cpp" /> <ClCompile Include="..\..\soundlib\MIDIEvents.cpp" /> + <ClCompile Include="..\..\soundlib\MIDIMacroParser.cpp" /> <ClCompile Include="..\..\soundlib\MIDIMacros.cpp" /> <ClCompile Include="..\..\soundlib\MODTools.cpp" /> <ClCompile Include="..\..\soundlib\MPEGFrame.cpp" /> Modified: trunk/OpenMPT/build/vs2017winxpansi/libopenmpt-small.vcxproj.filters ============================================================================== --- trunk/OpenMPT/build/vs2017winxpansi/libopenmpt-small.vcxproj.filters Sun Dec 1 00:30:19 2024 (r22370) +++ trunk/OpenMPT/build/vs2017winxpansi/libopenmpt-small.vcxproj.filters Sun Dec 1 01:40:19 2024 (r22371) @@ -348,6 +348,9 @@ <ClInclude Include="..\..\soundlib\MIDIEvents.h"> <Filter>soundlib</Filter> </ClInclude> + <ClInclude Include="..\..\soundlib\MIDIMacroParser.h"> + <Filter>soundlib</Filter> + </ClInclude> <ClInclude Include="..\..\soundlib\MIDIMacros.h"> <Filter>soundlib</Filter> </ClInclude> @@ -1349,6 +1352,9 @@ <ClCompile Include="..\..\soundlib\MIDIEvents.cpp"> <Filter>soundlib</Filter> </ClCompile> + <ClCompile Include="..\..\soundlib\MIDIMacroParser.cpp"> + <Filter>soundlib</Filter> + </ClCompile> <ClCompile Include="..\..\soundlib\MIDIMacros.cpp"> <Filter>soundlib</Filter> </ClCompile> Modified: trunk/OpenMPT/build/vs2017winxpansi/libopenmpt.vcxproj ============================================================================== --- trunk/OpenMPT/build/vs2017winxpansi/libopenmpt.vcxproj Sun Dec 1 00:30:19 2024 (r22370) +++ trunk/OpenMPT/build/vs2017winxpansi/libopenmpt.vcxproj Sun Dec 1 01:40:19 2024 (r22371) @@ -703,6 +703,7 @@ <ClInclude Include="..\..\soundlib\IntMixer.h" /> <ClInclude Include="..\..\soundlib\Loaders.h" /> <ClInclude Include="..\..\soundlib\MIDIEvents.h" /> + <ClInclude Include="..\..\soundlib\MIDIMacroParser.h" /> <ClInclude Include="..\..\soundlib\MIDIMacros.h" /> <ClInclude Include="..\..\soundlib\MODTools.h" /> <ClInclude Include="..\..\soundlib\MPEGFrame.h" /> @@ -1038,6 +1039,7 @@ <ClCompile Include="..\..\soundlib\Load_xm.cpp" /> <ClCompile Include="..\..\soundlib\Load_xmf.cpp" /> <ClCompile Include="..\..\soundlib\MIDIEvents.cpp" /> + <ClCompile Include="..\..\soundlib\MIDIMacroParser.cpp" /> <ClCompile Include="..\..\soundlib\MIDIMacros.cpp" /> <ClCompile Include="..\..\soundlib\MODTools.cpp" /> <ClCompile Include="..\..\soundlib\MPEGFrame.cpp" /> Modified: trunk/OpenMPT/build/vs2017winxpansi/libopenmpt.vcxproj.filters ============================================================================== --- trunk/OpenMPT/build/vs2017winxpansi/libopenmpt.vcxproj.filters Sun Dec 1 00:30:19 2024 (r22370) +++ trunk/OpenMPT/build/vs2017winxpansi/libopenmpt.vcxproj.filters Sun Dec 1 01:40:19 2024 (r22371) @@ -348,6 +348,9 @@ <ClInclude Include="..\..\soundlib\MIDIEvents.h"> <Filter>soundlib</Filter> </ClInclude> + <ClInclude Include="..\..\soundlib\MIDIMacroParser.h"> + <Filter>soundlib</Filter> + </ClInclude> <ClInclude Include="..\..\soundlib\MIDIMacros.h"> <Filter>soundlib</Filter> </ClInclude> @@ -1349,6 +1352,9 @@ <ClCompile Include="..\..\soundlib\MIDIEvents.cpp"> <Filter>soundlib</Filter> </ClCompile> + <ClCompile Include="..\..\soundlib\MIDIMacroParser.cpp"> + <Filter>soundlib</Filter> + </ClCompile> <ClCompile Include="..\..\soundlib\MIDIMacros.cpp"> <Filter>soundlib</Filter> </ClCompile> Modified: trunk/OpenMPT/build/vs2017winxpansi/libopenmpt_test.vcxproj ============================================================================== --- trunk/OpenMPT/build/vs2017winxpansi/libopenmpt_test.vcxproj Sun Dec 1 00:30:19 2024 (r22370) +++ trunk/OpenMPT/build/vs2017winxpansi/libopenmpt_test.vcxproj Sun Dec 1 01:40:19 2024 (r22371) @@ -733,6 +733,7 @@ <ClInclude Include="..\..\soundlib\IntMixer.h" /> <ClInclude Include="..\..\soundlib\Loaders.h" /> <ClInclude Include="..\..\soundlib\MIDIEvents.h" /> + <ClInclude Include="..\..\soundlib\MIDIMacroParser.h" /> <ClInclude Include="..\..\soundlib\MIDIMacros.h" /> <ClInclude Include="..\..\soundlib\MODTools.h" /> <ClInclude Include="..\..\soundlib\MPEGFrame.h" /> @@ -1080,6 +1081,7 @@ <ClCompile Include="..\..\soundlib\Load_xm.cpp" /> <ClCompile Include="..\..\soundlib\Load_xmf.cpp" /> <ClCompile Include="..\..\soundlib\MIDIEvents.cpp" /> + <ClCompile Include="..\..\soundlib\MIDIMacroParser.cpp" /> <ClCompile Include="..\..\soundlib\MIDIMacros.cpp" /> <ClCompile Include="..\..\soundlib\MODTools.cpp" /> <ClCompile Include="..\..\soundlib\MPEGFrame.cpp" /> Modified: trunk/OpenMPT/build/vs2017winxpansi/libopenmpt_test.vcxproj.filters ============================================================================== --- trunk/OpenMPT/build/vs2017winxpansi/libopenmpt_test.vcxproj.filters Sun Dec 1 00:30:19 2024 (r22370) +++ trunk/OpenMPT/build/vs2017winxpansi/libopenmpt_test.vcxproj.filters Sun Dec 1 01:40:19 2024 (r22371) @@ -366,6 +366,9 @@ <ClInclude Include="..\..\soundlib\MIDIEvents.h"> <Filter>soundlib</Filter> </ClInclude> + <ClInclude Include="..\..\soundlib\MIDIMacroParser.h"> + <Filter>soundlib</Filter> + </ClInclude> <ClInclude Include="..\..\soundlib\MIDIMacros.h"> <Filter>soundlib</Filter> </ClInclude> @@ -1403,6 +1406,9 @@ <ClCompile Include="..\..\soundlib\MIDIEvents.cpp"> <Filter>soundlib</Filter> </ClCompile> + <ClCompile Include="..\..\soundlib\MIDIMacroParser.cpp"> + <Filter>soundlib</Filter> + </ClCompile> <ClCompile Include="..\..\soundlib\MIDIMacros.cpp"> <Filter>soundlib</Filter> </ClCompile> Modified: trunk/OpenMPT/build/vs2019win7/OpenMPT-ANSI.vcxproj ============================================================================== --- trunk/OpenMPT/build/vs2019win7/OpenMPT-ANSI.vcxproj Sun Dec 1 00:30:19 2024 (r22370) +++ trunk/OpenMPT/build/vs2019win7/OpenMPT-ANSI.vcxproj Sun Dec 1 01:40:19 2024 (r22371) @@ -940,6 +940,7 @@ <ClInclude Include="..\..\soundlib\IntMixer.h" /> <ClInclude Include="..\..\soundlib\Loaders.h" /> <ClInclude Include="..\..\soundlib\MIDIEvents.h" /> + <ClInclude Include="..\..\soundlib\MIDIMacroParser.h" /> <ClInclude Include="..\..\soundlib\MIDIMacros.h" /> <ClInclude Include="..\..\soundlib\MODTools.h" /> <ClInclude Include="..\..\soundlib\MPEGFrame.h" /> @@ -1433,6 +1434,7 @@ <ClCompile Include="..\..\soundlib\Load_xm.cpp" /> <ClCompile Include="..\..\soundlib\Load_xmf.cpp" /> <ClCompile Include="..\..\soundlib\MIDIEvents.cpp" /> + <ClCompile Include="..\..\soundlib\MIDIMacroParser.cpp" /> <ClCompile Include="..\..\soundlib\MIDIMacros.cpp" /> <ClCompile Include="..\..\soundlib\MODTools.cpp" /> <ClCompile Include="..\..\soundlib\MPEGFrame.cpp" /> Modified: trunk/OpenMPT/build/vs2019win7/OpenMPT-ANSI.vcxproj.filters ============================================================================== --- trunk/OpenMPT/build/vs2019win7/OpenMPT-ANSI.vcxproj.filters Sun Dec 1 00:30:19 2024 (r22370) +++ trunk/OpenMPT/build/vs2019win7/OpenMPT-ANSI.vcxproj.filters Sun Dec 1 01:40:19 2024 (r22371) @@ -768,6 +768,9 @@ <ClInclude Include="..\..\soundlib\MIDIEvents.h"> <Filter>soundlib</Filter> </ClInclude> + <ClInclude Include="..\..\soundlib\MIDIMacroParser.h"> + <Filter>soundlib</Filter> + </ClInclude> <ClInclude Include="..\..\soundlib\MIDIMacros.h"> <Filter>soundlib</Filter> </ClInclude> @@ -2243,6 +2246,9 @@ <ClCompile Include="..\..\soundlib\MIDIEvents.cpp"> <Filter>soundlib</Filter> </ClCompile> + <ClCompile Include="..\..\soundlib\MIDIMacroParser.cpp"> + <Filter>soundlib</Filter> + </ClCompile> <ClCompile Include="..\..\soundlib\MIDIMacros.cpp"> <Filter>soundlib</Filter> </ClCompile> Modified: trunk/OpenMPT/build/vs2019win7/OpenMPT-UTF8.vcxproj ============================================================================== --- trunk/OpenMPT/build/vs2019win7/OpenMPT-UTF8.vcxproj Sun Dec 1 00:30:19 2024 (r22370) +++ trunk/OpenMPT/build/vs2019win7/OpenMPT-UTF8.vcxproj Sun Dec 1 01:40:19 2024 (r22371) @@ -940,6 +940,7 @@ <ClInclude Include="..\..\soundlib\IntMixer.h" /> <ClInclude Include="..\..\soundlib\Loaders.h" /> <ClInclude Include="..\..\soundlib\MIDIEvents.h" /> + <ClInclude Include="..\..\soundlib\MIDIMacroParser.h" /> <ClInclude Include="..\..\soundlib\MIDIMacros.h" /> <ClInclude Include="..\..\soundlib\MODTools.h" /> <ClInclude Include="..\..\soundlib\MPEGFrame.h" /> @@ -1433,6 +1434,7 @@ <ClCompile Include="..\..\soundlib\Load_xm.cpp" /> <ClCompile Include="..\..\soundlib\Load_xmf.cpp" /> <ClCompile Include="..\..\soundlib\MIDIEvents.cpp" /> + <ClCompile Include="..\..\soundlib\MIDIMacroParser.cpp" /> <ClCompile Include="..\..\soundlib\MIDIMacros.cpp" /> <ClCompile Include="..\..\soundlib\MODTools.cpp" /> <ClCompile Include="..\..\soundlib\MPEGFrame.cpp" /> Modified: trunk/OpenMPT/build/vs2019win7/OpenMPT-UTF8.vcxproj.filters ============================================================================== --- trunk/OpenMPT/build/vs2019win7/OpenMPT-UTF8.vcxproj.filters Sun Dec 1 00:30:19 2024 (r22370) +++ trunk/OpenMPT/build/vs2019win7/OpenMPT-UTF8.vcxproj.filters Sun Dec 1 01:40:19 2024 (r22371) @@ -768,6 +768,9 @@ <ClInclude Include="..\..\soundlib\MIDIEvents.h"> <Filter>soundlib</Filter> </ClInclude> + <ClInclude Include="..\..\soundlib\MIDIMacroParser.h"> + <Filter>soundlib</Filter> + </ClInclude> <ClInclude Include="..\..\soundlib\MIDIMacros.h"> <Filter>soundlib</Filter> </ClInclude> @@ -2243,6 +2246,9 @@ <ClCompile Include="..\..\soundlib\MIDIEvents.cpp"> <Filter>soundlib</Filter> </ClCompile> + <ClCompile Include="..\..\soundlib\MIDIMacroParser.cpp"> + <Filter>soundlib</Filter> + </ClCompile> <ClCompile Include="..\..\soundlib\MIDIMacros.cpp"> <Filter>soundlib</Filter> </ClCompile> Modified: trunk/OpenMPT/build/vs2019win7/OpenMPT.vcxproj ============================================================================== --- trunk/OpenMPT/build/vs2019win7/OpenMPT.vcxproj Sun Dec 1 00:30:19 2024 (r22370) +++ trunk/OpenMPT/build/vs2019win7/OpenMPT.vcxproj Sun Dec 1 01:40:19 2024 (r22371) @@ -940,6 +940,7 @@ <ClInclude Include="..\..\soundlib\IntMixer.h" /> <ClInclude Include="..\..\soundlib\Loaders.h" /> <ClInclude Include="..\..\soundlib\MIDIEvents.h" /> + <ClInclude Include="..\..\soundlib\MIDIMacroParser.h" /> <ClInclude Include="..\..\soundlib\MIDIMacros.h" /> <ClInclude Include="..\..\soundlib\MODTools.h" /> <ClInclude Include="..\..\soundlib\MPEGFrame.h" /> @@ -1433,6 +1434,7 @@ <ClCompile Include="..\..\soundlib\Load_xm.cpp" /> <ClCompile Include="..\..\soundlib\Load_xmf.cpp" /> <ClCompile Include="..\..\soundlib\MIDIEvents.cpp" /> + <ClCompile Include="..\..\soundlib\MIDIMacroParser.cpp" /> <ClCompile Include="..\..\soundlib\MIDIMacros.cpp" /> <ClCompile Include="..\..\soundlib\MODTools.cpp" /> <ClCompile Include="..\..\soundlib\MPEGFrame.cpp" /> Modified: trunk/OpenMPT/build/vs2019win7/OpenMPT.vcxproj.filters ============================================================================== --- trunk/OpenMPT/build/vs2019win7/OpenMPT.vcxproj.filters Sun Dec 1 00:30:19 2024 (r22370) +++ trunk/OpenMPT/build/vs2019win7/OpenMPT.vcxproj.filters Sun Dec 1 01:40:19 2024 (r22371) @@ -768,6 +768,9 @@ <ClInclude Include="..\..\soundlib\MIDIEvents.h"> <Filter>soundlib</Filter> </ClInclude> + <ClInclude Include="..\..\soundlib\MIDIMacroParser.h"> + <Filter>soundlib</Filter> + </ClInclude> <ClInclude Include="..\..\soundlib\MIDIMacros.h"> <Filter>soundlib</Filter> </ClInclude> @@ -2243,6 +2246,9 @@ <ClCompile Include="..\..\soundlib\MIDIEvents.cpp"> <Filter>soundlib</Filter> </ClCompile> + <ClCompile Include="..\..\soundlib\MIDIMacroParser.cpp"> + <Filter>soundlib</Filter> + </ClCompile> <ClCompile Include="..\..\soundlib\MIDIMacros.cpp"> <Filter>soundlib</Filter> </ClCompile> Modified: trunk/OpenMPT/build/vs2019win7/libopenmpt-small.vcxproj ============================================================================== --- trunk/OpenMPT/build/vs2019win7/libopenmpt-small.vcxproj Sun Dec 1 00:30:19 2024 (r22370) +++ trunk/OpenMPT/build/vs2019win7/libopenmpt-small.vcxproj Sun Dec 1 01:40:19 2024 (r22371) @@ -700,6 +700,7 @@ <ClInclude Include="..\..\soundlib\IntMixer.h" /> <ClInclude Include="..\..\soundlib\Loaders.h" /> <ClInclude Include="..\..\soundlib\MIDIEvents.h" /> + <ClInclude Include="..\..\soundlib\MIDIMacroParser.h" /> <ClInclude Include="..\..\soundlib\MIDIMacros.h" /> <ClInclude Include="..\..\soundlib\MODTools.h" /> <ClInclude Include="..\..\soundlib\MPEGFrame.h" /> @@ -1035,6 +1036,7 @@ <ClCompile Include="..\..\soundlib\Load_xm.cpp" /> <ClCompile Include="..\..\soundlib\Load_xmf.cpp" /> <ClCompile Include="..\..\soundlib\MIDIEvents.cpp" /> + <ClCompile Include="..\..\soundlib\MIDIMacroParser.cpp" /> <ClCompile Include="..\..\soundlib\MIDIMacros.cpp" /> <ClCompile Include="..\..\soundlib\MODTools.cpp" /> <ClCompile Include="..\..\soundlib\MPEGFrame.cpp" /> Modified: trunk/OpenMPT/build/vs2019win7/libopenmpt-small.vcxproj.filters ============================================================================== --- trunk/OpenMPT/build/vs2019win7/libopenmpt-small.vcxproj.filters Sun Dec 1 00:30:19 2024 (r22370) +++ trunk/OpenMPT/build/vs2019win7/libopenmpt-small.vcxproj.filters Sun Dec 1 01:40:19 2024 (r22371) @@ -348,6 +348,9 @@ <ClInclude Include="..\..\soundlib\MIDIEvents.h"> <Filter>soundlib</Filter> </ClInclude> + <ClInclude Include="..\..\soundlib\MIDIMacroParser.h"> + <Filter>soundlib</Filter> + </ClInclude> <ClInclude Include="..\..\soundlib\MIDIMacros.h"> <Filter>soundlib</Filter> </ClInclude> @@ -1349,6 +1352,9 @@ <ClCompile Include="..\..\soundlib\MIDIEvents.cpp"> <Filter>soundlib</Filter> </ClCompile> + <ClCompile Include="..\..\soundlib\MIDIMacroParser.cpp"> + <Filter>soundlib</Filter> + </ClCompile> <ClCompile Include="..\..\soundlib\MIDIMacros.cpp"> <Filter>soundlib</Filter> </ClCompile> Modified: trunk/OpenMPT/build/vs2019win7/libopenmpt.vcxproj ============================================================================== --- trunk/OpenMPT/build/vs2019win7/libopenmpt.vcxproj Sun Dec 1 00:30:19 2024 (r22370) +++ trunk/OpenMPT/build/vs2019win7/libopenmpt.vcxproj Sun Dec 1 01:40:19 2024 (r22371) @@ -700,6 +700,7 @@ <ClInclude Include="..\..\soundlib\IntMixer.h" /> <ClInclude Include="..\..\soundlib\Loaders.h" /> <ClInclude Include="..\..\soundlib\MIDIEvents.h" /> + <ClInclude Include="..\..\soundlib\MIDIMacroParser.h" /> <ClInclude Include="..\..\soundlib\MIDIMacros.h" /> <ClInclude Include="..\..\soundlib\MODTools.h" /> <ClInclude Include="..\..\soundlib\MPEGFrame.h" /> @@ -1035,6 +1036,7 @@ <ClCompile Include="..\..\soundlib\Load_xm.cpp" /> <ClCompile Include="..\..\soundlib\Load_xmf.cpp" /> <ClCompile Include="..\..\soundlib\MIDIEvents.cpp" /> + <ClCompile Include="..\..\soundlib\MIDIMacroParser.cpp" /> <ClCompile Include="..\..\soundlib\MIDIMacros.cpp" /> <ClCompile Include="..\..\soundlib\MODTools.cpp" /> <ClCompile Include="..\..\soundlib\MPEGFrame.cpp" /> Modified: trunk/OpenMPT/build/vs2019win7/libopenmpt.vcxproj.filters ============================================================================== --- trunk/OpenMPT/build/vs2019win7/libopenmpt.vcxproj.filters Sun Dec 1 00:30:19 2024 (r22370) +++ trunk/OpenMPT/build/vs2019win7/libopenmpt.vcxproj.filters Sun Dec 1 01:40:19 2024 (r22371) @@ -348,6 +348,9 @@ <ClInclude Include="..\..\soundlib\MIDIEvents.h"> <Filter>soundlib</Filter> </ClInclude> + <ClInclude Include="..\..\soundlib\MIDIMacroParser.h"> + <Filter>soundlib</Filter> + </ClInclude> <ClInclude Include="..\..\soundlib\MIDIMacros.h"> <Filter>soundlib</Filter> </ClInclude> @@ -1349,6 +1352,9 @@ <ClCompile Include="..\..\soundlib\MIDIEvents.cpp"> <Filter>soundlib</Filter> </ClCompile> + <ClCompile Include="..\..\soundlib\MIDIMacroParser.cpp"> + <Filter>soundlib</Filter> + </ClCompile> <ClCompile Include="..\..\soundlib\MIDIMacros.cpp"> <Filter>soundlib</Filter> </ClCompile> Modified: trunk/OpenMPT/build/vs2019win7/libopenmpt_test.vcxproj ============================================================================== --- trunk/OpenMPT/build/vs2019win7/libopenmpt_test.vcxproj Sun Dec 1 00:30:19 2024 (r22370) +++ trunk/OpenMPT/build/vs2019win7/libopenmpt_test.vcxproj Sun Dec 1 01:40:19 2024 (r22371) @@ -730,6 +730,7 @@ <ClInclude Include="..\..\soundlib\IntMixer.h" /> <ClInclude Include="..\..\soundlib\Loaders.h" /> <ClInclude Include="..\..\soundlib\MIDIEvents.h" /> + <ClInclude Include="..\..\soundlib\MIDIMacroParser.h" /> <ClInclude Include="..\..\soundlib\MIDIMacros.h" /> <ClInclude Include="..\..\soundlib\MODTools.h" /> <ClInclude Include="..\..\soundlib\MPEGFrame.h" /> @@ -1077,6 +1078,7 @@ <ClCompile Include="..\..\soundlib\Load_xm.cpp" /> <ClCompile Include="..\..\soundlib\Load_xmf.cpp" /> <ClCompile Include="..\..\soundlib\MIDIEvents.cpp" /> + <ClCompile Include="..\..\soundlib\MIDIMacroParser.cpp" /> <ClCompile Include="..\..\soundlib\MIDIMacros.cpp" /> <ClCompile Include="..\..\soundlib\MODTools.cpp" /> <ClCompile Include="..\..\soundlib\MPEGFrame.cpp" /> Modified: trunk/OpenMPT/build/vs2019win7/libopenmpt_test.vcxproj.filters ============================================================================== --- trunk/OpenMPT/build/vs2019win7/libopenmpt_test.vcxproj.filters Sun Dec 1 00:30:19 2024 (r22370) +++ trunk/OpenMPT/build/vs2019win7/libopenmpt_test.vcxproj.filters Sun Dec 1 01:40:19 2024 (r22371) @@ -372,6 +372,9 @@ <ClInclude Include="..\..\soundlib\MIDIEvents.h"> <Filter>soundlib</Filter> </ClInclude> + <ClInclude Include="..\..\soundlib\MIDIMacroParser.h"> + <Filter>soundlib</Filter> + </ClInclude> <ClInclude Include="..\..\soundlib\MIDIMacros.h"> <Filter>soundlib</Filter> </ClInclude> @@ -1409,6 +1412,9 @@ <ClCompile Include="..\..\soundlib\MIDIEvents.cpp"> <Filter>soundlib</Filter> </ClCompile> + <ClCompile Include="..\..\soundlib\MIDIMacroParser.cpp"> + <Filter>soundlib</Filter> + </ClCompile> <ClCompile Include="..\..\soundlib\MIDIMacros.cpp"> <Filter>soundlib</Filter> </ClCompile> Modified: trunk/OpenMPT/build/vs2022win10/OpenMPT-ANSI.vcxproj ============================================================================== --- trunk/OpenMPT/build/vs2022win10/OpenMPT-ANSI.vcxproj Sun Dec 1 00:30:19 2024 (r22370) +++ trunk/OpenMPT/build/vs2022win10/OpenMPT-ANSI.vcxproj Sun Dec 1 01:40:19 2024 (r22371) @@ -2142,6 +2142,7 @@ <ClInclude Include="..\..\soundlib\IntMixer.h" /> <ClInclude Include="..\..\soundlib\Loaders.h" /> <ClInclude Include="..\..\soundlib\MIDIEvents.h" /> + <ClInclude Include="..\..\soundlib\MIDIMacroParser.h" /> <ClInclude Include="..\..\soundlib\MIDIMacros.h" /> <ClInclude Include="..\..\soundlib\MODTools.h" /> <ClInclude Include="..\..\soundlib\MPEGFrame.h" /> @@ -2635,6 +2636,7 @@ <ClCompile Include="..\..\soundlib\Load_xm.cpp" /> <ClCompile Include="..\..\soundlib\Load_xmf.cpp" /> <ClCompile Include="..\..\soundlib\MIDIEvents.cpp" /> + <ClCompile Include="..\..\soundlib\MIDIMacroParser.cpp" /> <ClCompile Include="..\..\soundlib\MIDIMacros.cpp" /> <ClCompile Include="..\..\soundlib\MODTools.cpp" /> <ClCompile Include="..\..\soundlib\MPEGFrame.cpp" /> Modified: trunk/OpenMPT/build/vs2022win10/OpenMPT-ANSI.vcxproj.filters ============================================================================== --- trunk/OpenMPT/build/vs2022win10/OpenMPT-ANSI.vcxproj.filters Sun Dec 1 00:30:19 2024 (r22370) +++ trunk/OpenMPT/build/vs2022win10/OpenMPT-ANSI.vcxproj.filters Sun Dec 1 01:40:19 2024 (r22371) @@ -768,6 +768,9 @@ <ClInclude Include="..\..\soundlib\MIDIEvents.h"> <Filter>soundlib</Filter> </ClInclude> + <ClInclude Include="..\..\soundlib\MIDIMacroParser.h"> + <Filter>soundlib</Filter> + </ClInclude> <ClInclude Include="..\..\soundlib\MIDIMacros.h"> <Filter>soundlib</Filter> </ClInclude> @@ -2243,6 +2246,9 @@ <ClCompile Include="..\..\soundlib\MIDIEvents.cpp"> <Filter>soundlib</Filter> </ClCompile> + <ClCompile Include="..\..\soundlib\MIDIMacroParser.cpp"> + <Filter>soundlib</Filter> + </ClCompile> <ClCompile Include="..\..\soundlib\MIDIMacros.cpp"> <Filter>soundlib</Filter> </ClCompile> Modified: trunk/OpenMPT/build/vs2022win10/OpenMPT-UTF8.vcxproj ============================================================================== --- trunk/OpenMPT/build/vs2022win10/OpenMPT-UTF8.vcxproj Sun Dec 1 00:30:19 2024 (r22370) +++ trunk/OpenMPT/build/vs2022win10/OpenMPT-UTF8.vcxproj Sun Dec 1 01:40:19 2024 (r22371) @@ -2142,6 +2142,7 @@ <ClInclude Include="..\..\soundlib\IntMixer.h" /> <ClInclude Include="..\..\soundlib\Loaders.h" /> <ClInclude Include="..\..\soundlib\MIDIEvents.h" /> + <ClInclude Include="..\..\soundlib\MIDIMacroParser.h" /> <ClInclude Include="..\..\soundlib\MIDIMacros.h" /> <ClInclude Include="..\..\soundlib\MODTools.h" /> <ClInclude Include="..\..\soundlib\MPEGFrame.h" /> @@ -2635,6 +2636,7 @@ <ClCompile Include="..\..\soundlib\Load_xm.cpp" /> <ClCompile Include="..\..\soundlib\Load_xmf.cpp" /> <ClCompile Include="..\..\soundlib\MIDIEvents.cpp" /> + <ClCompile Include="..\..\soundlib\MIDIMacroParser.cpp" /> <ClCompile Include="..\..\soundlib\MIDIMacros.cpp" /> <ClCompile Include="..\..\soundlib\MODTools.cpp" /> <ClCompile Include="..\..\soundlib\MPEGFrame.cpp" /> Modified: trunk/OpenMPT/build/vs2022win10/OpenMPT-UTF8.vcxproj.filters ============================================================================== --- trunk/OpenMPT/build/vs2022win10/OpenMPT-UTF8.vcxproj.filters Sun Dec 1 00:30:19 2024 (r22370) +++ trunk/OpenMPT/build/vs2022win10/OpenMPT-UTF8.vcxproj.filters Sun Dec 1 01:40:19 2024 (r22371) @@ -768,6 +768,9 @@ <ClInclude Include="..\..\soundlib\MIDIEvents.h"> <Filter>soundlib</Filter> </ClInclude> + <ClInclude Include="..\..\soundlib\MIDIMacroParser.h"> + <Filter>soundlib</Filter> + </ClInclude> <ClInclude Include="..\..\soundlib\MIDIMacros.h"> <Filter>soundlib</Filter> </ClInclude> @@ -2243,6 +2246,9 @@ <ClCompile Include="..\..\soundlib\MIDIEvents.cpp"> <Filter>soundlib</Filter> </ClCompile> + <ClCompile Include="..\..\soundlib\MIDIMacroParser.cpp"> + <Filter>soundlib</Filter> + </ClCompile> <ClCompile Include="..\..\soundlib\MIDIMacros.cpp"> <Filter>soundlib</Filter> </ClCompile> Modified: trunk/OpenMPT/build/vs2022win10/OpenMPT.vcxproj ============================================================================== --- trunk/OpenMPT/build/vs2022win10/OpenMPT.vcxproj Sun Dec 1 00:30:19 2024 (r22370) +++ trunk/OpenMPT/build/vs2022win10/OpenMPT.vcxproj Sun Dec 1 01:40:19 2024 (r22371) @@ -2142,6 +2142,7 @@ <ClInclude Include="..\..\soundlib\IntMixer.h" /> <ClInclude Include="..\..\soundlib\Loaders.h" /> <ClInclude Include="..\..\soundlib\MIDIEvents.h" /> + <ClInclude Include="..\..\soundlib\MIDIMacroParser.h" /> <ClInclude Include="..\..\soundlib\MIDIMacros.h" /> <ClInclude Include="..\..\soundlib\MODTools.h" /> <ClInclude Include="..\..\soundlib\MPEGFrame.h" /> @@ -2635,6 +2636,7 @@ <ClCompile Include="..\..\soundlib\Load_xm.cpp" /> <ClCompile Include="..\..\soundlib\Load_xmf.cpp" /> <ClCompile Include="..\..\soundlib\MIDIEvents.cpp" /> + <ClCompile Include="..\..\soundlib\MIDIMacroParser.cpp" /> <ClCompile Include="..\..\soundlib\MIDIMacros.cpp" /> <ClCompile Include="..\..\soundlib\MODTools.cpp" /> <ClCompile Include="..\..\soundlib\MPEGFrame.cpp" /> Modified: trunk/OpenMPT/build/vs2022win10/OpenMPT.vcxproj.filters ============================================================================== --- trunk/OpenMPT/build/vs2022win10/OpenMPT.vcxproj.filters Sun Dec 1 00:30:19 2024 (r22370) +++ trunk/OpenMPT/build/vs2022win10/OpenMPT.vcxproj.filters Sun Dec 1 01:40:19 2024 (r22371) @@ -768,6 +768,9 @@ <ClInclude Include="..\..\soundlib\MIDIEvents.h"> <Filter>soundlib</Filter> </ClInclude> + <ClInclude Include="..\..\soundlib\MIDIMacroParser.h"> + <Filter>soundlib</Filter> + </ClInclude> <ClInclude Include="..\..\soundlib\MIDIMacros.h"> <Filter>soundlib</Filter> </ClInclude> @@ -2243,6 +2246,9 @@ <ClCompile Include="..\..\soundlib\MIDIEvents.cpp"> <Filter>soundlib</Filter> </ClCompile> + <ClCompile Include="..\..\soundlib\MIDIMacroParser.cpp"> + <Filter>soundlib</Filter> + </ClCompile> <ClCompile Include="..\..\soundlib\MIDIMacros.cpp"> <Filter>soundlib</Filter> </ClCompile> Modified: trunk/OpenMPT/build/vs2022win10/libopenmpt-small.vcxproj ============================================================================== --- trunk/OpenMPT/build/vs2022win10/libopenmpt-small.vcxproj Sun Dec 1 00:30:19 2024 (r22370) +++ trunk/OpenMPT/build/vs2022win10/libopenmpt-small.vcxproj Sun Dec 1 01:40:19 2024 (r22371) @@ -1713,6 +1713,7 @@ <ClInclude Include="..\..\soundlib\IntMixer.h" /> <ClInclude Include="..\..\soundlib\Loaders.h" /> <ClInclude Include="..\..\soundlib\MIDIEvents.h" /> + <ClInclude Include="..\..\soundlib\MIDIMacroParser.h" /> <ClInclude Include="..\..\soundlib\MIDIMacros.h" /> <ClInclude Include="..\..\soundlib\MODTools.h" /> <ClInclude Include="..\..\soundlib\MPEGFrame.h" /> @@ -2048,6 +2049,7 @@ <ClCompile Include="..\..\soundlib\Load_xm.cpp" /> <ClCompile Include="..\..\soundlib\Load_xmf.cpp" /> <ClCompile Include="..\..\soundlib\MIDIEvents.cpp" /> + <ClCompile Include="..\..\soundlib\MIDIMacroParser.cpp" /> <ClCompile Include="..\..\soundlib\MIDIMacros.cpp" /> <ClCompile Include="..\..\soundlib\MODTools.cpp" /> <ClCompile Include="..\..\soundlib\MPEGFrame.cpp" /> Modified: trunk/OpenMPT/build/vs2022win10/libopenmpt-small.vcxproj.filters ============================================================================== --- trunk/OpenMPT/build/vs2022win10/libopenmpt-small.vcxproj.filters Sun Dec 1 00:30:19 2024 (r22370) +++ trunk/OpenMPT/build/vs2022win10/libopenmpt-small.vcxproj.filters Sun Dec 1 01:40:19 2024 (r22371) @@ -348,6 +348,9 @@ <ClInclude Include="..\..\soundlib\MIDIEvents.h"> <Filter>soundlib</Filter> </ClInclude> + <ClInclude Include="..\..\soundlib\MIDIMacroParser.h"> + <Filter>soundlib</Filter> + </ClInclude> <ClInclude Include="..\..\soundlib\MIDIMacros.h"> <Filter>soundlib</Filter> </ClInclude> @@ -1349,6 +1352,9 @@ <ClCompile Include="..\..\soundlib\MIDIEvents.cpp"> <Filter>soundlib</Filter> </ClCompile> + <ClCompile Include="..\..\soundlib\MIDIMacroParser.cpp"> + <Filter>soundlib</Filter> + </ClCompile> <ClCompile Include="..\..\soundlib\MIDIMacros.cpp"> <Filter>soundlib</Filter> </ClCompile> Modified: trunk/OpenMPT/build/vs2022win10/libopenmpt.vcxproj ============================================================================== --- trunk/OpenMPT/build/vs2022win10/libopenmpt.vcxproj Sun Dec 1 00:30:19 2024 (r22370) +++ trunk/OpenMPT/build/vs2022win10/libopenmpt.vcxproj Sun Dec 1 01:40:19 2024 (r22371) @@ -1713,6 +1713,7 @@ <ClInclude Include="..\..\soundlib\IntMixer.h" /> <ClInclude Include="..\..\soundlib\Loaders.h" /> <ClInclude Include="..\..\soundlib\MIDIEvents.h" /> + <ClInclude Include="..\..\soundlib\MIDIMacroParser.h" /> <ClInclude Include="..\..\soundlib\MIDIMacros.h" /> <ClInclude Include="..\..\soundlib\MODTools.h" /> <ClInclude Include="..\..\soundlib\MPEGFrame.h" /> @@ -2048,6 +2049,7 @@ <ClCompile Include="..\..\soundlib\Load_xm.cpp" /> <ClCompile Include="..\..\soundlib\Load_xmf.cpp" /> <ClCompile Include="..\..\soundlib\MIDIEvents.cpp" /> + <ClCompile Include="..\..\soundlib\MIDIMacroParser.cpp" /> <ClCompile Include="..\..\soundlib\MIDIMacros.cpp" /> <ClCompile Include="..\..\soundlib\MODTools.cpp" /> <ClCompile Include="..\..\soundlib\MPEGFrame.cpp" /> Modified... [truncated message content] |
From: <sv...@op...> - 2024-11-30 23:30:31
|
Author: sagamusix Date: Sun Dec 1 00:30:19 2024 New Revision: 22370 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22370 Log: [Mod] Enable key hold for a few more default shortcuts. Modified: trunk/OpenMPT/mptrack/DefaultKeyBindings.h Modified: trunk/OpenMPT/mptrack/DefaultKeyBindings.h ============================================================================== --- trunk/OpenMPT/mptrack/DefaultKeyBindings.h Sat Nov 30 23:54:08 2024 (r22369) +++ trunk/OpenMPT/mptrack/DefaultKeyBindings.h Sun Dec 1 00:30:19 2024 (r22370) @@ -46,19 +46,19 @@ {kcPlayPatternFromStart, VK_F7, ModNone, kKeyEventDown, MPT_V("1.31")}, {kcPlayPatternFromCursor, VK_F7, ModCtrl, kKeyEventDown, MPT_V("1.31")}, {kcMidiRecord, VK_F9, ModNone, kKeyEventDown, MPT_V("1.31")}, - {kcEditUndo, 'Z', ModCtrl, kKeyEventDown, MPT_V("1.31")}, - {kcEditRedo, 'Y', ModCtrl, kKeyEventDown, MPT_V("1.31")}, - {kcEditRedo, 'Z', ModShift | ModCtrl, kKeyEventDown, MPT_V("1.32.00.25")}, + {kcEditUndo, 'Z', ModCtrl, kKeyEventDown | kKeyEventRepeat, MPT_V("1.31")}, + {kcEditRedo, 'Y', ModCtrl, kKeyEventDown | kKeyEventRepeat, MPT_V("1.31")}, + {kcEditRedo, 'Z', ModShift | ModCtrl, kKeyEventDown | kKeyEventRepeat, MPT_V("1.32.00.25")}, {kcEditCut, 'X', ModCtrl, kKeyEventDown, MPT_V("1.31")}, {kcEditCopy, 'C', ModCtrl, kKeyEventDown, MPT_V("1.31")}, {kcEditPaste, 'V', ModCtrl, kKeyEventDown, MPT_V("1.31")}, {kcEditPaste, VK_INSERT, ModShift, kKeyEventDown, MPT_V("1.31")}, {kcEditMixPaste, 'V', ModShift | ModCtrl, kKeyEventDown, MPT_V("1.31")}, {kcEditPasteFlood, 'V', ModShift, kKeyEventDown | kKeyEventRepeat, MPT_V("1.31")}, - {kcEditPushForwardPaste, 'V', ModCtrl | ModAlt, kKeyEventDown, MPT_V("1.31")}, + {kcEditPushForwardPaste, 'V', ModCtrl | ModAlt, kKeyEventDown | kKeyEventRepeat, MPT_V("1.31")}, {kcEditSelectAll, '5', ModCtrl, kKeyEventDown, MPT_V("1.31")}, {kcEditFind, 'F', ModCtrl, kKeyEventDown, MPT_V("1.31")}, - {kcEditFindNext, VK_F3, ModNone, kKeyEventDown, MPT_V("1.31")}, + {kcEditFindNext, VK_F3, ModNone, kKeyEventDown | kKeyEventRepeat, MPT_V("1.31")}, {kcViewGeneral, 'G', ModAlt, kKeyEventDown, MPT_V("1.31")}, {kcViewPattern, 'P', ModAlt, kKeyEventDown, MPT_V("1.31")}, {kcViewSamples, 'S', ModAlt, kKeyEventDown, MPT_V("1.31")}, @@ -76,8 +76,8 @@ {kcPrevInstrument, VK_UP, ModCtrl, kKeyEventDown | kKeyEventRepeat, MPT_V("1.31")}, {kcNextInstrument, VK_MULTIPLY, ModCtrl, kKeyEventDown | kKeyEventRepeat, MPT_V("1.31")}, {kcNextInstrument, VK_DOWN, ModCtrl, kKeyEventDown | kKeyEventRepeat, MPT_V("1.31")}, - {kcPrevOctave, VK_DIVIDE, ModNone, kKeyEventDown, MPT_V("1.31")}, - {kcNextOctave, VK_MULTIPLY, ModNone, kKeyEventDown, MPT_V("1.31")}, + {kcPrevOctave, VK_DIVIDE, ModNone, kKeyEventDown | kKeyEventRepeat, MPT_V("1.31")}, + {kcNextOctave, VK_MULTIPLY, ModNone, kKeyEventDown | kKeyEventRepeat, MPT_V("1.31")}, {kcPrevOrder, VK_LEFT, ModCtrl, kKeyEventDown | kKeyEventRepeat, MPT_V("1.31")}, {kcNextOrder, VK_RIGHT, ModCtrl, kKeyEventDown | kKeyEventRepeat, MPT_V("1.31")}, {kcPatternJumpDownh1, VK_NEXT, ModNone, kKeyEventDown | kKeyEventRepeat, MPT_V("1.31")}, |
From: <sv...@op...> - 2024-11-30 22:54:15
|
Author: sagamusix Date: Sat Nov 30 23:54:08 2024 New Revision: 22369 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22369 Log: [Fix] Should have checked if that last-minute change actually compiles... Modified: trunk/OpenMPT/soundlib/plugins/PlugInterface.cpp Modified: trunk/OpenMPT/soundlib/plugins/PlugInterface.cpp ============================================================================== --- trunk/OpenMPT/soundlib/plugins/PlugInterface.cpp Sat Nov 30 23:52:26 2024 (r22368) +++ trunk/OpenMPT/soundlib/plugins/PlugInterface.cpp Sat Nov 30 23:54:08 2024 (r22369) @@ -382,7 +382,7 @@ { std::array<std::byte, 4> midiData; memcpy(midiData.data(), &midiCode, 4); - return MidiSend(mpt::as_span(midiData.data(), std::min(midiData.size(), MIDIEvents::GetEventLength(mpt::byte_cast<uint8>(midiData[0]))))); + return MidiSend(mpt::as_span(midiData.data(), std::min(static_cast<uint8>(midiData.size()), MIDIEvents::GetEventLength(mpt::byte_cast<uint8>(midiData[0]))))); } |
From: <sv...@op...> - 2024-11-30 22:52:39
|
Author: sagamusix Date: Sat Nov 30 23:52:26 2024 New Revision: 22368 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22368 Log: [Ref] Do not distinguish between SysEx and non-SysEx MIDI messages in the IMixPlugin interface. Modified: trunk/OpenMPT/mptrack/Vstplug.cpp trunk/OpenMPT/mptrack/Vstplug.h trunk/OpenMPT/mptrack/mod2midi.cpp trunk/OpenMPT/mptrack/plugins/MidiInOut.cpp trunk/OpenMPT/mptrack/plugins/MidiInOut.h trunk/OpenMPT/soundlib/Snd_fx.cpp trunk/OpenMPT/soundlib/plugins/LFOPlugin.cpp trunk/OpenMPT/soundlib/plugins/LFOPlugin.h trunk/OpenMPT/soundlib/plugins/PlugInterface.cpp trunk/OpenMPT/soundlib/plugins/PlugInterface.h Modified: trunk/OpenMPT/mptrack/Vstplug.cpp ============================================================================== --- trunk/OpenMPT/mptrack/Vstplug.cpp Sat Nov 30 21:41:34 2024 (r22367) +++ trunk/OpenMPT/mptrack/Vstplug.cpp Sat Nov 30 23:52:26 2024 (r22368) @@ -1485,7 +1485,7 @@ } else if(ev->type == kVstSysExType) { auto event = static_cast<const VstMidiSysexEvent *>(ev); - plugin->MidiSysexSend(mpt::as_span(mpt::byte_cast<const std::byte *>(event->sysexDump), event->dumpBytes)); + plugin->MidiSend(mpt::as_span(mpt::byte_cast<const std::byte *>(event->sysexDump), event->dumpBytes)); } } } @@ -1596,40 +1596,39 @@ } -bool CVstPlugin::MidiSend(uint32 dwMidiCode) +bool CVstPlugin::MidiSend(mpt::const_byte_span midiData) { if(IsBypassed()) return true; - // Note-Offs go at the start of the queue (since OpenMPT 1.17). Needed for situations like this: - // ... ..|C-5 01 - // C-5 01|=== .. - // TODO: Should not be used with real-time notes! Letting the key go too quickly - // (e.g. while output device is being initialized) will cause the note to be stuck! - bool insertAtFront = (MIDIEvents::GetTypeFromEvent(dwMidiCode) == MIDIEvents::evNoteOff); - - VstMidiEvent event{}; - event.type = kVstMidiType; - event.byteSize = sizeof(event); - event.midiData = dwMidiCode; ResetSilence(); - return vstEvents.Enqueue(&event, insertAtFront); -} - - -bool CVstPlugin::MidiSysexSend(mpt::const_byte_span sysex) -{ - if(IsBypassed()) - return true; + const uint8 type = mpt::byte_cast<uint8>(midiData[0]); + if(type == 0xF0) + { + VstMidiSysexEvent event{}; + event.type = kVstSysExType; + event.byteSize = sizeof(event); + event.dumpBytes = mpt::saturate_cast<int32>(midiData.size()); + event.sysexDump = midiData.data(); // We will make our own copy in VstEventQueue::Enqueue - VstMidiSysexEvent event{}; - event.type = kVstSysExType; - event.byteSize = sizeof(event); - event.dumpBytes = mpt::saturate_cast<int32>(sysex.size()); - event.sysexDump = sysex.data(); // We will make our own copy in VstEventQueue::Enqueue + return vstEvents.Enqueue(&event); + } else + { + // Note-Offs go at the start of the queue (since OpenMPT 1.17). Needed for situations like this: + // ... ..|C-5 01 + // C-5 01|=== .. + // TODO: Should not be used with real-time notes! Letting the key go too quickly + // (e.g. while output device is being initialized) will cause the note to be stuck! + bool insertAtFront = (MIDIEvents::GetTypeFromEvent(type) == MIDIEvents::evNoteOff); + + VstMidiEvent event{}; + event.type = kVstMidiType; + event.byteSize = sizeof(event); + MPT_ASSERT(midiData.size() <= sizeof(event.midiData) && midiData.size() == MIDIEvents::GetEventLength(type)); + memcpy(&event.midiData, midiData.data(), std::min(sizeof(event.midiData), midiData.size())); - ResetSilence(); - return vstEvents.Enqueue(&event); + return vstEvents.Enqueue(&event, insertAtFront); + } } Modified: trunk/OpenMPT/mptrack/Vstplug.h ============================================================================== --- trunk/OpenMPT/mptrack/Vstplug.h Sat Nov 30 21:41:34 2024 (r22367) +++ trunk/OpenMPT/mptrack/Vstplug.h Sat Nov 30 23:52:26 2024 (r22368) @@ -158,8 +158,8 @@ void SaveAllParameters() override; void RestoreAllParameters(int32 program) override; void Process(float *pOutL, float *pOutR, uint32 numFrames) override; - bool MidiSend(uint32 dwMidiCode) override; - bool MidiSysexSend(mpt::const_byte_span sysex) override; + using IMixPlugin::MidiSend; + bool MidiSend(mpt::const_byte_span midiData) override; void HardAllNotesOff() override; void NotifySongPlaying(bool playing) override; Modified: trunk/OpenMPT/mptrack/mod2midi.cpp ============================================================================== --- trunk/OpenMPT/mptrack/mod2midi.cpp Sat Nov 30 21:41:34 2024 (r22367) +++ trunk/OpenMPT/mptrack/mod2midi.cpp Sat Nov 30 23:52:26 2024 (r22368) @@ -71,7 +71,7 @@ std::shared_ptr<MidiChannelState> m_channelState; std::array<decltype(m_instr.midiPWD), 16> m_pitchWheelDepth = { 0 }; - std::vector<std::array<char, 4>> m_queuedEvents; + std::vector<std::array<uint8, 4>> m_queuedEvents; std::ostringstream f; double m_tempo = 0.0; @@ -229,11 +229,11 @@ { if(m_channelState->lastModChannel[midiCh] == CHANNELINDEX_INVALID) continue; - char newPanning = static_cast<char>(std::clamp(m_sndFile.m_PlayState.Chn[m_channelState->lastModChannel[midiCh]].nRealPan / 2, 0, 127)); + uint8 newPanning = static_cast<uint8>(std::clamp(m_sndFile.m_PlayState.Chn[m_channelState->lastModChannel[midiCh]].nRealPan / 2, 0, 127)); if(m_channelState->panning[midiCh] == newPanning) continue; m_channelState->panning[midiCh] = newPanning; - std::array<char, 4> midiData = {static_cast<char>(0xB0 | midiCh), 0x0A, newPanning, 0}; + std::array<uint8, 4> midiData = {static_cast<uint8>(0xB0 | midiCh), 0x0A, newPanning, 0}; m_queuedEvents.push_back(midiData); } @@ -298,32 +298,34 @@ float RenderSilence(uint32) override { return 0.0f; } - bool MidiSend(uint32 midiCode) override + using IMixPlugin::MidiSend; + bool MidiSend(mpt::const_byte_span midiData) override { - std::array<char, 4> midiData; - memcpy(midiData.data(), &midiCode, 4); - - // Note-On events go last to prevent early note-off in a situation like this: - // ... ..|C-5 01 - // C-5 01|=== .. - if(MIDIEvents::GetTypeFromEvent(midiCode) == MIDIEvents::evNoteOn) - { - m_queuedEvents.push_back(midiData); - return true; - } - WriteTicks(); - mpt::IO::WriteRaw(f, midiData.data(), MIDIEvents::GetEventLength(midiData[0])); - return true; - } - - bool MidiSysexSend(mpt::const_byte_span sysex) override - { - if(sysex.size() > 1) + if(midiData.empty()) + return false; + const uint8 type = mpt::byte_cast<uint8>(midiData[0]); + if(type == 0xF0) { + // SysEx WriteTicks(); mpt::IO::WriteIntBE<uint8>(f, 0xF0); - mpt::IO::WriteVarInt(f, mpt::saturate_cast<uint32>(sysex.size() - 1)); - mpt::IO::WriteRaw(f, sysex.data() + 1, sysex.size() - 1); + mpt::IO::WriteVarInt(f, mpt::saturate_cast<uint32>(midiData.size() - 1)); + mpt::IO::WriteRaw(f, midiData.data() + 1, midiData.size() - 1); + } else + { + // Note-On events go last to prevent early note-off in a situation like this: + // ... ..|C-5 01 + // C-5 01|=== .. + if(MIDIEvents::GetTypeFromEvent(type) == MIDIEvents::evNoteOn) + { + std::array<uint8, 4> midiDataArray; + MPT_ASSERT(midiData.size() <= sizeof(midiDataArray) && midiData.size() == MIDIEvents::GetEventLength(type)); + memcpy(midiDataArray.data(), midiData.data(), std::min(sizeof(midiDataArray), midiData.size())); + m_queuedEvents.push_back(midiDataArray); + return true; + } + WriteTicks(); + mpt::IO::WriteRaw(f, midiData.data(), midiData.size()); } return true; } Modified: trunk/OpenMPT/mptrack/plugins/MidiInOut.cpp ============================================================================== --- trunk/OpenMPT/mptrack/plugins/MidiInOut.cpp Sat Nov 30 21:41:34 2024 (r22367) +++ trunk/OpenMPT/mptrack/plugins/MidiInOut.cpp Sat Nov 30 23:52:26 2024 (r22368) @@ -339,22 +339,20 @@ { // End of message found! if(!isBypassed) - ReceiveSysex(mpt::byte_cast<mpt::const_byte_span>(mpt::as_span(m_bufferedInput))); + ReceiveMidi(mpt::byte_cast<mpt::const_byte_span>(mpt::as_span(m_bufferedInput))); m_bufferedInput.clear(); } } else if(message.front() == 0xF0) { // Start of SysEx message... if(message.back() != 0xF7) - m_bufferedInput.insert(m_bufferedInput.end(), message.begin(), message.end()); // ...but not the end! + m_bufferedInput.insert(m_bufferedInput.end(), message.begin(), message.end()); // ...but not the end! else if(!isBypassed) - ReceiveSysex(mpt::byte_cast<mpt::const_byte_span>(mpt::as_span(message))); + ReceiveMidi(mpt::byte_cast<mpt::const_byte_span>(mpt::as_span(message))); } else if(!isBypassed) { // Regular message - uint32 msg = 0; - memcpy(&msg, message.data(), std::min(message.size(), sizeof(msg))); - ReceiveMidi(msg); + ReceiveMidi(mpt::byte_cast<mpt::const_byte_span>(mpt::as_span(message))); } } @@ -438,7 +436,7 @@ } -bool MidiInOut::MidiSend(uint32 midiCode) +bool MidiInOut::MidiSend(mpt::const_byte_span midiData) { if(!m_midiOut.isPortOpen() || IsBypassed()) { @@ -447,21 +445,7 @@ } mpt::lock_guard<mpt::mutex> lock(m_mutex); - m_outQueue.push_back(Message(GetOutputTimestamp(), &midiCode, MIDIEvents::GetEventLength(static_cast<uint8>(midiCode)))); - return true; -} - - -bool MidiInOut::MidiSysexSend(mpt::const_byte_span sysex) -{ - if(!m_midiOut.isPortOpen() || IsBypassed()) - { - // We need an output device to send MIDI messages to. - return true; - } - - mpt::lock_guard<mpt::mutex> lock(m_mutex); - m_outQueue.push_back(Message(GetOutputTimestamp(), sysex.data(), sysex.size())); + m_outQueue.push_back(Message(GetOutputTimestamp(), midiData.data(), midiData.size())); return true; } Modified: trunk/OpenMPT/mptrack/plugins/MidiInOut.h ============================================================================== --- trunk/OpenMPT/mptrack/plugins/MidiInOut.h Sat Nov 30 21:41:34 2024 (r22367) +++ trunk/OpenMPT/mptrack/plugins/MidiInOut.h Sat Nov 30 23:52:26 2024 (r22368) @@ -178,8 +178,8 @@ void Process(float *pOutL, float *pOutR, uint32 numFrames) final; // Render silence and return the highest resulting output level float RenderSilence(uint32) final{ return 0; } - bool MidiSend(uint32 midiCode) final; - bool MidiSysexSend(mpt::const_byte_span sysex) final; + using IMixPlugin::MidiSend; + bool MidiSend(mpt::const_byte_span midiData) final; void HardAllNotesOff() final; // Modify parameter by given amount. Only needs to be re-implemented if plugin architecture allows this to be performed atomically. void Resume() final; Modified: trunk/OpenMPT/soundlib/Snd_fx.cpp ============================================================================== --- trunk/OpenMPT/soundlib/Snd_fx.cpp Sat Nov 30 21:41:34 2024 (r22367) +++ trunk/OpenMPT/soundlib/Snd_fx.cpp Sat Nov 30 23:52:26 2024 (r22368) @@ -5817,16 +5817,7 @@ { if(IMixPlugin *pPlugin = m_MixPlugins[plug - 1].pMixPlugin; pPlugin != nullptr) { - if(macro[0] == 0xF0) - { - pPlugin->MidiSysexSend(mpt::byte_cast<mpt::const_byte_span>(macro)); - } else - { - size_t len = std::min(static_cast<size_t>(MIDIEvents::GetEventLength(macro[0])), macro.size()); - uint32 curData = 0; - memcpy(&curData, macro.data(), len); - pPlugin->MidiSend(curData); - } + pPlugin->MidiSend(mpt::byte_cast<mpt::const_byte_span>(macro)); } } } Modified: trunk/OpenMPT/soundlib/plugins/LFOPlugin.cpp ============================================================================== --- trunk/OpenMPT/soundlib/plugins/LFOPlugin.cpp Sat Nov 30 21:41:34 2024 (r22367) +++ trunk/OpenMPT/soundlib/plugins/LFOPlugin.cpp Sat Nov 30 23:52:26 2024 (r22368) @@ -196,19 +196,10 @@ } -bool LFOPlugin::MidiSend(uint32 midiCode) +bool LFOPlugin::MidiSend(mpt::const_byte_span midiData) { if(IMixPlugin *plugin = GetOutputPlugin()) - return plugin->MidiSend(midiCode); - else - return true; -} - - -bool LFOPlugin::MidiSysexSend(mpt::const_byte_span sysex) -{ - if(IMixPlugin *plugin = GetOutputPlugin()) - return plugin->MidiSysexSend(sysex); + return plugin->MidiSend(midiData); else return true; } Modified: trunk/OpenMPT/soundlib/plugins/LFOPlugin.h ============================================================================== --- trunk/OpenMPT/soundlib/plugins/LFOPlugin.h Sat Nov 30 21:41:34 2024 (r22367) +++ trunk/OpenMPT/soundlib/plugins/LFOPlugin.h Sat Nov 30 23:52:26 2024 (r22368) @@ -85,8 +85,7 @@ float RenderSilence(uint32) override { return 0.0f; } // MIDI event handling (mostly passing it through to the follow-up plugin) - bool MidiSend(uint32 midiCode) override; - bool MidiSysexSend(mpt::const_byte_span sysex) override; + bool MidiSend(mpt::const_byte_span midiData) override; void MidiCC(MIDIEvents::MidiCC nController, uint8 nParam, CHANNELINDEX trackChannel) override; void MidiPitchBend(int32 increment, int8 pwd, CHANNELINDEX trackChannel) override; void MidiTonePortamento(int32 increment, uint8 newNote, int8 pwd, CHANNELINDEX trackChannel) override; Modified: trunk/OpenMPT/soundlib/plugins/PlugInterface.cpp ============================================================================== --- trunk/OpenMPT/soundlib/plugins/PlugInterface.cpp Sat Nov 30 21:41:34 2024 (r22367) +++ trunk/OpenMPT/soundlib/plugins/PlugInterface.cpp Sat Nov 30 23:52:26 2024 (r22368) @@ -378,6 +378,14 @@ } +bool IMixPlugin::MidiSend(uint32 midiCode) +{ + std::array<std::byte, 4> midiData; + memcpy(midiData.data(), &midiCode, 4); + return MidiSend(mpt::as_span(midiData.data(), std::min(midiData.size(), MIDIEvents::GetEventLength(mpt::byte_cast<uint8>(midiData[0]))))); +} + + // Get list of plugins to which output is sent. A nullptr indicates master output. size_t IMixPlugin::GetOutputPlugList(std::vector<IMixPlugin *> &list) { @@ -995,8 +1003,11 @@ } -void IMidiPlugin::ReceiveMidi(uint32 midiCode) +void IMidiPlugin::ReceiveMidi(mpt::const_byte_span midiData) { + if(midiData.empty()) + return; + ResetSilence(); // I think we should only route events to plugins that are explicitely specified as output plugins of the current plugin. @@ -1006,32 +1017,18 @@ { IMixPlugin *plugin = m_SndFile.m_MixPlugins[receiver].pMixPlugin; // Add all events to the plugin's queue. - plugin->MidiSend(midiCode); + plugin->MidiSend(midiData); } #ifdef MODPLUG_TRACKER - if(m_recordMIDIOut) + if(m_recordMIDIOut && midiData[0] != std::byte{0xF0}) { // Spam MIDI data to all views + uint32 midiCode = 0; + memcpy(&midiCode, midiData.data(), std::min(sizeof(midiCode), midiData.size())); ::PostMessage(CMainFrame::GetMainFrame()->GetMidiRecordWnd(), WM_MOD_MIDIMSG, midiCode, reinterpret_cast<LPARAM>(this)); } -#endif // MODPLUG_TRACKER -} - - -void IMidiPlugin::ReceiveSysex(mpt::const_byte_span sysex) -{ - ResetSilence(); - - // I think we should only route events to plugins that are explicitely specified as output plugins of the current plugin. - // This should probably use GetOutputPlugList here if we ever get to support multiple output plugins. - PLUGINDEX receiver; - if(m_pMixStruct != nullptr && (receiver = m_pMixStruct->GetOutputPlugin()) != PLUGINDEX_INVALID) - { - IMixPlugin *plugin = m_SndFile.m_MixPlugins[receiver].pMixPlugin; - // Add all events to the plugin's queue. - plugin->MidiSysexSend(sysex); - } +#endif // MODPLUG_TRACKER } Modified: trunk/OpenMPT/soundlib/plugins/PlugInterface.h ============================================================================== --- trunk/OpenMPT/soundlib/plugins/PlugInterface.h Sat Nov 30 21:41:34 2024 (r22367) +++ trunk/OpenMPT/soundlib/plugins/PlugInterface.h Sat Nov 30 23:52:26 2024 (r22368) @@ -148,8 +148,8 @@ virtual float RenderSilence(uint32 numSamples); // MIDI event handling - virtual bool MidiSend(uint32 /*midiCode*/) { return true; } - virtual bool MidiSysexSend(mpt::const_byte_span /*sysex*/) { return true; } + bool MidiSend(uint32 midiCode); + virtual bool MidiSend(mpt::const_byte_span /*midiData*/) { return true; } virtual void MidiCC(MIDIEvents::MidiCC /*nController*/, uint8 /*nParam*/, CHANNELINDEX /*trackChannel*/) { } virtual void MidiPitchBendRaw(int32 /*pitchbend*/, CHANNELINDEX /*trackChannel*/) {} virtual void MidiPitchBend(int32 /*increment*/, int8 /*pwd*/, CHANNELINDEX /*trackChannel*/) { } @@ -292,8 +292,7 @@ uint8 GetMidiChannel(CHANNELINDEX trackChannel) const; // Plugin wants to send MIDI to OpenMPT - virtual void ReceiveMidi(uint32 midiCode); - virtual void ReceiveSysex(mpt::const_byte_span sysex); + virtual void ReceiveMidi(mpt::const_byte_span midiData); // Converts a 14-bit MIDI pitch bend position to our internal pitch bend position representation static constexpr int32 EncodePitchBendParam(int32 position) { return (position << kPitchBendShift); } |
From: <sv...@op...> - 2024-11-30 20:41:41
|
Author: sagamusix Date: Sat Nov 30 21:41:34 2024 New Revision: 22367 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22367 Log: [Ref] Move PlugParamIndex and PlugParamValue definitions from PluginStructs.h to Snd_defs.h. Modified: trunk/OpenMPT/mptrack/Childfrm.h trunk/OpenMPT/mptrack/MIDIMapping.h trunk/OpenMPT/mptrack/View_gen.h trunk/OpenMPT/soundlib/MIDIMacros.h trunk/OpenMPT/soundlib/PlayState.h trunk/OpenMPT/soundlib/Snd_defs.h trunk/OpenMPT/soundlib/plugins/PluginStructs.h Modified: trunk/OpenMPT/mptrack/Childfrm.h ============================================================================== --- trunk/OpenMPT/mptrack/Childfrm.h Sat Nov 30 21:24:11 2024 (r22366) +++ trunk/OpenMPT/mptrack/Childfrm.h Sat Nov 30 21:41:34 2024 (r22367) @@ -15,7 +15,6 @@ #include "PatternCursor.h" #include "../common/FileReaderFwd.h" -#include "../soundlib/plugins/PluginStructs.h" OPENMPT_NAMESPACE_BEGIN Modified: trunk/OpenMPT/mptrack/MIDIMapping.h ============================================================================== --- trunk/OpenMPT/mptrack/MIDIMapping.h Sat Nov 30 21:24:11 2024 (r22366) +++ trunk/OpenMPT/mptrack/MIDIMapping.h Sat Nov 30 21:41:34 2024 (r22367) @@ -14,7 +14,6 @@ #include "../common/FileReaderFwd.h" #include "../soundlib/Snd_defs.h" -#include "../soundlib/plugins/PluginStructs.h" #include <vector> #include <algorithm> Modified: trunk/OpenMPT/mptrack/View_gen.h ============================================================================== --- trunk/OpenMPT/mptrack/View_gen.h Sat Nov 30 21:24:11 2024 (r22366) +++ trunk/OpenMPT/mptrack/View_gen.h Sat Nov 30 21:41:34 2024 (r22367) @@ -16,7 +16,6 @@ #include "ColorPickerButton.h" #include "PluginComboBox.h" #include "UpdateHints.h" -#include "../soundlib/plugins/PluginStructs.h" OPENMPT_NAMESPACE_BEGIN Modified: trunk/OpenMPT/soundlib/MIDIMacros.h ============================================================================== --- trunk/OpenMPT/soundlib/MIDIMacros.h Sat Nov 30 21:24:11 2024 (r22366) +++ trunk/OpenMPT/soundlib/MIDIMacros.h Sat Nov 30 21:41:34 2024 (r22367) @@ -12,10 +12,13 @@ #include "openmpt/all/BuildSettings.hpp" +#include "Snd_defs.h" #include "openmpt/base/Endian.hpp" OPENMPT_NAMESPACE_BEGIN +class IMixPlugin; + enum { kGlobalMacros = 9, // Number of global macros @@ -24,14 +27,6 @@ kMacroLength = 32, // Max number of chars per macro }; -OPENMPT_NAMESPACE_END - -#ifdef MODPLUG_TRACKER -#include "plugins/PluginStructs.h" -#endif // MODPLUG_TRACKER - -OPENMPT_NAMESPACE_BEGIN - // Parametered macro presets enum ParameteredMacro { Modified: trunk/OpenMPT/soundlib/PlayState.h ============================================================================== --- trunk/OpenMPT/soundlib/PlayState.h Sat Nov 30 21:24:11 2024 (r22366) +++ trunk/OpenMPT/soundlib/PlayState.h Sat Nov 30 21:41:34 2024 (r22367) @@ -12,7 +12,6 @@ #include "openmpt/all/BuildSettings.hpp" #include "ModChannel.h" -#include "plugins/PluginStructs.h" #include "Snd_defs.h" #include <map> Modified: trunk/OpenMPT/soundlib/Snd_defs.h ============================================================================== --- trunk/OpenMPT/soundlib/Snd_defs.h Sat Nov 30 21:24:11 2024 (r22366) +++ trunk/OpenMPT/soundlib/Snd_defs.h Sat Nov 30 21:41:34 2024 (r22367) @@ -60,6 +60,9 @@ using samplecount_t = uint32; // Number of rendered samples +using PlugParamIndex = uint32; +using PlugParamValue = float; + // String lengths (including trailing null char) enum { Modified: trunk/OpenMPT/soundlib/plugins/PluginStructs.h ============================================================================== --- trunk/OpenMPT/soundlib/plugins/PluginStructs.h Sat Nov 30 21:24:11 2024 (r22366) +++ trunk/OpenMPT/soundlib/plugins/PluginStructs.h Sat Nov 30 21:41:34 2024 (r22367) @@ -22,9 +22,6 @@ //////////////////////////////////////////////////////////////////// // Mix Plugins -using PlugParamIndex = uint32; -using PlugParamValue = float; - struct SNDMIXPLUGINSTATE; struct SNDMIXPLUGIN; class IMixPlugin; |
From: <sv...@op...> - 2024-11-30 20:24:22
|
Author: sagamusix Date: Sat Nov 30 21:24:11 2024 New Revision: 22366 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22366 Log: Merged revision(s) 22364 from trunk/OpenMPT: [Fix] Some MIDI Macro computations read from the global play state instead of the provided play state. ........ Modified: branches/OpenMPT-1.30/ (props changed) branches/OpenMPT-1.30/soundlib/Snd_fx.cpp Modified: branches/OpenMPT-1.30/soundlib/Snd_fx.cpp ============================================================================== --- branches/OpenMPT-1.30/soundlib/Snd_fx.cpp Sat Nov 30 21:23:49 2024 (r22365) +++ branches/OpenMPT-1.30/soundlib/Snd_fx.cpp Sat Nov 30 21:24:11 2024 (r22366) @@ -4946,16 +4946,16 @@ // Velocity // This is "almost" how IT does it - apparently, IT seems to lag one row behind on global volume or channel volume changes. const int swing = (m_playBehaviour[kITSwingBehaviour] || m_playBehaviour[kMPTOldSwingBehaviour]) ? chn.nVolSwing : 0; - const int vol = Util::muldiv((chn.nVolume + swing) * m_PlayState.m_nGlobalVolume, chn.nGlobalVol * chn.nInsVol, 1 << 20); + const int vol = Util::muldiv((chn.nVolume + swing) * playState.m_nGlobalVolume, chn.nGlobalVol * chn.nInsVol, 1 << 20); data = static_cast<uint8>(Clamp(vol / 2, 1, 127)); - //data = (unsigned char)std::min((chn.nVolume * chn.nGlobalVol * m_nGlobalVolume) >> (1 + 6 + 8), 127); + //data = (unsigned char)std::min((chn.nVolume * chn.nGlobalVol * playState.m_nGlobalVolume) >> (1 + 6 + 8), 127); } else if(macro[pos] == 'u') { // Calculated volume // Same note as with velocity applies here, but apparently also for instrument / sample volumes? - const int vol = Util::muldiv(chn.nCalcVolume * m_PlayState.m_nGlobalVolume, chn.nGlobalVol * chn.nInsVol, 1 << 26); + const int vol = Util::muldiv(chn.nCalcVolume * playState.m_nGlobalVolume, chn.nGlobalVol * chn.nInsVol, 1 << 26); data = static_cast<uint8>(Clamp(vol / 2, 1, 127)); - //data = (unsigned char)std::min((chn.nCalcVolume * chn.nGlobalVol * m_nGlobalVolume) >> (7 + 6 + 8), 127); + //data = (unsigned char)std::min((chn.nCalcVolume * chn.nGlobalVol * playState.m_nGlobalVolume) >> (7 + 6 + 8), 127); } else if(macro[pos] == 'x') { // Pan set |
From: <sv...@op...> - 2024-11-30 20:23:55
|
Author: sagamusix Date: Sat Nov 30 21:23:49 2024 New Revision: 22365 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22365 Log: Merged revision(s) 22364 from trunk/OpenMPT: [Fix] Some MIDI Macro computations read from the global play state instead of the provided play state. ........ Modified: branches/OpenMPT-1.31/ (props changed) branches/OpenMPT-1.31/soundlib/Snd_fx.cpp Modified: branches/OpenMPT-1.31/soundlib/Snd_fx.cpp ============================================================================== --- branches/OpenMPT-1.31/soundlib/Snd_fx.cpp Sat Nov 30 21:23:07 2024 (r22364) +++ branches/OpenMPT-1.31/soundlib/Snd_fx.cpp Sat Nov 30 21:23:49 2024 (r22365) @@ -5095,16 +5095,16 @@ // Velocity // This is "almost" how IT does it - apparently, IT seems to lag one row behind on global volume or channel volume changes. const int swing = (m_playBehaviour[kITSwingBehaviour] || m_playBehaviour[kMPTOldSwingBehaviour]) ? chn.nVolSwing : 0; - const int vol = Util::muldiv((chn.nVolume + swing) * m_PlayState.m_nGlobalVolume, chn.nGlobalVol * chn.nInsVol, 1 << 20); + const int vol = Util::muldiv((chn.nVolume + swing) * playState.m_nGlobalVolume, chn.nGlobalVol * chn.nInsVol, 1 << 20); data = static_cast<uint8>(Clamp(vol / 2, 1, 127)); - //data = (unsigned char)std::min((chn.nVolume * chn.nGlobalVol * m_nGlobalVolume) >> (1 + 6 + 8), 127); + //data = (unsigned char)std::min((chn.nVolume * chn.nGlobalVol * playState.m_nGlobalVolume) >> (1 + 6 + 8), 127); } else if(macro[pos] == 'u') { // Calculated volume // Same note as with velocity applies here, but apparently also for instrument / sample volumes? - const int vol = Util::muldiv(chn.nCalcVolume * m_PlayState.m_nGlobalVolume, chn.nGlobalVol * chn.nInsVol, 1 << 26); + const int vol = Util::muldiv(chn.nCalcVolume * playState.m_nGlobalVolume, chn.nGlobalVol * chn.nInsVol, 1 << 26); data = static_cast<uint8>(Clamp(vol / 2, 1, 127)); - //data = (unsigned char)std::min((chn.nCalcVolume * chn.nGlobalVol * m_nGlobalVolume) >> (7 + 6 + 8), 127); + //data = (unsigned char)std::min((chn.nCalcVolume * chn.nGlobalVol * playState.m_nGlobalVolume) >> (7 + 6 + 8), 127); } else if(macro[pos] == 'x') { // Pan set |
From: <sv...@op...> - 2024-11-30 20:23:14
|
Author: sagamusix Date: Sat Nov 30 21:23:07 2024 New Revision: 22364 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22364 Log: [Fix] Some MIDI Macro computations read from the global play state instead of the provided play state. Modified: trunk/OpenMPT/soundlib/Snd_fx.cpp Modified: trunk/OpenMPT/soundlib/Snd_fx.cpp ============================================================================== --- trunk/OpenMPT/soundlib/Snd_fx.cpp Sat Nov 30 19:30:58 2024 (r22363) +++ trunk/OpenMPT/soundlib/Snd_fx.cpp Sat Nov 30 21:23:07 2024 (r22364) @@ -5538,16 +5538,16 @@ // Velocity // This is "almost" how IT does it - apparently, IT seems to lag one row behind on global volume or channel volume changes. const int swing = (m_playBehaviour[kITSwingBehaviour] || m_playBehaviour[kMPTOldSwingBehaviour]) ? chn.nVolSwing : 0; - const int vol = Util::muldiv((chn.nVolume + swing) * m_PlayState.m_nGlobalVolume, chn.nGlobalVol * chn.nInsVol, 1 << 20); + const int vol = Util::muldiv((chn.nVolume + swing) * playState.m_nGlobalVolume, chn.nGlobalVol * chn.nInsVol, 1 << 20); data = static_cast<uint8>(Clamp(vol / 2, 1, 127)); - //data = (unsigned char)std::min((chn.nVolume * chn.nGlobalVol * m_nGlobalVolume) >> (1 + 6 + 8), 127); + //data = (unsigned char)std::min((chn.nVolume * chn.nGlobalVol * playState.m_nGlobalVolume) >> (1 + 6 + 8), 127); } else if(macro[pos] == 'u') { // Calculated volume // Same note as with velocity applies here, but apparently also for instrument / sample volumes? - const int vol = Util::muldiv(chn.nCalcVolume * m_PlayState.m_nGlobalVolume, chn.nGlobalVol * chn.nInsVol, 1 << 26); + const int vol = Util::muldiv(chn.nCalcVolume * playState.m_nGlobalVolume, chn.nGlobalVol * chn.nInsVol, 1 << 26); data = static_cast<uint8>(Clamp(vol / 2, 1, 127)); - //data = (unsigned char)std::min((chn.nCalcVolume * chn.nGlobalVol * m_nGlobalVolume) >> (7 + 6 + 8), 127); + //data = (unsigned char)std::min((chn.nCalcVolume * chn.nGlobalVol * playState.m_nGlobalVolume) >> (7 + 6 + 8), 127); } else if(macro[pos] == 'x') { // Pan set |
From: <sv...@op...> - 2024-11-30 18:31:09
|
Author: sagamusix Date: Sat Nov 30 19:30:58 2024 New Revision: 22363 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22363 Log: Merged revision(s) 22362 from trunk/OpenMPT: [Fix] When partially pasting a non-PC pattern event over a PC event, erase the effect column properly. ........ Modified: branches/OpenMPT-1.31/ (props changed) branches/OpenMPT-1.31/mptrack/PatternClipboard.cpp Modified: branches/OpenMPT-1.31/mptrack/PatternClipboard.cpp ============================================================================== --- branches/OpenMPT-1.31/mptrack/PatternClipboard.cpp Sat Nov 30 19:30:29 2024 (r22362) +++ branches/OpenMPT-1.31/mptrack/PatternClipboard.cpp Sat Nov 30 19:30:58 2024 (r22363) @@ -743,7 +743,7 @@ PatternCursor::Columns firstCol = PatternCursor::lastColumn, lastCol = PatternCursor::firstColumn; // Note - if(data[pos] != ' ' && (!doMixPaste || ((!doITStyleMix && origModCmd.note == NOTE_NONE) || + if(data[pos] != ' ' && (!doMixPaste || ((!doITStyleMix && origModCmd.note == NOTE_NONE) || (doITStyleMix && origModCmd.note == NOTE_NONE && origModCmd.instr == 0 && origModCmd.volcmd == VOLCMD_NONE)))) { firstCol = PatternCursor::noteColumn; @@ -760,7 +760,7 @@ m.note = NOTE_PCS; else m.note = NOTE_PC; - } else if (data[pos] != '.') + } else if(data[pos] != '.') { // Check note names for(uint8 i = 0; i < 12; i++) @@ -791,9 +791,9 @@ firstCol = std::min(firstCol, PatternCursor::instrColumn); lastCol = std::max(lastCol, PatternCursor::instrColumn); if(data[pos + 3] >= '0' && data[pos + 3] <= ('0' + (MAX_INSTRUMENTS / 10))) - { m.instr = (data[pos + 3] - '0') * 10 + (data[pos + 4] - '0'); - } else m.instr = 0; + else + m.instr = 0; } // Volume @@ -846,7 +846,10 @@ } } else { - if(data[pos + 8] > ' ' && (!doMixPaste || ((!doITStyleMix && origModCmd.command == CMD_NONE) || + if(origModCmd.IsPcNote()) + m.SetEffectCommand(CMD_NONE, 0); + + if(data[pos + 8] > ' ' && (!doMixPaste || ((!doITStyleMix && origModCmd.command == CMD_NONE) || (doITStyleMix && origModCmd.command == CMD_NONE && origModCmd.param == 0)))) { firstCol = std::min(firstCol, PatternCursor::effectColumn); @@ -867,7 +870,7 @@ } // Effect value - if(data[pos + 9] > ' ' && (!doMixPaste || ((!doITStyleMix && (origModCmd.command == CMD_NONE || origModCmd.param == 0)) || + if(data[pos + 9] > ' ' && (!doMixPaste || ((!doITStyleMix && (origModCmd.command == CMD_NONE || origModCmd.param == 0)) || (doITStyleMix && origModCmd.command == CMD_NONE && origModCmd.param == 0)))) { firstCol = std::min(firstCol, PatternCursor::paramColumn); |
From: <sv...@op...> - 2024-11-30 18:30:41
|
Author: sagamusix Date: Sat Nov 30 19:30:29 2024 New Revision: 22362 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22362 Log: [Fix] When partially pasting a non-PC pattern event over a PC event, erase the effect column properly. Modified: trunk/OpenMPT/mptrack/PatternClipboard.cpp Modified: trunk/OpenMPT/mptrack/PatternClipboard.cpp ============================================================================== --- trunk/OpenMPT/mptrack/PatternClipboard.cpp Sat Nov 30 16:57:55 2024 (r22361) +++ trunk/OpenMPT/mptrack/PatternClipboard.cpp Sat Nov 30 19:30:29 2024 (r22362) @@ -743,7 +743,7 @@ PatternCursor::Columns firstCol = PatternCursor::lastColumn, lastCol = PatternCursor::firstColumn; // Note - if(data[pos] != ' ' && (!doMixPaste || ((!doITStyleMix && origModCmd.note == NOTE_NONE) || + if(data[pos] != ' ' && (!doMixPaste || ((!doITStyleMix && origModCmd.note == NOTE_NONE) || (doITStyleMix && origModCmd.note == NOTE_NONE && origModCmd.instr == 0 && origModCmd.volcmd == VOLCMD_NONE)))) { firstCol = PatternCursor::noteColumn; @@ -760,7 +760,7 @@ m.note = NOTE_PCS; else m.note = NOTE_PC; - } else if (data[pos] != '.') + } else if(data[pos] != '.') { // Check note names for(uint8 i = 0; i < 12; i++) @@ -791,9 +791,9 @@ firstCol = std::min(firstCol, PatternCursor::instrColumn); lastCol = std::max(lastCol, PatternCursor::instrColumn); if(data[pos + 3] >= '0' && data[pos + 3] <= ('0' + (MAX_INSTRUMENTS / 10))) - { m.instr = (data[pos + 3] - '0') * 10 + (data[pos + 4] - '0'); - } else m.instr = 0; + else + m.instr = 0; } // Volume @@ -846,7 +846,10 @@ } } else { - if(data[pos + 8] > ' ' && (!doMixPaste || ((!doITStyleMix && origModCmd.command == CMD_NONE) || + if(origModCmd.IsPcNote()) + m.SetEffectCommand(CMD_NONE, 0); + + if(data[pos + 8] > ' ' && (!doMixPaste || ((!doITStyleMix && origModCmd.command == CMD_NONE) || (doITStyleMix && origModCmd.command == CMD_NONE && origModCmd.param == 0)))) { firstCol = std::min(firstCol, PatternCursor::effectColumn); @@ -867,7 +870,7 @@ } // Effect value - if(data[pos + 9] > ' ' && (!doMixPaste || ((!doITStyleMix && (origModCmd.command == CMD_NONE || origModCmd.param == 0)) || + if(data[pos + 9] > ' ' && (!doMixPaste || ((!doITStyleMix && (origModCmd.command == CMD_NONE || origModCmd.param == 0)) || (doITStyleMix && origModCmd.command == CMD_NONE && origModCmd.param == 0)))) { firstCol = std::min(firstCol, PatternCursor::paramColumn); |
From: <sv...@op...> - 2024-11-30 15:58:08
|
Author: sagamusix Date: Sat Nov 30 16:57:55 2024 New Revision: 22361 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22361 Log: Merged revision(s) 22360 from trunk/OpenMPT: [Var] Update credits. ........ Modified: branches/OpenMPT-1.31/ (props changed) branches/OpenMPT-1.31/common/version.cpp Modified: branches/OpenMPT-1.31/common/version.cpp ============================================================================== --- branches/OpenMPT-1.31/common/version.cpp Sat Nov 30 16:57:39 2024 (r22360) +++ branches/OpenMPT-1.31/common/version.cpp Sat Nov 30 16:57:55 2024 (r22361) @@ -621,6 +621,7 @@ "Revenant (https://revenant1.net/)\n" "SYRiNX\n" "xaimus (http://xaimus.com/)\n" + "zersal\n" "\n" "Thanks to:\n" "\n" |
From: <sv...@op...> - 2024-11-30 15:57:46
|
Author: sagamusix Date: Sat Nov 30 16:57:39 2024 New Revision: 22360 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22360 Log: [Var] Update credits. Modified: trunk/OpenMPT/common/version.cpp Modified: trunk/OpenMPT/common/version.cpp ============================================================================== --- trunk/OpenMPT/common/version.cpp Sat Nov 30 16:53:16 2024 (r22359) +++ trunk/OpenMPT/common/version.cpp Sat Nov 30 16:57:39 2024 (r22360) @@ -621,6 +621,7 @@ "Revenant (https://revenant1.net/)\n" "SYRiNX\n" "xaimus (http://xaimus.com/)\n" + "zersal\n" "\n" "Thanks to:\n" "\n" |
From: <sv...@op...> - 2024-11-30 15:53:28
|
Author: sagamusix Date: Sat Nov 30 16:53:16 2024 New Revision: 22359 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22359 Log: Merged revision(s) 22357 from trunk/OpenMPT: [Fix] Avoid undefined behaviour when writing past end of span (it was guaranteed to be a valid write, but still UB according to span API contract). ........ Modified: branches/OpenMPT-1.30/ (props changed) branches/OpenMPT-1.30/soundlib/Snd_fx.cpp Modified: branches/OpenMPT-1.30/soundlib/Snd_fx.cpp ============================================================================== --- branches/OpenMPT-1.30/soundlib/Snd_fx.cpp Sat Nov 30 16:52:54 2024 (r22358) +++ branches/OpenMPT-1.30/soundlib/Snd_fx.cpp Sat Nov 30 16:53:16 2024 (r22359) @@ -4844,6 +4844,7 @@ } else { // SysEx message, find end of message + sendLen = outSize - sendPos; for(uint32 i = sendPos + 1; i < outSize; i++) { if(out[i] == 0xF7) @@ -4853,12 +4854,6 @@ break; } } - if(sendLen == 0) - { - // Didn't find end, so "invent" end of SysEx message - out[outSize++] = 0xF7; - sendLen = outSize - sendPos; - } } } else if(!(out[sendPos] & 0x80)) { @@ -5060,14 +5055,32 @@ firstNibble = true; } } + // Finish current byte if(!firstNibble) - { - // Finish current byte outPos++; - } if(updateZxxParam < 0x80) chn.lastZxxParam = updateZxxParam; + // Add end of SysEx byte if necessary + for(size_t i = 0; i < outPos; i++) + { + if(out[i] != 0xF0) + continue; + if(outPos - i >= 4 && (out[i + 1] == 0xF0 || out[i + 1] == 0xF1)) + { + // Internal message + i += 3; + } else + { + // Real SysEx + while(i < outPos && out[i] != 0xF7) + i++; + if(i == outPos && outPos < out.size()) + out[outPos++] = 0xF7; + } + + } + out = out.first(outPos); } |
From: <sv...@op...> - 2024-11-30 15:53:05
|
Author: sagamusix Date: Sat Nov 30 16:52:54 2024 New Revision: 22358 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22358 Log: Merged revision(s) 22357 from trunk/OpenMPT: [Fix] Avoid undefined behaviour when writing past end of span (it was guaranteed to be a valid write, but still UB according to span API contract). ........ Modified: branches/OpenMPT-1.31/ (props changed) branches/OpenMPT-1.31/soundlib/Snd_fx.cpp Modified: branches/OpenMPT-1.31/soundlib/Snd_fx.cpp ============================================================================== --- branches/OpenMPT-1.31/soundlib/Snd_fx.cpp Sat Nov 30 16:52:35 2024 (r22357) +++ branches/OpenMPT-1.31/soundlib/Snd_fx.cpp Sat Nov 30 16:52:54 2024 (r22358) @@ -4993,6 +4993,7 @@ } else { // SysEx message, find end of message + sendLen = outSize - sendPos; for(uint32 i = sendPos + 1; i < outSize; i++) { if(out[i] == 0xF7) @@ -5002,12 +5003,6 @@ break; } } - if(sendLen == 0) - { - // Didn't find end, so "invent" end of SysEx message - out[outSize++] = 0xF7; - sendLen = outSize - sendPos; - } } } else if(!(out[sendPos] & 0x80)) { @@ -5214,14 +5209,32 @@ firstNibble = true; } } + // Finish current byte if(!firstNibble) - { - // Finish current byte outPos++; - } if(updateZxxParam < 0x80) chn.lastZxxParam = updateZxxParam; + // Add end of SysEx byte if necessary + for(size_t i = 0; i < outPos; i++) + { + if(out[i] != 0xF0) + continue; + if(outPos - i >= 4 && (out[i + 1] == 0xF0 || out[i + 1] == 0xF1)) + { + // Internal message + i += 3; + } else + { + // Real SysEx + while(i < outPos && out[i] != 0xF7) + i++; + if(i == outPos && outPos < out.size()) + out[outPos++] = 0xF7; + } + + } + out = out.first(outPos); } |
From: <sv...@op...> - 2024-11-30 15:52:42
|
Author: sagamusix Date: Sat Nov 30 16:52:35 2024 New Revision: 22357 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22357 Log: [Fix] Avoid undefined behaviour when writing past end of span (it was guaranteed to be a valid write, but still UB according to span API contract). Modified: trunk/OpenMPT/soundlib/Snd_fx.cpp Modified: trunk/OpenMPT/soundlib/Snd_fx.cpp ============================================================================== --- trunk/OpenMPT/soundlib/Snd_fx.cpp Sat Nov 30 14:50:41 2024 (r22356) +++ trunk/OpenMPT/soundlib/Snd_fx.cpp Sat Nov 30 16:52:35 2024 (r22357) @@ -5436,6 +5436,7 @@ } else { // SysEx message, find end of message + sendLen = outSize - sendPos; for(uint32 i = sendPos + 1; i < outSize; i++) { if(out[i] == 0xF7) @@ -5445,12 +5446,6 @@ break; } } - if(sendLen == 0) - { - // Didn't find end, so "invent" end of SysEx message - out[outSize++] = 0xF7; - sendLen = outSize - sendPos; - } } } else if(!(out[sendPos] & 0x80)) { @@ -5658,14 +5653,32 @@ firstNibble = true; } } + // Finish current byte if(!firstNibble) - { - // Finish current byte outPos++; - } if(updateZxxParam < 0x80) chn.lastZxxParam = updateZxxParam; + // Add end of SysEx byte if necessary + for(size_t i = 0; i < outPos; i++) + { + if(out[i] != 0xF0) + continue; + if(outPos - i >= 4 && (out[i + 1] == 0xF0 || out[i + 1] == 0xF1)) + { + // Internal message + i += 3; + } else + { + // Real SysEx + while(i < outPos && out[i] != 0xF7) + i++; + if(i == outPos && outPos < out.size()) + out[outPos++] = 0xF7; + } + + } + out = out.first(outPos); } |
From: <sv...@op...> - 2024-11-30 13:50:53
|
Author: sagamusix Date: Sat Nov 30 14:50:41 2024 New Revision: 22356 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22356 Log: [Ref] Pass ModChannel instead of whole PlayState to GetChannelPlugin/GetBestPlugin. Modified: trunk/OpenMPT/mptrack/EffectInfo.cpp trunk/OpenMPT/mptrack/Moddoc.cpp trunk/OpenMPT/soundlib/Fastmix.cpp trunk/OpenMPT/soundlib/Snd_fx.cpp trunk/OpenMPT/soundlib/Sndfile.h trunk/OpenMPT/soundlib/Sndmix.cpp Modified: trunk/OpenMPT/mptrack/EffectInfo.cpp ============================================================================== --- trunk/OpenMPT/mptrack/EffectInfo.cpp Sat Nov 30 12:48:47 2024 (r22355) +++ trunk/OpenMPT/mptrack/EffectInfo.cpp Sat Nov 30 14:50:41 2024 (r22356) @@ -680,7 +680,7 @@ if(chn != CHANNELINDEX_INVALID) { const uint8 macroIndex = sndFile.m_PlayState.Chn[chn].nActiveMacro; - const PLUGINDEX plugin = sndFile.GetBestPlugin(sndFile.m_PlayState, chn, PrioritiseChannel, EvenIfMuted) - 1; + const PLUGINDEX plugin = sndFile.GetBestPlugin(sndFile.m_PlayState.Chn[chn], chn, PrioritiseChannel, EvenIfMuted) - 1; IMixPlugin *pPlugin = (plugin < MAX_MIXPLUGINS ? sndFile.m_MixPlugins[plugin].pMixPlugin : nullptr); pszName.Format(_T("SFx MIDI Macro z=%d (SF%X: %s)"), param, macroIndex, sndFile.m_MidiCfg.GetParameteredMacroName(macroIndex, pPlugin).GetString()); } else Modified: trunk/OpenMPT/mptrack/Moddoc.cpp ============================================================================== --- trunk/OpenMPT/mptrack/Moddoc.cpp Sat Nov 30 12:48:47 2024 (r22355) +++ trunk/OpenMPT/mptrack/Moddoc.cpp Sat Nov 30 14:50:41 2024 (r22356) @@ -1329,25 +1329,24 @@ { const ChannelFlags muteType = CSoundFile::GetChannelMuteFlag(); - if (nChn >= m_SndFile.GetNumChannels()) - { + if(nChn >= m_SndFile.GetNumChannels()) return false; - } + ModChannel &chn = m_SndFile.m_PlayState.Chn[nChn]; const bool doMute = m_SndFile.ChnSettings[nChn].dwFlags[CHN_MUTE]; - - // Mute pattern channel - if (doMute) + if(doMute) { - m_SndFile.m_PlayState.Chn[nChn].dwFlags.set(muteType); - if(m_SndFile.m_opl) m_SndFile.m_opl->NoteCut(nChn); + // Mute pattern channel + chn.dwFlags.set(muteType); + if(m_SndFile.m_opl) + m_SndFile.m_opl->NoteCut(nChn); // Kill VSTi notes on muted channel. - PLUGINDEX nPlug = m_SndFile.GetBestPlugin(m_SndFile.m_PlayState, nChn, PrioritiseInstrument, EvenIfMuted); - if ((nPlug) && (nPlug<=MAX_MIXPLUGINS)) + PLUGINDEX nPlug = m_SndFile.GetBestPlugin(chn, nChn, PrioritiseInstrument, EvenIfMuted); + if(nPlug > 0 && nPlug <= MAX_MIXPLUGINS) { IMixPlugin *pPlug = m_SndFile.m_MixPlugins[nPlug - 1].pMixPlugin; - const ModInstrument* pIns = m_SndFile.m_PlayState.Chn[nChn].pModInstrument; - if (pPlug && pIns) + const ModInstrument* pIns = chn.pModInstrument; + if(pPlug && pIns) { pPlug->MidiCommand(*pIns, NOTE_KEYOFF, 0, nChn); } @@ -1355,7 +1354,7 @@ } else { // On unmute alway cater for both mute types - this way there's no probs if user changes mute mode. - m_SndFile.m_PlayState.Chn[nChn].dwFlags.reset(CHN_SYNCMUTE | CHN_MUTE); + chn.dwFlags.reset(CHN_SYNCMUTE | CHN_MUTE); } // Mute any NNA'd channels Modified: trunk/OpenMPT/soundlib/Fastmix.cpp ============================================================================== --- trunk/OpenMPT/soundlib/Fastmix.cpp Sat Nov 30 12:48:47 2024 (r22355) +++ trunk/OpenMPT/soundlib/Fastmix.cpp Sat Nov 30 14:50:41 2024 (r22356) @@ -353,7 +353,7 @@ //Look for plugins associated with this implicit tracker channel. #ifndef NO_PLUGINS - PLUGINDEX nMixPlugin = GetBestPlugin(m_PlayState, m_PlayState.ChnMix[nChn], PrioritiseInstrument, RespectMutes); + PLUGINDEX nMixPlugin = GetBestPlugin(chn, m_PlayState.ChnMix[nChn], PrioritiseInstrument, RespectMutes); if ((nMixPlugin > 0) && (nMixPlugin <= MAX_MIXPLUGINS) && m_MixPlugins[nMixPlugin - 1].pMixPlugin != nullptr) { Modified: trunk/OpenMPT/soundlib/Snd_fx.cpp ============================================================================== --- trunk/OpenMPT/soundlib/Snd_fx.cpp Sat Nov 30 12:48:47 2024 (r22355) +++ trunk/OpenMPT/soundlib/Snd_fx.cpp Sat Nov 30 14:50:41 2024 (r22356) @@ -2449,7 +2449,7 @@ IMixPlugin *pPlugin = nullptr; if(srcChn.HasMIDIOutput() && ModCommand::IsNote(srcChn.nNote)) // instro sends to a midi chan { - PLUGINDEX plugin = GetBestPlugin(m_PlayState, nChn, PrioritiseInstrument, RespectMutes); + PLUGINDEX plugin = GetBestPlugin(m_PlayState.Chn[nChn], nChn, PrioritiseInstrument, RespectMutes); if(plugin > 0 && plugin <= MAX_MIXPLUGINS) { @@ -5515,7 +5515,7 @@ isNibble = true; data = 0xFF; #ifndef NO_PLUGINS - const PLUGINDEX plug = (plugin != 0) ? plugin : GetBestPlugin(playState, nChn, PrioritiseChannel, EvenIfMuted); + const PLUGINDEX plug = (plugin != 0) ? plugin : GetBestPlugin(chn, nChn, PrioritiseChannel, EvenIfMuted); if(plug > 0 && plug <= MAX_MIXPLUGINS) { auto midiPlug = dynamic_cast<const IMidiPlugin *>(m_MixPlugins[plug - 1u].pMixPlugin); @@ -5751,7 +5751,7 @@ } else if(macroCode == 0x03 && !isExtended) { // F0.F0.03.xx: Set plug dry/wet - PLUGINDEX plug = (plugin != 0) ? plugin : GetBestPlugin(playState, nChn, PrioritiseChannel, EvenIfMuted); + PLUGINDEX plug = (plugin != 0) ? plugin : GetBestPlugin(chn, nChn, PrioritiseChannel, EvenIfMuted); if(plug > 0 && plug <= MAX_MIXPLUGINS && param < 0x80) { plug--; @@ -5769,7 +5769,7 @@ } else if((macroCode & 0x80) || isExtended) { // F0.F0.{80|n}.xx / F0.F1.n.xx: Set VST effect parameter n to xx - PLUGINDEX plug = (plugin != 0) ? plugin : GetBestPlugin(playState, nChn, PrioritiseChannel, EvenIfMuted); + PLUGINDEX plug = (plugin != 0) ? plugin : GetBestPlugin(chn, nChn, PrioritiseChannel, EvenIfMuted); if(plug > 0 && plug <= MAX_MIXPLUGINS && param < 0x80) { plug--; @@ -5797,7 +5797,7 @@ PLUGINDEX plug = 0; if(!chn.dwFlags[CHN_NOFX]) { - plug = (plugin != 0) ? plugin : GetBestPlugin(playState, nChn, PrioritiseChannel, EvenIfMuted); + plug = (plugin != 0) ? plugin : GetBestPlugin(chn, nChn, PrioritiseChannel, EvenIfMuted); } if(plug > 0 && plug <= MAX_MIXPLUGINS) @@ -6776,35 +6776,30 @@ } -PLUGINDEX CSoundFile::GetBestPlugin(const PlayState &playState, CHANNELINDEX nChn, PluginPriority priority, PluginMutePriority respectMutes) const +PLUGINDEX CSoundFile::GetBestPlugin(const ModChannel &channel, CHANNELINDEX nChn, PluginPriority priority, PluginMutePriority respectMutes) const { - if (nChn >= playState.Chn.size()) //Check valid channel number - { - return 0; - } - //Define search source order PLUGINDEX plugin = 0; - switch (priority) + switch(priority) { case ChannelOnly: - plugin = GetChannelPlugin(playState, nChn, respectMutes); + plugin = GetChannelPlugin(channel, nChn, respectMutes); break; case InstrumentOnly: - plugin = GetActiveInstrumentPlugin(playState.Chn[nChn], respectMutes); + plugin = GetActiveInstrumentPlugin(channel, respectMutes); break; case PrioritiseInstrument: - plugin = GetActiveInstrumentPlugin(playState.Chn[nChn], respectMutes); + plugin = GetActiveInstrumentPlugin(channel, respectMutes); if(!plugin || plugin > MAX_MIXPLUGINS) { - plugin = GetChannelPlugin(playState, nChn, respectMutes); + plugin = GetChannelPlugin(channel, nChn, respectMutes); } break; case PrioritiseChannel: - plugin = GetChannelPlugin(playState, nChn, respectMutes); + plugin = GetChannelPlugin(channel, nChn, respectMutes); if(!plugin || plugin > MAX_MIXPLUGINS) { - plugin = GetActiveInstrumentPlugin(playState.Chn[nChn], respectMutes); + plugin = GetActiveInstrumentPlugin(channel, respectMutes); } break; } @@ -6813,10 +6808,8 @@ } -PLUGINDEX CSoundFile::GetChannelPlugin(const PlayState &playState, CHANNELINDEX nChn, PluginMutePriority respectMutes) const +PLUGINDEX CSoundFile::GetChannelPlugin(const ModChannel &channel, CHANNELINDEX nChn, PluginMutePriority respectMutes) const { - const ModChannel &channel = playState.Chn[nChn]; - PLUGINDEX plugin; if((respectMutes == RespectMutes && channel.dwFlags[CHN_MUTE | CHN_SYNCMUTE]) || channel.dwFlags[CHN_NOFX]) { Modified: trunk/OpenMPT/soundlib/Sndfile.h ============================================================================== --- trunk/OpenMPT/soundlib/Sndfile.h Sat Nov 30 12:48:47 2024 (r22355) +++ trunk/OpenMPT/soundlib/Sndfile.h Sat Nov 30 14:50:41 2024 (r22356) @@ -1271,12 +1271,12 @@ void ProcessStereoSeparation(samplecount_t countChunk); private: - PLUGINDEX GetChannelPlugin(const PlayState &playState, CHANNELINDEX nChn, PluginMutePriority respectMutes) const; + PLUGINDEX GetChannelPlugin(const ModChannel &channel, CHANNELINDEX nChn, PluginMutePriority respectMutes) const; static PLUGINDEX GetActiveInstrumentPlugin(const ModChannel &chn, PluginMutePriority respectMutes); IMixPlugin *GetChannelInstrumentPlugin(const ModChannel &chn) const; public: - PLUGINDEX GetBestPlugin(const PlayState &playState, CHANNELINDEX nChn, PluginPriority priority, PluginMutePriority respectMutes) const; + PLUGINDEX GetBestPlugin(const ModChannel &channel, CHANNELINDEX nChn, PluginPriority priority, PluginMutePriority respectMutes) const; PlaybackTest CreatePlaybackTest(PlaybackTestSettings settings); }; Modified: trunk/OpenMPT/soundlib/Sndmix.cpp ============================================================================== --- trunk/OpenMPT/soundlib/Sndmix.cpp Sat Nov 30 12:48:47 2024 (r22355) +++ trunk/OpenMPT/soundlib/Sndmix.cpp Sat Nov 30 14:50:41 2024 (r22356) @@ -2645,7 +2645,7 @@ } // Check instrument plugins - const PLUGINDEX nPlugin = GetBestPlugin(m_PlayState, nChn, PrioritiseInstrument, RespectMutes); + const PLUGINDEX nPlugin = GetBestPlugin(chn, nChn, PrioritiseInstrument, RespectMutes); IMixPlugin *pPlugin = nullptr; if(nPlugin > 0 && nPlugin <= MAX_MIXPLUGINS) { |