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
(71) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <sv...@op...> - 2025-03-28 18:55:57
|
Author: manx Date: Fri Mar 28 19:55:45 2025 New Revision: 23095 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=23095 Log: Merged revision(s) 23094 from trunk/OpenMPT: [Doc] Update release_branches.md. ........ Modified: branches/OpenMPT-1.32/ (props changed) branches/OpenMPT-1.32/doc/release_branches.md Modified: branches/OpenMPT-1.32/doc/release_branches.md ============================================================================== --- branches/OpenMPT-1.32/doc/release_branches.md Fri Mar 28 19:55:18 2025 (r23094) +++ branches/OpenMPT-1.32/doc/release_branches.md Fri Mar 28 19:55:45 2025 (r23095) @@ -40,12 +40,13 @@ 1. set OpenMPT version in `common/versionNumber.h` to `1.$VER.00.$MINORMINOR+1` 2. run `build/update_libopenmpt_version.sh bumpprerel` -10. update announcement/changelog URLs for test builds in branch: +10. update CI branch configuration in new branch +11. update announcement/changelog URLs for test builds in branch: `installer/generate_update_json.py` and `generate_update_json_retro.py`: * "trunk/OpenMPT" -> "banches/OpenMPT-1.32" -11. update https://builds.openmpt.org/builds/ -12. update buildbot scripts that copy OpenMPT update information into place -13. update branch release date on libopenmpt trunk changelog +12. update https://builds.openmpt.org/builds/ +13. update buildbot scripts that copy OpenMPT update information into place +14. update branch release date on libopenmpt trunk changelog unclear: * adjust buildbot update management script |
From: <sv...@op...> - 2025-03-28 18:55:25
|
Author: manx Date: Fri Mar 28 19:55:18 2025 New Revision: 23094 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=23094 Log: [Doc] Update release_branches.md. Modified: trunk/OpenMPT/doc/release_branches.md Modified: trunk/OpenMPT/doc/release_branches.md ============================================================================== --- trunk/OpenMPT/doc/release_branches.md Fri Mar 28 19:53:45 2025 (r23093) +++ trunk/OpenMPT/doc/release_branches.md Fri Mar 28 19:55:18 2025 (r23094) @@ -40,12 +40,13 @@ 1. set OpenMPT version in `common/versionNumber.h` to `1.$VER.00.$MINORMINOR+1` 2. run `build/update_libopenmpt_version.sh bumpprerel` -10. update announcement/changelog URLs for test builds in branch: +10. update CI branch configuration in new branch +11. update announcement/changelog URLs for test builds in branch: `installer/generate_update_json.py` and `generate_update_json_retro.py`: * "trunk/OpenMPT" -> "banches/OpenMPT-1.32" -11. update https://builds.openmpt.org/builds/ -12. update buildbot scripts that copy OpenMPT update information into place -13. update branch release date on libopenmpt trunk changelog +12. update https://builds.openmpt.org/builds/ +13. update buildbot scripts that copy OpenMPT update information into place +14. update branch release date on libopenmpt trunk changelog unclear: * adjust buildbot update management script |
From: <sv...@op...> - 2025-03-28 18:54:08
|
Author: manx Date: Fri Mar 28 19:53:45 2025 New Revision: 23093 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=23093 Log: [Var] CI: GitHub: Adjust branch name. Modified: branches/OpenMPT-1.32/.github/workflows/Cygwin-Makefile.yml branches/OpenMPT-1.32/.github/workflows/Fedora-Autotools.yml branches/OpenMPT-1.32/.github/workflows/Fedora-Cross-MinGW.yml branches/OpenMPT-1.32/.github/workflows/Fedora-Makefile.yml branches/OpenMPT-1.32/.github/workflows/FreeBSD-Autotools.yml branches/OpenMPT-1.32/.github/workflows/FreeBSD-Makefile.yml branches/OpenMPT-1.32/.github/workflows/MSYS2-Autotools.yml branches/OpenMPT-1.32/.github/workflows/MSYS2-Makefile-Clang.yml branches/OpenMPT-1.32/.github/workflows/MSYS2-Makefile.yml branches/OpenMPT-1.32/.github/workflows/NetBSD-Autotools.yml branches/OpenMPT-1.32/.github/workflows/NetBSD-Makefile.yml branches/OpenMPT-1.32/.github/workflows/OpenBSD-Autotools.yml branches/OpenMPT-1.32/.github/workflows/OpenBSD-Makefile.yml branches/OpenMPT-1.32/.github/workflows/RHEL-Autotools.yml branches/OpenMPT-1.32/.github/workflows/RHEL-Makefile.yml branches/OpenMPT-1.32/.github/workflows/Ubuntu-Autotools.yml branches/OpenMPT-1.32/.github/workflows/Ubuntu-Makefile.yml branches/OpenMPT-1.32/.github/workflows/macOS-Autotools.yml branches/OpenMPT-1.32/.github/workflows/macOS-Makefile.yml Modified: branches/OpenMPT-1.32/.github/workflows/Cygwin-Makefile.yml ============================================================================== --- branches/OpenMPT-1.32/.github/workflows/Cygwin-Makefile.yml Fri Mar 28 19:27:48 2025 (r23092) +++ branches/OpenMPT-1.32/.github/workflows/Cygwin-Makefile.yml Fri Mar 28 19:53:45 2025 (r23093) @@ -2,9 +2,7 @@ on: push: - branches: [ master ] - pull_request: - branches: [ master ] + branches: [ OpenMPT-1.32 ] concurrency: group: ${{ github.ref }}-${{ github.workflow }} Modified: branches/OpenMPT-1.32/.github/workflows/Fedora-Autotools.yml ============================================================================== --- branches/OpenMPT-1.32/.github/workflows/Fedora-Autotools.yml Fri Mar 28 19:27:48 2025 (r23092) +++ branches/OpenMPT-1.32/.github/workflows/Fedora-Autotools.yml Fri Mar 28 19:53:45 2025 (r23093) @@ -2,9 +2,7 @@ on: push: - branches: [ master ] - pull_request: - branches: [ master ] + branches: [ OpenMPT-1.32 ] concurrency: group: ${{ github.ref }}-${{ github.workflow }} Modified: branches/OpenMPT-1.32/.github/workflows/Fedora-Cross-MinGW.yml ============================================================================== --- branches/OpenMPT-1.32/.github/workflows/Fedora-Cross-MinGW.yml Fri Mar 28 19:27:48 2025 (r23092) +++ branches/OpenMPT-1.32/.github/workflows/Fedora-Cross-MinGW.yml Fri Mar 28 19:53:45 2025 (r23093) @@ -2,9 +2,7 @@ on: push: - branches: [ master ] - pull_request: - branches: [ master ] + branches: [ OpenMPT-1.32 ] jobs: build: Modified: branches/OpenMPT-1.32/.github/workflows/Fedora-Makefile.yml ============================================================================== --- branches/OpenMPT-1.32/.github/workflows/Fedora-Makefile.yml Fri Mar 28 19:27:48 2025 (r23092) +++ branches/OpenMPT-1.32/.github/workflows/Fedora-Makefile.yml Fri Mar 28 19:53:45 2025 (r23093) @@ -2,9 +2,7 @@ on: push: - branches: [ master ] - pull_request: - branches: [ master ] + branches: [ OpenMPT-1.32 ] jobs: build: Modified: branches/OpenMPT-1.32/.github/workflows/FreeBSD-Autotools.yml ============================================================================== --- branches/OpenMPT-1.32/.github/workflows/FreeBSD-Autotools.yml Fri Mar 28 19:27:48 2025 (r23092) +++ branches/OpenMPT-1.32/.github/workflows/FreeBSD-Autotools.yml Fri Mar 28 19:53:45 2025 (r23093) @@ -2,9 +2,7 @@ on: push: - branches: [ master ] - pull_request: - branches: [ master ] + branches: [ OpenMPT-1.32 ] jobs: build: Modified: branches/OpenMPT-1.32/.github/workflows/FreeBSD-Makefile.yml ============================================================================== --- branches/OpenMPT-1.32/.github/workflows/FreeBSD-Makefile.yml Fri Mar 28 19:27:48 2025 (r23092) +++ branches/OpenMPT-1.32/.github/workflows/FreeBSD-Makefile.yml Fri Mar 28 19:53:45 2025 (r23093) @@ -2,9 +2,7 @@ on: push: - branches: [ master ] - pull_request: - branches: [ master ] + branches: [ OpenMPT-1.32 ] jobs: build: Modified: branches/OpenMPT-1.32/.github/workflows/MSYS2-Autotools.yml ============================================================================== --- branches/OpenMPT-1.32/.github/workflows/MSYS2-Autotools.yml Fri Mar 28 19:27:48 2025 (r23092) +++ branches/OpenMPT-1.32/.github/workflows/MSYS2-Autotools.yml Fri Mar 28 19:53:45 2025 (r23093) @@ -2,9 +2,7 @@ on: push: - branches: [ master ] - pull_request: - branches: [ master ] + branches: [ OpenMPT-1.32 ] jobs: build: Modified: branches/OpenMPT-1.32/.github/workflows/MSYS2-Makefile-Clang.yml ============================================================================== --- branches/OpenMPT-1.32/.github/workflows/MSYS2-Makefile-Clang.yml Fri Mar 28 19:27:48 2025 (r23092) +++ branches/OpenMPT-1.32/.github/workflows/MSYS2-Makefile-Clang.yml Fri Mar 28 19:53:45 2025 (r23093) @@ -2,9 +2,7 @@ on: push: - branches: [ master ] - pull_request: - branches: [ master ] + branches: [ OpenMPT-1.32 ] jobs: build: Modified: branches/OpenMPT-1.32/.github/workflows/MSYS2-Makefile.yml ============================================================================== --- branches/OpenMPT-1.32/.github/workflows/MSYS2-Makefile.yml Fri Mar 28 19:27:48 2025 (r23092) +++ branches/OpenMPT-1.32/.github/workflows/MSYS2-Makefile.yml Fri Mar 28 19:53:45 2025 (r23093) @@ -2,9 +2,7 @@ on: push: - branches: [ master ] - pull_request: - branches: [ master ] + branches: [ OpenMPT-1.32 ] jobs: build: Modified: branches/OpenMPT-1.32/.github/workflows/NetBSD-Autotools.yml ============================================================================== --- branches/OpenMPT-1.32/.github/workflows/NetBSD-Autotools.yml Fri Mar 28 19:27:48 2025 (r23092) +++ branches/OpenMPT-1.32/.github/workflows/NetBSD-Autotools.yml Fri Mar 28 19:53:45 2025 (r23093) @@ -2,9 +2,7 @@ on: push: - branches: [ master ] - pull_request: - branches: [ master ] + branches: [ OpenMPT-1.32 ] jobs: build: Modified: branches/OpenMPT-1.32/.github/workflows/NetBSD-Makefile.yml ============================================================================== --- branches/OpenMPT-1.32/.github/workflows/NetBSD-Makefile.yml Fri Mar 28 19:27:48 2025 (r23092) +++ branches/OpenMPT-1.32/.github/workflows/NetBSD-Makefile.yml Fri Mar 28 19:53:45 2025 (r23093) @@ -2,9 +2,7 @@ on: push: - branches: [ master ] - pull_request: - branches: [ master ] + branches: [ OpenMPT-1.32 ] jobs: build: Modified: branches/OpenMPT-1.32/.github/workflows/OpenBSD-Autotools.yml ============================================================================== --- branches/OpenMPT-1.32/.github/workflows/OpenBSD-Autotools.yml Fri Mar 28 19:27:48 2025 (r23092) +++ branches/OpenMPT-1.32/.github/workflows/OpenBSD-Autotools.yml Fri Mar 28 19:53:45 2025 (r23093) @@ -2,9 +2,7 @@ on: push: - branches: [ master ] - pull_request: - branches: [ master ] + branches: [ OpenMPT-1.32 ] jobs: build: Modified: branches/OpenMPT-1.32/.github/workflows/OpenBSD-Makefile.yml ============================================================================== --- branches/OpenMPT-1.32/.github/workflows/OpenBSD-Makefile.yml Fri Mar 28 19:27:48 2025 (r23092) +++ branches/OpenMPT-1.32/.github/workflows/OpenBSD-Makefile.yml Fri Mar 28 19:53:45 2025 (r23093) @@ -2,9 +2,7 @@ on: push: - branches: [ master ] - pull_request: - branches: [ master ] + branches: [ OpenMPT-1.32 ] jobs: build: Modified: branches/OpenMPT-1.32/.github/workflows/RHEL-Autotools.yml ============================================================================== --- branches/OpenMPT-1.32/.github/workflows/RHEL-Autotools.yml Fri Mar 28 19:27:48 2025 (r23092) +++ branches/OpenMPT-1.32/.github/workflows/RHEL-Autotools.yml Fri Mar 28 19:53:45 2025 (r23093) @@ -2,9 +2,7 @@ on: push: - branches: [ master ] - pull_request: - branches: [ master ] + branches: [ OpenMPT-1.32 ] jobs: build: Modified: branches/OpenMPT-1.32/.github/workflows/RHEL-Makefile.yml ============================================================================== --- branches/OpenMPT-1.32/.github/workflows/RHEL-Makefile.yml Fri Mar 28 19:27:48 2025 (r23092) +++ branches/OpenMPT-1.32/.github/workflows/RHEL-Makefile.yml Fri Mar 28 19:53:45 2025 (r23093) @@ -2,9 +2,7 @@ on: push: - branches: [ master ] - pull_request: - branches: [ master ] + branches: [ OpenMPT-1.32 ] jobs: build: Modified: branches/OpenMPT-1.32/.github/workflows/Ubuntu-Autotools.yml ============================================================================== --- branches/OpenMPT-1.32/.github/workflows/Ubuntu-Autotools.yml Fri Mar 28 19:27:48 2025 (r23092) +++ branches/OpenMPT-1.32/.github/workflows/Ubuntu-Autotools.yml Fri Mar 28 19:53:45 2025 (r23093) @@ -2,9 +2,7 @@ on: push: - branches: [ master ] - pull_request: - branches: [ master ] + branches: [ OpenMPT-1.32 ] jobs: build: Modified: branches/OpenMPT-1.32/.github/workflows/Ubuntu-Makefile.yml ============================================================================== --- branches/OpenMPT-1.32/.github/workflows/Ubuntu-Makefile.yml Fri Mar 28 19:27:48 2025 (r23092) +++ branches/OpenMPT-1.32/.github/workflows/Ubuntu-Makefile.yml Fri Mar 28 19:53:45 2025 (r23093) @@ -2,9 +2,7 @@ on: push: - branches: [ master ] - pull_request: - branches: [ master ] + branches: [ OpenMPT-1.32 ] jobs: build: Modified: branches/OpenMPT-1.32/.github/workflows/macOS-Autotools.yml ============================================================================== --- branches/OpenMPT-1.32/.github/workflows/macOS-Autotools.yml Fri Mar 28 19:27:48 2025 (r23092) +++ branches/OpenMPT-1.32/.github/workflows/macOS-Autotools.yml Fri Mar 28 19:53:45 2025 (r23093) @@ -2,9 +2,7 @@ on: push: - branches: [ master ] - pull_request: - branches: [ master ] + branches: [ OpenMPT-1.32 ] jobs: build: Modified: branches/OpenMPT-1.32/.github/workflows/macOS-Makefile.yml ============================================================================== --- branches/OpenMPT-1.32/.github/workflows/macOS-Makefile.yml Fri Mar 28 19:27:48 2025 (r23092) +++ branches/OpenMPT-1.32/.github/workflows/macOS-Makefile.yml Fri Mar 28 19:53:45 2025 (r23093) @@ -3,9 +3,7 @@ on: push: - branches: [ master ] - pull_request: - branches: [ master ] + branches: [ OpenMPT-1.32 ] jobs: build: |
From: <sv...@op...> - 2025-03-28 18:28:04
|
Author: sagamusix Date: Fri Mar 28 19:27:48 2025 New Revision: 23092 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=23092 Log: Merged revision(s) 23091 from trunk/OpenMPT: [Fix] Manual generator: Don't include Category pages. ........ Modified: branches/OpenMPT-1.32/ (props changed) branches/OpenMPT-1.32/mptrack/manual_generator/wiki.py Modified: branches/OpenMPT-1.32/mptrack/manual_generator/wiki.py ============================================================================== --- branches/OpenMPT-1.32/mptrack/manual_generator/wiki.py Fri Mar 28 19:27:27 2025 (r23091) +++ branches/OpenMPT-1.32/mptrack/manual_generator/wiki.py Fri Mar 28 19:27:48 2025 (r23092) @@ -86,6 +86,8 @@ """) for p in pages: + if(p.startswith("Category")): + continue content = urlopen(base_url + '/index.php?title=' + p + '&action=render').read().decode('UTF-8') # Download and replace image URLs content = re.sub(r' srcset=".+?"', '', content); @@ -159,6 +161,7 @@ toc_text = re.sub(r'<!--(.+?)-->', '', toc_page, flags = re.DOTALL) toc_text = re.sub(r'<div(.+?)>', '', toc_text, flags = re.DOTALL) toc_text = re.sub(r'</div>', '', toc_text, flags = re.DOTALL) +toc_text = re.sub(r'<a href="' + base_url_regex + '/Category:.*?>(.+?)</a>', '\\1', toc_text) toc_text = re.sub(r'<a href="' + base_url_regex + '/(.+?)".*?>(.+?)</a>', toc_parse, toc_text) toc_text = re.sub(r'<li>([^<]+)$', toc_parse_chapter, toc_text, flags = re.MULTILINE) toc.write(toc_text) |
From: <sv...@op...> - 2025-03-28 18:27:46
|
Author: sagamusix Date: Fri Mar 28 19:27:27 2025 New Revision: 23091 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=23091 Log: [Fix] Manual generator: Don't include Category pages. Modified: trunk/OpenMPT/mptrack/manual_generator/wiki.py Modified: trunk/OpenMPT/mptrack/manual_generator/wiki.py ============================================================================== --- trunk/OpenMPT/mptrack/manual_generator/wiki.py Fri Mar 28 19:15:48 2025 (r23090) +++ trunk/OpenMPT/mptrack/manual_generator/wiki.py Fri Mar 28 19:27:27 2025 (r23091) @@ -86,6 +86,8 @@ """) for p in pages: + if(p.startswith("Category")): + continue content = urlopen(base_url + '/index.php?title=' + p + '&action=render').read().decode('UTF-8') # Download and replace image URLs content = re.sub(r' srcset=".+?"', '', content); @@ -159,6 +161,7 @@ toc_text = re.sub(r'<!--(.+?)-->', '', toc_page, flags = re.DOTALL) toc_text = re.sub(r'<div(.+?)>', '', toc_text, flags = re.DOTALL) toc_text = re.sub(r'</div>', '', toc_text, flags = re.DOTALL) +toc_text = re.sub(r'<a href="' + base_url_regex + '/Category:.*?>(.+?)</a>', '\\1', toc_text) toc_text = re.sub(r'<a href="' + base_url_regex + '/(.+?)".*?>(.+?)</a>', toc_parse, toc_text) toc_text = re.sub(r'<li>([^<]+)$', toc_parse_chapter, toc_text, flags = re.MULTILINE) toc.write(toc_text) |
From: <sv...@op...> - 2025-03-28 18:16:08
|
Author: sagamusix Date: Fri Mar 28 19:15:48 2025 New Revision: 23090 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=23090 Log: Merged revision(s) 23089 from trunk/OpenMPT: [Fix] Fix syntax error in fuzzer dictionary. ........ Modified: branches/OpenMPT-1.32/ (props changed) branches/OpenMPT-1.32/contrib/fuzzing/all_formats.dict Modified: branches/OpenMPT-1.32/contrib/fuzzing/all_formats.dict ============================================================================== --- branches/OpenMPT-1.32/contrib/fuzzing/all_formats.dict Fri Mar 28 19:15:30 2025 (r23089) +++ branches/OpenMPT-1.32/contrib/fuzzing/all_formats.dict Fri Mar 28 19:15:48 2025 (r23090) @@ -252,7 +252,7 @@ symmod="SymM\x00\x00\x00\x01\xFF\xFF\xFF\xFF\x00\x00\x00" -tcb="AN COOL.\x01\x00\x00\x00\0x0D\x00" +tcb="AN COOL.\x01\x00\x00\x00\x0D\x00" #tcb="AN COOL!" ult="MAS_UTrack_V004" |
From: <sv...@op...> - 2025-03-28 18:15:37
|
Author: sagamusix Date: Fri Mar 28 19:15:30 2025 New Revision: 23089 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=23089 Log: [Fix] Fix syntax error in fuzzer dictionary. Modified: trunk/OpenMPT/contrib/fuzzing/all_formats.dict Modified: trunk/OpenMPT/contrib/fuzzing/all_formats.dict ============================================================================== --- trunk/OpenMPT/contrib/fuzzing/all_formats.dict Fri Mar 28 14:14:48 2025 (r23088) +++ trunk/OpenMPT/contrib/fuzzing/all_formats.dict Fri Mar 28 19:15:30 2025 (r23089) @@ -252,7 +252,7 @@ symmod="SymM\x00\x00\x00\x01\xFF\xFF\xFF\xFF\x00\x00\x00" -tcb="AN COOL.\x01\x00\x00\x00\0x0D\x00" +tcb="AN COOL.\x01\x00\x00\x00\x0D\x00" #tcb="AN COOL!" ult="MAS_UTrack_V004" |
From: <sv...@op...> - 2025-03-28 13:15:11
|
Author: manx Date: Fri Mar 28 14:14:48 2025 New Revision: 23088 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=23088 Log: Merged revision(s) 23087 from trunk/OpenMPT: [Doc] Update release_branches.md. ........ Modified: branches/OpenMPT-1.32/ (props changed) branches/OpenMPT-1.32/doc/release_branches.md Modified: branches/OpenMPT-1.32/doc/release_branches.md ============================================================================== --- branches/OpenMPT-1.32/doc/release_branches.md Fri Mar 28 14:14:22 2025 (r23087) +++ branches/OpenMPT-1.32/doc/release_branches.md Fri Mar 28 14:14:48 2025 (r23088) @@ -4,16 +4,27 @@ 1. adjust buildbot status dashboard page 2. adjust buildbot configuration by copying current trunk configuration to a new branch configuration and replace `trunk` with the branch version (i.e. - `127`), remember to also adjust url of nondist externals + `127`), remember to also adjust url of nondist externals: + in config and config-dist: + * "trunk/OpenMPT" -> "branches/OpenMPT-1.32" + * "trunk" -> "132" 3. add release build configuration to the buildbot branch configuration file, adjust buildbot config of release build configurations to output to the separate auto-release (append _rel to the publish scripcts) directory, change the archive format from 7z to zip for windows binaries, use separate - release schedulers for lib and trk - 4. adjust buildbot update management script - 5. branch the nondist externals repository - 6. add versioned libopenmpt release script for new branch which copies release + release schedulers for lib and trk. + in config-rel (from config-dist): + * "dist" -> "rel" + * "publish_v2.sh" -> "publish_v2_rel.sh" + * "publish_v2_noindex.sh" -> "publish_v2_noindex_rel.sh" + * " rel" -> " dist" + * ".sh dist" -> ".sh rel" + * "nonrel" -> "nondist" + * "7z" -> "zip" + 4. branch the nondist externals repository + 5. add versioned libopenmpt release script for new branch which copies release packages into place + 6. adjust old stable libopenmpt release script to not overwrite docs 7. branch the current trunk HEAD (`$VER` is the branch version): `svn copy -m "branch OpenMPT-$VER" https://source.openmpt.org/svn/openmpt/trunk/OpenMPT https://source.openmpt.org/svn/openmpt/branches/OpenMPT-$VER` 8. update versions in trunk @@ -30,6 +41,11 @@ `1.$VER.00.$MINORMINOR+1` 2. run `build/update_libopenmpt_version.sh bumpprerel` 10. update announcement/changelog URLs for test builds in branch: - `installer/generate_update_json.py` and `generate_update_json_retro.py` -11. update buildbot scripts that copy OpenMPT update information into place -12. update branch release date on libopenmpt trunk changelog + `installer/generate_update_json.py` and `generate_update_json_retro.py`: + * "trunk/OpenMPT" -> "banches/OpenMPT-1.32" +11. update https://builds.openmpt.org/builds/ +12. update buildbot scripts that copy OpenMPT update information into place +13. update branch release date on libopenmpt trunk changelog + +unclear: + * adjust buildbot update management script |
From: <sv...@op...> - 2025-03-28 13:14:42
|
Author: manx Date: Fri Mar 28 14:14:22 2025 New Revision: 23087 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=23087 Log: [Doc] Update release_branches.md. Modified: trunk/OpenMPT/doc/release_branches.md Modified: trunk/OpenMPT/doc/release_branches.md ============================================================================== --- trunk/OpenMPT/doc/release_branches.md Fri Mar 28 14:12:25 2025 (r23086) +++ trunk/OpenMPT/doc/release_branches.md Fri Mar 28 14:14:22 2025 (r23087) @@ -4,16 +4,27 @@ 1. adjust buildbot status dashboard page 2. adjust buildbot configuration by copying current trunk configuration to a new branch configuration and replace `trunk` with the branch version (i.e. - `127`), remember to also adjust url of nondist externals + `127`), remember to also adjust url of nondist externals: + in config and config-dist: + * "trunk/OpenMPT" -> "branches/OpenMPT-1.32" + * "trunk" -> "132" 3. add release build configuration to the buildbot branch configuration file, adjust buildbot config of release build configurations to output to the separate auto-release (append _rel to the publish scripcts) directory, change the archive format from 7z to zip for windows binaries, use separate - release schedulers for lib and trk - 4. adjust buildbot update management script - 5. branch the nondist externals repository - 6. add versioned libopenmpt release script for new branch which copies release + release schedulers for lib and trk. + in config-rel (from config-dist): + * "dist" -> "rel" + * "publish_v2.sh" -> "publish_v2_rel.sh" + * "publish_v2_noindex.sh" -> "publish_v2_noindex_rel.sh" + * " rel" -> " dist" + * ".sh dist" -> ".sh rel" + * "nonrel" -> "nondist" + * "7z" -> "zip" + 4. branch the nondist externals repository + 5. add versioned libopenmpt release script for new branch which copies release packages into place + 6. adjust old stable libopenmpt release script to not overwrite docs 7. branch the current trunk HEAD (`$VER` is the branch version): `svn copy -m "branch OpenMPT-$VER" https://source.openmpt.org/svn/openmpt/trunk/OpenMPT https://source.openmpt.org/svn/openmpt/branches/OpenMPT-$VER` 8. update versions in trunk @@ -30,6 +41,11 @@ `1.$VER.00.$MINORMINOR+1` 2. run `build/update_libopenmpt_version.sh bumpprerel` 10. update announcement/changelog URLs for test builds in branch: - `installer/generate_update_json.py` and `generate_update_json_retro.py` -11. update buildbot scripts that copy OpenMPT update information into place -12. update branch release date on libopenmpt trunk changelog + `installer/generate_update_json.py` and `generate_update_json_retro.py`: + * "trunk/OpenMPT" -> "banches/OpenMPT-1.32" +11. update https://builds.openmpt.org/builds/ +12. update buildbot scripts that copy OpenMPT update information into place +13. update branch release date on libopenmpt trunk changelog + +unclear: + * adjust buildbot update management script |
From: <sv...@op...> - 2025-03-28 13:12:32
|
Author: manx Date: Fri Mar 28 14:12:25 2025 New Revision: 23086 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=23086 Log: [Var] Update: Update announcement and changelog URLs for test builds. Modified: branches/OpenMPT-1.32/installer/generate_update_json.py branches/OpenMPT-1.32/installer/generate_update_json_retro.py Modified: branches/OpenMPT-1.32/installer/generate_update_json.py ============================================================================== --- branches/OpenMPT-1.32/installer/generate_update_json.py Fri Mar 28 14:09:00 2025 (r23085) +++ branches/OpenMPT-1.32/installer/generate_update_json.py Fri Mar 28 14:12:25 2025 (r23086) @@ -20,8 +20,8 @@ changelog_url = "https://openmpt.org/release_notes/History.txt" else: download_base_url = "https://builds.openmpt.org/builds/auto/openmpt/pkg.win/" - announcement_url = "https://source.openmpt.org/browse/openmpt/trunk/OpenMPT/?op=log&isdir=1&sr=" + SVNVERSION + "&max=1000" - changelog_url = "https://source.openmpt.org/browse/openmpt/trunk/OpenMPT/?op=log&isdir=1&sr=" + SVNVERSION + "&max=1000" + announcement_url = "https://source.openmpt.org/browse/openmpt/branches/OpenMPT-1.32/?op=log&isdir=1&sr=" + SVNVERSION + "&max=1000" + changelog_url = "https://source.openmpt.org/browse/openmpt/branches/OpenMPT-1.32/?op=log&isdir=1&sr=" + SVNVERSION + "&max=1000" os.chdir(os.path.dirname(os.path.abspath(__file__))) os.chdir("..") Modified: branches/OpenMPT-1.32/installer/generate_update_json_retro.py ============================================================================== --- branches/OpenMPT-1.32/installer/generate_update_json_retro.py Fri Mar 28 14:09:00 2025 (r23085) +++ branches/OpenMPT-1.32/installer/generate_update_json_retro.py Fri Mar 28 14:12:25 2025 (r23086) @@ -20,8 +20,8 @@ changelog_url = "https://openmpt.org/release_notes/History.txt" else: download_base_url = "https://builds.openmpt.org/builds/auto/openmpt/pkg.win-retro/" - announcement_url = "https://source.openmpt.org/browse/openmpt/trunk/OpenMPT/?op=log&isdir=1&sr=" + SVNVERSION + "&max=1000" - changelog_url = "https://source.openmpt.org/browse/openmpt/trunk/OpenMPT/?op=log&isdir=1&sr=" + SVNVERSION + "&max=1000" + announcement_url = "https://source.openmpt.org/browse/openmpt/branches/OpenMPT-1.32/?op=log&isdir=1&sr=" + SVNVERSION + "&max=1000" + changelog_url = "https://source.openmpt.org/browse/openmpt/branches/OpenMPT-1.32/?op=log&isdir=1&sr=" + SVNVERSION + "&max=1000" os.chdir(os.path.dirname(os.path.abspath(__file__))) os.chdir("..") |
From: <sv...@op...> - 2025-03-28 13:09:12
|
Author: manx Date: Fri Mar 28 14:09:00 2025 New Revision: 23085 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=23085 Log: [Mod] libopenmpt: Bump prerel version. Modified: branches/OpenMPT-1.32/libopenmpt/libopenmpt_version.h branches/OpenMPT-1.32/libopenmpt/libopenmpt_version.mk Modified: branches/OpenMPT-1.32/libopenmpt/libopenmpt_version.h ============================================================================== --- branches/OpenMPT-1.32/libopenmpt/libopenmpt_version.h Fri Mar 28 14:07:03 2025 (r23084) +++ branches/OpenMPT-1.32/libopenmpt/libopenmpt_version.h Fri Mar 28 14:09:00 2025 (r23085) @@ -23,7 +23,7 @@ /*! \brief libopenmpt patch version number */ #define OPENMPT_API_VERSION_PATCH 0 /*! \brief libopenmpt pre-release tag */ -#define OPENMPT_API_VERSION_PREREL "-pre.14" +#define OPENMPT_API_VERSION_PREREL "-pre.15" /*! \brief libopenmpt pre-release flag */ #define OPENMPT_API_VERSION_IS_PREREL 1 Modified: branches/OpenMPT-1.32/libopenmpt/libopenmpt_version.mk ============================================================================== --- branches/OpenMPT-1.32/libopenmpt/libopenmpt_version.mk Fri Mar 28 14:07:03 2025 (r23084) +++ branches/OpenMPT-1.32/libopenmpt/libopenmpt_version.mk Fri Mar 28 14:09:00 2025 (r23085) @@ -1,7 +1,7 @@ LIBOPENMPT_VERSION_MAJOR=0 LIBOPENMPT_VERSION_MINOR=8 LIBOPENMPT_VERSION_PATCH=0 -LIBOPENMPT_VERSION_PREREL=-pre.14 +LIBOPENMPT_VERSION_PREREL=-pre.15 LIBOPENMPT_LTVER_CURRENT=5 LIBOPENMPT_LTVER_REVISION=0 |
From: <sv...@op...> - 2025-03-28 13:07:20
|
Author: manx Date: Fri Mar 28 14:07:03 2025 New Revision: 23084 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=23084 Log: [Mod] OpenMPT: Version is now 1.32.00.42 Modified: branches/OpenMPT-1.32/common/versionNumber.h Modified: branches/OpenMPT-1.32/common/versionNumber.h ============================================================================== --- branches/OpenMPT-1.32/common/versionNumber.h Fri Mar 28 14:02:47 2025 (r23083) +++ branches/OpenMPT-1.32/common/versionNumber.h Fri Mar 28 14:07:03 2025 (r23084) @@ -16,4 +16,4 @@ #define VER_MAJORMAJOR 1 #define VER_MAJOR 32 #define VER_MINOR 00 -#define VER_MINORMINOR 41 +#define VER_MINORMINOR 42 |
From: <sv...@op...> - 2025-03-28 13:03:11
|
Author: manx Date: Fri Mar 28 14:02:47 2025 New Revision: 23083 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=23083 Log: [Var] build: Update version numbers in libopenmpt release scripts. Modified: trunk/OpenMPT/build/svn/do_libopenmpt_release.sh trunk/OpenMPT/build/svn/do_libopenmpt_release_rc.sh Modified: trunk/OpenMPT/build/svn/do_libopenmpt_release.sh ============================================================================== --- trunk/OpenMPT/build/svn/do_libopenmpt_release.sh Fri Mar 28 14:01:12 2025 (r23082) +++ trunk/OpenMPT/build/svn/do_libopenmpt_release.sh Fri Mar 28 14:02:47 2025 (r23083) @@ -17,7 +17,7 @@ make QUIET=1 distversion-pure NEWVER=$(cat distversion-pure) NEWREV=$(svn info --xml . | xpath -e 'string(/info/entry/commit/@revision)' -q) -svn cp -m "tag libopenmpt-${NEWVER}" -r ${NEWREV} https://source.openmpt.org/svn/openmpt/branches/OpenMPT-1.32 https://source.openmpt.org/svn/openmpt/tags/libopenmpt-${NEWVER} +svn cp -m "tag libopenmpt-${NEWVER}" -r ${NEWREV} https://source.openmpt.org/svn/openmpt/branches/OpenMPT-1.33 https://source.openmpt.org/svn/openmpt/tags/libopenmpt-${NEWVER} build/update_libopenmpt_version.sh bumppatch build/update_libopenmpt_version.sh bumpltrev svn ci -m "[Mod] libopenmpt: Bump patch version." @@ -30,5 +30,5 @@ #svn ci -m "[Mod] OpenMPT: Version is now ${VER_MAJOR}.${VER_MINOR}.${VER_PATCH}.${VER_BUILD}" echo "ALL DONE." -echo "run './release-0.8.sh $NEWVER +release' in a website checkout after buildbot has finished." +echo "run './release-0.9.sh $NEWVER +release' in a website checkout after buildbot has finished." Modified: trunk/OpenMPT/build/svn/do_libopenmpt_release_rc.sh ============================================================================== --- trunk/OpenMPT/build/svn/do_libopenmpt_release_rc.sh Fri Mar 28 14:01:12 2025 (r23082) +++ trunk/OpenMPT/build/svn/do_libopenmpt_release_rc.sh Fri Mar 28 14:02:47 2025 (r23083) @@ -7,8 +7,8 @@ make QUIET=1 distversion-pure NEWVER=$(cat distversion-pure) NEWREV=$(svn info --xml . | xpath -e 'string(/info/entry/commit/@revision)' -q) -svn cp -m "tag libopenmpt-${NEWVER}" -r ${NEWREV} https://source.openmpt.org/svn/openmpt/branches/OpenMPT-1.32 https://source.openmpt.org/svn/openmpt/tags/libopenmpt-${NEWVER} +svn cp -m "tag libopenmpt-${NEWVER}" -r ${NEWREV} https://source.openmpt.org/svn/openmpt/branches/OpenMPT-1.33 https://source.openmpt.org/svn/openmpt/tags/libopenmpt-${NEWVER} TAGREV=$(svn info --xml https://source.openmpt.org/svn/openmpt/tags/libopenmpt-${NEWVER} | xpath -e 'string(/info/entry/commit/@revision)' -q) echo "ALL DONE." -echo "run './release-0.8.sh $NEWVER +r${TAGREV}' in a website checkout after buildbot has finished." +echo "run './release-0.9.sh $NEWVER +r${TAGREV}' in a website checkout after buildbot has finished." |
From: <sv...@op...> - 2025-03-28 13:01:28
|
Author: manx Date: Fri Mar 28 14:01:12 2025 New Revision: 23082 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=23082 Log: [Mod] libopenmpt: Bump ltabi version. Modified: trunk/OpenMPT/libopenmpt/libopenmpt_version.mk Modified: trunk/OpenMPT/libopenmpt/libopenmpt_version.mk ============================================================================== --- trunk/OpenMPT/libopenmpt/libopenmpt_version.mk Fri Mar 28 14:00:18 2025 (r23081) +++ trunk/OpenMPT/libopenmpt/libopenmpt_version.mk Fri Mar 28 14:01:12 2025 (r23082) @@ -3,6 +3,6 @@ LIBOPENMPT_VERSION_PATCH=0 LIBOPENMPT_VERSION_PREREL=-pre.0 -LIBOPENMPT_LTVER_CURRENT=5 +LIBOPENMPT_LTVER_CURRENT=6 LIBOPENMPT_LTVER_REVISION=0 -LIBOPENMPT_LTVER_AGE=5 +LIBOPENMPT_LTVER_AGE=6 |
From: <sv...@op...> - 2025-03-28 13:00:39
|
Author: manx Date: Fri Mar 28 14:00:18 2025 New Revision: 23081 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=23081 Log: [Mod] libopenmpt: Bump minor version. Modified: trunk/OpenMPT/doc/libopenmpt/changelog.md trunk/OpenMPT/libopenmpt/libopenmpt_version.h trunk/OpenMPT/libopenmpt/libopenmpt_version.mk Modified: trunk/OpenMPT/doc/libopenmpt/changelog.md ============================================================================== --- trunk/OpenMPT/doc/libopenmpt/changelog.md Fri Mar 28 13:58:51 2025 (r23080) +++ trunk/OpenMPT/doc/libopenmpt/changelog.md Fri Mar 28 14:00:18 2025 (r23081) @@ -5,6 +5,8 @@ For fully detailed change log, please see the source repository directly. This is just a high-level summary. +### libopenmpt 0.9.0-pre + ### libopenmpt 0.8.0-pre * [**New**] Can now read PumaTracker (`PUMA`) modules. Modified: trunk/OpenMPT/libopenmpt/libopenmpt_version.h ============================================================================== --- trunk/OpenMPT/libopenmpt/libopenmpt_version.h Fri Mar 28 13:58:51 2025 (r23080) +++ trunk/OpenMPT/libopenmpt/libopenmpt_version.h Fri Mar 28 14:00:18 2025 (r23081) @@ -19,11 +19,11 @@ /*! \brief libopenmpt major version number */ #define OPENMPT_API_VERSION_MAJOR 0 /*! \brief libopenmpt minor version number */ -#define OPENMPT_API_VERSION_MINOR 8 +#define OPENMPT_API_VERSION_MINOR 9 /*! \brief libopenmpt patch version number */ #define OPENMPT_API_VERSION_PATCH 0 /*! \brief libopenmpt pre-release tag */ -#define OPENMPT_API_VERSION_PREREL "-pre.14" +#define OPENMPT_API_VERSION_PREREL "-pre.0" /*! \brief libopenmpt pre-release flag */ #define OPENMPT_API_VERSION_IS_PREREL 1 Modified: trunk/OpenMPT/libopenmpt/libopenmpt_version.mk ============================================================================== --- trunk/OpenMPT/libopenmpt/libopenmpt_version.mk Fri Mar 28 13:58:51 2025 (r23080) +++ trunk/OpenMPT/libopenmpt/libopenmpt_version.mk Fri Mar 28 14:00:18 2025 (r23081) @@ -1,7 +1,7 @@ LIBOPENMPT_VERSION_MAJOR=0 -LIBOPENMPT_VERSION_MINOR=8 +LIBOPENMPT_VERSION_MINOR=9 LIBOPENMPT_VERSION_PATCH=0 -LIBOPENMPT_VERSION_PREREL=-pre.14 +LIBOPENMPT_VERSION_PREREL=-pre.0 LIBOPENMPT_LTVER_CURRENT=5 LIBOPENMPT_LTVER_REVISION=0 |
From: <sv...@op...> - 2025-03-28 12:59:13
|
Author: manx Date: Fri Mar 28 13:58:51 2025 New Revision: 23080 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=23080 Log: [Mod] OpenMPT: Version is now 1.33.00.01 Modified: trunk/OpenMPT/common/versionNumber.h Modified: trunk/OpenMPT/common/versionNumber.h ============================================================================== --- trunk/OpenMPT/common/versionNumber.h Fri Mar 28 13:57:39 2025 (r23079) +++ trunk/OpenMPT/common/versionNumber.h Fri Mar 28 13:58:51 2025 (r23080) @@ -14,6 +14,6 @@ // Version definitions. The only thing that needs to be changed when changing version number. #define VER_MAJORMAJOR 1 -#define VER_MAJOR 32 +#define VER_MAJOR 33 #define VER_MINOR 00 -#define VER_MINORMINOR 41 +#define VER_MINORMINOR 01 |
From: <sv...@op...> - 2025-03-28 12:58:05
|
Author: manx Date: Fri Mar 28 13:57:39 2025 New Revision: 23079 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=23079 Log: branch OpenMPT-1.32 Added: branches/OpenMPT-1.32/ - copied from r23078, trunk/OpenMPT/ |
From: <sv...@op...> - 2025-03-24 11:55:28
|
Author: manx Date: Mon Mar 24 12:55:16 2025 New Revision: 23078 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=23078 Log: [Doc] Update release_branches.md. Modified: trunk/OpenMPT/doc/release_branches.md Modified: trunk/OpenMPT/doc/release_branches.md ============================================================================== --- trunk/OpenMPT/doc/release_branches.md Sun Mar 23 19:48:34 2025 (r23077) +++ trunk/OpenMPT/doc/release_branches.md Mon Mar 24 12:55:16 2025 (r23078) @@ -1,21 +1,22 @@ branching release branches ========================== - 1. adjust buildbot configuration by copying current trunk configuration to a + 1. adjust buildbot status dashboard page + 2. adjust buildbot configuration by copying current trunk configuration to a new branch configuration and replace `trunk` with the branch version (i.e. `127`), remember to also adjust url of nondist externals - 2. add release build configuration to the buildbot branch configuration file, + 3. add release build configuration to the buildbot branch configuration file, adjust buildbot config of release build configurations to output to the separate auto-release (append _rel to the publish scripcts) directory, change the archive format from 7z to zip for windows binaries, use separate release schedulers for lib and trk - 3. adjust buildbot update management script - 4. branch the nondist externals repository - 5. add versioned libopenmpt release script for new branch which copies release + 4. adjust buildbot update management script + 5. branch the nondist externals repository + 6. add versioned libopenmpt release script for new branch which copies release packages into place - 6. branch the current trunk HEAD (`$VER` is the branch version): + 7. branch the current trunk HEAD (`$VER` is the branch version): `svn copy -m "branch OpenMPT-$VER" https://source.openmpt.org/svn/openmpt/trunk/OpenMPT https://source.openmpt.org/svn/openmpt/branches/OpenMPT-$VER` - 7. update versions in trunk + 8. update versions in trunk `https://source.openmpt.org/svn/openmpt/trunk/OpenMPT`: 1. set OpenMPT version in `common/versionNumber.h` to `1.$(($VER + 1)).00.01` @@ -23,12 +24,12 @@ 3. run `build/update_libopenmpt_version.sh bumpltabi` 4. update version numbers in `build/svn/do_libopenmpt_release.sh` and `build/svn/do_libopenmpt_release_rc.sh` - 8. update versions in branch + 9. update versions in branch `https://source.openmpt.org/svn/openmpt/branches/OpenMPT-$VER`: 1. set OpenMPT version in `common/versionNumber.h` to `1.$VER.00.$MINORMINOR+1` 2. run `build/update_libopenmpt_version.sh bumpprerel` - 9. update announcement/changelog URLs for test builds in branch: +10. update announcement/changelog URLs for test builds in branch: `installer/generate_update_json.py` and `generate_update_json_retro.py` -10. update buildbot scripts that copy OpenMPT update information into place -11. update branch release date on libopenmpt trunk changelog +11. update buildbot scripts that copy OpenMPT update information into place +12. update branch release date on libopenmpt trunk changelog |
From: <sv...@op...> - 2025-03-23 18:48:52
|
Author: sagamusix Date: Sun Mar 23 19:48:34 2025 New Revision: 23077 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=23077 Log: [Var] Signalmmith Stretch: Update to commit ffa45981be0b75079b43d1a7a142234f06869254 (2025-02-12). Modified: trunk/OpenMPT/include/SignalsmithStretch/OpenMPT.txt trunk/OpenMPT/include/SignalsmithStretch/SignalsmithStretch/README.md trunk/OpenMPT/include/SignalsmithStretch/SignalsmithStretch/dsp/README.md trunk/OpenMPT/include/SignalsmithStretch/SignalsmithStretch/dsp/common.h trunk/OpenMPT/include/SignalsmithStretch/SignalsmithStretch/dsp/fft.h trunk/OpenMPT/include/SignalsmithStretch/SignalsmithStretch/dsp/spectral.h trunk/OpenMPT/include/SignalsmithStretch/SignalsmithStretch/signalsmith-stretch.h Modified: trunk/OpenMPT/include/SignalsmithStretch/OpenMPT.txt ============================================================================== --- trunk/OpenMPT/include/SignalsmithStretch/OpenMPT.txt Sun Mar 23 17:20:10 2025 (r23076) +++ trunk/OpenMPT/include/SignalsmithStretch/OpenMPT.txt Sun Mar 23 19:48:34 2025 (r23077) @@ -1,3 +1,3 @@ -Signalsmith Stretch: C++ pitch/time library, commit a9d78f033150e9e2421decdf1c83011a316fcfb1 (2024-02-19) +Signalsmith Stretch: C++ pitch/time library, commit ffa45981be0b75079b43d1a7a142234f06869254 (2025-02-12) https://github.com/Signalsmith-Audio/signalsmith-stretch -No local changes have been made. \ No newline at end of file +Unneeded files (cmd and web folder) have been removed. \ No newline at end of file Modified: trunk/OpenMPT/include/SignalsmithStretch/SignalsmithStretch/README.md ============================================================================== --- trunk/OpenMPT/include/SignalsmithStretch/SignalsmithStretch/README.md Sun Mar 23 17:20:10 2025 (r23076) +++ trunk/OpenMPT/include/SignalsmithStretch/SignalsmithStretch/README.md Sun Mar 23 19:48:34 2025 (r23077) @@ -6,6 +6,8 @@ ## How to use it +Just include `signalsmith-stretch.h` where needed: + ```cpp #include "signalsmith-stretch.h" @@ -92,21 +94,35 @@ To follow pitch/time automation accurately, you should give it automation values from the current processing time (`.outputLatency()` samples ahead of the output), and feed it input from `.inputLatency()` samples ahead of the current processing time. -#### Starting and ending +### Seeking and starting + +You can use `.seek()` which lets you move around the input audio, by providing a bunch of input samples. You should ideally provide at least (one block-length + one interval) of input data: + +```cpp +stretch.seek(inputBuffers, inputSamples, playbackRateHint); +``` -After initialisation/reset to zero, the current processing time is `.inputLatency()` samples *before* t=0 in the input. This means you'll get `stretch.outputLatency() + stretch.inputLatency()*stretchFactor` samples of pre-roll output in total. +At the very start of playback (or after a `.reset()`), the current processing time is `.inputLatency()` samples *before* the first input samples you give it. You therefore might want to call `.seek()` to provide the first `inputSamples = stretch.inputLatency()` samples of input, so that the processing time matches the start of the input (meaning your pre-roll output is only `.outputLatency()` samples long). -If you're processing a fixed-length sound (instead of an infinite stream), you'll end up providing `.inputLatency()` samples of extra (zero) input at the end, to get the processing time to the right place. You'll then want to give it another `.outputLatency()` samples of (zero) input to fully clear the buffer, producing a correspondly-stretched amount of output. +### Ending + +If you're processing a fixed-length sound (instead of an infinite stream), you'll reach the end of your input, but still have some pending output. You should first make sure the processing time gets to the end, by passing an additional `.inputLatency()` samples of silence to `.process()` (similar to using `.seek()` at the beginning). + +You can then read the final part of the output using `.flush()`. It's recommended to read at least `.outputLatency()` samples of output: + +```cpp +stretch.flush(outputBuffers, outputSamples); +``` -What you do with this extra start/end output is up to you. Personally, I'd try inverting the phase and reversing them in time, and then adding them to the start/end of the result. (Wrapping this up in a helper function is on the TODO list.) +Using `.seek()`/`.flush()` like this, you can perform an exact time-stretch on a fixed-length sound, and your result will have `.outputLatency()` of pre-roll. ## Compiling -⚠️ This has mostly been tested with Clang. If you're using another compiler and have any problems, please get in touch. +⚠️ This has mostly been tested with Clang. If you're using another compiler and have any problems, please get in touch. -Just include `signalsmith-stretch.h` where needed. +🚨 It's generally be OK to enable `-ffast-math`, however there's a bug in Apple Clang 16.0.0 which can generate incorrect SIMD code. If you _have_ to use this version, we advise you don't use `-ffast-math`. -It's much slower (about 10x) if optimisation is disabled though, so you might want to enable optimisation where it's used, even in debug builds. +It's much slower (about 10x) if optimisation is disabled altogether, so you might want to enable optimisation where it's used, even in Debug builds. ### DSP Library @@ -116,4 +132,21 @@ ## License -[MIT License](LICENSE.txt) for now - get in touch if you need anything else. +Released under the [MIT License](LICENSE.txt) - get in touch if you need anything else. + +## Other environments / languages + +There's a Web Audio wrapper in `web/` (using WASM/AudioWorklet). This will remain in-sync with the C++ library. + +There's a [Python binding](https://pypi.org/project/python-stretch/) written/published by [Gregorio Andrea Giudici](https://github.com/gregogiudici/python-stretch), and a [Rust wrapper](https://crates.io/crates/signalsmith-stretch) by [Colin Marc](https://github.com/colinmarc/signalsmith-stretch-rs). + +## Thanks + +We'd like to particularly thank the following people who sponsored specific features or improvements: + +* **Metronaut**: web audio (JS/WASM) release +* **Daniel L Bowling** and the Stanford School of Medicine: web audio improvements + +We're also grateful for the following community contributions: + +* **Steve MacKinnon** for finding/resolving a bug in `.reset()` Modified: trunk/OpenMPT/include/SignalsmithStretch/SignalsmithStretch/dsp/README.md ============================================================================== --- trunk/OpenMPT/include/SignalsmithStretch/SignalsmithStretch/dsp/README.md Sun Mar 23 17:20:10 2025 (r23076) +++ trunk/OpenMPT/include/SignalsmithStretch/SignalsmithStretch/dsp/README.md Sun Mar 23 19:48:34 2025 (r23077) @@ -22,7 +22,7 @@ You can add a compile-time version-check to make sure you have a compatible version of the library: ```cpp #include "dsp/envelopes.h" -SIGNALSMITH_DSP_VERSION_CHECK(1, 6, 0) +SIGNALSMITH_DSP_VERSION_CHECK(1, 6, 1) ``` ### Development / contributing Modified: trunk/OpenMPT/include/SignalsmithStretch/SignalsmithStretch/dsp/common.h ============================================================================== --- trunk/OpenMPT/include/SignalsmithStretch/SignalsmithStretch/dsp/common.h Sun Mar 23 17:20:10 2025 (r23076) +++ trunk/OpenMPT/include/SignalsmithStretch/SignalsmithStretch/dsp/common.h Sun Mar 23 19:48:34 2025 (r23077) @@ -1,6 +1,10 @@ #ifndef SIGNALSMITH_DSP_COMMON_H #define SIGNALSMITH_DSP_COMMON_H +#if defined(__FAST_MATH__) && (__apple_build_version__ >= 16000000) && (__apple_build_version__ <= 16000099) +# error Apple Clang 16.0.0 generates incorrect SIMD for ARM. If you HAVE to use this version of Clang, turn off -ffast-math. +#endif + #ifndef M_PI #define M_PI 3.14159265358979323846264338327950288 #endif @@ -15,8 +19,8 @@ #define SIGNALSMITH_DSP_VERSION_MAJOR 1 #define SIGNALSMITH_DSP_VERSION_MINOR 6 -#define SIGNALSMITH_DSP_VERSION_PATCH 0 -#define SIGNALSMITH_DSP_VERSION_STRING "1.6.0" +#define SIGNALSMITH_DSP_VERSION_PATCH 1 +#define SIGNALSMITH_DSP_VERSION_STRING "1.6.1" /** Version compatability check. \code{.cpp} @@ -39,5 +43,5 @@ } // signalsmith:: #else // If we've already included it, check it's the same version -static_assert(SIGNALSMITH_DSP_VERSION_MAJOR == 1 && SIGNALSMITH_DSP_VERSION_MINOR == 6 && SIGNALSMITH_DSP_VERSION_PATCH == 0, "multiple versions of the Signalsmith DSP library"); +static_assert(SIGNALSMITH_DSP_VERSION_MAJOR == 1 && SIGNALSMITH_DSP_VERSION_MINOR == 6 && SIGNALSMITH_DSP_VERSION_PATCH == 1, "multiple versions of the Signalsmith DSP library"); #endif // include guard Modified: trunk/OpenMPT/include/SignalsmithStretch/SignalsmithStretch/dsp/fft.h ============================================================================== --- trunk/OpenMPT/include/SignalsmithStretch/SignalsmithStretch/dsp/fft.h Sun Mar 23 17:20:10 2025 (r23076) +++ trunk/OpenMPT/include/SignalsmithStretch/SignalsmithStretch/dsp/fft.h Sun Mar 23 19:48:34 2025 (r23077) @@ -162,8 +162,10 @@ plan.resize(0); twiddleVector.resize(0); addPlanSteps(0, 0, _size, 1); + twiddleVector.shrink_to_fit(); permutation.resize(0); + permutation.reserve(_size); permutation.push_back(PermutationPair{0, 0}); size_t indexLow = 0, indexHigh = factors.size(); size_t inputStepLow = _size, outputStepLow = 1; Modified: trunk/OpenMPT/include/SignalsmithStretch/SignalsmithStretch/dsp/spectral.h ============================================================================== --- trunk/OpenMPT/include/SignalsmithStretch/SignalsmithStretch/dsp/spectral.h Sun Mar 23 17:20:10 2025 (r23076) +++ trunk/OpenMPT/include/SignalsmithStretch/SignalsmithStretch/dsp/spectral.h Sun Mar 23 19:48:34 2025 (r23077) @@ -89,16 +89,17 @@ return mrfft.size(); } - /// Performs an FFT (with windowing) - template<class Input, class Output> + /// Performs an FFT, with windowing and rotation (if enabled) + template<bool withWindow=true, bool withScaling=false, class Input, class Output> void fft(Input &&input, Output &&output) { int fftSize = size(); + const Sample norm = (withScaling ? 1/(Sample)fftSize : 1); for (int i = 0; i < offsetSamples; ++i) { // Inverted polarity since we're using the MRFFT - timeBuffer[i + fftSize - offsetSamples] = -input[i]*fftWindow[i]; + timeBuffer[i + fftSize - offsetSamples] = -input[i]*norm*(withWindow ? fftWindow[i] : Sample(1)); } for (int i = offsetSamples; i < fftSize; ++i) { - timeBuffer[i - offsetSamples] = input[i]*fftWindow[i]; + timeBuffer[i - offsetSamples] = input[i]*norm*(withWindow ? fftWindow[i] : Sample(1)); } mrfft.fft(timeBuffer, output); } @@ -108,22 +109,22 @@ mrfft.fft(input, output); } - /// Inverse FFT, with windowing and 1/N scaling - template<class Input, class Output> + /// Inverse FFT, with windowing, 1/N scaling and rotation (if enabled) + template<bool withWindow=true, bool withScaling=true, class Input, class Output> void ifft(Input &&input, Output &&output) { mrfft.ifft(input, timeBuffer); int fftSize = mrfft.size(); - Sample norm = 1/(Sample)fftSize; + const Sample norm = (withScaling ? 1/(Sample)fftSize : 1); for (int i = 0; i < offsetSamples; ++i) { // Inverted polarity since we're using the MRFFT - output[i] = -timeBuffer[i + fftSize - offsetSamples]*norm*fftWindow[i]; + output[i] = -timeBuffer[i + fftSize - offsetSamples]*norm*(withWindow ? fftWindow[i] : Sample(1)); } for (int i = offsetSamples; i < fftSize; ++i) { - output[i] = timeBuffer[i - offsetSamples]*norm*fftWindow[i]; + output[i] = timeBuffer[i - offsetSamples]*norm*(withWindow ? fftWindow[i] : Sample(1)); } } - /// Performs an IFFT (no windowing or rotation) + /// Performs an IFFT (no windowing, scaling or rotation) template<class Input, class Output> void ifftRaw(Input &&input, Output &&output) { mrfft.ifft(input, output); @@ -169,6 +170,7 @@ */ template<typename Sample> class STFT : public signalsmith::delay::MultiBuffer<Sample> { + using Super = signalsmith::delay::MultiBuffer<Sample>; using Complex = std::complex<Sample>; @@ -206,6 +208,7 @@ }; std::vector<Sample> timeBuffer; + bool rotate = false; void resizeInternal(int newChannels, int windowSize, int newInterval, int historyLength, int zeroPadding) { Super::resize(newChannels, windowSize /* for output summing */ @@ -213,14 +216,14 @@ + historyLength); int fftSize = fft.fastSizeAbove(windowSize + zeroPadding); - + this->channels = newChannels; _windowSize = windowSize; this->_fftSize = fftSize; this->_interval = newInterval; validUntilIndex = -1; - setWindow(windowShape); + setWindow(windowShape, rotate); spectrum.resize(channels, fftSize/2); timeBuffer.resize(fftSize); @@ -242,6 +245,7 @@ // TODO: these should both be set before resize() void setWindow(Window shape, bool rotateToZero=false) { windowShape = shape; + rotate = rotateToZero; auto &window = fft.setSizeWindow(_fftSize, rotateToZero ? _windowSize/2 : 0); if (windowShape == Window::kaiser) { Modified: trunk/OpenMPT/include/SignalsmithStretch/SignalsmithStretch/signalsmith-stretch.h ============================================================================== --- trunk/OpenMPT/include/SignalsmithStretch/SignalsmithStretch/signalsmith-stretch.h Sun Mar 23 17:20:10 2025 (r23076) +++ trunk/OpenMPT/include/SignalsmithStretch/SignalsmithStretch/signalsmith-stretch.h Sun Mar 23 19:48:34 2025 (r23077) @@ -12,8 +12,9 @@ namespace signalsmith { namespace stretch { -template<typename Sample=float> +template<typename Sample=float, class RandomEngine=std::default_random_engine> struct SignalsmithStretch { + static constexpr size_t version[3] = {1, 1, 1}; SignalsmithStretch() : randomEngine(std::random_device{}()) {} SignalsmithStretch(long seed) : randomEngine(seed) {} @@ -36,7 +37,7 @@ inputBuffer.reset(); prevInputOffset = -1; channelBands.assign(channelBands.size(), Band()); - silenceCounter = 2*stft.windowSize(); + silenceCounter = 0; didSeek = false; flushed = true; } @@ -52,18 +53,14 @@ // Manual setup void configure(int nChannels, int blockSamples, int intervalSamples) { channels = nChannels; + stft.setWindow(stft.kaiser, true); stft.resize(channels, blockSamples, intervalSamples); bands = stft.bands(); inputBuffer.resize(channels, blockSamples + intervalSamples + 1); timeBuffer.assign(stft.fftSize(), 0); channelBands.assign(bands*channels, Band()); - // Various phase rotations - rotCentreSpectrum.resize(bands); - rotPrevInterval.assign(bands, 0); - timeShiftPhases(blockSamples*Sample(-0.5), rotCentreSpectrum); - timeShiftPhases(-intervalSamples, rotPrevInterval); - peaks.reserve(bands); + peaks.reserve(bands/2); energy.resize(bands); smoothedEnergy.resize(bands); outputMap.resize(bands); @@ -93,14 +90,21 @@ template<class Inputs> void seek(Inputs &&inputs, int inputSamples, double playbackRate) { inputBuffer.reset(); + Sample totalEnergy = 0; for (int c = 0; c < channels; ++c) { auto &&inputChannel = inputs[c]; auto &&bufferChannel = inputBuffer[c]; int startIndex = std::max<int>(0, inputSamples - stft.windowSize() - stft.interval()); for (int i = startIndex; i < inputSamples; ++i) { - bufferChannel[i] = inputChannel[i]; + Sample s = inputChannel[i]; + totalEnergy += s*s; + bufferChannel[i] = s; } } + if (totalEnergy >= noiseFloor) { + silenceCounter = 0; + silenceFirst = true; + } inputBuffer += inputSamples; didSeek = true; seekTimeFactor = (playbackRate*stft.interval() > 1) ? 1/playbackRate : stft.interval(); @@ -121,7 +125,7 @@ if (silenceFirst) { silenceFirst = false; for (auto &b : channelBands) { - b.input = b.prevInput = b.output = b.prevOutput = 0; + b.input = b.prevInput = b.output = 0; b.inputEnergy = 0; } } @@ -190,7 +194,7 @@ auto channelBands = bandsForChannel(c); auto &&spectrumBands = stft.spectrum[c]; for (int b = 0; b < bands; ++b) { - channelBands[b].input = signalsmith::perf::mul(spectrumBands[b], rotCentreSpectrum[b]); + channelBands[b].input = spectrumBands[b]; } } @@ -213,7 +217,7 @@ auto channelBands = bandsForChannel(c); auto &&spectrumBands = stft.spectrum[c]; for (int b = 0; b < bands; ++b) { - channelBands[b].prevInput = signalsmith::perf::mul(spectrumBands[b], rotCentreSpectrum[b]); + channelBands[b].prevInput = spectrumBands[b]; } } } @@ -227,7 +231,7 @@ auto channelBands = bandsForChannel(c); auto &&spectrumBands = stft.spectrum[c]; for (int b = 0; b < bands; ++b) { - spectrumBands[b] = signalsmith::perf::mul<true>(channelBands[b].output, rotCentreSpectrum[b]); + spectrumBands[b] = channelBands[b].output; } } }); @@ -278,7 +282,7 @@ for (int c = 0; c < channels; ++c) { auto channelBands = bandsForChannel(c); for (int b = 0; b < bands; ++b) { - channelBands[b].prevInput = channelBands[b].prevOutput = 0; + channelBands[b].prevInput = channelBands[b].output = 0; } } flushed = true; @@ -301,23 +305,16 @@ bool didSeek = false, flushed = true; Sample seekTimeFactor = 1; - std::vector<Complex> rotCentreSpectrum, rotPrevInterval; Sample bandToFreq(Sample b) const { return (b + Sample(0.5))/stft.fftSize(); } Sample freqToBand(Sample f) const { return f*stft.fftSize() - Sample(0.5); } - void timeShiftPhases(Sample shiftSamples, std::vector<Complex> &output) const { - for (int b = 0; b < bands; ++b) { - Sample phase = bandToFreq(b)*shiftSamples*Sample(-2*M_PI); - output[b] = {std::cos(phase), std::sin(phase)}; - } - } struct Band { Complex input, prevInput{0}; - Complex output, prevOutput{0}; + Complex output{0}; Sample inputEnergy; }; std::vector<Band> channelBands; @@ -372,7 +369,6 @@ struct Prediction { Sample energy = 0; Complex input; - Complex shortVerticalTwist, longVerticalTwist; Complex makeOutput(Complex phase) { Sample phaseNorm = std::norm(phase); @@ -387,8 +383,8 @@ Prediction * predictionsForChannel(int c) { return channelPredictions.data() + c*bands; } - - std::default_random_engine randomEngine; + + RandomEngine randomEngine; void processSpectrum(bool newSpectrum, Sample timeFactor) { timeFactor = std::max<Sample>(timeFactor, 1/maxCleanStretch); @@ -398,10 +394,16 @@ if (newSpectrum) { for (int c = 0; c < channels; ++c) { auto bins = bandsForChannel(c); + + Complex rot = std::polar(Sample(1), bandToFreq(0)*stft.interval()*Sample(2*M_PI)); + Sample freqStep = bandToFreq(1) - bandToFreq(0); + Complex rotStep = std::polar(Sample(1), freqStep*stft.interval()*Sample(2*M_PI)); + for (int b = 0; b < bands; ++b) { auto &bin = bins[b]; - bin.prevOutput = signalsmith::perf::mul(bin.prevOutput, rotPrevInterval[b]); - bin.prevInput = signalsmith::perf::mul(bin.prevInput, rotPrevInterval[b]); + bin.output = signalsmith::perf::mul(bin.output, rot); + bin.prevInput = signalsmith::perf::mul(bin.prevInput, rot); + rot = signalsmith::perf::mul(rot, rotStep); } } } @@ -441,22 +443,8 @@ auto &outputBin = bins[b]; Complex prevInput = getFractional<&Band::prevInput>(c, lowIndex, fracIndex); Complex freqTwist = signalsmith::perf::mul<true>(prediction.input, prevInput); - Complex phase = signalsmith::perf::mul(outputBin.prevOutput, freqTwist); + Complex phase = signalsmith::perf::mul(outputBin.output, freqTwist); outputBin.output = phase/(std::max(prevEnergy, prediction.energy) + noiseFloor); - - if (b > 0) { - Sample binTimeFactor = randomTimeFactor ? timeFactorDist(randomEngine) : timeFactor; - Complex downInput = getFractional<&Band::input>(c, mapPoint.inputBin - binTimeFactor); - prediction.shortVerticalTwist = signalsmith::perf::mul<true>(prediction.input, downInput); - if (b >= longVerticalStep) { - Complex longDownInput = getFractional<&Band::input>(c, mapPoint.inputBin - longVerticalStep*binTimeFactor); - prediction.longVerticalTwist = signalsmith::perf::mul<true>(prediction.input, longDownInput); - } else { - prediction.longVerticalTwist = 0; - } - } else { - prediction.shortVerticalTwist = prediction.longVerticalTwist = 0; - } } } @@ -479,27 +467,46 @@ auto &outputBin = bins[b]; Complex phase = 0; + auto mapPoint = outputMap[b]; // Upwards vertical steps if (b > 0) { + Sample binTimeFactor = randomTimeFactor ? timeFactorDist(randomEngine) : timeFactor; + Complex downInput = getFractional<&Band::input>(maxChannel, mapPoint.inputBin - binTimeFactor); + Complex shortVerticalTwist = signalsmith::perf::mul<true>(prediction.input, downInput); + auto &downBin = bins[b - 1]; - phase += signalsmith::perf::mul(downBin.output, prediction.shortVerticalTwist); + phase += signalsmith::perf::mul(downBin.output, shortVerticalTwist); if (b >= longVerticalStep) { + Complex longDownInput = getFractional<&Band::input>(maxChannel, mapPoint.inputBin - longVerticalStep*binTimeFactor); + Complex longVerticalTwist = signalsmith::perf::mul<true>(prediction.input, longDownInput); + auto &longDownBin = bins[b - longVerticalStep]; - phase += signalsmith::perf::mul(longDownBin.output, prediction.longVerticalTwist); + phase += signalsmith::perf::mul(longDownBin.output, longVerticalTwist); } } // Downwards vertical steps if (b < bands - 1) { auto &upPrediction = predictions[b + 1]; + auto &upMapPoint = outputMap[b + 1]; + + Sample binTimeFactor = randomTimeFactor ? timeFactorDist(randomEngine) : timeFactor; + Complex downInput = getFractional<&Band::input>(maxChannel, upMapPoint.inputBin - binTimeFactor); + Complex shortVerticalTwist = signalsmith::perf::mul<true>(upPrediction.input, downInput); + auto &upBin = bins[b + 1]; - phase += signalsmith::perf::mul<true>(upBin.output, upPrediction.shortVerticalTwist); + phase += signalsmith::perf::mul<true>(upBin.output, shortVerticalTwist); if (b < bands - longVerticalStep) { auto &longUpPrediction = predictions[b + longVerticalStep]; + auto &longUpMapPoint = outputMap[b + longVerticalStep]; + + Complex longDownInput = getFractional<&Band::input>(maxChannel, longUpMapPoint.inputBin - longVerticalStep*binTimeFactor); + Complex longVerticalTwist = signalsmith::perf::mul<true>(longUpPrediction.input, longDownInput); + auto &longUpBin = bins[b + longVerticalStep]; - phase += signalsmith::perf::mul<true>(longUpBin.output, longUpPrediction.longVerticalTwist); + phase += signalsmith::perf::mul<true>(longUpBin.output, longVerticalTwist); } } @@ -520,11 +527,8 @@ if (newSpectrum) { for (auto &bin : channelBands) { - bin.prevOutput = bin.output; bin.prevInput = bin.input; } - } else { - for (auto &bin : channelBands) bin.prevOutput = bin.output; } } |
From: <sv...@op...> - 2025-03-23 16:20:23
|
Author: sagamusix Date: Sun Mar 23 17:20:10 2025 New Revision: 23076 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=23076 Log: [Mod] Allow MIDI library entries unset by user to stay unset after restarting OpenMPT (https://bugs.openmpt.org/view.php?id=1870). Modified: trunk/OpenMPT/mptrack/Mptrack.cpp trunk/OpenMPT/mptrack/Mptrack.h trunk/OpenMPT/mptrack/View_tre.cpp trunk/OpenMPT/soundlib/Load_mid.cpp Modified: trunk/OpenMPT/mptrack/Mptrack.cpp ============================================================================== --- trunk/OpenMPT/mptrack/Mptrack.cpp Sun Mar 23 15:31:18 2025 (r23075) +++ trunk/OpenMPT/mptrack/Mptrack.cpp Sun Mar 23 17:20:10 2025 (r23076) @@ -400,7 +400,7 @@ { for(uint32 ins = 0; ins < 256; ins++) { - if(replaceAll || midiLibrary[ins].empty()) + if(replaceAll || !midiLibrary[ins] || midiLibrary[ins]->empty()) { uint32 prog = (ins < 128) ? ins : 0xFF; uint32 key = (ins < 128) ? 0xFF : ins & 0x7F; @@ -457,36 +457,40 @@ filename = localPatchDir + filename + P_(".pat"); } } - if(!filename.empty()) - { - filename = theApp.PathInstallRelativeToAbsolute(filename); - midiLibrary[prog] = filename; - } + + if(filename == P_("*empty")) + midiLibrary[prog] = P_(""); + else if(!filename.empty()) + midiLibrary[prog] = theApp.PathInstallRelativeToAbsolute(filename); } } void CTrackApp::ExportMidiConfig(const mpt::PathString &filename) { - if(filename.empty()) return; + if(filename.empty()) + return; IniFileSettingsContainer file(filename); ExportMidiConfig(file); } void CTrackApp::ExportMidiConfig(SettingsContainer &file) { - for(uint32 prog = 0; prog < 256; prog++) if (!midiLibrary[prog].empty()) + for(uint32 prog = 0; prog < 256; prog++) { - mpt::PathString szFileName = midiLibrary[prog]; - - if(!szFileName.empty()) + const mpt::ustring key = MPT_UFORMAT("{}{}")((prog < 128) ? U_("Midi") : U_("Perc"), prog & 0x7F); + if(!midiLibrary[prog]) { - if(theApp.IsPortableMode()) - szFileName = theApp.PathAbsoluteToInstallRelative(szFileName); - - mpt::ustring key = MPT_UFORMAT("{}{}")((prog < 128) ? U_("Midi") : U_("Perc"), prog & 0x7F); - file.Write<mpt::PathString>(U_("Midi Library"), key, szFileName); + file.Forget(U_("Midi Library"), key); + continue; } + + mpt::PathString fileName = *midiLibrary[prog]; + if(midiLibrary[prog]->empty()) + fileName = P_("*empty"); + else if(theApp.IsPortableMode()) + fileName = theApp.PathAbsoluteToInstallRelative(fileName); + file.Write<mpt::PathString>(U_("Midi Library"), key, fileName); } } @@ -1384,9 +1388,6 @@ RUNTIME_CLASS(CModControlView)); AddDocTemplate(m_pModTemplate); - // Load Midi Library - ImportMidiConfig(theApp.GetSettings(), {}, true); - // Enable DDE Execute open // requires m_pDocManager EnableShellOpen(); @@ -1424,9 +1425,11 @@ // Set default note names CSoundFile::SetDefaultNoteNames(); - // Load DLS Banks + // Load Soundfonts and default MIDI Library if (!cmdInfo.m_noDls) m_scannedDlsBanks = LoadDefaultDLSBanks(); + // Load user-defined MIDI Library + ImportMidiConfig(theApp.GetSettings(), {}, true); // Initialize Plugins if (!cmdInfo.m_noPlugins) InitializeDXPlugins(); Modified: trunk/OpenMPT/mptrack/Mptrack.h ============================================================================== --- trunk/OpenMPT/mptrack/Mptrack.h Sun Mar 23 15:31:18 2025 (r23075) +++ trunk/OpenMPT/mptrack/Mptrack.h Sun Mar 23 17:20:10 2025 (r23076) @@ -61,7 +61,9 @@ ///////////////////////////////////////////////////////////////////////////// // Midi Library -using MidiLibrary = std::array<mpt::PathString, 128 * 2>; // 128 instruments + 128 percussions +// 128 melodic instruments + 128 percussions +// std::nullopt = default, empty string = unassigned by user +using MidiLibrary = std::array<std::optional<mpt::PathString>, 128 * 2>; ////////////////////////////////////////////////////////////////////////// Modified: trunk/OpenMPT/mptrack/View_tre.cpp ============================================================================== --- trunk/OpenMPT/mptrack/View_tre.cpp Sun Mar 23 15:31:18 2025 (r23075) +++ trunk/OpenMPT/mptrack/View_tre.cpp Sun Mar 23 17:20:10 2025 (r23076) @@ -535,9 +535,9 @@ int image = IMAGE_INSTRMUTE; s = mpt::cfmt::val(iMidi) + _T(": ") + mpt::ToCString(mpt::Charset::ASCII, szMidiProgramNames[iMidi]); const LPARAM param = (MODITEM_MIDIINSTRUMENT << MIDILIB_SHIFT) | iMidi; - if(!midiLib[iMidi].empty()) + if(midiLib[iMidi] && !midiLib[iMidi]->empty()) { - s += _T(": ") + midiLib[iMidi].GetFilename().ToCString(); + s += _T(": ") + midiLib[iMidi]->GetFilename().ToCString(); image = IMAGE_INSTRUMENTS; } if(!m_tiMidi[iMidi]) @@ -571,9 +571,9 @@ s = mpt::ToCString(CSoundFile::GetNoteName((ModCommand::NOTE)(iPerc + NOTE_MIN), CSoundFile::GetDefaultNoteNames())) + _T(": ") + mpt::ToCString(mpt::Charset::ASCII, szMidiPercussionNames[iPerc - 24]); const LPARAM param = (MODITEM_MIDIPERCUSSION << MIDILIB_SHIFT) | iPerc; - if(!midiLib[iPerc | 0x80].empty()) + if(midiLib[iPerc | 0x80] && !midiLib[iPerc | 0x80]->empty()) { - s += _T(": ") + midiLib[iPerc | 0x80].GetFilename().ToCString(); + s += _T(": ") + midiLib[iPerc | 0x80]->GetFilename().ToCString(); image = IMAGE_SAMPLES; } if(!m_tiPerc[iPerc]) @@ -1585,20 +1585,20 @@ case MODITEM_MIDIINSTRUMENT: { const MidiLibrary &midiLib = CTrackApp::GetMidiLibrary(); - if(modItemID < midiLib.size() && !midiLib[modItemID].empty()) + if(modItemID < midiLib.size() && midiLib[modItemID] && !midiLib[modItemID]->empty()) { CMainFrame *pMainFrm = CMainFrame::GetMainFrame(); CDLSBank *dlsBank = nullptr; - if(!mpt::PathCompareNoCase(m_cachedBankName, midiLib[modItemID])) + if(!mpt::PathCompareNoCase(m_cachedBankName, *midiLib[modItemID])) { dlsBank = m_cachedBank.get(); } - if(dlsBank == nullptr && CDLSBank::IsDLSBank(midiLib[modItemID])) + if(dlsBank == nullptr && CDLSBank::IsDLSBank(*midiLib[modItemID])) { m_cachedBank = std::make_unique<CDLSBank>(); - if(m_cachedBank->Open(midiLib[modItemID])) + if(m_cachedBank->Open(*midiLib[modItemID])) { - m_cachedBankName = midiLib[modItemID]; + m_cachedBankName = *midiLib[modItemID]; dlsBank = m_cachedBank.get(); } } @@ -1616,7 +1616,7 @@ } } else { - pMainFrm->PlaySoundFile(midiLib[modItemID], note, volume); + pMainFrm->PlaySoundFile(*midiLib[modItemID], note, volume); } } } @@ -2543,11 +2543,12 @@ dropInfo.dropItem |= 0x80; [[fallthrough]]; case MODITEM_MIDIINSTRUMENT: + if(dropInfo.dropItem < CTrackApp::GetMidiLibrary().size()) { - MidiLibrary &midiLib = CTrackApp::GetMidiLibrary(); - if(!midiLib[dropInfo.dropItem & 0xFF].empty()) + const auto &libItem = CTrackApp::GetMidiLibrary()[dropInfo.dropItem]; + if(libItem && !libItem->empty()) { - fullPath = midiLib[dropInfo.dropItem & 0xFF]; + fullPath = *libItem; dropInfo.dropType = DRAGONDROP_MIDIINSTR; dropInfo.dropParam = reinterpret_cast<uintptr_t>(&fullPath); } Modified: trunk/OpenMPT/soundlib/Load_mid.cpp ============================================================================== --- trunk/OpenMPT/soundlib/Load_mid.cpp Sun Mar 23 15:31:18 2025 (r23075) +++ trunk/OpenMPT/soundlib/Load_mid.cpp Sun Mar 23 17:20:10 2025 (r23076) @@ -1359,7 +1359,7 @@ continue; } - const mpt::PathString &midiMapName = midiLib[midiCode]; + const mpt::PathString &midiMapName = midiLib[midiCode].value_or(P_("")); if(!midiMapName.empty()) { // Load from DLS/SF2 Bank |
From: <sv...@op...> - 2025-03-23 14:31:33
|
Author: sagamusix Date: Sun Mar 23 15:31:18 2025 New Revision: 23075 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=23075 Log: [Imp] Sample tab: Show effective sample/OPL amplification based on global volume (related to https://forum.openmpt.org/index.php?topic=7308.0). Modified: trunk/OpenMPT/mptrack/Ctrl_gen.cpp trunk/OpenMPT/mptrack/Ctrl_ins.cpp trunk/OpenMPT/mptrack/Ctrl_smp.cpp trunk/OpenMPT/mptrack/Moddoc.cpp trunk/OpenMPT/mptrack/Moddoc.h trunk/OpenMPT/mptrack/PatternEditorDialogs.cpp trunk/OpenMPT/mptrack/View_gen.cpp trunk/OpenMPT/mptrack/View_smp.cpp Modified: trunk/OpenMPT/mptrack/Ctrl_gen.cpp ============================================================================== --- trunk/OpenMPT/mptrack/Ctrl_gen.cpp Sun Mar 23 14:26:45 2025 (r23074) +++ trunk/OpenMPT/mptrack/Ctrl_gen.cpp Sun Mar 23 15:31:18 2025 (r23075) @@ -725,17 +725,17 @@ s = notAvailable; break; case IDC_SLIDER_SAMPLEPREAMP: - s = displayDBValues ? CModDoc::LinearToDecibels(m_sndFile.m_nSamplePreAmp, m_sndFile.GetPlayConfig().getNormalSamplePreAmp()).GetString() : moreRecentMixModeNote; + s = displayDBValues ? CModDoc::LinearToDecibelsString(m_sndFile.m_nSamplePreAmp, m_sndFile.GetPlayConfig().getNormalSamplePreAmp()).GetString() : moreRecentMixModeNote; break; case IDC_SLIDER_VSTIVOL: if(isEnabled) - s = displayDBValues ? CModDoc::LinearToDecibels(m_sndFile.m_nVSTiVolume, m_sndFile.GetPlayConfig().getNormalVSTiVol()).GetString() : moreRecentMixModeNote; + s = displayDBValues ? CModDoc::LinearToDecibelsString(m_sndFile.m_nVSTiVolume, m_sndFile.GetPlayConfig().getNormalVSTiVol()).GetString() : moreRecentMixModeNote; else s = notAvailable; break; case IDC_SLIDER_GLOBALVOL: if(isEnabled) - s = displayDBValues ? CModDoc::LinearToDecibels(m_sndFile.m_PlayState.m_nGlobalVolume, m_sndFile.GetPlayConfig().getNormalGlobalVol()).GetString() : moreRecentMixModeNote; + s = displayDBValues ? CModDoc::LinearToDecibelsString(m_sndFile.m_PlayState.m_nGlobalVolume, m_sndFile.GetPlayConfig().getNormalGlobalVol()).GetString() : moreRecentMixModeNote; else s = notAvailable; break; Modified: trunk/OpenMPT/mptrack/Ctrl_ins.cpp ============================================================================== --- trunk/OpenMPT/mptrack/Ctrl_ins.cpp Sun Mar 23 14:26:45 2025 (r23074) +++ trunk/OpenMPT/mptrack/Ctrl_ins.cpp Sun Mar 23 15:31:18 2025 (r23075) @@ -1807,7 +1807,7 @@ case IDC_EDIT8: // Global volume if(isEnabled) - s = CModDoc::LinearToDecibels(GetDlgItemInt(IDC_EDIT8), 64.0); + s = CModDoc::LinearToDecibelsString(GetDlgItemInt(IDC_EDIT8), 64.0); else s = _T("Only available in IT / MPTM format"); break; Modified: trunk/OpenMPT/mptrack/Ctrl_smp.cpp ============================================================================== --- trunk/OpenMPT/mptrack/Ctrl_smp.cpp Sun Mar 23 14:26:45 2025 (r23074) +++ trunk/OpenMPT/mptrack/Ctrl_smp.cpp Sun Mar 23 15:31:18 2025 (r23075) @@ -533,6 +533,36 @@ } +static CString EffectiveSampleVolume(double value, double valueAtZeroDB, double effectiveFactor, const CSoundFile &sndFile) +{ + CString s = CModDoc::LinearToDecibelsString(value, valueAtZeroDB); + if(value == 0) + return s; + + const auto &playConfig = sndFile.GetPlayConfig(); + if(!playConfig.getDisplayDBValues()) + return s; + + s += _T(" (") + CModDoc::LinearToDecibelsString(value * effectiveFactor * sndFile.m_nSamplePreAmp, valueAtZeroDB * playConfig.getNormalSamplePreAmp()) + _T(" effectively)"); + return s; +} + + +static CString EffectiveOPLVolume(double value, double effectiveFactor, const CSoundFile &sndFile) +{ + const double dB = (value - 64.0) * 0.75; + const double effectiveDB = (effectiveFactor - 64.0) * 0.75; + CString s = CModDoc::DecibelsToStrings(dB); + + const auto &playConfig = sndFile.GetPlayConfig(); + if(!playConfig.getDisplayDBValues()) + return s; + + s += _T(" (") + CModDoc::DecibelsToStrings(dB + effectiveDB + CModDoc::LinearToDecibels(sndFile.m_nVSTiVolume, playConfig.getNormalVSTiVol())) + _T(" effectively)"); + return s; +} + + CString CCtrlSamples::GetToolTipText(UINT uId, HWND) const { CString s; @@ -561,10 +591,14 @@ case IDC_EDIT7: case IDC_EDIT8: // Volume to dB - if(IsOPLInstrument()) - s = mpt::cfmt::fix((static_cast<int32>(val) - 64) * 0.75, 2) + _T(" dB"); - else - s = CModDoc::LinearToDecibels(val, 64.0); + if(m_nSample) + { + const auto globalVol = m_sndFile.GetSample(m_nSample).nGlobalVol; + if(IsOPLInstrument()) + s = EffectiveOPLVolume(val, (uId == IDC_EDIT7) ? globalVol : 64.0, m_sndFile); + else + s = EffectiveSampleVolume(val, 64.0, (uId == IDC_EDIT7) ? globalVol / 64.0 : 1.0, m_sndFile); + } break; case IDC_EDIT9: Modified: trunk/OpenMPT/mptrack/Moddoc.cpp ============================================================================== --- trunk/OpenMPT/mptrack/Moddoc.cpp Sun Mar 23 14:26:45 2025 (r23074) +++ trunk/OpenMPT/mptrack/Moddoc.cpp Sun Mar 23 15:31:18 2025 (r23075) @@ -3176,12 +3176,27 @@ } -CString CModDoc::LinearToDecibels(double value, double valueAtZeroDB) + +CString CModDoc::LinearToDecibelsString(double value, double valueAtZeroDB) +{ + return DecibelsToStrings(LinearToDecibels(value, valueAtZeroDB)); +} + + +double CModDoc::LinearToDecibels(double value, double valueAtZeroDB) { - if (value == 0) return _T("-inf"); + if(value == 0 || valueAtZeroDB == 0) + return -std::numeric_limits<double>::infinity(); double changeFactor = value / valueAtZeroDB; - double dB = 20.0 * std::log10(changeFactor); + return 20.0 * std::log10(changeFactor); +} + + +CString CModDoc::DecibelsToStrings(double dB) +{ + if(std::isinf(dB)) + return dB < 0 ? _T("-inf") : _T("inf"); CString s = (dB >= 0) ? _T("+") : _T(""); s.AppendFormat(_T("%.2f dB"), dB); Modified: trunk/OpenMPT/mptrack/Moddoc.h ============================================================================== --- trunk/OpenMPT/mptrack/Moddoc.h Sun Mar 23 14:26:45 2025 (r23074) +++ trunk/OpenMPT/mptrack/Moddoc.h Sun Mar 23 15:31:18 2025 (r23075) @@ -407,8 +407,12 @@ ModCommand::NOTE GetNoteWithBaseOctave(int noteOffset, INSTRUMENTINDEX instr) const; INSTRUMENTINDEX GetParentInstrumentWithSameName(SAMPLEINDEX smp) const; + // Convert a linear volume property to decibels, and format the value as a readable string + static CString LinearToDecibelsString(double value, double valueAtZeroDB); // Convert a linear volume property to decibels - static CString LinearToDecibels(double value, double valueAtZeroDB); + static double LinearToDecibels(double value, double valueAtZeroDB); + // Format a decibel value as a readable string + static CString DecibelsToStrings(double dB); // Convert a panning value to a more readable string static CString PanningToString(int32 value, int32 valueAtCenter); Modified: trunk/OpenMPT/mptrack/PatternEditorDialogs.cpp ============================================================================== --- trunk/OpenMPT/mptrack/PatternEditorDialogs.cpp Sun Mar 23 14:26:45 2025 (r23074) +++ trunk/OpenMPT/mptrack/PatternEditorDialogs.cpp Sun Mar 23 15:31:18 2025 (r23075) @@ -1678,7 +1678,7 @@ { case IDC_EDIT1: case IDC_SLIDER1: - text = CModDoc::LinearToDecibels(m_document->GetSoundFile().ChnSettings[m_channel].nVolume, 64.0); + text = CModDoc::LinearToDecibelsString(m_document->GetSoundFile().ChnSettings[m_channel].nVolume, 64.0); break; case IDC_EDIT2: case IDC_SLIDER2: Modified: trunk/OpenMPT/mptrack/View_gen.cpp ============================================================================== --- trunk/OpenMPT/mptrack/View_gen.cpp Sun Mar 23 14:26:45 2025 (r23074) +++ trunk/OpenMPT/mptrack/View_gen.cpp Sun Mar 23 15:31:18 2025 (r23075) @@ -1805,13 +1805,13 @@ case IDC_EDIT3: case IDC_EDIT5: case IDC_EDIT7: - text = CModDoc::LinearToDecibels(chnSettings[m_nActiveTab * CHANNELS_IN_TAB + (id - IDC_EDIT1) / 2].nVolume, 64.0); + text = CModDoc::LinearToDecibelsString(chnSettings[m_nActiveTab * CHANNELS_IN_TAB + (id - IDC_EDIT1) / 2].nVolume, 64.0); break; case IDC_SLIDER1: case IDC_SLIDER3: case IDC_SLIDER5: case IDC_SLIDER7: - text = CModDoc::LinearToDecibels(chnSettings[m_nActiveTab * CHANNELS_IN_TAB + (id - IDC_SLIDER1) / 2].nVolume, 64.0); + text = CModDoc::LinearToDecibelsString(chnSettings[m_nActiveTab * CHANNELS_IN_TAB + (id - IDC_SLIDER1) / 2].nVolume, 64.0); break; case IDC_EDIT2: case IDC_EDIT4: @@ -1828,7 +1828,7 @@ case IDC_EDIT16: { const auto gain = GetDocument()->GetSoundFile().m_MixPlugins[m_nCurrentPlugin].GetGain(); - text = CModDoc::LinearToDecibels(gain ? gain : 10, 10.0); + text = CModDoc::LinearToDecibelsString(gain ? gain : 10, 10.0); } break; case IDC_BUTTON5: Modified: trunk/OpenMPT/mptrack/View_smp.cpp ============================================================================== --- trunk/OpenMPT/mptrack/View_smp.cpp Sun Mar 23 14:26:45 2025 (r23074) +++ trunk/OpenMPT/mptrack/View_smp.cpp Sun Mar 23 15:31:18 2025 (r23075) @@ -1779,7 +1779,7 @@ linear = sample.sample16()[offset] / 32768.0; else linear = sample.sample8()[offset] / 128.0; - pMainFrm->SetXInfoText(MPT_TFORMAT("Value At Cursor: {}% / {}")(mpt::tfmt::fix(linear * 100.0, 3), CModDoc::LinearToDecibels(std::abs(linear), 1.0)).c_str()); + pMainFrm->SetXInfoText(MPT_TFORMAT("Value At Cursor: {}% / {}")(mpt::tfmt::fix(linear * 100.0, 3), CModDoc::LinearToDecibelsString(std::abs(linear), 1.0)).c_str()); } else { pMainFrm->SetInfoText(_T("")); |
From: <sv...@op...> - 2025-03-23 13:26:57
|
Author: sagamusix Date: Sun Mar 23 14:26:45 2025 New Revision: 23074 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=23074 Log: [Mod] OpenMPT: Version is now 1.31.15.01 Modified: branches/OpenMPT-1.31/common/versionNumber.h Modified: branches/OpenMPT-1.31/common/versionNumber.h ============================================================================== --- branches/OpenMPT-1.31/common/versionNumber.h Sun Mar 23 13:18:51 2025 (r23073) +++ branches/OpenMPT-1.31/common/versionNumber.h Sun Mar 23 14:26:45 2025 (r23074) @@ -18,6 +18,6 @@ #define VER_MAJORMAJOR 1 #define VER_MAJOR 31 #define VER_MINOR 15 -#define VER_MINORMINOR 00 +#define VER_MINORMINOR 01 OPENMPT_NAMESPACE_END |
From: <sv...@op...> - 2025-03-23 12:19:04
|
Author: sagamusix Date: Sun Mar 23 13:18:51 2025 New Revision: 23073 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=23073 Log: Created tag for OpenMPT 1.31.15.00 Added: tags/1.31.15.00/ - copied from r23072, branches/OpenMPT-1.31/ |
From: <sv...@op...> - 2025-03-23 12:18:10
|
Author: sagamusix Date: Sun Mar 23 13:17:52 2025 New Revision: 23072 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=23072 Log: [Doc] Update release notes. [Mod] OpenMPT: Version is now 1.31.15.00 Modified: branches/OpenMPT-1.31/common/versionNumber.h branches/OpenMPT-1.31/packageTemplate/History.txt Modified: branches/OpenMPT-1.31/common/versionNumber.h ============================================================================== --- branches/OpenMPT-1.31/common/versionNumber.h Fri Mar 21 21:35:21 2025 (r23071) +++ branches/OpenMPT-1.31/common/versionNumber.h Sun Mar 23 13:17:52 2025 (r23072) @@ -17,7 +17,7 @@ // Version definitions. The only thing that needs to be changed when changing version number. #define VER_MAJORMAJOR 1 #define VER_MAJOR 31 -#define VER_MINOR 14 -#define VER_MINORMINOR 02 +#define VER_MINOR 15 +#define VER_MINORMINOR 00 OPENMPT_NAMESPACE_END Modified: branches/OpenMPT-1.31/packageTemplate/History.txt ============================================================================== --- branches/OpenMPT-1.31/packageTemplate/History.txt Fri Mar 21 21:35:21 2025 (r23071) +++ branches/OpenMPT-1.31/packageTemplate/History.txt Sun Mar 23 13:17:52 2025 (r23072) @@ -34,6 +34,24 @@ find our issue tracker and forums. +v1.31.15.00 (23 March 2025, revision 23072) +------------------------------------------- +Sample tab +- [Imp] <js> Relaxed BRR file rejection heuristics a bit (http://bugs.openmpt.org/view.php?id=1859). +- [Imp] <js> Loop and cue point information is now also copied for sample selections (http://bugs.openmpt.org/view.php?id=1869). +- [Fix] <js> Possible crash when replacing a sample with a shorter one while outside of the sample editor, and then returning to the same sample slot (http://bugs.openmpt.org/view.php?id=1866). +- [Fix] <js> Drawing sample data from right to left caused the drawn lines to not be interpolated properly. + +Instrument tab +- [Fix] <js> Fixed crash when trying to remove the only point of an envelope. + +Misc +- [Fix] <js> If multiple keyboard layouts were installed, note key mpaping could be based on the wrong layout, causing e.g. B-4 and Note-Off keys to be swapped on the default key map with an active US keyboard layout but also a German layout being present. + +Third-Party Libraries +- [Imp] Update FLAC (v1.5.0) + + v1.31.14.00 (6 January 2025, revision 22819) -------------------------------------------- Pattern tab |
From: <sv...@op...> - 2025-03-21 20:35:33
|
Author: sagamusix Date: Fri Mar 21 21:35:21 2025 New Revision: 23071 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=23071 Log: [Ref] Reverb: Actually use variable instead of computing everything twice. Modified: trunk/OpenMPT/sounddsp/Reverb.cpp Modified: trunk/OpenMPT/sounddsp/Reverb.cpp ============================================================================== --- trunk/OpenMPT/sounddsp/Reverb.cpp Fri Mar 21 13:27:09 2025 (r23070) +++ trunk/OpenMPT/sounddsp/Reverb.cpp Fri Mar 21 21:35:21 2025 (r23071) @@ -920,7 +920,7 @@ // Apply decay gain __m128i histDecay = _mm_srai_epi32(_mm_madd_epi16(Load64SSE(pReverb->nDecayDC), lpHistory), 15); __m128i histDecayPacked = _mm_shuffle_epi32(_mm_packs_epi32(histDecay, histDecay), _MM_SHUFFLE(2, 0, 2, 0)); - __m128i histDecayIn = _mm_adds_epi16(_mm_shuffle_epi32(_mm_packs_epi32(histDecay, histDecay), _MM_SHUFFLE(2, 0, 2, 0)), _mm_srai_epi16(_mm_unpacklo_epi32(refIn, refIn), 2)); + __m128i histDecayIn = _mm_adds_epi16(histDecayPacked, _mm_srai_epi16(_mm_unpacklo_epi32(refIn, refIn), 2)); __m128i histDecayInDiff = _mm_subs_epi16(histDecayIn, _mm_mulhi_epi16(_mm_cvtsi32_si128(diffusion1), difCoeffs)); pReverb->Diffusion1[delayPos].lr = _mm_cvtsi128_si32(histDecayInDiff); |