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
(213) |
Aug
(158) |
Sep
|
Oct
|
Nov
|
Dec
|
From: <sv...@op...> - 2024-08-10 06:39:13
|
Author: manx Date: Sat Aug 10 08:38:59 2024 New Revision: 21377 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21377 Log: [Ref] Silence GCC -Wconversion warnings. Modified: trunk/OpenMPT/soundlib/Load_med.cpp Modified: trunk/OpenMPT/soundlib/Load_med.cpp ============================================================================== --- trunk/OpenMPT/soundlib/Load_med.cpp Fri Aug 9 20:11:24 2024 (r21376) +++ trunk/OpenMPT/soundlib/Load_med.cpp Sat Aug 10 08:38:59 2024 (r21377) @@ -1652,7 +1652,7 @@ } Patterns[pat].WriteEffect(EffectWriter(CMD_POSITIONJUMP, mpt::saturate_cast<ModCommand::PARAM>(to)).Row(Patterns[pat].GetNumRows() - 1).RetryPreviousRow()); if(pat >= basePattern && (pat - basePattern) >= numPatterns) - numPatterns = pat - basePattern + 1; + numPatterns = static_cast<PATTERNINDEX>(pat - basePattern + 1); } if(numSongs > 1) @@ -1666,7 +1666,7 @@ Patterns[firstPat].WriteEffect(EffectWriter(CMD_PANNING8, mpt::saturate_cast<ModCommand::PARAM>(ChnSettings[chn].nPan)).Channel(chn).RetryNextRow()); } if(firstPat >= basePattern && (firstPat - basePattern) >= numPatterns) - numPatterns = firstPat - basePattern + 1; + numPatterns = static_cast<PATTERNINDEX>(firstPat - basePattern + 1); } } |
From: <sv...@op...> - 2024-08-09 18:11:35
|
Author: sagamusix Date: Fri Aug 9 20:11:24 2024 New Revision: 21376 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21376 Log: Merged revision(s) 21375 from trunk/OpenMPT: [Fix] MED: For MOD-style vibrato, a speed parameter of 0 was not treated as effect memory, and the speed "fixup" was incorrect anyway. For both vibrato types, the speed is now correct (position incremented on every tick). Fixes Untitled6.med by Apollon (https://www.un4seen.com/forum/?topic=15448.msg143464#msg143464). ........ Modified: branches/OpenMPT-1.31/ (props changed) branches/OpenMPT-1.31/soundlib/Load_med.cpp branches/OpenMPT-1.31/soundlib/Sndmix.cpp Modified: branches/OpenMPT-1.31/soundlib/Load_med.cpp ============================================================================== --- branches/OpenMPT-1.31/soundlib/Load_med.cpp Fri Aug 9 20:10:02 2024 (r21375) +++ branches/OpenMPT-1.31/soundlib/Load_med.cpp Fri Aug 9 20:11:24 2024 (r21376) @@ -411,7 +411,7 @@ switch(command) { case 0x04: // Vibrato (twice as deep as in ProTracker) - m.SetEffectCommand(CMD_VIBRATO, (std::min<uint8>(param >> 3, 0x0F) << 4) | std::min<uint8>((param & 0x0F) * 2, 0x0F)); + m.SetEffectCommand(CMD_VIBRATO, (param & 0xF0) | std::min<uint8>((param & 0x0F) * 2, 0x0F)); break; case 0x08: // Hold and decay break; @@ -491,7 +491,7 @@ m.SetEffectCommand(CMD_MODCMDEX, 0x20 | nibbleLo); break; case 0x14: // Vibrato (ProTracker compatible depth, but faster) - m.SetEffectCommand(CMD_VIBRATO, (std::min<uint8>((param >> 4) + 1, 0x0F) << 4) | (param & 0x0F)); + m.SetEffectCommand(CMD_VIBRATO, param); break; case 0x15: // Set finetune m.SetEffectCommand(CMD_MODCMDEX, 0x50 | (param & 0x0F)); Modified: branches/OpenMPT-1.31/soundlib/Sndmix.cpp ============================================================================== --- branches/OpenMPT-1.31/soundlib/Sndmix.cpp Fri Aug 9 20:10:02 2024 (r21375) +++ branches/OpenMPT-1.31/soundlib/Sndmix.cpp Fri Aug 9 20:11:24 2024 (r21376) @@ -1643,7 +1643,7 @@ if(chn.dwFlags[CHN_VIBRATO]) { - const bool advancePosition = !m_SongFlags[SONG_FIRSTTICK] || ((GetType() & (MOD_TYPE_IT | MOD_TYPE_MPT)) && !(m_SongFlags[SONG_ITOLDEFFECTS])); + const bool advancePosition = !m_SongFlags[SONG_FIRSTTICK] || ((GetType() & (MOD_TYPE_IT | MOD_TYPE_MPT | MOD_TYPE_MED)) && !(m_SongFlags[SONG_ITOLDEFFECTS])); if(GetType() == MOD_TYPE_669) { |
From: <sv...@op...> - 2024-08-09 18:10:48
|
Author: sagamusix Revision: 21375 Property Name: svn:log Action: modified Property diff: --- old property value +++ new property value @@ -1 +1 @@ -[Fix] MED: For MOD-style vibrato, a speed parameter of 0 was not treated as effect memory, and the speed "fixup" was incorrect anyway. For both vibrato types, the speed is now correct (position incremented on every tick). \ No newline at end of file +[Fix] MED: For MOD-style vibrato, a speed parameter of 0 was not treated as effect memory, and the speed "fixup" was incorrect anyway. For both vibrato types, the speed is now correct (position incremented on every tick). Fixes Untitled6.med by Apollon (https://www.un4seen.com/forum/?topic=15448.msg143464#msg143464). \ No newline at end of file |
From: <sv...@op...> - 2024-08-09 18:10:14
|
Author: sagamusix Date: Fri Aug 9 20:10:02 2024 New Revision: 21375 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21375 Log: [Fix] MED: For MOD-style vibrato, a speed parameter of 0 was not treated as effect memory, and the speed "fixup" was incorrect anyway. For both vibrato types, the speed is now correct (position incremented on every tick). Modified: trunk/OpenMPT/soundlib/Load_med.cpp trunk/OpenMPT/soundlib/Sndmix.cpp Modified: trunk/OpenMPT/soundlib/Load_med.cpp ============================================================================== --- trunk/OpenMPT/soundlib/Load_med.cpp Fri Aug 9 19:39:56 2024 (r21374) +++ trunk/OpenMPT/soundlib/Load_med.cpp Fri Aug 9 20:10:02 2024 (r21375) @@ -434,7 +434,7 @@ switch(command) { case 0x04: // Vibrato (twice as deep as in ProTracker) - m.SetEffectCommand(CMD_VIBRATO, (std::min<uint8>(param >> 3, 0x0F) << 4) | std::min<uint8>((param & 0x0F) * 2, 0x0F)); + m.SetEffectCommand(CMD_VIBRATO, (param & 0xF0) | std::min<uint8>((param & 0x0F) * 2, 0x0F)); break; case 0x08: // Hold and decay break; @@ -514,7 +514,7 @@ m.SetEffectCommand(CMD_MODCMDEX, 0x20 | nibbleLo); break; case 0x14: // Vibrato (ProTracker compatible depth, but faster) - m.SetEffectCommand(CMD_VIBRATO, (std::min<uint8>((param >> 4) + 1, 0x0F) << 4) | (param & 0x0F)); + m.SetEffectCommand(CMD_VIBRATO, param); break; case 0x15: // Set finetune m.SetEffectCommand(CMD_MODCMDEX, 0x50 | (param & 0x0F)); Modified: trunk/OpenMPT/soundlib/Sndmix.cpp ============================================================================== --- trunk/OpenMPT/soundlib/Sndmix.cpp Fri Aug 9 19:39:56 2024 (r21374) +++ trunk/OpenMPT/soundlib/Sndmix.cpp Fri Aug 9 20:10:02 2024 (r21375) @@ -1646,7 +1646,7 @@ if(chn.dwFlags[CHN_VIBRATO]) { - const bool advancePosition = !m_PlayState.m_flags[SONG_FIRSTTICK] || ((GetType() & (MOD_TYPE_IT | MOD_TYPE_MPT)) && !(m_SongFlags[SONG_ITOLDEFFECTS])); + const bool advancePosition = !m_PlayState.m_flags[SONG_FIRSTTICK] || ((GetType() & (MOD_TYPE_IT | MOD_TYPE_MPT | MOD_TYPE_MED)) && !(m_SongFlags[SONG_ITOLDEFFECTS])); if(GetType() == MOD_TYPE_669) { |
From: <sv...@op...> - 2024-08-09 17:40:07
|
Author: sagamusix Date: Fri Aug 9 19:39:56 2024 New Revision: 21374 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21374 Log: Merged revision(s) 21373 from trunk/OpenMPT: [Fix] MED: Fix pattern index explosion with multiple subsongs (fixes MED.Aria, https://www.un4seen.com/forum/?topic=15448.msg143464#msg143464). ........ Modified: branches/OpenMPT-1.31/ (props changed) branches/OpenMPT-1.31/soundlib/Load_med.cpp Modified: branches/OpenMPT-1.31/soundlib/Load_med.cpp ============================================================================== --- branches/OpenMPT-1.31/soundlib/Load_med.cpp Fri Aug 9 19:39:21 2024 (r21373) +++ branches/OpenMPT-1.31/soundlib/Load_med.cpp Fri Aug 9 19:39:56 2024 (r21374) @@ -1466,8 +1466,8 @@ order[from] = pat; } Patterns[pat].WriteEffect(EffectWriter(CMD_POSITIONJUMP, mpt::saturate_cast<ModCommand::PARAM>(to)).Row(Patterns[pat].GetNumRows() - 1).RetryPreviousRow()); - if(pat >= numPatterns) - numPatterns = pat + 1; + if(pat >= basePattern && (pat - basePattern) >= numPatterns) + numPatterns = pat - basePattern + 1; } if(numSongs > 1) @@ -1480,8 +1480,8 @@ Patterns[firstPat].WriteEffect(EffectWriter(CMD_CHANNELVOLUME, static_cast<ModCommand::PARAM>(ChnSettings[chn].nVolume)).Channel(chn).RetryNextRow()); Patterns[firstPat].WriteEffect(EffectWriter(CMD_PANNING8, mpt::saturate_cast<ModCommand::PARAM>(ChnSettings[chn].nPan)).Channel(chn).RetryNextRow()); } - if(firstPat >= numPatterns) - numPatterns = firstPat + 1; + if(firstPat >= basePattern && (firstPat - basePattern) >= numPatterns) + numPatterns = firstPat - basePattern + 1; } } |
From: <sv...@op...> - 2024-08-09 17:39:29
|
Author: sagamusix Date: Fri Aug 9 19:39:21 2024 New Revision: 21373 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21373 Log: [Fix] MED: Fix pattern index explosion with multiple subsongs (fixes MED.Aria, https://www.un4seen.com/forum/?topic=15448.msg143464#msg143464). Modified: trunk/OpenMPT/soundlib/Load_med.cpp Modified: trunk/OpenMPT/soundlib/Load_med.cpp ============================================================================== --- trunk/OpenMPT/soundlib/Load_med.cpp Thu Aug 8 23:42:59 2024 (r21372) +++ trunk/OpenMPT/soundlib/Load_med.cpp Fri Aug 9 19:39:21 2024 (r21373) @@ -1651,8 +1651,8 @@ order[from] = pat; } Patterns[pat].WriteEffect(EffectWriter(CMD_POSITIONJUMP, mpt::saturate_cast<ModCommand::PARAM>(to)).Row(Patterns[pat].GetNumRows() - 1).RetryPreviousRow()); - if(pat >= numPatterns) - numPatterns = pat + 1; + if(pat >= basePattern && (pat - basePattern) >= numPatterns) + numPatterns = pat - basePattern + 1; } if(numSongs > 1) @@ -1665,8 +1665,8 @@ Patterns[firstPat].WriteEffect(EffectWriter(CMD_CHANNELVOLUME, static_cast<ModCommand::PARAM>(ChnSettings[chn].nVolume)).Channel(chn).RetryNextRow()); Patterns[firstPat].WriteEffect(EffectWriter(CMD_PANNING8, mpt::saturate_cast<ModCommand::PARAM>(ChnSettings[chn].nPan)).Channel(chn).RetryNextRow()); } - if(firstPat >= numPatterns) - numPatterns = firstPat + 1; + if(firstPat >= basePattern && (firstPat - basePattern) >= numPatterns) + numPatterns = firstPat - basePattern + 1; } } |
From: <sv...@op...> - 2024-08-08 21:43:06
|
Author: sagamusix Date: Thu Aug 8 23:42:59 2024 New Revision: 21372 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21372 Log: Merged revision(s) 21322 from trunk/OpenMPT: [Imp] General tab: Disable Remove button if current plugin slot is empty. ........ Modified: branches/OpenMPT-1.31/ (props changed) branches/OpenMPT-1.31/mptrack/View_gen.cpp Modified: branches/OpenMPT-1.31/mptrack/View_gen.cpp ============================================================================== --- branches/OpenMPT-1.31/mptrack/View_gen.cpp Thu Aug 8 20:24:36 2024 (r21371) +++ branches/OpenMPT-1.31/mptrack/View_gen.cpp Thu Aug 8 23:42:59 2024 (r21372) @@ -452,6 +452,7 @@ GetDlgItem(IDC_MOVEFXSLOT)->EnableWindow((pPlugin) ? TRUE : FALSE); GetDlgItem(IDC_INSERTFXSLOT)->EnableWindow((pPlugin) ? TRUE : FALSE); GetDlgItem(IDC_CLONEPLUG)->EnableWindow((pPlugin) ? TRUE : FALSE); + GetDlgItem(IDC_DELPLUGIN)->EnableWindow((plugin.IsValidPlugin() || !plugin.Info.szLibraryName.empty() || !plugin.Info.szName.empty()) ? TRUE : FALSE); UpdateDryWetDisplay(); if(pPlugin && pPlugin->IsInstrument()) |
From: <sv...@op...> - 2024-08-08 18:25:50
|
Author: sagamusix Revision: 21371 Property Name: svn:log Action: modified Property diff: --- old property value +++ new property value @@ -1,7 +1,7 @@ Merged revision(s) 21369-21370 from trunk/OpenMPT: [Fix] Never try to cache soundfont files completely. Practically speaking, they are never read in their entirety, and even just trying to check whether a 4GB soundfont file was a valid file at all would fail on a 32-bit installation if the CacheCompleteFileBeforeLoading settings was enabled. ........ -[New] MED: Embedded sound bank support now also supports embedded SF2 banks. +[New] MID: Embedded sound bank support now also supports embedded SF2 banks. [Fix] MID: Embedded DLS sound banks were not properly read for god knows how long (r7125 would be an obvious candidate but it appears they were already broken before that). ........ |
From: <sv...@op...> - 2024-08-08 18:25:40
|
Author: sagamusix Revision: 21370 Property Name: svn:log Action: modified Property diff: --- old property value +++ new property value @@ -1,2 +1,2 @@ -[New] MED: Embedded sound bank support now also supports embedded SF2 banks. +[New] MID: Embedded sound bank support now also supports embedded SF2 banks. [Fix] MID: Embedded DLS sound banks were not properly read for god knows how long (r7125 would be an obvious candidate but it appears they were already broken before that). |
From: <sv...@op...> - 2024-08-08 18:24:44
|
Author: sagamusix Date: Thu Aug 8 20:24:36 2024 New Revision: 21371 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21371 Log: Merged revision(s) 21369-21370 from trunk/OpenMPT: [Fix] Never try to cache soundfont files completely. Practically speaking, they are never read in their entirety, and even just trying to check whether a 4GB soundfont file was a valid file at all would fail on a 32-bit installation if the CacheCompleteFileBeforeLoading settings was enabled. ........ [New] MED: Embedded sound bank support now also supports embedded SF2 banks. [Fix] MID: Embedded DLS sound banks were not properly read for god knows how long (r7125 would be an obvious candidate but it appears they were already broken before that). ........ Modified: branches/OpenMPT-1.31/ (props changed) branches/OpenMPT-1.31/soundlib/Dlsbank.cpp branches/OpenMPT-1.31/soundlib/Dlsbank.h branches/OpenMPT-1.31/soundlib/Load_mid.cpp Modified: branches/OpenMPT-1.31/soundlib/Dlsbank.cpp ============================================================================== --- branches/OpenMPT-1.31/soundlib/Dlsbank.cpp Thu Aug 8 20:18:56 2024 (r21370) +++ branches/OpenMPT-1.31/soundlib/Dlsbank.cpp Thu Aug 8 20:24:36 2024 (r21371) @@ -616,15 +616,22 @@ bool CDLSBank::IsDLSBank(const mpt::PathString &filename) { + if(filename.empty()) + return false; + mpt::IO::InputFile f(filename, false); + if(!f.IsValid()) + return false; + return IsDLSBank(GetFileReader(f)); +} + + +bool CDLSBank::IsDLSBank(FileReader file) +{ + file.Rewind(); RIFFChunkID riff; - if(filename.empty()) return false; - mpt::ifstream f(filename, std::ios::binary); - if(!f) - { + if(!file.ReadStruct(riff)) return false; - } - MemsetZero(riff); - mpt::IO::Read(f, riff); + // Check for embedded DLS sections if(riff.id_RIFF == IFFID_FORM) { @@ -632,28 +639,31 @@ do { uint32 len = mpt::bit_cast<uint32be>(riff.riff_len); - if (len <= 4) break; - if (riff.id_DLS == IFFID_XDLS) + if(len <= 4) break; + if(riff.id_DLS == IFFID_XDLS) { - mpt::IO::Read(f, riff); - break; + if(!file.ReadStruct(riff)) + return false; + break; // found it } if((len % 2u) != 0) len++; - if (!mpt::IO::SeekRelative(f, len-4)) break; - } while (mpt::IO::Read(f, riff)); + if(!file.Skip(len - 4)) + return false; + } while(file.ReadStruct(riff)); } else if(riff.id_RIFF == IFFID_RIFF && riff.id_DLS == IFFID_RMID) { for (;;) { - if(!mpt::IO::Read(f, riff)) - break; - if (riff.id_DLS == IFFID_DLS) - break; // found it + if(!file.ReadStruct(riff)) + return false; + if(riff.id_DLS == IFFID_DLS || riff.id_DLS == IFFID_sfbk) + break; // found it int len = riff.riff_len; if((len % 2u) != 0) len++; - if ((len <= 4) || !mpt::IO::SeekRelative(f, len-4)) break; + if((len <= 4) || !file.Skip(len - 4)) + return false; } } return ((riff.id_RIFF == IFFID_RIFF) @@ -733,7 +743,7 @@ } -bool CDLSBank::FindAndExtract(CSoundFile &sndFile, const INSTRUMENTINDEX ins, const bool isDrum) const +bool CDLSBank::FindAndExtract(CSoundFile &sndFile, const INSTRUMENTINDEX ins, const bool isDrum, FileReader *file) const { ModInstrument *pIns = sndFile.Instruments[ins]; if(pIns == nullptr) @@ -747,7 +757,7 @@ || FindInstrument(isDrum, 0xFFFF, isDrum ? 0xFF : program, key, &dlsIns)) { if(key < 0x80) drumRgn = GetRegionFromKey(dlsIns, key); - if(ExtractInstrument(sndFile, ins, dlsIns, drumRgn)) + if(ExtractInstrument(sndFile, ins, dlsIns, drumRgn, file)) { pIns = sndFile.Instruments[ins]; // Reset pointer because ExtractInstrument may delete the previous value. if((key >= 24) && (key < 24 + std::size(szMidiPercussionNames))) @@ -1394,7 +1404,7 @@ { if(filename.empty()) return false; m_szFileName = filename; - mpt::IO::InputFile f(filename, SettingCacheCompleteFileBeforeLoading()); + mpt::IO::InputFile f(filename, false); if(!f.IsValid()) return false; return Open(GetFileReader(f)); } @@ -1408,12 +1418,8 @@ m_szFileName = file.GetOptionalFileName().value(); file.Rewind(); - size_t dwMemLength = file.GetLength(); - size_t dwMemPos = 0; if(!file.CanRead(256)) - { return false; - } RIFFChunkID riff; file.ReadStruct(riff); @@ -1422,11 +1428,9 @@ { while(file.ReadStruct(riff)) { - if(riff.id_RIFF == IFFID_RIFF && riff.id_DLS == IFFID_DLS) - { - file.SkipBack(sizeof(riff)); + if(riff.id_RIFF == IFFID_RIFF && (riff.id_DLS == IFFID_DLS || riff.id_DLS == IFFID_sfbk)) break; - } + uint32 len = riff.riff_len; if((len % 2u) != 0) len++; @@ -1469,13 +1473,12 @@ m_WaveForms.clear(); m_Envelopes.clear(); nInsDef = 0; - if (dwMemLength > 8 + riff.riff_len + dwMemPos) dwMemLength = 8 + riff.riff_len + dwMemPos; bool applyPaddingToSampleChunk = true; while(file.CanRead(sizeof(IFFCHUNK))) { IFFCHUNK chunkHeader; file.ReadStruct(chunkHeader); - dwMemPos = file.GetPosition(); + const auto chunkStartPos = file.GetPosition(); FileReader chunk = file.ReadChunk(chunkHeader.len); bool applyPadding = (chunkHeader.len % 2u) != 0; @@ -1531,7 +1534,7 @@ if (((listid == IFFID_wvpl) && (m_nType & SOUNDBANK_TYPE_DLS)) || ((listid == IFFID_sdta) && (m_nType & SOUNDBANK_TYPE_SF2))) { - m_dwWavePoolOffset = dwMemPos + 4; + m_dwWavePoolOffset = chunkStartPos + 4; #ifdef DLSBANK_LOG MPT_LOG_GLOBAL(LogDebug, "DLSBANK", MPT_UFORMAT("Wave Pool offset: {}")(m_dwWavePoolOffset)); #endif @@ -1686,17 +1689,16 @@ } -bool CDLSBank::ExtractWaveForm(uint32 nIns, uint32 nRgn, std::vector<uint8> &waveData, uint32 &length) const +std::vector<uint8> CDLSBank::ExtractWaveForm(uint32 nIns, uint32 nRgn, FileReader *file) const { - waveData.clear(); - length = 0; + std::vector<uint8> waveData; if (nIns >= m_Instruments.size() || !m_dwWavePoolOffset) { #ifdef DLSBANK_LOG MPT_LOG_GLOBAL(LogDebug, "DLSBANK", MPT_UFORMAT("ExtractWaveForm({}) failed: m_Instruments.size()={} m_dwWavePoolOffset={} m_WaveForms.size()={}")(nIns, m_Instruments.size(), m_dwWavePoolOffset, m_WaveForms.size())); #endif - return false; + return waveData; } const DLSINSTRUMENT &dlsIns = m_Instruments[nIns]; if(nRgn >= dlsIns.Regions.size()) @@ -1704,7 +1706,7 @@ #ifdef DLSBANK_LOG MPT_LOG_GLOBAL(LogDebug, "DLSBANK", MPT_UFORMAT("invalid waveform region: nIns={} nRgn={} pSmp->nRegions={}")(nIns, nRgn, dlsIns.Regions.size())); #endif - return false; + return waveData; } uint32 nWaveLink = dlsIns.Regions[nRgn].nWaveLink; if(nWaveLink >= m_WaveForms.size()) @@ -1712,29 +1714,34 @@ #ifdef DLSBANK_LOG MPT_LOG_GLOBAL(LogDebug, "DLSBANK", MPT_UFORMAT("Invalid wavelink id: nWaveLink={} nWaveForms={}")(nWaveLink, m_WaveForms.size())); #endif - return false; + return waveData; } - mpt::ifstream f(m_szFileName, std::ios::binary); - if(!f) + std::unique_ptr<mpt::IO::InputFile> inputFile; + FileReader f; + if(file) { - return false; + f = *file; + } else + { + inputFile = std::make_unique<mpt::IO::InputFile>(m_szFileName, false); + if(!inputFile->IsValid()) + return waveData; + f = GetFileReader(*inputFile); } - mpt::IO::Offset sampleOffset = mpt::saturate_cast<mpt::IO::Offset>(m_WaveForms[nWaveLink] + m_dwWavePoolOffset); - if(mpt::IO::SeekAbsolute(f, sampleOffset)) + auto sampleOffset = mpt::saturate_cast<FileReader::pos_type>(m_WaveForms[nWaveLink] + m_dwWavePoolOffset); + if(f.Seek(sampleOffset)) { if (m_nType & SOUNDBANK_TYPE_SF2) { if (m_SamplesEx[nWaveLink].dwLen) { - if (mpt::IO::SeekRelative(f, 8)) + if (f.Skip(8)) { - length = m_SamplesEx[nWaveLink].dwLen; try { - waveData.assign(length + 8, 0); - mpt::IO::ReadRaw(f, waveData.data(), length); + f.ReadVector(waveData, m_SamplesEx[nWaveLink].dwLen); } catch(mpt::out_of_memory e) { mpt::delete_out_of_memory(e); @@ -1744,16 +1751,14 @@ } else { LISTChunk chunk; - if(mpt::IO::Read(f, chunk)) + if(f.ReadStruct(chunk)) { if((chunk.id == IFFID_LIST) && (chunk.listid == IFFID_wave) && (chunk.len > 4)) { - length = chunk.len + 8; try { - waveData.assign(chunk.len + sizeof(IFFCHUNK), 0); - memcpy(waveData.data(), &chunk, sizeof(chunk)); - mpt::IO::ReadRaw(f, waveData.data() + sizeof(chunk), length - sizeof(chunk)); + f.SkipBack(sizeof(chunk)); + f.ReadVector(waveData, chunk.len + sizeof(IFFCHUNK)); } catch(mpt::out_of_memory e) { mpt::delete_out_of_memory(e); @@ -1762,14 +1767,12 @@ } } } - return !waveData.empty(); + return waveData; } -bool CDLSBank::ExtractSample(CSoundFile &sndFile, SAMPLEINDEX nSample, uint32 nIns, uint32 nRgn, int transpose) const +bool CDLSBank::ExtractSample(CSoundFile &sndFile, SAMPLEINDEX nSample, uint32 nIns, uint32 nRgn, int transpose, FileReader *file) const { - std::vector<uint8> pWaveForm; - uint32 dwLen = 0; bool ok, hasWaveform; if(nIns >= m_Instruments.size()) @@ -1777,9 +1780,8 @@ const DLSINSTRUMENT &dlsIns = m_Instruments[nIns]; if(nRgn >= dlsIns.Regions.size()) return false; - if(!ExtractWaveForm(nIns, nRgn, pWaveForm, dwLen)) - return false; - if(dwLen < 16) + const std::vector<uint8> waveData = ExtractWaveForm(nIns, nRgn, file); + if(waveData.size() < 16) return false; ok = false; @@ -1798,10 +1800,10 @@ #endif sample.Initialize(); - FileReader chunk{mpt::as_span(pWaveForm.data(), dwLen)}; + FileReader chunk{mpt::as_span(waveData)}; if(!p.compressed || !sndFile.ReadSampleFromFile(nSample, chunk, false, false)) { - sample.nLength = dwLen / 2; + sample.nLength = mpt::saturate_cast<SmpLength>(waveData.size() / 2); SampleIO( SampleIO::_16bit, SampleIO::mono, @@ -1822,8 +1824,8 @@ hasWaveform = sample.HasSampleData(); } else { - FileReader file(mpt::as_span(pWaveForm.data(), dwLen)); - hasWaveform = sndFile.ReadWAVSample(nSample, file, false, &wsmpChunk); + FileReader wavChunk(mpt::as_span(waveData)); + hasWaveform = sndFile.ReadWAVSample(nSample, wavChunk, false, &wsmpChunk); if(dlsIns.szName[0]) sndFile.m_szNames[nSample] = mpt::String::ReadAutoBuf(dlsIns.szName); } @@ -2033,7 +2035,7 @@ } -bool CDLSBank::ExtractInstrument(CSoundFile &sndFile, INSTRUMENTINDEX nInstr, uint32 nIns, uint32 nDrumRgn) const +bool CDLSBank::ExtractInstrument(CSoundFile &sndFile, INSTRUMENTINDEX nInstr, uint32 nIns, uint32 nDrumRgn, FileReader *file) const { uint32 minRegion, maxRegion, nEnv; @@ -2194,7 +2196,7 @@ // Load the sample if(!duplicateRegion || !sndFile.GetSample(nSmp).HasSampleData()) { - ExtractSample(sndFile, nSmp, nIns, nRgn, transpose); + ExtractSample(sndFile, nSmp, nIns, nRgn, transpose, file); extractedSamples.insert(rgn.nWaveLink); } } else if(duplicateRegion && sndFile.GetSample(RgnToSmp[dupRegion]).GetNumChannels() == 1) @@ -2213,9 +2215,8 @@ const uint8 offsetOrig = (pan1 < pan2) ? 1 : 0; const uint8 offsetNew = (pan1 < pan2) ? 0 : 1; - std::vector<uint8> pWaveForm; - uint32 dwLen = 0; - if(!ExtractWaveForm(nIns, nRgn, pWaveForm, dwLen)) + const std::vector<uint8> waveData = ExtractWaveForm(nIns, nRgn, file); + if(waveData.empty()) continue; extractedSamples.insert(rgn.nWaveLink); @@ -2230,8 +2231,8 @@ // Now read the other channel if(m_SamplesEx[m_Instruments[nIns].Regions[nRgn].nWaveLink].compressed) { - FileReader file{mpt::as_span(pWaveForm)}; - if(sndFile.ReadSampleFromFile(nSmp, file, false, false)) + FileReader smpChunk{mpt::as_span(waveData)}; + if(sndFile.ReadSampleFromFile(nSmp, smpChunk, false, false)) { pDest = sampleCopy.sample16() + offsetNew; const SmpLength copyLength = std::min(sample.nLength, sampleCopy.nLength); @@ -2242,10 +2243,10 @@ } } else { - SmpLength len = std::min(dwLen / 2u, sampleCopy.nLength); - const std::byte *src = mpt::byte_cast<const std::byte *>(pWaveForm.data()); + SmpLength len = std::min(mpt::saturate_cast<SmpLength>(waveData.size() / 2u), sampleCopy.nLength); + const std::byte *src = mpt::byte_cast<const std::byte *>(waveData.data()); int16 *dst = sampleCopy.sample16() + offsetNew; - CopySample<SC::ConversionChain<SC::Convert<int16, int16>, SC::DecodeInt16<0, littleEndian16>>>(dst, len, 2, src, pWaveForm.size(), 1); + CopySample<SC::ConversionChain<SC::Convert<int16, int16>, SC::DecodeInt16<0, littleEndian16>>>(dst, len, 2, src, waveData.size(), 1); } sample.FreeSample(); sample = sampleCopy; Modified: branches/OpenMPT-1.31/soundlib/Dlsbank.h ============================================================================== --- branches/OpenMPT-1.31/soundlib/Dlsbank.h Thu Aug 8 20:18:56 2024 (r21370) +++ branches/OpenMPT-1.31/soundlib/Dlsbank.h Thu Aug 8 20:24:36 2024 (r21371) @@ -129,6 +129,7 @@ bool operator==(const CDLSBank &other) const noexcept { return !mpt::PathCompareNoCase(m_szFileName, other.m_szFileName); } static bool IsDLSBank(const mpt::PathString &filename); + static bool IsDLSBank(FileReader file); static uint32 MakeMelodicCode(uint32 bank, uint32 instr) { return ((bank << 16) | (instr));} static uint32 MakeDrumCode(uint32 rgn, uint32 instr) { return (0x80000000 | (rgn << 16) | (instr));} @@ -144,16 +145,16 @@ uint32 GetNumSamples() const { return static_cast<uint32>(m_WaveForms.size()); } const DLSINSTRUMENT *GetInstrument(uint32 iIns) const { return iIns < m_Instruments.size() ? &m_Instruments[iIns] : nullptr; } [[nodiscard]] const DLSINSTRUMENT *FindInstrument(bool isDrum, uint32 bank = 0xFF, uint32 program = 0xFF, uint32 key = 0xFF, uint32 *pInsNo = nullptr) const; - bool FindAndExtract(CSoundFile &sndFile, const INSTRUMENTINDEX ins, const bool isDrum) const; + bool FindAndExtract(CSoundFile &sndFile, const INSTRUMENTINDEX ins, const bool isDrum, FileReader *file = nullptr) const; uint32 GetRegionFromKey(uint32 nIns, uint32 nKey) const; - bool ExtractWaveForm(uint32 nIns, uint32 nRgn, std::vector<uint8> &waveData, uint32 &length) const; - bool ExtractSample(CSoundFile &sndFile, SAMPLEINDEX nSample, uint32 nIns, uint32 nRgn, int transpose = 0) const; - bool ExtractInstrument(CSoundFile &sndFile, INSTRUMENTINDEX nInstr, uint32 nIns, uint32 nDrumRgn) const; + bool ExtractSample(CSoundFile &sndFile, SAMPLEINDEX nSample, uint32 nIns, uint32 nRgn, int transpose = 0, FileReader *file = nullptr) const; + bool ExtractInstrument(CSoundFile &sndFile, INSTRUMENTINDEX nInstr, uint32 nIns, uint32 nDrumRgn, FileReader *file = nullptr) const; const char *GetRegionName(uint32 nIns, uint32 nRgn) const; uint16 GetPanning(uint32 ins, uint32 region) const; // Internal Loader Functions protected: + std::vector<uint8> ExtractWaveForm(uint32 nIns, uint32 nRgn, FileReader *file) const; bool UpdateInstrumentDefinition(DLSINSTRUMENT *pDlsIns, FileReader chunk); bool UpdateSF2PresetData(SF2LoaderInfo &sf2info, const IFFCHUNK &header, FileReader &chunk); bool ConvertSF2ToDLS(SF2LoaderInfo &sf2info); Modified: branches/OpenMPT-1.31/soundlib/Load_mid.cpp ============================================================================== --- branches/OpenMPT-1.31/soundlib/Load_mid.cpp Thu Aug 8 20:18:56 2024 (r21370) +++ branches/OpenMPT-1.31/soundlib/Load_mid.cpp Thu Aug 8 20:24:36 2024 (r21371) @@ -1321,11 +1321,11 @@ std::unique_ptr<CDLSBank> cachedBank, embeddedBank; - if(CDLSBank::IsDLSBank(file.GetOptionalFileName().value_or(P_("")))) + if(CDLSBank::IsDLSBank(file)) { // Soundfont embedded in MIDI file embeddedBank = std::make_unique<CDLSBank>(); - embeddedBank->Open(file.GetOptionalFileName().value_or(P_(""))); + embeddedBank->Open(file); } else { // Soundfont with same name as MIDI file @@ -1353,7 +1353,7 @@ else if(pIns->nMidiProgram) midiCode = (pIns->nMidiProgram - 1) & 0x7F; - if(embeddedBank && embeddedBank->FindAndExtract(*this, ins, midiCode >= 0x80)) + if(embeddedBank && embeddedBank->FindAndExtract(*this, ins, midiCode >= 0x80, &file)) { continue; } |
From: <sv...@op...> - 2024-08-08 18:19:09
|
Author: sagamusix Date: Thu Aug 8 20:18:56 2024 New Revision: 21370 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21370 Log: [New] MED: Embedded sound bank support now also supports embedded SF2 banks. [Fix] MID: Embedded DLS sound banks were not properly read for god knows how long (r7125 would be an obvious candidate but it appears they were already broken before that). Modified: trunk/OpenMPT/soundlib/Dlsbank.cpp trunk/OpenMPT/soundlib/Dlsbank.h trunk/OpenMPT/soundlib/Load_mid.cpp Modified: trunk/OpenMPT/soundlib/Dlsbank.cpp ============================================================================== --- trunk/OpenMPT/soundlib/Dlsbank.cpp Thu Aug 8 14:44:55 2024 (r21369) +++ trunk/OpenMPT/soundlib/Dlsbank.cpp Thu Aug 8 20:18:56 2024 (r21370) @@ -616,15 +616,22 @@ bool CDLSBank::IsDLSBank(const mpt::PathString &filename) { + if(filename.empty()) + return false; + mpt::IO::InputFile f(filename, false); + if(!f.IsValid()) + return false; + return IsDLSBank(GetFileReader(f)); +} + + +bool CDLSBank::IsDLSBank(FileReader file) +{ + file.Rewind(); RIFFChunkID riff; - if(filename.empty()) return false; - mpt::ifstream f(filename, std::ios::binary); - if(!f) - { + if(!file.ReadStruct(riff)) return false; - } - MemsetZero(riff); - mpt::IO::Read(f, riff); + // Check for embedded DLS sections if(riff.id_RIFF == IFFID_FORM) { @@ -632,28 +639,31 @@ do { uint32 len = mpt::bit_cast<uint32be>(riff.riff_len); - if (len <= 4) break; - if (riff.id_DLS == IFFID_XDLS) + if(len <= 4) break; + if(riff.id_DLS == IFFID_XDLS) { - mpt::IO::Read(f, riff); - break; + if(!file.ReadStruct(riff)) + return false; + break; // found it } if((len % 2u) != 0) len++; - if (!mpt::IO::SeekRelative(f, len-4)) break; - } while (mpt::IO::Read(f, riff)); + if(!file.Skip(len - 4)) + return false; + } while(file.ReadStruct(riff)); } else if(riff.id_RIFF == IFFID_RIFF && riff.id_DLS == IFFID_RMID) { for (;;) { - if(!mpt::IO::Read(f, riff)) - break; - if (riff.id_DLS == IFFID_DLS) - break; // found it + if(!file.ReadStruct(riff)) + return false; + if(riff.id_DLS == IFFID_DLS || riff.id_DLS == IFFID_sfbk) + break; // found it int len = riff.riff_len; if((len % 2u) != 0) len++; - if ((len <= 4) || !mpt::IO::SeekRelative(f, len-4)) break; + if((len <= 4) || !file.Skip(len - 4)) + return false; } } return ((riff.id_RIFF == IFFID_RIFF) @@ -733,7 +743,7 @@ } -bool CDLSBank::FindAndExtract(CSoundFile &sndFile, const INSTRUMENTINDEX ins, const bool isDrum) const +bool CDLSBank::FindAndExtract(CSoundFile &sndFile, const INSTRUMENTINDEX ins, const bool isDrum, FileReader *file) const { ModInstrument *pIns = sndFile.Instruments[ins]; if(pIns == nullptr) @@ -747,7 +757,7 @@ || FindInstrument(isDrum, 0xFFFF, isDrum ? 0xFF : program, key, &dlsIns)) { if(key < 0x80) drumRgn = GetRegionFromKey(dlsIns, key); - if(ExtractInstrument(sndFile, ins, dlsIns, drumRgn)) + if(ExtractInstrument(sndFile, ins, dlsIns, drumRgn, file)) { pIns = sndFile.Instruments[ins]; // Reset pointer because ExtractInstrument may delete the previous value. if((key >= 24) && (key < 24 + std::size(szMidiPercussionNames))) @@ -1416,12 +1426,8 @@ m_szFileName = file.GetOptionalFileName().value(); file.Rewind(); - size_t dwMemLength = file.GetLength(); - size_t dwMemPos = 0; if(!file.CanRead(256)) - { return false; - } RIFFChunkID riff; file.ReadStruct(riff); @@ -1430,11 +1436,9 @@ { while(file.ReadStruct(riff)) { - if(riff.id_RIFF == IFFID_RIFF && riff.id_DLS == IFFID_DLS) - { - file.SkipBack(sizeof(riff)); + if(riff.id_RIFF == IFFID_RIFF && (riff.id_DLS == IFFID_DLS || riff.id_DLS == IFFID_sfbk)) break; - } + uint32 len = riff.riff_len; if((len % 2u) != 0) len++; @@ -1477,13 +1481,12 @@ m_WaveForms.clear(); m_Envelopes.clear(); nInsDef = 0; - if (dwMemLength > 8 + riff.riff_len + dwMemPos) dwMemLength = 8 + riff.riff_len + dwMemPos; bool applyPaddingToSampleChunk = true; while(file.CanRead(sizeof(IFFCHUNK))) { IFFCHUNK chunkHeader; file.ReadStruct(chunkHeader); - dwMemPos = file.GetPosition(); + const auto chunkStartPos = file.GetPosition(); FileReader chunk = file.ReadChunk(chunkHeader.len); bool applyPadding = (chunkHeader.len % 2u) != 0; @@ -1539,7 +1542,7 @@ if (((listid == IFFID_wvpl) && (m_nType & SOUNDBANK_TYPE_DLS)) || ((listid == IFFID_sdta) && (m_nType & SOUNDBANK_TYPE_SF2))) { - m_dwWavePoolOffset = dwMemPos + 4; + m_dwWavePoolOffset = chunkStartPos + 4; #ifdef DLSBANK_LOG MPT_LOG_GLOBAL(LogDebug, "DLSBANK", MPT_UFORMAT("Wave Pool offset: {}")(m_dwWavePoolOffset)); #endif @@ -1694,17 +1697,16 @@ } -bool CDLSBank::ExtractWaveForm(uint32 nIns, uint32 nRgn, std::vector<uint8> &waveData, uint32 &length) const +std::vector<uint8> CDLSBank::ExtractWaveForm(uint32 nIns, uint32 nRgn, FileReader *file) const { - waveData.clear(); - length = 0; + std::vector<uint8> waveData; if (nIns >= m_Instruments.size() || !m_dwWavePoolOffset) { #ifdef DLSBANK_LOG MPT_LOG_GLOBAL(LogDebug, "DLSBANK", MPT_UFORMAT("ExtractWaveForm({}) failed: m_Instruments.size()={} m_dwWavePoolOffset={} m_WaveForms.size()={}")(nIns, m_Instruments.size(), m_dwWavePoolOffset, m_WaveForms.size())); #endif - return false; + return waveData; } const DLSINSTRUMENT &dlsIns = m_Instruments[nIns]; if(nRgn >= dlsIns.Regions.size()) @@ -1712,7 +1714,7 @@ #ifdef DLSBANK_LOG MPT_LOG_GLOBAL(LogDebug, "DLSBANK", MPT_UFORMAT("invalid waveform region: nIns={} nRgn={} pSmp->nRegions={}")(nIns, nRgn, dlsIns.Regions.size())); #endif - return false; + return waveData; } uint32 nWaveLink = dlsIns.Regions[nRgn].nWaveLink; if(nWaveLink >= m_WaveForms.size()) @@ -1720,29 +1722,34 @@ #ifdef DLSBANK_LOG MPT_LOG_GLOBAL(LogDebug, "DLSBANK", MPT_UFORMAT("Invalid wavelink id: nWaveLink={} nWaveForms={}")(nWaveLink, m_WaveForms.size())); #endif - return false; + return waveData; } - mpt::ifstream f(m_szFileName, std::ios::binary); - if(!f) + std::unique_ptr<mpt::IO::InputFile> inputFile; + FileReader f; + if(file) { - return false; + f = *file; + } else + { + inputFile = std::make_unique<mpt::IO::InputFile>(m_szFileName, false); + if(!inputFile->IsValid()) + return waveData; + f = GetFileReader(*inputFile); } - mpt::IO::Offset sampleOffset = mpt::saturate_cast<mpt::IO::Offset>(m_WaveForms[nWaveLink] + m_dwWavePoolOffset); - if(mpt::IO::SeekAbsolute(f, sampleOffset)) + auto sampleOffset = mpt::saturate_cast<FileReader::pos_type>(m_WaveForms[nWaveLink] + m_dwWavePoolOffset); + if(f.Seek(sampleOffset)) { if (m_nType & SOUNDBANK_TYPE_SF2) { if (m_SamplesEx[nWaveLink].dwLen) { - if (mpt::IO::SeekRelative(f, 8)) + if (f.Skip(8)) { - length = m_SamplesEx[nWaveLink].dwLen; try { - waveData.assign(length + 8, 0); - mpt::IO::ReadRaw(f, waveData.data(), length); + f.ReadVector(waveData, m_SamplesEx[nWaveLink].dwLen); } catch(mpt::out_of_memory e) { mpt::delete_out_of_memory(e); @@ -1752,16 +1759,14 @@ } else { LISTChunk chunk; - if(mpt::IO::Read(f, chunk)) + if(f.ReadStruct(chunk)) { if((chunk.id == IFFID_LIST) && (chunk.listid == IFFID_wave) && (chunk.len > 4)) { - length = chunk.len + 8; try { - waveData.assign(chunk.len + sizeof(IFFCHUNK), 0); - memcpy(waveData.data(), &chunk, sizeof(chunk)); - mpt::IO::ReadRaw(f, waveData.data() + sizeof(chunk), length - sizeof(chunk)); + f.SkipBack(sizeof(chunk)); + f.ReadVector(waveData, chunk.len + sizeof(IFFCHUNK)); } catch(mpt::out_of_memory e) { mpt::delete_out_of_memory(e); @@ -1770,14 +1775,12 @@ } } } - return !waveData.empty(); + return waveData; } -bool CDLSBank::ExtractSample(CSoundFile &sndFile, SAMPLEINDEX nSample, uint32 nIns, uint32 nRgn, int transpose) const +bool CDLSBank::ExtractSample(CSoundFile &sndFile, SAMPLEINDEX nSample, uint32 nIns, uint32 nRgn, int transpose, FileReader *file) const { - std::vector<uint8> pWaveForm; - uint32 dwLen = 0; bool ok, hasWaveform; if(nIns >= m_Instruments.size()) @@ -1785,9 +1788,8 @@ const DLSINSTRUMENT &dlsIns = m_Instruments[nIns]; if(nRgn >= dlsIns.Regions.size()) return false; - if(!ExtractWaveForm(nIns, nRgn, pWaveForm, dwLen)) - return false; - if(dwLen < 16) + const std::vector<uint8> waveData = ExtractWaveForm(nIns, nRgn, file); + if(waveData.size() < 16) return false; ok = false; @@ -1806,10 +1808,10 @@ #endif sample.Initialize(); - FileReader chunk{mpt::as_span(pWaveForm.data(), dwLen)}; + FileReader chunk{mpt::as_span(waveData)}; if(!p.compressed || !sndFile.ReadSampleFromFile(nSample, chunk, false, false)) { - sample.nLength = dwLen / 2; + sample.nLength = mpt::saturate_cast<SmpLength>(waveData.size() / 2); SampleIO( SampleIO::_16bit, SampleIO::mono, @@ -1830,8 +1832,8 @@ hasWaveform = sample.HasSampleData(); } else { - FileReader file(mpt::as_span(pWaveForm.data(), dwLen)); - hasWaveform = sndFile.ReadWAVSample(nSample, file, false, &wsmpChunk); + FileReader wavChunk(mpt::as_span(waveData)); + hasWaveform = sndFile.ReadWAVSample(nSample, wavChunk, false, &wsmpChunk); if(dlsIns.szName[0]) sndFile.m_szNames[nSample] = mpt::String::ReadAutoBuf(dlsIns.szName); } @@ -2041,7 +2043,7 @@ } -bool CDLSBank::ExtractInstrument(CSoundFile &sndFile, INSTRUMENTINDEX nInstr, uint32 nIns, uint32 nDrumRgn) const +bool CDLSBank::ExtractInstrument(CSoundFile &sndFile, INSTRUMENTINDEX nInstr, uint32 nIns, uint32 nDrumRgn, FileReader *file) const { uint32 minRegion, maxRegion, nEnv; @@ -2202,7 +2204,7 @@ // Load the sample if(!duplicateRegion || !sndFile.GetSample(nSmp).HasSampleData()) { - ExtractSample(sndFile, nSmp, nIns, nRgn, transpose); + ExtractSample(sndFile, nSmp, nIns, nRgn, transpose, file); extractedSamples.insert(rgn.nWaveLink); } } else if(duplicateRegion && sndFile.GetSample(RgnToSmp[dupRegion]).GetNumChannels() == 1) @@ -2221,9 +2223,8 @@ const uint8 offsetOrig = (pan1 < pan2) ? 1 : 0; const uint8 offsetNew = (pan1 < pan2) ? 0 : 1; - std::vector<uint8> pWaveForm; - uint32 dwLen = 0; - if(!ExtractWaveForm(nIns, nRgn, pWaveForm, dwLen)) + const std::vector<uint8> waveData = ExtractWaveForm(nIns, nRgn, file); + if(waveData.empty()) continue; extractedSamples.insert(rgn.nWaveLink); @@ -2238,8 +2239,8 @@ // Now read the other channel if(m_SamplesEx[m_Instruments[nIns].Regions[nRgn].nWaveLink].compressed) { - FileReader file{mpt::as_span(pWaveForm)}; - if(sndFile.ReadSampleFromFile(nSmp, file, false, false)) + FileReader smpChunk{mpt::as_span(waveData)}; + if(sndFile.ReadSampleFromFile(nSmp, smpChunk, false, false)) { pDest = sampleCopy.sample16() + offsetNew; const SmpLength copyLength = std::min(sample.nLength, sampleCopy.nLength); @@ -2250,10 +2251,10 @@ } } else { - SmpLength len = std::min(dwLen / 2u, sampleCopy.nLength); - const std::byte *src = mpt::byte_cast<const std::byte *>(pWaveForm.data()); + SmpLength len = std::min(mpt::saturate_cast<SmpLength>(waveData.size() / 2u), sampleCopy.nLength); + const std::byte *src = mpt::byte_cast<const std::byte *>(waveData.data()); int16 *dst = sampleCopy.sample16() + offsetNew; - CopySample<SC::ConversionChain<SC::Convert<int16, int16>, SC::DecodeInt16<0, littleEndian16>>>(dst, len, 2, src, pWaveForm.size(), 1); + CopySample<SC::ConversionChain<SC::Convert<int16, int16>, SC::DecodeInt16<0, littleEndian16>>>(dst, len, 2, src, waveData.size(), 1); } sample.FreeSample(); sample = sampleCopy; Modified: trunk/OpenMPT/soundlib/Dlsbank.h ============================================================================== --- trunk/OpenMPT/soundlib/Dlsbank.h Thu Aug 8 14:44:55 2024 (r21369) +++ trunk/OpenMPT/soundlib/Dlsbank.h Thu Aug 8 20:18:56 2024 (r21370) @@ -127,6 +127,7 @@ bool operator==(const CDLSBank &other) const noexcept { return !mpt::PathCompareNoCase(m_szFileName, other.m_szFileName); } static bool IsDLSBank(const mpt::PathString &filename); + static bool IsDLSBank(FileReader file); static uint32 MakeMelodicCode(uint32 bank, uint32 instr) { return ((bank << 16) | (instr));} static uint32 MakeDrumCode(uint32 rgn, uint32 instr) { return (0x80000000 | (rgn << 16) | (instr));} @@ -142,16 +143,16 @@ uint32 GetNumSamples() const { return static_cast<uint32>(m_WaveForms.size()); } const DLSINSTRUMENT *GetInstrument(uint32 iIns) const { return iIns < m_Instruments.size() ? &m_Instruments[iIns] : nullptr; } [[nodiscard]] const DLSINSTRUMENT *FindInstrument(bool isDrum, uint32 bank = 0xFF, uint32 program = 0xFF, uint32 key = 0xFF, uint32 *pInsNo = nullptr) const; - bool FindAndExtract(CSoundFile &sndFile, const INSTRUMENTINDEX ins, const bool isDrum) const; + bool FindAndExtract(CSoundFile &sndFile, const INSTRUMENTINDEX ins, const bool isDrum, FileReader *file = nullptr) const; uint32 GetRegionFromKey(uint32 nIns, uint32 nKey) const; - bool ExtractWaveForm(uint32 nIns, uint32 nRgn, std::vector<uint8> &waveData, uint32 &length) const; - bool ExtractSample(CSoundFile &sndFile, SAMPLEINDEX nSample, uint32 nIns, uint32 nRgn, int transpose = 0) const; - bool ExtractInstrument(CSoundFile &sndFile, INSTRUMENTINDEX nInstr, uint32 nIns, uint32 nDrumRgn) const; + bool ExtractSample(CSoundFile &sndFile, SAMPLEINDEX nSample, uint32 nIns, uint32 nRgn, int transpose = 0, FileReader *file = nullptr) const; + bool ExtractInstrument(CSoundFile &sndFile, INSTRUMENTINDEX nInstr, uint32 nIns, uint32 nDrumRgn, FileReader *file = nullptr) const; const char *GetRegionName(uint32 nIns, uint32 nRgn) const; uint16 GetPanning(uint32 ins, uint32 region) const; // Internal Loader Functions protected: + std::vector<uint8> ExtractWaveForm(uint32 nIns, uint32 nRgn, FileReader *file) const; bool UpdateInstrumentDefinition(DLSINSTRUMENT *pDlsIns, FileReader chunk); bool UpdateSF2PresetData(SF2LoaderInfo &sf2info, const IFFCHUNK &header, FileReader &chunk); bool ConvertSF2ToDLS(SF2LoaderInfo &sf2info); Modified: trunk/OpenMPT/soundlib/Load_mid.cpp ============================================================================== --- trunk/OpenMPT/soundlib/Load_mid.cpp Thu Aug 8 14:44:55 2024 (r21369) +++ trunk/OpenMPT/soundlib/Load_mid.cpp Thu Aug 8 20:18:56 2024 (r21370) @@ -1320,11 +1320,11 @@ std::unique_ptr<CDLSBank> cachedBank, embeddedBank; - if(CDLSBank::IsDLSBank(file.GetOptionalFileName().value_or(P_("")))) + if(CDLSBank::IsDLSBank(file)) { // Soundfont embedded in MIDI file embeddedBank = std::make_unique<CDLSBank>(); - embeddedBank->Open(file.GetOptionalFileName().value_or(P_(""))); + embeddedBank->Open(file); } else { // Soundfont with same name as MIDI file @@ -1352,7 +1352,7 @@ else if(pIns->nMidiProgram) midiCode = (pIns->nMidiProgram - 1) & 0x7F; - if(embeddedBank && embeddedBank->FindAndExtract(*this, ins, midiCode >= 0x80)) + if(embeddedBank && embeddedBank->FindAndExtract(*this, ins, midiCode >= 0x80, &file)) { continue; } |
From: <sv...@op...> - 2024-08-08 12:45:05
|
Author: sagamusix Date: Thu Aug 8 14:44:55 2024 New Revision: 21369 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21369 Log: [Fix] Never try to cache soundfont files completely. Practically speaking, they are never read in their entirety, and even just trying to check whether a 4GB soundfont file was a valid file at all would fail on a 32-bit installation if the CacheCompleteFileBeforeLoading settings was enabled. Modified: trunk/OpenMPT/soundlib/Dlsbank.cpp Modified: trunk/OpenMPT/soundlib/Dlsbank.cpp ============================================================================== --- trunk/OpenMPT/soundlib/Dlsbank.cpp Thu Aug 8 08:09:45 2024 (r21368) +++ trunk/OpenMPT/soundlib/Dlsbank.cpp Thu Aug 8 14:44:55 2024 (r21369) @@ -1402,7 +1402,7 @@ { if(filename.empty()) return false; m_szFileName = filename; - mpt::IO::InputFile f(filename, SettingCacheCompleteFileBeforeLoading()); + mpt::IO::InputFile f(filename, false); if(!f.IsValid()) return false; return Open(GetFileReader(f)); } |
From: <sv...@op...> - 2024-08-08 06:09:57
|
Author: manx Date: Thu Aug 8 08:09:45 2024 New Revision: 21368 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21368 Log: Merged revision(s) 21367 from trunk/OpenMPT: [Doc] libopenmpt: Document how to use a DLL build. ........ Modified: branches/OpenMPT-1.31/ (props changed) branches/OpenMPT-1.31/doc/libopenmpt/gettingstarted.md Modified: branches/OpenMPT-1.31/doc/libopenmpt/gettingstarted.md ============================================================================== --- branches/OpenMPT-1.31/doc/libopenmpt/gettingstarted.md Thu Aug 8 08:09:20 2024 (r21367) +++ branches/OpenMPT-1.31/doc/libopenmpt/gettingstarted.md Thu Aug 8 08:09:45 2024 (r21368) @@ -279,6 +279,10 @@ - defines - MPT_WITH_VORBISFILE - - dllbuild: - - defines - - LIBOPENMPT_BUILD_DLL + - dll: + - build: + - defines + - LIBOPENMPT_BUILD_DLL + - use: + - defines + - LIBOPENMPT_USE_DLL |
From: <sv...@op...> - 2024-08-08 06:09:32
|
Author: manx Date: Thu Aug 8 08:09:20 2024 New Revision: 21367 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21367 Log: [Doc] libopenmpt: Document how to use a DLL build. Modified: trunk/OpenMPT/doc/libopenmpt/gettingstarted.md Modified: trunk/OpenMPT/doc/libopenmpt/gettingstarted.md ============================================================================== --- trunk/OpenMPT/doc/libopenmpt/gettingstarted.md Thu Aug 8 07:05:19 2024 (r21366) +++ trunk/OpenMPT/doc/libopenmpt/gettingstarted.md Thu Aug 8 08:09:20 2024 (r21367) @@ -279,6 +279,10 @@ - defines - MPT_WITH_VORBISFILE - - dllbuild: - - defines - - LIBOPENMPT_BUILD_DLL + - dll: + - build: + - defines + - LIBOPENMPT_BUILD_DLL + - use: + - defines + - LIBOPENMPT_USE_DLL |
From: <sv...@op...> - 2024-08-08 05:05:31
|
Author: manx Date: Thu Aug 8 07:05:19 2024 New Revision: 21366 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21366 Log: Merged revision(s) 21365 from trunk/OpenMPT: [Doc] libopenmpt: Document building libopenmpt with other build systems. ........ Modified: branches/OpenMPT-1.31/ (props changed) branches/OpenMPT-1.31/doc/libopenmpt/gettingstarted.md Modified: branches/OpenMPT-1.31/doc/libopenmpt/gettingstarted.md ============================================================================== --- branches/OpenMPT-1.31/doc/libopenmpt/gettingstarted.md Wed Aug 7 21:08:43 2024 (r21365) +++ branches/OpenMPT-1.31/doc/libopenmpt/gettingstarted.md Thu Aug 8 07:05:19 2024 (r21366) @@ -207,3 +207,78 @@ - Android NDK See `build/android_ndk/README.AndroidNDK.txt`. + + + +### Building libopenmpt with any other build system + +libopenmpt is very simple to build with any build system of your choice. The +only required information is listed below. We currently only support building +libopenmpt itself this way, but the test suite and openmpt123 may follow later. + + - language: + - C++17 / C++20 + + - defines: + - LIBOPENMPT_BUILD + + - private include directories: + - . + - common + - src + + - files: + - common/*.cpp + - sounddsp/*.cpp + - soundlib/*.cpp + - soundlib/plugins/*.cpp + - soundlib/plugins/dmo/*.cpp + - libopenmpt/*.cpp + + - public include directories: + - . + + - public header files: + - libopenmpt/libopenmpt.h + - libopenmpt/libopenmpt.hpp + - libopenmpt/libopenmpt_config.h + - libopenmpt/libopenmpt_ext.h + - libopenmpt/libopenmpt_ext.hpp + - libopenmpt/libopenmpt_version.h + - libopenmpt/libopenmpt_stream_callbacks_buffer.h + - libopenmpt/libopenmpt_stream_callbacks_fd.h + - libopenmpt/libopenmpt_stream_callbacks_file_mingw.h + - libopenmpt/libopenmpt_stream_callbacks_file_msvcrt.h + - libopenmpt/libopenmpt_stream_callbacks_file_posix.h + - libopenmpt/libopenmpt_stream_callbacks_file_posix_lfs64.h + + - dependencies: + - zlib: + - pkg-config + - zlib + - defines + - MPT_WITH_ZLIB + - libmpg123: + - pkg-config + - mpg123 + - defines + - MPT_WITH_MPG123 + - libogg: + - pkg-config + - ogg + - defines + - MPT_WITH_OGG + - libvorbis: + - pkg-config + - vorbis + - defines + - MPT_WITH_VORBIS + - libvorbisfile: + - pkg-config + - vorbisfile + - defines + - MPT_WITH_VORBISFILE + + - dllbuild: + - defines + - LIBOPENMPT_BUILD_DLL |
From: <sv...@op...> - 2024-08-07 19:08:50
|
Author: manx Date: Wed Aug 7 21:08:43 2024 New Revision: 21365 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21365 Log: [Doc] libopenmpt: Document building libopenmpt with other build systems. Modified: trunk/OpenMPT/doc/libopenmpt/gettingstarted.md Modified: trunk/OpenMPT/doc/libopenmpt/gettingstarted.md ============================================================================== --- trunk/OpenMPT/doc/libopenmpt/gettingstarted.md Wed Aug 7 18:42:30 2024 (r21364) +++ trunk/OpenMPT/doc/libopenmpt/gettingstarted.md Wed Aug 7 21:08:43 2024 (r21365) @@ -207,3 +207,78 @@ - Android NDK See `build/android_ndk/README.AndroidNDK.txt`. + + + +### Building libopenmpt with any other build system + +libopenmpt is very simple to build with any build system of your choice. The +only required information is listed below. We currently only support building +libopenmpt itself this way, but the test suite and openmpt123 may follow later. + + - language: + - C++17 / C++20 + + - defines: + - LIBOPENMPT_BUILD + + - private include directories: + - . + - common + - src + + - files: + - common/*.cpp + - sounddsp/*.cpp + - soundlib/*.cpp + - soundlib/plugins/*.cpp + - soundlib/plugins/dmo/*.cpp + - libopenmpt/*.cpp + + - public include directories: + - . + + - public header files: + - libopenmpt/libopenmpt.h + - libopenmpt/libopenmpt.hpp + - libopenmpt/libopenmpt_config.h + - libopenmpt/libopenmpt_ext.h + - libopenmpt/libopenmpt_ext.hpp + - libopenmpt/libopenmpt_version.h + - libopenmpt/libopenmpt_stream_callbacks_buffer.h + - libopenmpt/libopenmpt_stream_callbacks_fd.h + - libopenmpt/libopenmpt_stream_callbacks_file_mingw.h + - libopenmpt/libopenmpt_stream_callbacks_file_msvcrt.h + - libopenmpt/libopenmpt_stream_callbacks_file_posix.h + - libopenmpt/libopenmpt_stream_callbacks_file_posix_lfs64.h + + - dependencies: + - zlib: + - pkg-config + - zlib + - defines + - MPT_WITH_ZLIB + - libmpg123: + - pkg-config + - mpg123 + - defines + - MPT_WITH_MPG123 + - libogg: + - pkg-config + - ogg + - defines + - MPT_WITH_OGG + - libvorbis: + - pkg-config + - vorbis + - defines + - MPT_WITH_VORBIS + - libvorbisfile: + - pkg-config + - vorbisfile + - defines + - MPT_WITH_VORBISFILE + + - dllbuild: + - defines + - LIBOPENMPT_BUILD_DLL |
From: <sv...@op...> - 2024-08-07 16:42:42
|
Author: manx Date: Wed Aug 7 18:42:30 2024 New Revision: 21364 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21364 Log: [Doc] libopenmpt: Update changelog. Modified: branches/OpenMPT-1.28/libopenmpt/dox/changelog.md Modified: branches/OpenMPT-1.28/libopenmpt/dox/changelog.md ============================================================================== --- branches/OpenMPT-1.28/libopenmpt/dox/changelog.md Wed Aug 7 18:42:13 2024 (r21363) +++ branches/OpenMPT-1.28/libopenmpt/dox/changelog.md Wed Aug 7 18:42:30 2024 (r21364) @@ -7,6 +7,8 @@ ### libopenmpt 0.4.45-pre + * mpg123: Update to v1.32.7 (2024-08-07). + ### libopenmpt 0.4.44 (2024-07-21) * [**Sec**] Potential division by 0 when seeking in the module with |
From: <sv...@op...> - 2024-08-07 16:42:20
|
Author: manx Date: Wed Aug 7 18:42:13 2024 New Revision: 21363 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21363 Log: [Doc] libopenmpt: Update changelog. Modified: branches/OpenMPT-1.29/libopenmpt/dox/changelog.md Modified: branches/OpenMPT-1.29/libopenmpt/dox/changelog.md ============================================================================== --- branches/OpenMPT-1.29/libopenmpt/dox/changelog.md Wed Aug 7 18:41:58 2024 (r21362) +++ branches/OpenMPT-1.29/libopenmpt/dox/changelog.md Wed Aug 7 18:42:13 2024 (r21363) @@ -7,6 +7,8 @@ ### libopenmpt 0.5.33-pre + * mpg123: Update to v1.32.7 (2024-08-07). + ### libopenmpt 0.5.32 (2024-07-21) * [**Sec**] Potential division by 0 when seeking in the module with |
From: <sv...@op...> - 2024-08-07 16:42:09
|
Author: manx Date: Wed Aug 7 18:41:58 2024 New Revision: 21362 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21362 Log: [Doc] libopenmpt: Update changelog. Modified: branches/OpenMPT-1.30/libopenmpt/dox/changelog.md Modified: branches/OpenMPT-1.30/libopenmpt/dox/changelog.md ============================================================================== --- branches/OpenMPT-1.30/libopenmpt/dox/changelog.md Wed Aug 7 18:41:31 2024 (r21361) +++ branches/OpenMPT-1.30/libopenmpt/dox/changelog.md Wed Aug 7 18:41:58 2024 (r21362) @@ -7,6 +7,8 @@ ### libopenmpt 0.6.19-pre + * mpg123: Update to v1.32.7 (2024-08-07). + ### libopenmpt 0.6.18 (2024-07-21) * [**Sec**] Potential division by 0 when seeking in the module with |
From: <sv...@op...> - 2024-08-07 16:41:43
|
Author: manx Date: Wed Aug 7 18:41:31 2024 New Revision: 21361 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21361 Log: [Doc] libopenmpt: Update changelog. Modified: branches/OpenMPT-1.31/doc/libopenmpt/changelog.md Modified: branches/OpenMPT-1.31/doc/libopenmpt/changelog.md ============================================================================== --- branches/OpenMPT-1.31/doc/libopenmpt/changelog.md Wed Aug 7 18:40:22 2024 (r21360) +++ branches/OpenMPT-1.31/doc/libopenmpt/changelog.md Wed Aug 7 18:41:31 2024 (r21361) @@ -9,6 +9,8 @@ * [**Bug**] The Android NDK build system did not enable C++20 when available. + * mpg123: Update to v1.32.7 (2024-08-07). + ### libopenmpt 0.7.9 (2024-07-21) * [**Sec**] Potential division by 0 when seeking in the module with |
From: <sv...@op...> - 2024-08-07 16:40:29
|
Author: manx Date: Wed Aug 7 18:40:22 2024 New Revision: 21360 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21360 Log: Merged revision(s) 21356 from trunk/OpenMPT: [Var] mpg123: Update to 1.32.7 (2024-08-07). ........ Modified: branches/OpenMPT-1.28/ (props changed) branches/OpenMPT-1.28/include/mpg123/OpenMPT.txt branches/OpenMPT-1.28/include/mpg123/src/version.h Modified: branches/OpenMPT-1.28/include/mpg123/OpenMPT.txt ============================================================================== --- branches/OpenMPT-1.28/include/mpg123/OpenMPT.txt Wed Aug 7 18:40:03 2024 (r21359) +++ branches/OpenMPT-1.28/include/mpg123/OpenMPT.txt Wed Aug 7 18:40:22 2024 (r21360) @@ -1,4 +1,4 @@ -libmpg123 library version 1.32.7-dev+r5424 (2024-08-07). +libmpg123 library version 1.32.7 (2024-08-07). The following changes have been made: * `ports/MSVC++/config.h` has been added for MSVC builds. * `ports/Xcode/config.h` has been retained from older versions. Modified: branches/OpenMPT-1.28/include/mpg123/src/version.h ============================================================================== --- branches/OpenMPT-1.28/include/mpg123/src/version.h Wed Aug 7 18:40:03 2024 (r21359) +++ branches/OpenMPT-1.28/include/mpg123/src/version.h Wed Aug 7 18:40:22 2024 (r21360) @@ -19,7 +19,7 @@ #define MPG123_PATCH 7 // Don't get too wild with that to avoid confusing m4. No brackets. // Also, it should fit well into a sane file name for the tarball. -#define MPG123_SUFFIX "-dev" +#define MPG123_SUFFIX "" #define MPG123_VERSION_CAT_REALLY(a, b, c) #a "." #b "." #c #define MPG123_VERSION_CAT(a, b, c) MPG123_VERSION_CAT_REALLY(a, b, c) |
From: <sv...@op...> - 2024-08-07 16:40:15
|
Author: manx Date: Wed Aug 7 18:40:03 2024 New Revision: 21359 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21359 Log: Merged revision(s) 21356 from trunk/OpenMPT: [Var] mpg123: Update to 1.32.7 (2024-08-07). ........ Modified: branches/OpenMPT-1.29/ (props changed) branches/OpenMPT-1.29/include/mpg123/OpenMPT.txt branches/OpenMPT-1.29/include/mpg123/src/version.h Modified: branches/OpenMPT-1.29/include/mpg123/OpenMPT.txt ============================================================================== --- branches/OpenMPT-1.29/include/mpg123/OpenMPT.txt Wed Aug 7 18:39:45 2024 (r21358) +++ branches/OpenMPT-1.29/include/mpg123/OpenMPT.txt Wed Aug 7 18:40:03 2024 (r21359) @@ -1,4 +1,4 @@ -libmpg123 library version 1.32.7-dev+r5424 (2024-08-07). +libmpg123 library version 1.32.7 (2024-08-07). The following changes have been made: * `ports/makefile/config.h` has been added for plain `Makefile` builds. * `ports/MSVC++/config.h` has been added for MSVC builds. Modified: branches/OpenMPT-1.29/include/mpg123/src/version.h ============================================================================== --- branches/OpenMPT-1.29/include/mpg123/src/version.h Wed Aug 7 18:39:45 2024 (r21358) +++ branches/OpenMPT-1.29/include/mpg123/src/version.h Wed Aug 7 18:40:03 2024 (r21359) @@ -19,7 +19,7 @@ #define MPG123_PATCH 7 // Don't get too wild with that to avoid confusing m4. No brackets. // Also, it should fit well into a sane file name for the tarball. -#define MPG123_SUFFIX "-dev" +#define MPG123_SUFFIX "" #define MPG123_VERSION_CAT_REALLY(a, b, c) #a "." #b "." #c #define MPG123_VERSION_CAT(a, b, c) MPG123_VERSION_CAT_REALLY(a, b, c) |
From: <sv...@op...> - 2024-08-07 16:40:12
|
Author: manx Date: Wed Aug 7 18:39:45 2024 New Revision: 21358 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21358 Log: Merged revision(s) 21356 from trunk/OpenMPT: [Var] mpg123: Update to 1.32.7 (2024-08-07). ........ Modified: branches/OpenMPT-1.30/ (props changed) branches/OpenMPT-1.30/include/mpg123/OpenMPT.txt branches/OpenMPT-1.30/include/mpg123/src/version.h Modified: branches/OpenMPT-1.30/include/mpg123/OpenMPT.txt ============================================================================== --- branches/OpenMPT-1.30/include/mpg123/OpenMPT.txt Wed Aug 7 18:39:17 2024 (r21357) +++ branches/OpenMPT-1.30/include/mpg123/OpenMPT.txt Wed Aug 7 18:39:45 2024 (r21358) @@ -1,4 +1,4 @@ -libmpg123 library version 1.32.7-dev+r5424 (2024-08-07). +libmpg123 library version 1.32.7 (2024-08-07). The following changes have been made: * `ports/makefile/config.h` has been added for plain `Makefile` builds. * `ports/MSVC++/config.h` has been added for MSVC builds. Modified: branches/OpenMPT-1.30/include/mpg123/src/version.h ============================================================================== --- branches/OpenMPT-1.30/include/mpg123/src/version.h Wed Aug 7 18:39:17 2024 (r21357) +++ branches/OpenMPT-1.30/include/mpg123/src/version.h Wed Aug 7 18:39:45 2024 (r21358) @@ -19,7 +19,7 @@ #define MPG123_PATCH 7 // Don't get too wild with that to avoid confusing m4. No brackets. // Also, it should fit well into a sane file name for the tarball. -#define MPG123_SUFFIX "-dev" +#define MPG123_SUFFIX "" #define MPG123_VERSION_CAT_REALLY(a, b, c) #a "." #b "." #c #define MPG123_VERSION_CAT(a, b, c) MPG123_VERSION_CAT_REALLY(a, b, c) |
From: <sv...@op...> - 2024-08-07 16:39:25
|
Author: manx Date: Wed Aug 7 18:39:17 2024 New Revision: 21357 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21357 Log: Merged revision(s) 21356 from trunk/OpenMPT: [Var] mpg123: Update to 1.32.7 (2024-08-07). ........ Modified: branches/OpenMPT-1.31/ (props changed) branches/OpenMPT-1.31/include/mpg123/OpenMPT.txt branches/OpenMPT-1.31/include/mpg123/src/version.h Modified: branches/OpenMPT-1.31/include/mpg123/OpenMPT.txt ============================================================================== --- branches/OpenMPT-1.31/include/mpg123/OpenMPT.txt Wed Aug 7 18:38:49 2024 (r21356) +++ branches/OpenMPT-1.31/include/mpg123/OpenMPT.txt Wed Aug 7 18:39:17 2024 (r21357) @@ -1,4 +1,4 @@ -libmpg123 library version 1.32.7-dev+r5424 (2024-08-07). +libmpg123 library version 1.32.7 (2024-08-07). The following changes have been made: * `ports/makefile/config.h` has been added for plain `Makefile` builds. * `ports/MSVC++/config.h` has been added for MSVC builds. Modified: branches/OpenMPT-1.31/include/mpg123/src/version.h ============================================================================== --- branches/OpenMPT-1.31/include/mpg123/src/version.h Wed Aug 7 18:38:49 2024 (r21356) +++ branches/OpenMPT-1.31/include/mpg123/src/version.h Wed Aug 7 18:39:17 2024 (r21357) @@ -19,7 +19,7 @@ #define MPG123_PATCH 7 // Don't get too wild with that to avoid confusing m4. No brackets. // Also, it should fit well into a sane file name for the tarball. -#define MPG123_SUFFIX "-dev" +#define MPG123_SUFFIX "" #define MPG123_VERSION_CAT_REALLY(a, b, c) #a "." #b "." #c #define MPG123_VERSION_CAT(a, b, c) MPG123_VERSION_CAT_REALLY(a, b, c) |
From: <sv...@op...> - 2024-08-07 16:38:55
|
Author: manx Date: Wed Aug 7 18:38:49 2024 New Revision: 21356 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21356 Log: [Var] mpg123: Update to 1.32.7 (2024-08-07). Modified: trunk/OpenMPT/include/mpg123/OpenMPT.txt trunk/OpenMPT/include/mpg123/src/version.h Modified: trunk/OpenMPT/include/mpg123/OpenMPT.txt ============================================================================== --- trunk/OpenMPT/include/mpg123/OpenMPT.txt Wed Aug 7 17:38:38 2024 (r21355) +++ trunk/OpenMPT/include/mpg123/OpenMPT.txt Wed Aug 7 18:38:49 2024 (r21356) @@ -1,4 +1,4 @@ -libmpg123 library version 1.32.7-dev+r5424 (2024-08-07). +libmpg123 library version 1.32.7 (2024-08-07). The following changes have been made: * `ports/makefile/config.h` has been added for plain `Makefile` builds. * `ports/MSVC++/config.h` has been added for MSVC builds. Modified: trunk/OpenMPT/include/mpg123/src/version.h ============================================================================== --- trunk/OpenMPT/include/mpg123/src/version.h Wed Aug 7 17:38:38 2024 (r21355) +++ trunk/OpenMPT/include/mpg123/src/version.h Wed Aug 7 18:38:49 2024 (r21356) @@ -19,7 +19,7 @@ #define MPG123_PATCH 7 // Don't get too wild with that to avoid confusing m4. No brackets. // Also, it should fit well into a sane file name for the tarball. -#define MPG123_SUFFIX "-dev" +#define MPG123_SUFFIX "" #define MPG123_VERSION_CAT_REALLY(a, b, c) #a "." #b "." #c #define MPG123_VERSION_CAT(a, b, c) MPG123_VERSION_CAT_REALLY(a, b, c) |