From: <rel...@us...> - 2007-05-16 19:58:33
|
Revision: 185 http://svn.sourceforge.net/modplug/?rev=185&view=rev Author: relabsoluness Date: 2007-05-16 12:53:38 -0700 (Wed, 16 May 2007) Log Message: ----------- . <Relabs> Pitch/Tempo lock fix(broken in .46 and .47) Modified Paths: -------------- trunk/OpenMPT/mptrack/Ctrl_ins.cpp trunk/OpenMPT/soundlib/Sndmix.cpp Modified: trunk/OpenMPT/mptrack/Ctrl_ins.cpp =================================================================== --- trunk/OpenMPT/mptrack/Ctrl_ins.cpp 2007-05-13 11:17:15 UTC (rev 184) +++ trunk/OpenMPT/mptrack/Ctrl_ins.cpp 2007-05-16 19:53:38 UTC (rev 185) @@ -1024,7 +1024,7 @@ if (!m_bInitialized) dwHintMask |= HINT_MODTYPE; if (dwHintMask & HINT_MODTYPE) { - BOOL bITonly = ((m_pSndFile->m_nType & (MOD_TYPE_IT | MOD_TYPE_MPT)) && (m_pSndFile->m_nInstruments)) ? TRUE : FALSE; + BOOL bITandMPT = ((m_pSndFile->m_nType & (MOD_TYPE_IT | MOD_TYPE_MPT)) && (m_pSndFile->m_nInstruments)) ? TRUE : FALSE; //rewbs.instroVSTi BOOL bITandXM = (((m_pSndFile->m_nType & (MOD_TYPE_IT | MOD_TYPE_MPT)) || (m_pSndFile->m_nType == MOD_TYPE_XM)) && (m_pSndFile->m_nInstruments)) ? TRUE : FALSE; bool bMPTOnly = ((m_pSndFile->m_nType == MOD_TYPE_MPT) && (m_pSndFile->m_nInstruments)) ? TRUE : FALSE; @@ -1034,7 +1034,7 @@ ::EnableWindow(::GetDlgItem(m_hWnd, IDC_EDIT2), bITandXM); m_SliderAttack.EnableWindow(bITandXM); m_EditName.EnableWindow(bITandXM); - m_EditFileName.EnableWindow(bITonly); + m_EditFileName.EnableWindow(bITandMPT); m_CbnMidiCh.EnableWindow(bITandXM); m_CbnMixPlug.EnableWindow(bITandXM); m_SpinMidiPR.EnableWindow(bITandXM); @@ -1044,32 +1044,32 @@ m_NoteMap.EnableWindow(bITandXM); m_CbnResampling.EnableWindow(bITandXM); - m_ComboNNA.EnableWindow(bITonly); - m_SliderVolSwing.EnableWindow(bITonly); - m_SliderPanSwing.EnableWindow(bITonly); - m_SliderCutSwing.EnableWindow(bITonly); - m_SliderResSwing.EnableWindow(bITonly); - m_CbnFilterMode.EnableWindow(bITonly); - m_ComboDCT.EnableWindow(bITonly); - m_ComboDCA.EnableWindow(bITonly); - m_ComboPPC.EnableWindow(bITonly); - m_SpinPPS.EnableWindow(bITonly); - m_EditGlobalVol.EnableWindow(bITonly); - m_SpinGlobalVol.EnableWindow(bITonly); - m_EditPanning.EnableWindow(bITonly); - m_SpinPanning.EnableWindow(bITonly); - m_CheckPanning.EnableWindow(bITonly); - m_EditPPS.EnableWindow(bITonly); - m_CheckCutOff.EnableWindow(bITonly); - m_CheckResonance.EnableWindow(bITonly); - m_CheckHighpass.EnableWindow(bITonly); - m_SliderCutOff.EnableWindow(bITonly); - m_SliderResonance.EnableWindow(bITonly); + m_ComboNNA.EnableWindow(bITandMPT); + m_SliderVolSwing.EnableWindow(bITandMPT); + m_SliderPanSwing.EnableWindow(bITandMPT); + m_SliderCutSwing.EnableWindow(bITandMPT); + m_SliderResSwing.EnableWindow(bITandMPT); + m_CbnFilterMode.EnableWindow(bITandMPT); + m_ComboDCT.EnableWindow(bITandMPT); + m_ComboDCA.EnableWindow(bITandMPT); + m_ComboPPC.EnableWindow(bITandMPT); + m_SpinPPS.EnableWindow(bITandMPT); + m_EditGlobalVol.EnableWindow(bITandMPT); + m_SpinGlobalVol.EnableWindow(bITandMPT); + m_EditPanning.EnableWindow(bITandMPT); + m_SpinPanning.EnableWindow(bITandMPT); + m_CheckPanning.EnableWindow(bITandMPT); + m_EditPPS.EnableWindow(bITandMPT); + m_CheckCutOff.EnableWindow(bITandMPT); + m_CheckResonance.EnableWindow(bITandMPT); + m_CheckHighpass.EnableWindow(bITandMPT); + m_SliderCutOff.EnableWindow(bITandMPT); + m_SliderResonance.EnableWindow(bITandMPT); m_SpinInstrument.SetRange(1, m_pSndFile->m_nInstruments); m_SpinInstrument.EnableWindow((m_pSndFile->m_nInstruments) ? TRUE : FALSE); m_ComboTuning.EnableWindow(bMPTOnly); - m_EditPitchTempoLock.EnableWindow(bMPTOnly); - m_CheckPitchTempoLock.EnableWindow(bMPTOnly); + m_EditPitchTempoLock.EnableWindow(bITandMPT); + m_CheckPitchTempoLock.EnableWindow(bITandMPT); } if (dwHintMask & (HINT_INSTRUMENT|HINT_MODTYPE)) { Modified: trunk/OpenMPT/soundlib/Sndmix.cpp =================================================================== --- trunk/OpenMPT/soundlib/Sndmix.cpp 2007-05-13 11:17:15 UTC (rev 184) +++ trunk/OpenMPT/soundlib/Sndmix.cpp 2007-05-16 19:53:38 UTC (rev 185) @@ -1420,12 +1420,12 @@ { freq = GetFreqFromPeriod(period, pChn->nC4Speed, nPeriodFrac); } - else //In this case: m_nType == MOD_TYPE_MPT + else //In this case: m_nType == MOD_TYPE_MPT and using custom tunings. { m_nRow; if(pChn->m_CalculateFreq || (pChn->m_ReCalculateFreqOnFirstTick && m_nTickCount == 0)) { - pChn->m_Freq = static_cast<UINT>(pChn->nC4Speed * vibratoFactor * pChn->pHeader->pTuning->GetFrequencyRatio(pChn->nNote - NOTE_MIDDLEC + arpeggioSteps, static_cast<CTuning::FINESTEPTYPE>(pChn->nFineTune)+pChn->m_PortamentoFineSteps)); + pChn->m_Freq = pChn->nC4Speed * vibratoFactor * pChn->pHeader->pTuning->GetFrequencyRatio(pChn->nNote - NOTE_MIDDLEC + arpeggioSteps, static_cast<CTuning::FINESTEPTYPE>(pChn->nFineTune)+pChn->m_PortamentoFineSteps); if(!pChn->m_CalculateFreq) pChn->m_ReCalculateFreqOnFirstTick = false; else @@ -1433,17 +1433,13 @@ } freq = pChn->m_Freq; - - //Doing instrument specific things. - if(pChn->pHeader) - { - //Pitch/Tempo lock (yet another feature from MPT23 :) - if(pChn->pHeader->wPitchToTempoLock) - freq *= static_cast<UINT>((float)m_nMusicTempo / (float)pChn->pHeader->wPitchToTempoLock); - } } + //Applying Pitch/Tempo lock. + if(m_nType & (MOD_TYPE_IT | MOD_TYPE_MPT) && pChn->pHeader && pChn->pHeader->wPitchToTempoLock) + freq *= (float)m_nMusicTempo / (float)pChn->pHeader->wPitchToTempoLock; + if ((m_nType & (MOD_TYPE_IT | MOD_TYPE_MPT)) && (freq < 256)) { pChn->nFadeOutVol = 0; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |