From 8a86fbec6813fb5e692d9922272d5a07badd6b22 Mon Sep 17 00:00:00 2001 From: Robert Jordan Date: Tue, 26 Mar 2019 12:46:04 -0400 Subject: [PATCH] Fix Ppqn Assertion in DEBUG. Any ppqn midi tracks will throw an asserion if division is less than PpqnMinValue when AssertValid() is called. This is called in Format as well as TrackCount during Read() while division is set to 0 beforehand. Solution: Set Division FIRST during Read. --- .../Sequencing/MidiFileProperties.cs | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/Source/Sanford.Multimedia.Midi/Sequencing/MidiFileProperties.cs b/Source/Sanford.Multimedia.Midi/Sequencing/MidiFileProperties.cs index d45f645..56759de 100644 --- a/Source/Sanford.Multimedia.Midi/Sequencing/MidiFileProperties.cs +++ b/Source/Sanford.Multimedia.Midi/Sequencing/MidiFileProperties.cs @@ -103,9 +103,14 @@ public void Read(Stream strm) format = trackCount = division = 0; FindHeader(strm); - Format = (int)ReadProperty(strm); - TrackCount = (int)ReadProperty(strm); - Division = (int)ReadProperty(strm); + + // Division needs to be set first, otherwise AssertValid() + // will complain in DEBUG if sequence type is Ppqn. + int formatTmp = (int)ReadProperty(strm); + int trackCountTmp = (int)ReadProperty(strm); + Division = (int) ReadProperty(strm); + Format = formatTmp; + TrackCount = trackCountTmp; #region Invariant