From: <sag...@us...> - 2014-10-11 22:36:00
|
Revision: 4426 http://sourceforge.net/p/modplug/code/4426 Author: saga-games Date: 2014-10-11 22:35:48 +0000 (Sat, 11 Oct 2014) Log Message: ----------- [Fix] Playback: VST arpeggio could be executed on muted channels / instruments [Ref] Use Patterns.Size() instead of Patterns.GetNumPatterns() where it makes sense. Modified Paths: -------------- trunk/OpenMPT/mptrack/MPTHacks.cpp trunk/OpenMPT/mptrack/ModConvert.cpp trunk/OpenMPT/soundlib/Sndfile.cpp trunk/OpenMPT/soundlib/Sndmix.cpp Modified: trunk/OpenMPT/mptrack/MPTHacks.cpp =================================================================== --- trunk/OpenMPT/mptrack/MPTHacks.cpp 2014-10-11 19:15:32 UTC (rev 4425) +++ trunk/OpenMPT/mptrack/MPTHacks.cpp 2014-10-11 22:35:48 UTC (rev 4426) @@ -243,7 +243,8 @@ foundHacks = true; if(autofix) { - for(PATTERNINDEX i = 0; i < m_SndFile.Patterns.GetNumPatterns(); i++) + const PATTERNINDEX numPats = m_SndFile.Patterns.GetNumPatterns(); + for(PATTERNINDEX i = 0; i < numPats; i++) { m_SndFile.Patterns[i].SetName(""); } @@ -400,7 +401,8 @@ if(!originalSpecs->hasPatternSignatures) { foundHere = false; - for(PATTERNINDEX i = 0; i < m_SndFile.Patterns.GetNumPatterns(); i++) + const PATTERNINDEX numPats = m_SndFile.Patterns.GetNumPatterns(); + for(PATTERNINDEX i = 0; i < numPats; i++) { if(m_SndFile.Patterns[i].GetOverrideSignature()) { @@ -436,7 +438,7 @@ } // Embedded MIDI configuration in XM files - if(m_SndFile.m_SongFlags[SONG_EMBEDMIDICFG] != 0 && m_SndFile.GetType() == MOD_TYPE_XM) + if(m_SndFile.m_SongFlags[SONG_EMBEDMIDICFG] && !(originalSpecs->songFlags & SONG_EMBEDMIDICFG)) { AddToLog("Found embedded MIDI macros"); foundHacks = true; Modified: trunk/OpenMPT/mptrack/ModConvert.cpp =================================================================== --- trunk/OpenMPT/mptrack/ModConvert.cpp 2014-10-11 19:15:32 UTC (rev 4425) +++ trunk/OpenMPT/mptrack/ModConvert.cpp 2014-10-11 22:35:48 UTC (rev 4426) @@ -497,7 +497,7 @@ // Check for patterns with custom time signatures (fixing will be applied in the pattern container) if(!CSoundFile::GetModSpecifications(nNewType).hasPatternSignatures) { - for(PATTERNINDEX nPat = 0; nPat < m_SndFile.Patterns.GetNumPatterns(); nPat++) + for(PATTERNINDEX nPat = 0; nPat < m_SndFile.Patterns.Size(); nPat++) { if(m_SndFile.Patterns[nPat].GetOverrideSignature()) { Modified: trunk/OpenMPT/soundlib/Sndfile.cpp =================================================================== --- trunk/OpenMPT/soundlib/Sndfile.cpp 2014-10-11 19:15:32 UTC (rev 4425) +++ trunk/OpenMPT/soundlib/Sndfile.cpp 2014-10-11 22:35:48 UTC (rev 4426) @@ -1536,7 +1536,7 @@ } SAMPLEINDEX nExt = 0; - for (PATTERNINDEX nPat = 0; nPat < Patterns.GetNumPatterns(); nPat++) if(Patterns.IsValidPat(nPat)) + for (PATTERNINDEX nPat = 0; nPat < Patterns.Size(); nPat++) if(Patterns.IsValidPat(nPat)) { CPattern::const_iterator pEnd = Patterns[nPat].End(); for(CPattern::const_iterator p = Patterns[nPat].Begin(); p != pEnd; p++) Modified: trunk/OpenMPT/soundlib/Sndmix.cpp =================================================================== --- trunk/OpenMPT/soundlib/Sndmix.cpp 2014-10-11 19:15:32 UTC (rev 4425) +++ trunk/OpenMPT/soundlib/Sndmix.cpp 2014-10-11 22:35:48 UTC (rev 4426) @@ -1140,7 +1140,9 @@ #ifndef NO_VST // Plugin arpeggio - if(pChn->pModInstrument && pChn->pModInstrument->nMixPlug) + if(pChn->pModInstrument && pChn->pModInstrument->nMixPlug + && !pChn->pModInstrument->dwFlags[INS_MUTE] + && !pChn->dwFlags[CHN_MUTE | CHN_SYNCMUTE]) { const ModInstrument *pIns = pChn->pModInstrument; IMixPlugin *pPlugin = m_MixPlugins[pIns->nMixPlug - 1].pMixPlugin; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |