View Issue Details

IDProjectCategoryView StatusLast Update
0001764OpenMPTPlayback Compatibilitypublic2024-04-21 18:20
Reportermrpapersonic Assigned ToSaga Musix  
PrioritylowSeveritytweakReproducibilityalways
Status resolvedResolutionfixed 
Platformx86_64OSArch LinuxOS Version6.8.1
Product VersionOpenMPT 1.31.06.00 / libopenmpt 0.7.6 (upgrade first) 
Summary0001764: Missing playback behavior for Schism Tracker before 20231029
Description

Lots of playback changes occurred between 20230906 and 20231029, some of which already had existing checks, some didn't. e.g. wb22-wk21.it was created when there was a bug in Schism's NNA code that caused Instrument 11 to get cut as Instrument 12 played.

The attached patch adds checks based on the original dates of my commits.

TagsNo tags attached.
Attached Files
schism-compat.patch (3,179 bytes)   
diff --git a/soundlib/Load_it.cpp b/soundlib/Load_it.cpp
index a5e80a6d5..b6ea18cab 100644
--- a/soundlib/Load_it.cpp
+++ b/soundlib/Load_it.cpp
@@ -1286,13 +1286,35 @@ bool CSoundFile::ReadIT(FileReader &file, ModLoadingFlags loadFlags)
 			if(schismDateVersion < SchismVersionFromDate<2023, 03, 9>::date)
 				m_playBehaviour.reset(kITInitialNoteMemory);
 			// 2023-10-16: kITEnvelopePositionHandling https://github.com/schismtracker/schismtracker/commit/bc81f605d927ca931a886417641da29fc89283b8
+			if(schismDateVersion < SchismVersionFromDate<2023, 10, 16>::date)
+			{
+				// Added 2023-10-16, https://github.com/schismtracker/schismtracker/commit/b0fd72599a3c2beee5420a3e4963c167ba213fb1
+				m_playBehaviour.reset(kITFilterBehaviour);
+			}
+			if(schismDateVersion < SchismVersionFromDate<2023, 10, 17>::date)
+			{
+				// Added 2023-10-17, https://github.com/schismtracker/schismtracker/commit/31d36dc00013fc5ab0efa20c782af18e8b006e07
+				m_playBehaviour.reset(kITDCTBehaviour);
+				// Added 2023-10-17, https://github.com/schismtracker/schismtracker/commit/f943010495617d7f6f2ac1ebb4b5120dcfac5eb0
+				m_playBehaviour.reset(kITPatternLoopWithJumps);
+			}
 			if(schismDateVersion < SchismVersionFromDate<2023, 10, 19>::date)
 			{
 				// Panbrello sample & hold random waveform: Added 2023-10-19, https://github.com/schismtracker/schismtracker/commit/411ec16b190ba1a486d8b0907ad8d74f8fdc2840
-				m_playBehaviour.reset(kITPanbrelloHold);
+				m_playBehaviour.reset(kITSampleAndHoldPanbrello);
 				// Don't apply any portamento if no previous note is playing: Added 2023-10-19, https://github.com/schismtracker/schismtracker/commit/8ff0a86a715efb50c89770fb9095d4c4089ff187
 				m_playBehaviour.reset(kITPortaNoNote);
 			}
+			if(schismDateVersion < SchismVersionFromDate<2023, 10, 20>::date)
+			{
+				// Added 2023-10-20, https://github.com/schismtracker/schismtracker/commit/b9609e4f827e1b6ce9ebe6573b85e69388ca0ea0
+				m_playBehaviour.reset(kITInstrWithNoteOff);
+			}
+			if(schismDateVersion < SchismVersionFromDate<2023, 10, 21>::date)
+			{
+				// Added 2023-10-21, https://github.com/schismtracker/schismtracker/commit/19a43e0e020a883b00ae97ddebc7189e06ec4774
+				m_playBehaviour.reset(kITInstrWithNoteOffOldEffects);
+			}
 			if(schismDateVersion < SchismVersionFromDate<2023, 10, 22>::date)
 			{
 				// Note delay delays first-tick behaviour for slides: Added 2023-10-22, https://github.com/schismtracker/schismtracker/commit/b9609e4f827e1b6ce9ebe6573b85e69388ca0ea0
@@ -1300,6 +1322,11 @@ bool CSoundFile::ReadIT(FileReader &file, ModLoadingFlags loadFlags)
 				// Added 2023-10-22, https://github.com/schismtracker/schismtracker/commit/a9e5df533ab52c35190fcc1cbfed4f0347b660bb
 				m_playBehaviour.reset(kITMultiSampleInstrumentNumber);
 			}
+			if(schismDateVersion < SchismVersionFromDate<2024, 03, 08>::date)
+			{
+				// Added 2024-03-08, https://github.com/schismtracker/schismtracker/commit/ebdebaa8c8a735a7bf49df55debded1b7aac3605
+				m_playBehaviour.reset(kITPanbrelloHold);
+			}
 			break;
 		case 4:
 			madeWithTracker = MPT_UFORMAT("pyIT {}.{}")((fileHeader.cwtv & 0x0F00) >> 8, mpt::ufmt::hex0<2>(fileHeader.cwtv & 0xFF));
schism-compat.patch (3,179 bytes)   
Has the bug occurred in previous versions?
Tested code revision (in case you know it)

Activities

Saga Musix

Saga Musix

2024-03-30 16:35

administrator   ~0005897

Regarding kITFilterBehaviour, I need to verify if the Schism fix is similar to the OpenMPT fix - I remember looking into some of the fixes last year and noticed that the compatibility flag could not be mapped cleanly to Schism bugfixes, which might be why I had a comment regarding that flag there but not the actual flag reset - it might have been there but I forgot to remove the comment. In particular, if some behaviour was already partially fixed in Schism Tracker before that date, we wouldn't want to disable the compatible behaviour completely.

Saga Musix

Saga Musix

2024-04-21 18:20

administrator   ~0005935

I have now applied a few of these in r20639. For the others, the before/after comparison between Schism Tracker and OpenMPT was too different to easily check if Schism Tracker's old behaviour was really identical to OpenMPT - and we wouldn't want those old Schism Tracker modules to break by applying old OpenMPT bugs. In particular if one playback compatibility flag affects more than one thing in OpenMPT's case, we shouldn't turn it off for Schism Tracker if only one of those things is affected there.

Issue History

Date Modified Username Field Change
2024-03-29 02:56 mrpapersonic New Issue
2024-03-29 02:56 mrpapersonic File Added: schism-compat.patch
2024-03-29 06:49 Saga Musix Assigned To => Saga Musix
2024-03-29 06:49 Saga Musix Status new => assigned
2024-03-30 16:35 Saga Musix Note Added: 0005897
2024-04-21 18:20 Saga Musix Note Added: 0005935
2024-04-21 18:20 Saga Musix Status assigned => resolved
2024-04-21 18:20 Saga Musix Resolution open => fixed