diff --git a/Source/AlphaTab.Test/Importer/AlphaTexImporterTest.cs b/Source/AlphaTab.Test/Importer/AlphaTexImporterTest.cs index 988c1ae6a..e4f77ce33 100644 --- a/Source/AlphaTab.Test/Importer/AlphaTexImporterTest.cs +++ b/Source/AlphaTab.Test/Importer/AlphaTexImporterTest.cs @@ -977,6 +977,28 @@ public void TestDynamicsAuto() Assert.AreEqual(DynamicValue.MP, score.Tracks[0].Staves[0].Bars[0].Voices[0].Beats[3].Dynamics); } + [TestMethod] + public void TestDynamicsAutoResetOnTrack() + { + var tex = @"1.1.4{dy ppp} 1.1 \track ""Second"" 1.1.4"; + var score = ParseTex(tex); + Assert.AreEqual(DynamicValue.PPP, score.Tracks[0].Staves[0].Bars[0].Voices[0].Beats[0].Dynamics); + Assert.AreEqual(DynamicValue.PPP, score.Tracks[0].Staves[0].Bars[0].Voices[0].Beats[1].Dynamics); + + Assert.AreEqual(DynamicValue.F, score.Tracks[1].Staves[0].Bars[0].Voices[0].Beats[0].Dynamics); + } + + [TestMethod] + public void TestDynamicsAutoResetOnStaff() + { + var tex = @"1.1.4{dy ppp} 1.1 \staff 1.1.4"; + var score = ParseTex(tex); + Assert.AreEqual(DynamicValue.PPP, score.Tracks[0].Staves[0].Bars[0].Voices[0].Beats[0].Dynamics); + Assert.AreEqual(DynamicValue.PPP, score.Tracks[0].Staves[0].Bars[0].Voices[0].Beats[1].Dynamics); + + Assert.AreEqual(DynamicValue.F, score.Tracks[0].Staves[1].Bars[0].Voices[0].Beats[0].Dynamics); + } + [TestMethod] public void TestCrescendo() diff --git a/Source/AlphaTab/Importer/AlphaTexImporter.cs b/Source/AlphaTab/Importer/AlphaTexImporter.cs index 6c21a2533..73a06de12 100644 --- a/Source/AlphaTab/Importer/AlphaTexImporter.cs +++ b/Source/AlphaTab/Importer/AlphaTexImporter.cs @@ -147,6 +147,7 @@ private void NewTrack() _score.AddTrack(_currentTrack); _lyrics[_currentTrack.Index] = new FastList(); + _currentDynamics = DynamicValue.F; } /// @@ -1021,6 +1022,7 @@ private void TrackStaffMeta() _currentTrack.EnsureStaveCount(_currentTrack.Staves.Count + 1); _currentStaff = _currentTrack.Staves[_currentTrack.Staves.Count - 1]; + _currentDynamics = DynamicValue.F; } StaffProperties();