From: <sag...@us...> - 2014-02-22 15:38:40
|
Revision: 3749 http://sourceforge.net/p/modplug/code/3749 Author: saga-games Date: 2014-02-22 15:38:33 +0000 (Sat, 22 Feb 2014) Log Message: ----------- [Fix] General tab: Setting the current program for a plugin stopped working a while ago. Modified Paths: -------------- trunk/OpenMPT/mptrack/View_gen.cpp trunk/OpenMPT/mptrack/View_gen.h Modified: trunk/OpenMPT/mptrack/View_gen.cpp =================================================================== --- trunk/OpenMPT/mptrack/View_gen.cpp 2014-02-22 12:44:39 UTC (rev 3748) +++ trunk/OpenMPT/mptrack/View_gen.cpp 2014-02-22 15:38:33 UTC (rev 3749) @@ -948,23 +948,23 @@ void CViewGlobals::OnProgramChanged() //----------------------------------- { - VstInt32 cursel = m_CbnPreset.GetItemData(m_CbnPreset.GetCurSel()); + VstInt32 curProg = m_CbnPreset.GetItemData(m_CbnPreset.GetCurSel()); CModDoc *pModDoc = GetDocument(); - if ((m_nCurrentPlugin >= MAX_MIXPLUGINS) || (!pModDoc)) return; CVstPlugin *pVstPlugin = GetCurrentPlugin(); if(pVstPlugin != nullptr) { - VstInt32 nParams = pVstPlugin->GetNumPrograms(); - if(cursel <= nParams) + const VstInt32 numProgs = pVstPlugin->GetNumPrograms(); + if(curProg <= numProgs) { - pVstPlugin->SetCurrentProgram(m_nCurrentPreset); + pVstPlugin->SetCurrentProgram(curProg); // Update parameter display OnParamChanged(); + + if(pModDoc->GetrSoundFile().GetModSpecifications().supportsPlugins) + pModDoc->SetModified(); } - if(pModDoc->GetrSoundFile().GetModSpecifications().supportsPlugins) - pModDoc->SetModified(); } } Modified: trunk/OpenMPT/mptrack/View_gen.h =================================================================== --- trunk/OpenMPT/mptrack/View_gen.h 2014-02-22 12:44:39 UTC (rev 3748) +++ trunk/OpenMPT/mptrack/View_gen.h 2014-02-22 15:38:33 UTC (rev 3749) @@ -27,30 +27,16 @@ CSliderCtrl m_sbVolume[4], m_sbPan[4], m_sbValue, m_sbDryRatio; -// -> CODE#0002 -// -> DESC="VST plugins presets" CComboBox m_CbnPreset; -// -! NEW_FEATURE#0002 -// CSliderCtrl m_sbVolume[4], m_sbPan[4], m_sbValue; -// -> CODE#0014 -// -> DESC="vst wet/dry slider" CSliderCtrl m_sbWetDry; -// -! NEW_FEATURE#0014 CSpinButtonCtrl m_spinVolume[4], m_spinPan[4]; CButton m_BtnSelect, m_BtnEdit; int m_nActiveTab, m_nLockCount; PLUGINDEX m_nCurrentPlugin; PlugParamIndex m_nCurrentParam; -// -> CODE#0002 -// -> DESC="VST plugins presets" - UINT m_nCurrentPreset; -// -! NEW_FEATURE#0002 -// -> CODE#0028 -// -> DESC="effect plugin mixing mode combo" CComboBox m_CbnSpecialMixProcessing; CSpinButtonCtrl m_SpinMixGain; // update#02 -// -! NEW_FEATURE#0028 enum {AdjustPattern = true, NoPatternAdjust = false}; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sag...@us...> - 2014-02-22 16:47:41
|
Revision: 3750 http://sourceforge.net/p/modplug/code/3750 Author: saga-games Date: 2014-02-22 16:47:31 +0000 (Sat, 22 Feb 2014) Log Message: ----------- [Imp] Sample tab: Sample drawing is now also available for stereo samples. [Imp] Sample tab: Sample drawing button is now also active if there's no sample yet (opens sample creation dialog) Modified Paths: -------------- trunk/OpenMPT/mptrack/View_smp.cpp trunk/OpenMPT/mptrack/View_smp.h Modified: trunk/OpenMPT/mptrack/View_smp.cpp =================================================================== --- trunk/OpenMPT/mptrack/View_smp.cpp 2014-02-22 15:38:33 UTC (rev 3749) +++ trunk/OpenMPT/mptrack/View_smp.cpp 2014-02-22 16:47:31 UTC (rev 3750) @@ -1217,9 +1217,7 @@ { case ID_SAMPLE_DRAW: if(m_dwStatus[SMPSTATUS_DRAWING]) dwStyle |= NCBTNS_CHECKED; - if(m_nSample > pSndFile->GetNumSamples() || - pSndFile->GetSample(m_nSample).GetNumChannels() > 1 || - pSndFile->GetSample(m_nSample).pSample == nullptr) + if(m_nSample > pSndFile->GetNumSamples()) { dwStyle |= NCBTNS_DISABLED; } @@ -1286,37 +1284,46 @@ template<class T, class uT> -T CViewSample::GetSampleValueFromPoint(const CPoint &point) -//--------------------------------------------------------- +T CViewSample::GetSampleValueFromPoint(const ModSample &smp, const CPoint &point) const +//------------------------------------------------------------------------------------- { STATIC_ASSERT(sizeof(T) == sizeof(uT) && sizeof(T) <= 2); - int value = (std::numeric_limits<T>::max)() - (std::numeric_limits<uT>::max)() * point.y / m_rcClient.Height(); - Limit(value, (std::numeric_limits<T>::min)(), (std::numeric_limits<T>::max)()); + const int channelHeight = m_rcClient.Height() / smp.GetNumChannels(); + int yPos = point.y - m_drawChannel * channelHeight - m_rcClient.top; + + int value = std::numeric_limits<T>::max() - std::numeric_limits<uT>::max() * yPos / channelHeight; + Limit(value, std::numeric_limits<T>::min(), std::numeric_limits<T>::max()); return static_cast<T>(value); } template<class T, class uT> -void CViewSample::SetInitialDrawPoint(void *pSample, const CPoint &point) -//----------------------------------------------------------------------- +void CViewSample::SetInitialDrawPoint(ModSample &smp, const CPoint &point) +//------------------------------------------------------------------------ { - T* data = static_cast<T *>(pSample); - data[m_dwEndDrag] = GetSampleValueFromPoint<T, uT>(point); + m_drawChannel = (point.y - m_rcClient.top) * smp.GetNumChannels() / m_rcClient.Height(); + Limit(m_drawChannel, 0, (int)smp.GetNumChannels() - 1); + + T *data = static_cast<T *>(smp.pSample) + m_drawChannel; + data[m_dwEndDrag * smp.GetNumChannels()] = GetSampleValueFromPoint<T, uT>(smp, point); } template<class T, class uT> -void CViewSample::SetSampleData(void *pSample, const CPoint &point, const DWORD old) -//---------------------------------------------------------------------------------- +void CViewSample::SetSampleData(ModSample &smp, const CPoint &point, const SmpLength old) +//--------------------------------------------------------------------------------------- { - T* data = static_cast<T *>(pSample); - const int oldvalue = data[old]; - const int value = GetSampleValueFromPoint<T, uT>(point); - for(DWORD i=old; i != m_dwEndDrag; i += (m_dwEndDrag > old ? 1 : -1)) + T *data = static_cast<T *>(smp.pSample) + m_drawChannel + old * smp.GetNumChannels(); + const int oldvalue = *data; + const int value = GetSampleValueFromPoint<T, uT>(smp, point); + const int inc = (m_dwEndDrag > old ? 1 : -1); + const int ptrInc = inc * smp.GetNumChannels(); + + for(SmpLength i = old; i != m_dwEndDrag; i += inc, data += ptrInc) { - data[i] = static_cast<T>((float)oldvalue + (value - oldvalue) * ((float)i - old) / ((float)m_dwEndDrag - old)); + *data = static_cast<T>((float)oldvalue + (value - oldvalue) * ((float)i - old) / ((float)m_dwEndDrag - old)); } - data[m_dwEndDrag] = static_cast<T>(value); + *data = static_cast<T>(value); } @@ -1371,10 +1378,9 @@ } else UpdateIndicator(NULL); if(m_dwStatus[SMPSTATUS_MOUSEDRAG]) { - BOOL bAgain = FALSE; - const DWORD len = sndFile.GetSample(m_nSample).nLength; + const SmpLength len = sndFile.GetSample(m_nSample).nLength; if (!len) return; - DWORD old = m_dwEndDrag; + SmpLength old = m_dwEndDrag; if (m_nZoom) { if (point.x < 0) @@ -1385,7 +1391,6 @@ if (OnScrollBy(pt)) { UpdateWindow(); - bAgain = TRUE; } point.x = 0; } @@ -1397,7 +1402,6 @@ if (OnScrollBy(pt)) { UpdateWindow(); - bAgain = TRUE; } point.x = m_rcClient.right; } @@ -1419,9 +1423,9 @@ } if(sndFile.GetSample(m_nSample).GetElementarySampleSize() == 2) - SetSampleData<int16, uint16>(sndFile.GetSample(m_nSample).pSample, point, old); + SetSampleData<int16, uint16>(sndFile.GetSample(m_nSample), point, old); else if(sndFile.GetSample(m_nSample).GetElementarySampleSize() == 1) - SetSampleData<int8, uint8>(sndFile.GetSample(m_nSample).pSample, point, old); + SetSampleData<int8, uint8>(sndFile.GetSample(m_nSample), point, old); sndFile.GetSample(m_nSample).PrecomputeLoops(sndFile, false); @@ -1476,9 +1480,9 @@ m_lastDrawPoint = point; pModDoc->GetSampleUndo().PrepareUndo(m_nSample, sundo_replace, "Draw Sample"); if(sample.GetElementarySampleSize() == 2) - SetInitialDrawPoint<int16, uint16>(sample.pSample, point); + SetInitialDrawPoint<int16, uint16>(sample, point); else if(sample.GetElementarySampleSize() == 1) - SetInitialDrawPoint<int8, uint8>(sample.pSample, point); + SetInitialDrawPoint<int8, uint8>(sample, point); sndFile.GetSample(m_nSample).PrecomputeLoops(sndFile, false); @@ -2168,8 +2172,8 @@ if (m_dwBeginSel >= m_dwEndSel) return; // invalid selection BeginWaitCursor(); - UINT nStart = m_dwBeginSel; - UINT nEnd = m_dwEndSel - m_dwBeginSel; + SmpLength nStart = m_dwBeginSel; + SmpLength nEnd = m_dwEndSel - m_dwBeginSel; if ((sample.pSample) && (nStart+nEnd <= sample.nLength) && (nEnd >= MIN_TRIM_LENGTH)) { @@ -2177,14 +2181,9 @@ CriticalSection cs; - // Note: Sample is overwritten in-place! Unused data is not deallocated! - const UINT bend = nEnd * sample.GetBytesPerSample() , bstart = nStart * sample.GetBytesPerSample(); - signed char *p = (signed char *)sample.pSample; - for (UINT i = 0; i < bend; i++) - { - p[i] = p[i + bstart]; - } + int8 *p = (int8 *)sample.pSample; + memmove(p, p + nStart * sample.GetBytesPerSample(), nEnd * sample.GetBytesPerSample()); if (sample.nLoopStart >= nStart) sample.nLoopStart -= nStart; if (sample.nLoopEnd >= nStart) sample.nLoopEnd -= nStart; @@ -2192,20 +2191,8 @@ if (sample.nSustainEnd >= nStart) sample.nSustainEnd -= nStart; if (sample.nLoopEnd > nEnd) sample.nLoopEnd = nEnd; if (sample.nSustainEnd > nEnd) sample.nSustainEnd = nEnd; - if (sample.nLoopStart >= sample.nLoopEnd) - { - sample.nLoopStart = sample.nLoopEnd = 0; - sample.uFlags.reset(CHN_LOOP|CHN_PINGPONGLOOP); - } - if (sample.nSustainStart >= sample.nSustainEnd) - { - sample.nSustainStart = sample.nSustainEnd = 0; - sample.uFlags.reset(CHN_SUSTAINLOOP|CHN_PINGPONGSUSTAIN); - } sample.nLength = nEnd; sample.PrecomputeLoops(sndFile); - - sample.PrecomputeLoops(sndFile); cs.Leave(); pModDoc->SetModified(); @@ -2435,10 +2422,8 @@ SendCtrlMessage(CTRLMSG_SMP_SETZOOM, zoom); if (zoom) { - CSize sz; SetZoom(zoom); UpdateScrollSize(); - sz.cx = m_dwBeginSel; // Compute width of new selection and center it in the view int scrollToSample = (m_dwBeginSel + selLength / 2) >> (std::max(1, zoom) - 1); @@ -2449,26 +2434,6 @@ Limit(scrollToSample, minPos, maxPos); SetScrollPos(SB_HORZ, scrollToSample); Invalidate(); - - /* - if(zoom > 1) - { - sz.cx >>= (zoom - 1); - selLength >>= (zoom - 1); - } else if(zoom < -1) - { - sz.cx <<= (-zoom - 1); - selLength <<= (-zoom - 1); - } - - int l = (m_rcClient.right - selLength) / 2; - if (l > 0) sz.cx -= l; - if(m_nZoom > 0) - sz.cx -= m_nScrollPosX; - else - sz.cx -= m_nScrollPosX << (-zoom - 1); - sz.cy = 0; - OnScrollBy(sz, TRUE);*/ } } @@ -2578,6 +2543,20 @@ void CViewSample::OnDrawingToggle() //--------------------------------- { + const CModDoc *pModDoc = GetDocument(); + if(!pModDoc) return; + const CSoundFile &sndFile = pModDoc->GetrSoundFile(); + + const ModSample &sample = sndFile.GetSample(m_nSample); + if(sample.pSample == nullptr) + { + OnAddSilence(); + if(sample.pSample == nullptr) + { + return; + } + } + m_dwStatus.flip(SMPSTATUS_DRAWING); UpdateNcButtonState(); } Modified: trunk/OpenMPT/mptrack/View_smp.h =================================================================== --- trunk/OpenMPT/mptrack/View_smp.h 2014-02-22 15:38:33 UTC (rev 3749) +++ trunk/OpenMPT/mptrack/View_smp.h 2014-02-22 16:47:31 UTC (rev 3750) @@ -45,7 +45,8 @@ std::vector<CHANNELINDEX> noteChannel; // Note -> Preview channel assignment // Sample drawing - CPoint m_lastDrawPoint; // For drawing horizontal lines + CPoint m_lastDrawPoint; // For drawing horizontal lines + int m_drawChannel; // Which sample channel are we drawing on? DWORD m_NcButtonState[SMP_LEFTBAR_BUTTONS]; SmpLength m_dwNotifyPos[MAX_CHANNELS]; @@ -75,15 +76,15 @@ // Sets sample data on sample draw. template<class T, class uT> - void SetSampleData(void *pSample, const CPoint &point, const DWORD old); + void SetSampleData(ModSample &smp, const CPoint &point, const SmpLength old); // Sets initial draw point on sample draw. template<class T, class uT> - void SetInitialDrawPoint(void *pSample, const CPoint &point); + void SetInitialDrawPoint(ModSample &smp, const CPoint &point); // Returns sample value corresponding given point in the sample view. template<class T, class uT> - T GetSampleValueFromPoint(const CPoint &point); + T GetSampleValueFromPoint(const ModSample &smp, const CPoint &point) const; int GetZoomLevel(SmpLength length) const; void DoZoom(int direction); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sag...@us...> - 2014-02-22 17:49:33
|
Revision: 3751 http://sourceforge.net/p/modplug/code/3751 Author: saga-games Date: 2014-02-22 17:49:24 +0000 (Sat, 22 Feb 2014) Log Message: ----------- [Ref] Small code refactoring in CModDoc/CViewSample Modified Paths: -------------- trunk/OpenMPT/mptrack/Moddoc.cpp trunk/OpenMPT/mptrack/Moddoc.h trunk/OpenMPT/mptrack/View_smp.cpp Modified: trunk/OpenMPT/mptrack/Moddoc.cpp =================================================================== --- trunk/OpenMPT/mptrack/Moddoc.cpp 2014-02-22 16:47:31 UTC (rev 3750) +++ trunk/OpenMPT/mptrack/Moddoc.cpp 2014-02-22 17:49:24 UTC (rev 3751) @@ -1883,7 +1883,7 @@ " - Ogg Vorbis libraries\n" " - libmp3lame.dll or Lame_Enc.dll\n" "into OpenMPT's root directory.\n" - "Alternatively, you can install a MP3 ACM codec.", + "Alternatively, you can install an MP3 ACM codec.", "OpenMPT - Export"); } OnFileWaveConvert(nMinOrder, nMaxOrder, encoders); @@ -2033,9 +2033,9 @@ if (pMainFrm->GetModPlaying() == this) { bool isLooping = m_SndFile.m_SongFlags[SONG_PATTERNLOOP]; - UINT nPat = m_SndFile.m_nPattern; - UINT nRow = m_SndFile.m_nRow; - UINT nNextRow = m_SndFile.m_nNextRow; + PATTERNINDEX nPat = m_SndFile.m_nPattern; + ROWINDEX nRow = m_SndFile.m_nRow; + ROWINDEX nNextRow = m_SndFile.m_nNextRow; pMainFrm->PauseMod(); if ((isLooping) && (nPat < m_SndFile.Patterns.Size())) @@ -2258,17 +2258,17 @@ { case tempo_mode_alternative: Message.Format("Using alternative tempo interpretation.\n\nAssuming:\n. %d ticks per second\n. %d ticks per row\n. %d rows per beat\nthe tempo is approximately: %.8g BPM", - m_SndFile.m_nMusicTempo, m_SndFile.m_nMusicSpeed, m_SndFile.m_nCurrentRowsPerBeat, bpm); + m_SndFile.m_nMusicTempo, m_SndFile.m_nMusicSpeed, m_SndFile.m_nCurrentRowsPerBeat, bpm); break; case tempo_mode_modern: - Message.Format("Using modern tempo interpretation.\n\nThe tempo is: %.8g BPM", bpm); + Message.Format("Using modern tempo interpretation.\n\nThe tempo is: %.8g BPM", bpm); break; case tempo_mode_classic: default: Message.Format("Using standard tempo interpretation.\n\nAssuming:\n. A mod tempo (tick duration factor) of %d\n. %d ticks per row\n. %d rows per beat\nthe tempo is approximately: %.8g BPM", - m_SndFile.m_nMusicTempo, m_SndFile.m_nMusicSpeed, m_SndFile.m_nCurrentRowsPerBeat, bpm); + m_SndFile.m_nMusicTempo, m_SndFile.m_nMusicSpeed, m_SndFile.m_nCurrentRowsPerBeat, bpm); break; } @@ -2314,7 +2314,7 @@ pat = patternViewState.nPattern; row = patternViewState.cursor.GetRow(); - ord = patternViewState.nOrder; + ord = patternViewState.nOrder; } else { //patern editor object does not exist (i.e. is not active) - use saved state. @@ -2333,11 +2333,11 @@ } if(pat >= m_SndFile.Patterns.Size()) { - pat=0; + pat = 0; } if(row >= m_SndFile.Patterns[pat].GetNumRows()) { - row=0; + row = 0; } //ensure order correlates with pattern. @@ -2350,7 +2350,6 @@ } } - return followSonghWnd; } @@ -2624,9 +2623,7 @@ mpt::PathString fext; GetPathNameMpt().SplitPath(&drive, &dir, &fname, &fext); - mpt::PathString newPath; - newPath += drive; - newPath += dir; + mpt::PathString newPath = drive + dir; //Catch case where we don't have a filename yet. if(fname.empty()) @@ -2637,14 +2634,12 @@ newPath += fname; } - switch(nNewType) + if(nNewType == MOD_TYPE_IT) { - case MOD_TYPE_XM: newPath += MPT_PATHSTRING(".xm"); break; - case MOD_TYPE_IT: newPath += m_SndFile.m_SongFlags[SONG_ITPROJECT] ? MPT_PATHSTRING(".itp") : MPT_PATHSTRING(".it"); break; - case MOD_TYPE_MPT: newPath += MPT_PATHSTRING(".mptm"); break; - case MOD_TYPE_S3M: newPath += MPT_PATHSTRING(".s3m"); break; - case MOD_TYPE_MOD: newPath += MPT_PATHSTRING(".mod"); break; - default: ASSERT(false); + newPath += m_SndFile.m_SongFlags[SONG_ITPROJECT] ? MPT_PATHSTRING(".itp") : MPT_PATHSTRING(".it"); + } else + { + newPath += MPT_PATHSTRING(".") + mpt::PathString::FromUTF8(CSoundFile::GetModSpecifications(nNewType).fileExtension); } if(nNewType != MOD_TYPE_IT || @@ -2654,31 +2649,29 @@ (!mpt::PathString::CompareNoCase(fext, MPT_PATHSTRING(".itp")) && !m_SndFile.m_SongFlags[SONG_ITPROJECT]) ) ) - ) + ) m_ShowSavedialog = true; //Forcing savedialog to appear after extension change - otherwise //unnotified file overwriting may occur. SetPathName(newPath, FALSE); - } UpdateAllViews(NULL, HINT_MODTYPE); } - -CHANNELINDEX CModDoc::FindAvailableChannel() -//------------------------------------------ +CHANNELINDEX CModDoc::FindAvailableChannel() const +//------------------------------------------------ { CHANNELINDEX nStoppedChannel = CHANNELINDEX_INVALID; // Search for available channel for(CHANNELINDEX j = m_SndFile.m_nChannels; j < MAX_CHANNELS; j++) { - ModChannel *p = &m_SndFile.Chn[j]; - if(!p->nLength) + const ModChannel &chn = m_SndFile.Chn[j]; + if(!chn.nLength) return j; - else if(p->dwFlags[CHN_NOTEFADE]) + else if(chn.dwFlags[CHN_NOTEFADE]) nStoppedChannel = j; } @@ -2690,14 +2683,16 @@ return m_SndFile.m_nChannels; } -void CModDoc::RecordParamChange(int plugSlot, long paramIndex) -//------------------------------------------------------ + +void CModDoc::RecordParamChange(PLUGINDEX plugSlot, PlugParamIndex paramIndex) +//---------------------------------------------------------------------------- { SendMessageToActiveViews(WM_MOD_RECORDPARAM, plugSlot, paramIndex); } -void CModDoc::LearnMacro(int macroToSet, long paramToUse) -//------------------------------------------------------- + +void CModDoc::LearnMacro(int macroToSet, PlugParamIndex paramToUse) +//----------------------------------------------------------------- { if (macroToSet < 0 || macroToSet > NUM_MACROS) { @@ -2737,6 +2732,7 @@ return; } + void CModDoc::SongProperties() //---------------------------- { @@ -2751,7 +2747,7 @@ bShowLog = true; } - CHANNELINDEX nNewChannels = CLAMP(dlg.m_nChannels, m_SndFile.GetModSpecifications().channelsMin, m_SndFile.GetModSpecifications().channelsMax); + CHANNELINDEX nNewChannels = Clamp(dlg.m_nChannels, m_SndFile.GetModSpecifications().channelsMin, m_SndFile.GetModSpecifications().channelsMax); if (nNewChannels != GetNumChannels()) { @@ -2763,7 +2759,6 @@ UpdateAllViews(NULL, HINT_PATTERNDATA | HINT_MODCHANNELS); SetModified(); - } } @@ -2828,6 +2823,7 @@ return displayName; } + void CModDoc::SafeFileClose() //--------------------------- { @@ -2853,7 +2849,7 @@ //---------------------------- { // Song title - mpt::String::FixNullString(m_SndFile.songName); + // std::string, doesn't need to be fixed. // Sample names + filenames for(SAMPLEINDEX nSmp = 1; nSmp <= m_SndFile.GetNumSamples(); nSmp++) @@ -2882,10 +2878,10 @@ m_SndFile.m_MidiCfg.Sanitize(); // Pattern names - // Those are CStrings and don't need to be fixed. + // std::string, doesn't need to be fixed. // Sequence names. - // Those are CStrings and don't need to be fixed. + // std::string, doesn't need to be fixed. } @@ -2905,7 +2901,7 @@ // Generate file name candidate. mpt::PathString sName; - for(size_t i = 0; i<1000; ++i) + for(size_t i = 0; i < 1000; ++i) { sName += MPT_PATHSTRING("newTemplate") + mpt::PathString::FromWide(StringifyW(i)); sName += MPT_PATHSTRING(".") + mpt::PathString::FromUTF8(m_SndFile.GetModSpecifications().fileExtension); Modified: trunk/OpenMPT/mptrack/Moddoc.h =================================================================== --- trunk/OpenMPT/mptrack/Moddoc.h 2014-02-22 16:47:31 UTC (rev 3750) +++ trunk/OpenMPT/mptrack/Moddoc.h 2014-02-22 17:49:24 UTC (rev 3751) @@ -323,8 +323,8 @@ HWND GetEditPosition(ROWINDEX &row, PATTERNINDEX &pat, ORDERINDEX &ord); LRESULT OnCustomKeyMsg(WPARAM, LPARAM); void TogglePluginEditor(UINT m_nCurrentPlugin); - void RecordParamChange(int slot, long param); - void LearnMacro(int macro, long param); + void RecordParamChange(PLUGINDEX slot, PlugParamIndex param); + void LearnMacro(int macro, PlugParamIndex param); void SetElapsedTime(ORDERINDEX nOrd, ROWINDEX nRow); // Global settings to pattern effect conversion @@ -478,7 +478,7 @@ private: void ChangeFileExtension(MODTYPE nNewType); - CHANNELINDEX FindAvailableChannel(); + CHANNELINDEX FindAvailableChannel() const; }; ///////////////////////////////////////////////////////////////////////////// Modified: trunk/OpenMPT/mptrack/View_smp.cpp =================================================================== --- trunk/OpenMPT/mptrack/View_smp.cpp 2014-02-22 16:47:31 UTC (rev 3750) +++ trunk/OpenMPT/mptrack/View_smp.cpp 2014-02-22 17:49:24 UTC (rev 3751) @@ -42,7 +42,7 @@ // trimming will be done. This is the minimum value for // selection difference, so the minimum length of result // of trimming is nTrimLengthMin + 1. -#define MIN_TRIM_LENGTH 16 +#define MIN_TRIM_LENGTH 4 const UINT cLeftBarButtons[SMP_LEFTBAR_BUTTONS] = { @@ -336,8 +336,7 @@ dMin = dMax; if (nEnd < dMin) dMin = nEnd; if (nEnd > dMax) dMax = nEnd; - } else - if ((nEnd == dMax) && (dMin != nBegin)) + } else if ((nEnd == dMax) && (dMin != nBegin)) { dMax = dMin; if (nBegin < dMin) dMin = nBegin; @@ -1355,8 +1354,8 @@ // Show cursor position as offset effect if no selection is made. if(m_nSample > 0 && m_nSample <= sndFile.GetNumSamples() && x < sndFile.GetSample(m_nSample).nLength) { - const DWORD xLow = (x / 0x100) % 0x100; - const DWORD xHigh = x / 0x10000; + const SmpLength xLow = (x / 0x100) % 0x100; + const SmpLength xHigh = x / 0x10000; const char cOffsetChar = sndFile.GetModSpecifications().GetEffectLetter(CMD_OFFSET); const bool bHasHighOffset = (sndFile.TypeIsS3M_IT_MPT() || (sndFile.GetType() == MOD_TYPE_XM)); @@ -1446,14 +1445,12 @@ //------------------------------------------------- { CModDoc *pModDoc = GetDocument(); - DWORD len; if(m_dwStatus[SMPSTATUS_MOUSEDRAG] || (!pModDoc)) return; CSoundFile &sndFile = pModDoc->GetrSoundFile(); ModSample &sample = sndFile.GetSample(m_nSample); - len = sample.nLength; - if (!len) + if (!sample.nLength) return; m_dwStatus.set(SMPSTATUS_MOUSEDRAG); @@ -1470,7 +1467,7 @@ } else { m_dwBeginDrag = ScreenToSample(point.x); - if (m_dwBeginDrag >= len) m_dwBeginDrag = len-1; + if (m_dwBeginDrag >= sample.nLength) m_dwBeginDrag = sample.nLength - 1; m_dwEndDrag = m_dwBeginDrag; } if (oldsel) SetCurSel(m_dwBeginDrag, m_dwEndDrag); @@ -1517,7 +1514,7 @@ if (pModDoc) { CSoundFile *pSndFile = pModDoc->GetSoundFile(); - DWORD len = pSndFile->GetSample(m_nSample).nLength; + SmpLength len = pSndFile->GetSample(m_nSample).nLength; if (len && !m_dwStatus[SMPSTATUS_DRAWING]) SetCurSel(0, len); } } @@ -1775,8 +1772,7 @@ CModDoc *pModDoc = GetDocument(); if (pModDoc) { - CSoundFile *pSndFile = pModDoc->GetSoundFile(); - DWORD len = pSndFile->GetSample(m_nSample).nLength; + SmpLength len = pModDoc->GetrSoundFile().GetSample(m_nSample).nLength; if (len) SetCurSel(0, len); } } @@ -1819,16 +1815,14 @@ { CModDoc *pModDoc = GetDocument(); DWORD dwUpdateFlags = HINT_SAMPLEINFO | HINT_SAMPLEDATA; - DWORD len; if (!pModDoc) return; CSoundFile &sndFile = pModDoc->GetrSoundFile(); ModSample &sample = sndFile.GetSample(m_nSample); - len = sample.nLength; - if ((!sample.pSample) || (!len)) return; - if (m_dwEndSel > len) m_dwEndSel = len; + if ((!sample.pSample) || (!sample.nLength)) return; + if (m_dwEndSel > sample.nLength) m_dwEndSel = sample.nLength; if ((m_dwBeginSel >= m_dwEndSel) - || (m_dwEndSel - m_dwBeginSel + 4 >= len)) + || (m_dwEndSel - m_dwBeginSel + 4 >= sample.nLength)) { if (Reporting::Confirm("Remove this sample?", "Remove Sample", true) != cnfYes) return; pModDoc->GetSampleUndo().PrepareUndo(m_nSample, sundo_replace, "Delete Sample"); @@ -1842,23 +1836,17 @@ CriticalSection cs; - UINT cutlen = (m_dwEndSel - m_dwBeginSel); - UINT istart = m_dwBeginSel * sample.GetBytesPerSample(); - UINT iend = len * sample.GetBytesPerSample(); - sample.nLength -= cutlen; - cutlen *= sample.GetBytesPerSample(); + const SmpLength selStart = m_dwBeginSel * sample.GetBytesPerSample(); + const SmpLength selEnd = m_dwEndSel * sample.GetBytesPerSample(); + const SmpLength smpEnd = sample.nLength * sample.GetBytesPerSample(); + sample.nLength -= (m_dwEndSel - m_dwBeginSel); - char *p = static_cast<char *>(sample.pSample); - for (UINT i=istart; i<iend; i++) - { - p[i] = (i+cutlen < iend) ? p[i+cutlen] : (char)0; - } - len = sample.nLength; + int8 *p = static_cast<int8 *>(sample.pSample); + memmove(p + selStart, p + selEnd, smpEnd - selEnd); - // adjust loop points - AdjustLoopPoints(sample.nLoopStart, sample.nLoopEnd, len); - AdjustLoopPoints(sample.nSustainStart, sample.nSustainEnd, len); + AdjustLoopPoints(sample.nLoopStart, sample.nLoopEnd, sample.nLength); + AdjustLoopPoints(sample.nSustainStart, sample.nSustainEnd, sample.nLength); if(sample.nLoopEnd == 0) { @@ -2182,7 +2170,7 @@ CriticalSection cs; // Note: Sample is overwritten in-place! Unused data is not deallocated! - int8 *p = (int8 *)sample.pSample; + int8 *p = static_cast<int8 *>(sample.pSample); memmove(p, p + nStart * sample.GetBytesPerSample(), nEnd * sample.GetBytesPerSample()); if (sample.nLoopStart >= nStart) sample.nLoopStart -= nStart; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <man...@us...> - 2014-02-23 15:54:34
|
Revision: 3760 http://sourceforge.net/p/modplug/code/3760 Author: manxorist Date: 2014-02-23 15:54:25 +0000 (Sun, 23 Feb 2014) Log Message: ----------- [Ref] Move stream export settings into TrackerSettings. Modified Paths: -------------- trunk/OpenMPT/mptrack/StreamEncoder.cpp trunk/OpenMPT/mptrack/StreamEncoder.h trunk/OpenMPT/mptrack/StreamEncoderFLAC.cpp trunk/OpenMPT/mptrack/StreamEncoderMP3.cpp trunk/OpenMPT/mptrack/StreamEncoderOpus.cpp trunk/OpenMPT/mptrack/StreamEncoderWAV.cpp trunk/OpenMPT/mptrack/TrackerSettings.cpp trunk/OpenMPT/mptrack/TrackerSettings.h Modified: trunk/OpenMPT/mptrack/StreamEncoder.cpp =================================================================== --- trunk/OpenMPT/mptrack/StreamEncoder.cpp 2014-02-23 13:22:57 UTC (rev 3759) +++ trunk/OpenMPT/mptrack/StreamEncoder.cpp 2014-02-23 15:54:25 UTC (rev 3760) @@ -12,10 +12,30 @@ #include "StreamEncoder.h" +#include "Mptrack.h" +#include "TrackerSettings.h" + #include <ostream> +StreamEncoderSettings &StreamEncoderSettings::Instance() +//------------------------------------------------------ +{ + return TrackerSettings::Instance().ExportStreamEncoderSettings; +} + +StreamEncoderSettings::StreamEncoderSettings(SettingsContainer &conf, const std::string §ion) +//----------------------------------------------------------------------------------------------- + : FLACCompressionLevel(conf, section, "FLACCompressionLevel", 5) + , MP3LameQuality(conf, section, "MP3LameQuality", 3) + , MP3ACMFast(conf, section, "MP3ACMFast", false) + , OpusComplexity(conf, section, "OpusComplexity", -1) +{ + return; +} + + StreamWriterBase::StreamWriterBase(std::ostream &stream) //------------------------------------------------------ : f(stream) Modified: trunk/OpenMPT/mptrack/StreamEncoder.h =================================================================== --- trunk/OpenMPT/mptrack/StreamEncoder.h 2014-02-23 13:22:57 UTC (rev 3759) +++ trunk/OpenMPT/mptrack/StreamEncoder.h 2014-02-23 15:54:25 UTC (rev 3760) @@ -191,6 +191,19 @@ } // namespace Encoder +//========================== +struct StreamEncoderSettings +//========================== +{ + Setting<int32> FLACCompressionLevel; + Setting<int32> MP3LameQuality; + Setting<bool> MP3ACMFast; + Setting<int32> OpusComplexity; + StreamEncoderSettings(SettingsContainer &conf, const std::string §ion); + static StreamEncoderSettings &Instance(); +}; + + //======================= class IAudioStreamEncoder //======================= Modified: trunk/OpenMPT/mptrack/StreamEncoderFLAC.cpp =================================================================== --- trunk/OpenMPT/mptrack/StreamEncoderFLAC.cpp 2014-02-23 13:22:57 UTC (rev 3759) +++ trunk/OpenMPT/mptrack/StreamEncoderFLAC.cpp 2014-02-23 15:54:25 UTC (rev 3760) @@ -13,7 +13,6 @@ #include "StreamEncoder.h" #include "StreamEncoderFLAC.h" -#include "Mainfrm.h" #include "Mptrack.h" #include "TrackerSettings.h" @@ -158,11 +157,8 @@ FLAC__stream_encoder_set_bits_per_sample(encoder, formatInfo.Sampleformat.GetBitsPerSample()); FLAC__stream_encoder_set_sample_rate(encoder, formatInfo.Samplerate); -#ifdef MODPLUG_TRACKER - int compressionLevel = 5; - compressionLevel = theApp.GetSettings().Read<int32>("Export", "FLACCompressionLevel", compressionLevel); + int compressionLevel = StreamEncoderSettings::Instance().FLACCompressionLevel; FLAC__stream_encoder_set_compression_level(encoder, compressionLevel); -#endif // MODPLUG_TRACKER inited = true; Modified: trunk/OpenMPT/mptrack/StreamEncoderMP3.cpp =================================================================== --- trunk/OpenMPT/mptrack/StreamEncoderMP3.cpp 2014-02-23 13:22:57 UTC (rev 3759) +++ trunk/OpenMPT/mptrack/StreamEncoderMP3.cpp 2014-02-23 15:54:25 UTC (rev 3760) @@ -13,11 +13,7 @@ #include "StreamEncoder.h" #include "StreamEncoderMP3.h" -#ifdef MODPLUG_TRACKER -#include "../mptrack/Mainfrm.h" -#include "../mptrack/Mptrack.h" -#include "../mptrack/Reporting.h" -#endif //MODPLUG_TRACKER +#include "Mptrack.h" #include "../soundlib/Sndfile.h" @@ -487,10 +483,8 @@ lame.lame_set_in_samplerate(gfp, samplerate); lame.lame_set_num_channels(gfp, channels); -#ifdef MODPLUG_TRACKER - int lameQuality = theApp.GetSettings().Read<int32>("Export", "MP3LameQuality", 3); + int lameQuality = StreamEncoderSettings::Instance().MP3LameQuality; lame.lame_set_quality(gfp, lameQuality); -#endif // MODPLUG_TRACKER if(settings.Mode == Encoder::ModeCBR) { @@ -1232,11 +1226,7 @@ wfex.cbSize = 0; LPWAVEFORMATEX pwfexDst = (LPWAVEFORMATEX)&acm.formats_waveformats[format][0]; - bool acmFast = false; -#ifdef MODPLUG_TRACKER - acmFast = theApp.GetSettings().Read<bool>("Export", "MP3ACMFast", acmFast); -#endif // MODPLUG_TRACKER - + bool acmFast = StreamEncoderSettings::Instance().MP3ACMFast; if(acmStreamOpen(&acmStream, acmDriver, &wfex, pwfexDst, NULL, 0, 0, acmFast ? 0 : ACM_STREAMOPENF_NONREALTIME) != MMSYSERR_NOERROR) { acmDriverClose(acmDriver, 0); Modified: trunk/OpenMPT/mptrack/StreamEncoderOpus.cpp =================================================================== --- trunk/OpenMPT/mptrack/StreamEncoderOpus.cpp 2014-02-23 13:22:57 UTC (rev 3759) +++ trunk/OpenMPT/mptrack/StreamEncoderOpus.cpp 2014-02-23 15:54:25 UTC (rev 3760) @@ -13,11 +13,7 @@ #include "StreamEncoder.h" #include "StreamEncoderOpus.h" -#ifdef MODPLUG_TRACKER -#include "../mptrack/Mainfrm.h" -#include "../mptrack/Mptrack.h" -#include "../mptrack/Reporting.h" -#endif //MODPLUG_TRACKER +#include "Mptrack.h" #include <deque> @@ -429,12 +425,11 @@ opus.opus_multistream_encoder_ctl(st, OPUS_SET_VBR_CONSTRAINT(ctl_vbrcontraint)); } -#ifdef MODPLUG_TRACKER - opus_int32 complexity = 0; - opus.opus_multistream_encoder_ctl(st, OPUS_GET_COMPLEXITY(&complexity)); - complexity = theApp.GetSettings().Read<int32>("Export", "OpusComplexity", complexity); - opus.opus_multistream_encoder_ctl(st, OPUS_SET_COMPLEXITY(complexity)); -#endif // MODPLUG_TRACKER + opus_int32 complexity = StreamEncoderSettings::Instance().OpusComplexity; + if(complexity >= 0) + { + opus.opus_multistream_encoder_ctl(st, OPUS_SET_COMPLEXITY(complexity)); + } OpusHeader header; MemsetZero(header); Modified: trunk/OpenMPT/mptrack/StreamEncoderWAV.cpp =================================================================== --- trunk/OpenMPT/mptrack/StreamEncoderWAV.cpp 2014-02-23 13:22:57 UTC (rev 3759) +++ trunk/OpenMPT/mptrack/StreamEncoderWAV.cpp 2014-02-23 15:54:25 UTC (rev 3760) @@ -13,7 +13,6 @@ #include "StreamEncoder.h" #include "StreamEncoderWAV.h" -#include "Mainfrm.h" #include "Mptrack.h" #include "TrackerSettings.h" Modified: trunk/OpenMPT/mptrack/TrackerSettings.cpp =================================================================== --- trunk/OpenMPT/mptrack/TrackerSettings.cpp 2014-02-23 13:22:57 UTC (rev 3759) +++ trunk/OpenMPT/mptrack/TrackerSettings.cpp 2014-02-23 15:54:25 UTC (rev 3760) @@ -200,6 +200,7 @@ , SampleEditorFLACCompressionLevel(conf, "Sample Editor", "FLACCompressionLevel", 5) // Export , ExportDefaultToSoundcardSamplerate(conf, "Export", "DefaultToSoundcardSamplerate", true) + , ExportStreamEncoderSettings(conf, "Export") // Default template , defaultTemplateFile(conf, "Paths", "DefaultTemplate", mpt::PathString()) // MRU List Modified: trunk/OpenMPT/mptrack/TrackerSettings.h =================================================================== --- trunk/OpenMPT/mptrack/TrackerSettings.h 2014-02-23 13:22:57 UTC (rev 3759) +++ trunk/OpenMPT/mptrack/TrackerSettings.h 2014-02-23 15:54:25 UTC (rev 3760) @@ -18,6 +18,7 @@ #include "../sounddsp/DSP.h" #include "../sounddsp/Reverb.h" #include "../sounddev/SoundDevice.h" +#include "StreamEncoder.h" #include "../common/version.h" #include "Settings.h" @@ -348,6 +349,7 @@ // Export Setting<bool> ExportDefaultToSoundcardSamplerate; + StreamEncoderSettings ExportStreamEncoderSettings; // Effects This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sag...@us...> - 2014-02-26 23:40:25
|
Revision: 3781 http://sourceforge.net/p/modplug/code/3781 Author: saga-games Date: 2014-02-26 23:40:15 +0000 (Wed, 26 Feb 2014) Log Message: ----------- [Imp] Sample tab: When zooming into a sample using ctrl-mousewheel, center the zoomed area around the mouse position. [Fix] When recording a plugin's MIDI output, avoid it from being spammed back to exactly the same plugin. Modified Paths: -------------- trunk/OpenMPT/mptrack/AbstractVstEditor.cpp trunk/OpenMPT/mptrack/View_smp.cpp trunk/OpenMPT/mptrack/View_smp.h Modified: trunk/OpenMPT/mptrack/AbstractVstEditor.cpp =================================================================== --- trunk/OpenMPT/mptrack/AbstractVstEditor.cpp 2014-02-26 21:02:25 UTC (rev 3780) +++ trunk/OpenMPT/mptrack/AbstractVstEditor.cpp 2014-02-26 23:40:15 UTC (rev 3781) @@ -99,11 +99,11 @@ } -LRESULT CAbstractVstEditor::OnMidiMsg(WPARAM midiData, LPARAM) -//------------------------------------------------------------ +LRESULT CAbstractVstEditor::OnMidiMsg(WPARAM midiData, LPARAM sender) +//------------------------------------------------------------------- { CModDoc *modDoc = m_VstPlugin.GetModDoc(); - if(modDoc != nullptr) + if(modDoc != nullptr && sender != reinterpret_cast<LPARAM>(&m_VstPlugin)) { if(!CheckInstrument(m_nInstrument)) m_nInstrument = GetBestInstrumentCandidate(); Modified: trunk/OpenMPT/mptrack/View_smp.cpp =================================================================== --- trunk/OpenMPT/mptrack/View_smp.cpp 2014-02-26 21:02:25 UTC (rev 3780) +++ trunk/OpenMPT/mptrack/View_smp.cpp 2014-02-26 23:40:15 UTC (rev 3781) @@ -161,47 +161,61 @@ } -void CViewSample::UpdateScrollSize(const int nZoomOld) -//---------------------------------------------------- +void CViewSample::UpdateScrollSize(int newZoom, bool forceRefresh, SmpLength centeredSample) +//------------------------------------------------------------------------------------------ { CModDoc *pModDoc = GetDocument(); + if(pModDoc == nullptr || (newZoom == m_nZoom && !forceRefresh)) + { + return; + } + const int oldZoom = m_nZoom; + m_nZoom = newZoom; + GetClientRect(&m_rcClient); - if (pModDoc) + const CSoundFile &sndFile = pModDoc->GetrSoundFile(); + SIZE sizePage, sizeLine; + SmpLength dwLen = 0; + + if ((m_nSample > 0) && (m_nSample <= sndFile.GetNumSamples())) { - CPoint pt; - CSoundFile *pSndFile = pModDoc->GetSoundFile(); - SIZE sizePage, sizeLine; - SmpLength dwLen = 0; + const ModSample &sample = sndFile.GetSample(m_nSample); + if (sample.pSample != nullptr) dwLen = sample.nLength; + } + // Compute scroll size in pixels + if (newZoom == 0) // Fit to display + m_sizeTotal.cx = m_rcClient.Width(); + else if(newZoom == 1) // 1:1 + m_sizeTotal.cx = dwLen; + else if(newZoom > 1) // Zoom out + m_sizeTotal.cx = (dwLen + (1 << (newZoom - 1)) - 1) >> (newZoom - 1); + else // Zoom in - here, we don't compute the real number of visible pixels so that the scroll bar doesn't grow unnecessarily long. The scrolling code in OnScrollBy() compensates for this. + m_sizeTotal.cx = dwLen + m_rcClient.Width() - (m_rcClient.Width() >> (-newZoom - 1)); - if ((m_nSample > 0) && (m_nSample <= pSndFile->GetNumSamples())) - { - const ModSample &sample = pSndFile->GetSample(m_nSample); - if (sample.pSample != nullptr) dwLen = sample.nLength; - } - // Compute scroll size in pixels - if (m_nZoom == 0) // Fit to display - m_sizeTotal.cx = m_rcClient.Width(); - else if(m_nZoom == 1) // 1:1 - m_sizeTotal.cx = dwLen; - else if(m_nZoom > 1) // Zoom out - m_sizeTotal.cx = (dwLen + (1 << (m_nZoom - 1)) - 1) >> (m_nZoom - 1); - else // Zoom in - here, we don't compute the real number of visible pixels so that the scroll bar doesn't grow unnecessarily long. The scrolling code in OnScrollBy() compensates for this. - m_sizeTotal.cx = dwLen + m_rcClient.Width() - (m_rcClient.Width() >> (-m_nZoom - 1)); + m_sizeTotal.cy = 1; + sizeLine.cx = (m_rcClient.right / 16) + 1; + if(newZoom < 0) + sizeLine.cx >>= (-newZoom - 1); + sizeLine.cy = 1; + sizePage.cx = sizeLine.cx * 4; + sizePage.cy = 1; - m_sizeTotal.cy = 1; - sizeLine.cx = (m_rcClient.right / 16) + 1; - if(m_nZoom < 0) - sizeLine.cx >>= (-m_nZoom - 1); - sizeLine.cy = 1; - sizePage.cx = sizeLine.cx * 4; - sizePage.cy = 1; + SetScrollSizes(MM_TEXT, m_sizeTotal, sizePage, sizeLine); - SetScrollSizes(MM_TEXT, m_sizeTotal, sizePage, sizeLine); + if(oldZoom != newZoom) // After zoom change, keep the view position. + { + if(centeredSample != SmpLength(-1)) + { + // Center given sample in the view + int scrollToSample = centeredSample >> (std::max(1, newZoom) - 1); + scrollToSample -= (m_rcClient.Width() / 2) >> (-std::min(-1, newZoom) - 1); - if (nZoomOld != m_nZoom) // After zoom change, keep the view position. + Limit(scrollToSample, 0, GetScrollLimit(SB_HORZ)); + SetScrollPos(SB_HORZ, scrollToSample); + } else { - const SmpLength nOldPos = ScrollPosToSamplePos(nZoomOld); + const SmpLength nOldPos = ScrollPosToSamplePos(oldZoom); const float fPosFraction = (dwLen > 0) ? static_cast<float>(nOldPos) / dwLen : 0; SetScrollPos(SB_HORZ, static_cast<int>(fPosFraction * GetScrollLimit(SB_HORZ))); } @@ -284,8 +298,8 @@ } -BOOL CViewSample::SetZoom(int nZoom) -//---------------------------------- +BOOL CViewSample::SetZoom(int nZoom, SmpLength centeredSample) +//------------------------------------------------------------ { if (nZoom == m_nZoom) @@ -293,9 +307,7 @@ if (nZoom > MAX_ZOOM) return FALSE; - const int nZoomOld = m_nZoom; - m_nZoom = nZoom; - UpdateScrollSize(nZoomOld); + UpdateScrollSize(nZoom, true, centeredSample); InvalidateRect(NULL, FALSE); return TRUE; } @@ -1089,7 +1101,7 @@ // Drawing Sample Data ::SelectObject(offScreenDC, CMainFrame::penSample); int smplsize = sample.GetBytesPerSample(); - if (m_nZoom == 1 || m_nZoom < 0 || ((!m_nZoom) && (sample.nLength <= (SmpLength)rect.right))) + if (m_nZoom == 1 || m_nZoom < 0 || ((!m_nZoom) && (sample.nLength <= (SmpLength)rect.Width()))) { // Draw sample data in 1:1 ratio or higher (zoom in) SmpLength len = sample.nLength - nSmpScrollPos; @@ -2581,18 +2593,7 @@ SendCtrlMessage(CTRLMSG_SMP_SETZOOM, zoom); if (zoom) { - SetZoom(zoom); - UpdateScrollSize(); - - // Compute width of new selection and center it in the view - int scrollToSample = (m_dwBeginSel + selLength / 2) >> (std::max(1, zoom) - 1); - scrollToSample -= (m_rcClient.Width() / 2) >> (-std::min(-1, zoom) - 1); - - int minPos, maxPos; - GetScrollRange(SB_HORZ, &minPos, &maxPos); - Limit(scrollToSample, minPos, maxPos); - SetScrollPos(SB_HORZ, scrollToSample); - Invalidate(); + SetZoom(zoom, m_dwBeginSel + selLength / 2); } } @@ -2995,8 +2996,8 @@ } -void CViewSample::DoZoom(int direction) -//------------------------------------- +void CViewSample::DoZoom(int direction, const CPoint &zoomPoint) +//-------------------------------------------------------------- { const CSoundFile &sndFile = GetDocument()->GetrSoundFile(); // zoomOrder: Biggest to smallest zoom order. @@ -3025,10 +3026,23 @@ ASSERT(false); } const ptrdiff_t nPos = std::find(zoomOrder, pZoomOrderEnd, m_nZoom) - zoomOrder; + + int newZoom; if (direction > 0 && nPos > 0) // Zoom in - SendCtrlMessage(CTRLMSG_SMP_SETZOOM, zoomOrder[nPos - 1]); + newZoom = zoomOrder[nPos - 1]; else if (direction < 0 && nPos + 1 < CountOf(zoomOrder)) - SendCtrlMessage(CTRLMSG_SMP_SETZOOM, zoomOrder[nPos + 1]); + newZoom = zoomOrder[nPos + 1]; + else + return; + + if(m_rcClient.PtInRect(zoomPoint)) + { + SetZoom(newZoom, ScreenToSample(zoomPoint.x)); + } else + { + SetZoom(newZoom); + } + SendCtrlMessage(CTRLMSG_SMP_SETZOOM, newZoom); } @@ -3041,7 +3055,8 @@ // the zoom levels in the zoom combobox. if (nFlags == MK_CONTROL && GetDocument()) { - DoZoom(zDelta); + ScreenToClient(&pt); + DoZoom(zDelta, pt); } return CModScrollView::OnMouseWheel(nFlags, zDelta, pt); Modified: trunk/OpenMPT/mptrack/View_smp.h =================================================================== --- trunk/OpenMPT/mptrack/View_smp.h 2014-02-26 21:02:25 UTC (rev 3780) +++ trunk/OpenMPT/mptrack/View_smp.h 2014-02-26 23:40:15 UTC (rev 3781) @@ -57,10 +57,10 @@ DECLARE_SERIAL(CViewSample) protected: - void UpdateScrollSize() {UpdateScrollSize(m_nZoom);} - void UpdateScrollSize(const int nZoomOld); + void UpdateScrollSize() { UpdateScrollSize(m_nZoom, true); } + void UpdateScrollSize(int newZoom, bool forceRefresh, SmpLength centeredSample = SmpLength(-1)); BOOL SetCurrentSample(SAMPLEINDEX nSmp); - BOOL SetZoom(int nZoom); + BOOL SetZoom(int nZoom, SmpLength centeredSample = SmpLength(-1)); int32 SampleToScreen(SmpLength pos) const; SmpLength ScreenToSample(int32 x) const; void PlayNote(ModCommand::NOTE note, const SmpLength nStartPos = 0); @@ -88,7 +88,7 @@ T GetSampleValueFromPoint(const ModSample &smp, const CPoint &point) const; int GetZoomLevel(SmpLength length) const; - void DoZoom(int direction); + void DoZoom(int direction, const CPoint &zoomPoint = CPoint(-1, -1)); bool CanZoomSelection() const; SmpLength ScrollPosToSamplePos() const {return ScrollPosToSamplePos(m_nZoom);} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sag...@us...> - 2014-03-02 12:18:15
|
Revision: 3808 http://sourceforge.net/p/modplug/code/3808 Author: saga-games Date: 2014-03-02 12:18:09 +0000 (Sun, 02 Mar 2014) Log Message: ----------- [Fix] Don't crash in 64-bit builds when MIDI record is auto-enabled on startup but there's no MIDI device (crashed when the options dialog was supposed to be brought up, which we don't actually want on startup anyway) Modified Paths: -------------- trunk/OpenMPT/mptrack/MainFrm.cpp trunk/OpenMPT/mptrack/Mainfrm.h trunk/OpenMPT/mptrack/Mpt_midi.cpp Modified: trunk/OpenMPT/mptrack/MainFrm.cpp =================================================================== --- trunk/OpenMPT/mptrack/MainFrm.cpp 2014-03-02 10:19:02 UTC (rev 3807) +++ trunk/OpenMPT/mptrack/MainFrm.cpp 2014-03-02 12:18:09 UTC (rev 3808) @@ -356,7 +356,7 @@ UpdateColors(); - if(TrackerSettings::Instance().m_dwPatternSetup & PATTERN_MIDIRECORD) OnMidiRecord(); + if(TrackerSettings::Instance().m_dwPatternSetup & PATTERN_MIDIRECORD) midiOpenDevice(false); return 0; } Modified: trunk/OpenMPT/mptrack/Mainfrm.h =================================================================== --- trunk/OpenMPT/mptrack/Mainfrm.h 2014-03-02 10:19:02 UTC (rev 3807) +++ trunk/OpenMPT/mptrack/Mainfrm.h 2014-03-02 12:18:09 UTC (rev 3808) @@ -369,7 +369,7 @@ // Midi Input Functions public: - BOOL midiOpenDevice(); + bool midiOpenDevice(bool showSettings = true); void midiCloseDevice(); void midiReceive(); void SetMidiRecordWnd(HWND hwnd) { m_hWndMidi = hwnd; } Modified: trunk/OpenMPT/mptrack/Mpt_midi.cpp =================================================================== --- trunk/OpenMPT/mptrack/Mpt_midi.cpp 2014-03-02 10:19:02 UTC (rev 3807) +++ trunk/OpenMPT/mptrack/Mpt_midi.cpp 2014-03-02 12:18:09 UTC (rev 3808) @@ -111,28 +111,31 @@ } -BOOL CMainFrame::midiOpenDevice() -//------------------------------- +bool CMainFrame::midiOpenDevice(bool showSettings) +//------------------------------------------------ { - if (shMidiIn) return TRUE; + if (shMidiIn) return true; if (midiInOpen(&shMidiIn, TrackerSettings::Instance().m_nMidiDevice, (DWORD_PTR)MidiInCallBack, 0, CALLBACK_FUNCTION) != MMSYSERR_NOERROR) { shMidiIn = NULL; // Show MIDI configuration on fail. - CMainFrame::m_nLastOptionsPage = OPTIONS_PAGE_MIDI; - CMainFrame::GetMainFrame()->OnViewOptions(); + if(showSettings) + { + CMainFrame::m_nLastOptionsPage = OPTIONS_PAGE_MIDI; + CMainFrame::GetMainFrame()->OnViewOptions(); + } // Let's see if the user updated the settings. if(midiInOpen(&shMidiIn, TrackerSettings::Instance().m_nMidiDevice, (DWORD_PTR)MidiInCallBack, 0, CALLBACK_FUNCTION) != MMSYSERR_NOERROR) { shMidiIn = NULL; - return FALSE; + return false; } } midiInStart(shMidiIn); - return TRUE; + return true; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sag...@us...> - 2014-03-03 15:42:05
|
Revision: 3811 http://sourceforge.net/p/modplug/code/3811 Author: saga-games Date: 2014-03-03 15:41:56 +0000 (Mon, 03 Mar 2014) Log Message: ----------- [Fix] Sample options: Spin button for FLAC compression didn't work. While fixing it, convert it to a slider. Modified Paths: -------------- trunk/OpenMPT/mptrack/Moptions.cpp trunk/OpenMPT/mptrack/mptrack.rc Modified: trunk/OpenMPT/mptrack/Moptions.cpp =================================================================== --- trunk/OpenMPT/mptrack/Moptions.cpp 2014-03-03 15:06:46 UTC (rev 3810) +++ trunk/OpenMPT/mptrack/Moptions.cpp 2014-03-03 15:41:56 UTC (rev 3811) @@ -730,13 +730,10 @@ m_cbnDefaultSampleFormat.SetItemData(m_cbnDefaultSampleFormat.AddString("RAW"), dfRAW); m_cbnDefaultSampleFormat.SetCurSel(TrackerSettings::Instance().m_defaultSampleFormat); - SetDlgItemInt(IDC_FLAC_COMPRESSION, TrackerSettings::Instance().m_FLACCompressionLevel); - CSpinButtonCtrl *spin = (CSpinButtonCtrl *)GetDlgItem(IDC_SPIN1); - if(spin) - { - spin->SetRange(0, 8); - spin->SetPos(TrackerSettings::Instance().m_FLACCompressionLevel); - } + CSliderCtrl *slider = static_cast<CSliderCtrl *>(GetDlgItem(IDC_SLIDER1)); + slider->SetRange(0, 8); + slider->SetTicFreq(1); + slider->SetPos(TrackerSettings::Instance().m_FLACCompressionLevel); CheckRadioButton(IDC_RADIO1, IDC_RADIO3, IDC_RADIO1 + TrackerSettings::Instance().sampleEditorKeyBehaviour); @@ -762,7 +759,7 @@ TrackerSettings::Instance().m_nFinetuneStep = GetDlgItemInt(IDC_EDIT_FINETUNE); TrackerSettings::Instance().m_SampleUndoBufferSize = SampleUndoBufferSize(GetDlgItemInt(IDC_EDIT_UNDOSIZE)); TrackerSettings::Instance().m_defaultSampleFormat = static_cast<SampleEditorDefaultFormat>(m_cbnDefaultSampleFormat.GetItemData(m_cbnDefaultSampleFormat.GetCurSel())); - TrackerSettings::Instance().m_FLACCompressionLevel = GetDlgItemInt(IDC_FLAC_COMPRESSION); + TrackerSettings::Instance().m_FLACCompressionLevel = static_cast<CSliderCtrl *>(GetDlgItem(IDC_SLIDER1))->GetPos(); TrackerSettings::Instance().sampleEditorKeyBehaviour = static_cast<SampleEditorKeyBehaviour>(GetCheckedRadioButton(IDC_RADIO1, IDC_RADIO3) -IDC_RADIO1); TrackerSettings::Instance().compressITI = IsDlgButtonChecked(IDC_COMPRESS_ITI) != MF_UNCHECKED; TrackerSettings::Instance().DefaultPlugVolumeHandling = static_cast<PLUGVOLUMEHANDLING>(m_cbnDefaultVolumeHandling.GetItemData(m_cbnDefaultVolumeHandling.GetCurSel())); Modified: trunk/OpenMPT/mptrack/mptrack.rc =================================================================== --- trunk/OpenMPT/mptrack/mptrack.rc 2014-03-03 15:06:46 UTC (rev 3810) +++ trunk/OpenMPT/mptrack/mptrack.rc 2014-03-03 15:41:56 UTC (rev 3811) @@ -140,8 +140,9 @@ LTEXT "Default Sample Format:",IDC_STATIC,12,56,102,8 COMBOBOX IDC_DEFAULT_FORMAT,114,54,42,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP LTEXT "FLAC Compression Level:",IDC_STATIC,12,74,90,8 - EDITTEXT IDC_FLAC_COMPRESSION,114,72,42,12,ES_AUTOHSCROLL | ES_NUMBER - CONTROL "",IDC_SPIN1,"msctls_updown32",UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,150,72,11,11 + LTEXT "Faster Encoding",IDC_STATIC,114,74,52,8 + CONTROL "",IDC_SLIDER1,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOOLTIPS | WS_TABSTOP,168,72,48,12 + LTEXT "Smaller Files",IDC_STATIC,222,74,40,8 LTEXT "Note Cuts:",IDC_STATIC,12,90,252,12 CONTROL "On New Note",IDC_RADIO1,"Button",BS_AUTORADIOBUTTON,18,102,246,12 CONTROL "On Key Release",IDC_RADIO2,"Button",BS_AUTORADIOBUTTON,18,114,246,12 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sag...@us...> - 2014-03-09 00:47:35
|
Revision: 3849 http://sourceforge.net/p/modplug/code/3849 Author: saga-games Date: 2014-03-09 00:47:29 +0000 (Sun, 09 Mar 2014) Log Message: ----------- [Imp] Sample tab: Use midi note velocity when previewing samples. Modified Paths: -------------- trunk/OpenMPT/mptrack/View_smp.cpp trunk/OpenMPT/mptrack/View_smp.h Modified: trunk/OpenMPT/mptrack/View_smp.cpp =================================================================== --- trunk/OpenMPT/mptrack/View_smp.cpp 2014-03-08 18:23:52 UTC (rev 3848) +++ trunk/OpenMPT/mptrack/View_smp.cpp 2014-03-09 00:47:29 UTC (rev 3849) @@ -2368,8 +2368,8 @@ } -void CViewSample::PlayNote(ModCommand::NOTE note, const SmpLength nStartPos) -//-------------------------------------------------------------------------- +void CViewSample::PlayNote(ModCommand::NOTE note, const SmpLength nStartPos, int volume) +//-------------------------------------------------------------------------------------- { CMainFrame *pMainFrm = CMainFrame::GetMainFrame(); CModDoc *pModDoc = GetDocument(); @@ -2392,7 +2392,7 @@ else if(m_nZoom < 0 && loopend - loopstart < 4) loopend = loopstart = 0; - noteChannel[note - NOTE_MIN] = pModDoc->PlayNote(note, 0, m_nSample, false, -1, loopstart, loopend, CHANNELINDEX_INVALID, nStartPos); + noteChannel[note - NOTE_MIN] = pModDoc->PlayNote(note, 0, m_nSample, false, volume, loopstart, loopend, CHANNELINDEX_INVALID, nStartPos); m_dwStatus.set(SMPSTATUS_KEYDOWN); @@ -2737,7 +2737,7 @@ const SmpLength nOldLength = sample.nLength; - if(MAX_SAMPLE_LENGTH - nOldLength < dlg.m_nSamples) + if(MAX_SAMPLE_LENGTH - nOldLength < dlg.m_nSamples && dlg.m_nEditOption != addsilence_resize) { CString str; str.Format(TEXT("Can't add silence because the new sample length would exceed maximum sample length %u."), MAX_SAMPLE_LENGTH); Reporting::Information(str); @@ -2823,8 +2823,7 @@ if(midibyte2 & 0x7F) { nVol = CMainFrame::ApplyVolumeRelatedSettings(dwMidiData, midivolume); - //pModDoc->PlayNote(nNote, 0, m_nSample, FALSE, nVol); - PlayNote(nNote); + PlayNote(nNote, 0, nVol); } break; Modified: trunk/OpenMPT/mptrack/View_smp.h =================================================================== --- trunk/OpenMPT/mptrack/View_smp.h 2014-03-08 18:23:52 UTC (rev 3848) +++ trunk/OpenMPT/mptrack/View_smp.h 2014-03-09 00:47:29 UTC (rev 3849) @@ -63,7 +63,7 @@ BOOL SetZoom(int nZoom, SmpLength centeredSample = SmpLength(-1)); int32 SampleToScreen(SmpLength pos) const; SmpLength ScreenToSample(int32 x) const; - void PlayNote(ModCommand::NOTE note, const SmpLength nStartPos = 0); + void PlayNote(ModCommand::NOTE note, const SmpLength nStartPos = 0, int volume = -1); void NoteOff(ModCommand::NOTE note); void InvalidateSample(); void SetCurSel(SmpLength nBegin, SmpLength nEnd); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sag...@us...> - 2014-03-10 19:01:15
|
Revision: 3856 http://sourceforge.net/p/modplug/code/3856 Author: saga-games Date: 2014-03-10 19:01:01 +0000 (Mon, 10 Mar 2014) Log Message: ----------- [New] Added (experimental) feature to add an existing module to a currently open module. This copies over all pattern, samples, instruments, plugins, etc. as far as it's possible. Modified Paths: -------------- trunk/OpenMPT/mptrack/CommandSet.cpp trunk/OpenMPT/mptrack/CommandSet.h trunk/OpenMPT/mptrack/InputHandler.cpp trunk/OpenMPT/mptrack/Moddoc.cpp trunk/OpenMPT/mptrack/Moddoc.h trunk/OpenMPT/mptrack/Modedit.cpp trunk/OpenMPT/mptrack/Mptrack.cpp trunk/OpenMPT/mptrack/Mptrack.h trunk/OpenMPT/mptrack/View_gen.cpp trunk/OpenMPT/mptrack/mptrack.rc trunk/OpenMPT/mptrack/mptrack_08.vcproj trunk/OpenMPT/mptrack/mptrack_10.vcxproj trunk/OpenMPT/mptrack/mptrack_10.vcxproj.filters trunk/OpenMPT/mptrack/resource.h Modified: trunk/OpenMPT/mptrack/CommandSet.cpp =================================================================== --- trunk/OpenMPT/mptrack/CommandSet.cpp 2014-03-10 18:13:55 UTC (rev 3855) +++ trunk/OpenMPT/mptrack/CommandSet.cpp 2014-03-10 19:01:01 UTC (rev 3856) @@ -654,6 +654,7 @@ DefineKeyCommand(kcSelectRow, 1903, _T("Select Row")); DefineKeyCommand(kcSelectEvent, 1904, _T("Select Event")); DefineKeyCommand(kcEditRedo, 1905, _T("Redo")); + DefineKeyCommand(kcFileAppend, 1906, _T("Append Module")); // Add new key commands here. Modified: trunk/OpenMPT/mptrack/CommandSet.h =================================================================== --- trunk/OpenMPT/mptrack/CommandSet.h 2014-03-10 18:13:55 UTC (rev 3855) +++ trunk/OpenMPT/mptrack/CommandSet.h 2014-03-10 19:01:01 UTC (rev 3856) @@ -68,6 +68,7 @@ kcStartFile=kcGlobalStart, kcFileNew=kcGlobalStart, kcFileOpen, + kcFileAppend, kcFileClose, kcFileCloseAll, kcFileSave, Modified: trunk/OpenMPT/mptrack/InputHandler.cpp =================================================================== --- trunk/OpenMPT/mptrack/InputHandler.cpp 2014-03-10 18:13:55 UTC (rev 3855) +++ trunk/OpenMPT/mptrack/InputHandler.cpp 2014-03-10 19:01:01 UTC (rev 3856) @@ -458,6 +458,7 @@ case ID_FILE_OPENTEMPLATE: return "Open &Template"; case ID_FILE_CLOSE: s = _T("&Close"); c = kcFileClose; break; case ID_FILE_CLOSEALL: s = _T("C&lose All"); c = kcFileCloseAll; break; + case ID_FILE_APPENDMODULE: s = _T("Appen&d Module..."); c = kcFileAppend; break; case ID_FILE_SAVE: s = _T("&Save"); c = kcFileSave; break; case ID_FILE_SAVE_AS: s = _T("Save &As..."); c = kcFileSaveAs; break; case ID_FILE_SAVEASTEMPLATE:s = _T("Sa&ve as Template"); c = kcFileSaveTemplate; break; @@ -528,6 +529,7 @@ #define UPDATEMENU(id) pMenu->ModifyMenu(id, MF_BYCOMMAND | MF_STRING, id, GetMenuText(id)); pMenu->GetSubMenu(0)->ModifyMenu(0, MF_BYPOSITION | MF_STRING, 0, GetMenuText(FILENEW)); UPDATEMENU(ID_FILE_OPEN); + UPDATEMENU(ID_FILE_APPENDMODULE); UPDATEMENU(ID_FILE_CLOSE); UPDATEMENU(ID_FILE_SAVE); UPDATEMENU(ID_FILE_SAVE_AS); Modified: trunk/OpenMPT/mptrack/Moddoc.cpp =================================================================== --- trunk/OpenMPT/mptrack/Moddoc.cpp 2014-03-10 18:13:55 UTC (rev 3855) +++ trunk/OpenMPT/mptrack/Moddoc.cpp 2014-03-10 19:01:01 UTC (rev 3856) @@ -79,6 +79,7 @@ ON_COMMAND(ID_FILE_SAVEASMP3, OnFileMP3Convert) ON_COMMAND(ID_FILE_SAVEMIDI, OnFileMidiConvert) ON_COMMAND(ID_FILE_SAVECOMPAT, OnFileCompatibilitySave) + ON_COMMAND(ID_FILE_APPENDMODULE, OnAppendModule) ON_COMMAND(ID_PLAYER_PLAY, OnPlayerPlay) ON_COMMAND(ID_PLAYER_PAUSE, OnPlayerPause) ON_COMMAND(ID_PLAYER_STOP, OnPlayerStop) @@ -670,6 +671,32 @@ } +void CModDoc::OnAppendModule() +//---------------------------- +{ + FileDialog::PathList files; + CTrackApp::OpenModulesDialog(files); + + CSoundFile source; + ScopedLogCapturer logcapture(*this, "Append Failures"); + + for(size_t counter = 0; counter < files.size(); counter++) + { + CMappedFile mappedFile; + if(mappedFile.Open(files[counter]) && source.Create(mappedFile.GetFile(), CSoundFile::loadCompleteModule)) + { + AppendModule(source); + source.Destroy(); + SetModified(); + } else + { + AddToLog("Unable to open source file!"); + } + } + UpdateAllViews(nullptr, HINT_MODTYPE | HINT_MODSEQUENCE); +} + + BOOL CModDoc::InitializeMod() //--------------------------- { @@ -1125,7 +1152,7 @@ chn.nPos = sampleOffset; // If start position is after loop end, set loop end to sample end so that the sample starts // playing. - if(chn.nLoopEnd < sampleOffset) + if(chn.nLoopEnd < sampleOffset) chn.nLength = chn.nLoopEnd = chn.pModSample->nLength; } @@ -2578,6 +2605,7 @@ case kcFileSaveAs: DoSave(mpt::PathString(), TRUE); break; case kcFileSaveTemplate: OnSaveTemplateModule(); break; case kcFileClose: SafeFileClose(); break; + case kcFileAppend: OnAppendModule(); break; case kcPlayPatternFromCursor: OnPatternPlay(); break; case kcPlayPatternFromStart: OnPatternRestart(); break; Modified: trunk/OpenMPT/mptrack/Moddoc.h =================================================================== --- trunk/OpenMPT/mptrack/Moddoc.h 2014-03-10 18:13:55 UTC (rev 3855) +++ trunk/OpenMPT/mptrack/Moddoc.h 2014-03-10 19:01:01 UTC (rev 3856) @@ -265,8 +265,11 @@ bool ConvertInstrumentsToSamples(); bool ConvertSamplesToInstruments(); - UINT RemovePlugs(const std::vector<bool> &keepMask); + PLUGINDEX RemovePlugs(const std::vector<bool> &keepMask); + void ClonePlugin(SNDMIXPLUGIN &target, const SNDMIXPLUGIN &source); + void AppendModule(const CSoundFile &source); + PATTERNINDEX InsertPattern(ORDERINDEX nOrd = ORDERINDEX_INVALID, ROWINDEX nRows = 64); SAMPLEINDEX InsertSample(bool bLimit = false); INSTRUMENTINDEX InsertInstrument(SAMPLEINDEX lSample = SAMPLEINDEX_INVALID, INSTRUMENTINDEX lDuplicate = INSTRUMENTINDEX_INVALID); @@ -472,6 +475,7 @@ afx_msg void OnViewEditHistory(); afx_msg void OnViewMPTHacks(); afx_msg void OnSaveTemplateModule(); + afx_msg void OnAppendModule(); //}}AFX_MSG DECLARE_MESSAGE_MAP() private: Modified: trunk/OpenMPT/mptrack/Modedit.cpp =================================================================== --- trunk/OpenMPT/mptrack/Modedit.cpp 2014-03-10 18:13:55 UTC (rev 3855) +++ trunk/OpenMPT/mptrack/Modedit.cpp 2014-03-10 19:01:01 UTC (rev 3856) @@ -17,6 +17,11 @@ #include "modsmp_ctrl.h" #include "../common/misc_util.h" #include "../common/StringFixer.h" +// VST cloning +#include "Vstplug.h" +#include "VstPresets.h" +#include "../soundlib/FileReader.h" +#include <sstream> #pragma warning(disable:4244) //"conversion from 'type1' to 'type2', possible loss of data" @@ -542,11 +547,11 @@ } -UINT CModDoc::RemovePlugs(const std::vector<bool> &keepMask) -//---------------------------------------------------------- +PLUGINDEX CModDoc::RemovePlugs(const std::vector<bool> &keepMask) +//--------------------------------------------------------------- { //Remove all plugins whose keepMask[plugindex] is false. - UINT nRemoved = 0; + PLUGINDEX nRemoved = 0; const PLUGINDEX maxPlug = MIN(MAX_MIXPLUGINS, keepMask.size()); for (PLUGINDEX nPlug = 0; nPlug < maxPlug; nPlug++) @@ -584,6 +589,29 @@ } +// Clone a plugin slot (source does not necessarily have to be from the current module) +void CModDoc::ClonePlugin(SNDMIXPLUGIN &target, const SNDMIXPLUGIN &source) +//------------------------------------------------------------------------- +{ + CVstPlugin *srcVstPlug = static_cast<CVstPlugin *>(source.pMixPlugin); + target.Destroy(); + MemCopy(target.Info, source.Info); + if(theApp.GetPluginManager()->CreateMixPlugin(target, GetrSoundFile())) + { + CVstPlugin *newVstPlug = static_cast<CVstPlugin *>(target.pMixPlugin); + newVstPlug->SetCurrentProgram(srcVstPlug->GetCurrentProgram()); + + std::ostringstream f(std::ios::out | std::ios::binary); + if(VSTPresets::SaveFile(f, *srcVstPlug, false)) + { + const std::string data = f.str(); + FileReader file(data.c_str(), data.length()); + VSTPresets::LoadFile(file, *newVstPlug); + } + } +} + + PATTERNINDEX CModDoc::InsertPattern(ORDERINDEX nOrd, ROWINDEX nRows) //------------------------------------------------------------------ { Modified: trunk/OpenMPT/mptrack/Mptrack.cpp =================================================================== --- trunk/OpenMPT/mptrack/Mptrack.cpp 2014-03-10 18:13:55 UTC (rev 3855) +++ trunk/OpenMPT/mptrack/Mptrack.cpp 2014-03-10 19:01:01 UTC (rev 3856) @@ -101,7 +101,7 @@ Reporting::Notification(mpt::String::PrintW(L"Opening \"%1\" failed. This can happen if " L"no more documents can be opened or if the file type was not " L"recognised. If the former is true, it's " - L"recommended to close some documents as otherwise crash is likely" + L"recommended to close some documents as otherwise a crash is likely" L"(currently there %2 %3 document%4 open).", filename, (nOdc == 1) ? L"is" : L"are", nOdc, (nOdc == 1) ? L"" : L"s")); } @@ -388,19 +388,19 @@ { mpt::PathString filename; char section[32]; - sprintf(section, (iMidi < 128) ? _T("Midi%d") : _T("Perc%d"), iMidi & 0x7f); + sprintf(section, (iMidi < 128) ? "Midi%d" : "Perc%d", iMidi & 0x7f); filename = file.Read<mpt::PathString>("Midi Library", section, mpt::PathString()); if(forgetSettings) file.Forget("Midi Library", section); // Check for ULTRASND.INI if(filename.empty()) { - LPCSTR pszSection = (iMidi < 128) ? _T("Melodic Patches") : _T("Drum Patches"); + const char *pszSection = (iMidi < 128) ? "Melodic Patches" : "Drum Patches"; sprintf(section, _T("%d"), iMidi & 0x7f); filename = file.Read<mpt::PathString>(pszSection, section, mpt::PathString()); if(forgetSettings) file.Forget(pszSection, section); if(filename.empty()) { - pszSection = (iMidi < 128) ? _T("Melodic Bank 0") : _T("Drum Bank 0"); + pszSection = (iMidi < 128) ? "Melodic Bank 0" : "Drum Bank 0"; filename = file.Read<mpt::PathString>(pszSection, section, mpt::PathString()); if(forgetSettings) file.Forget(pszSection, section); } @@ -1148,9 +1148,11 @@ // -! NEW_FEATURE#0023 -void CTrackApp::OnFileOpen() -//-------------------------- +void CTrackApp::OpenModulesDialog(std::vector<mpt::PathString> &files) +//-------------------------------------------------------------------- { + files.clear(); + std::vector<const char *> modExtensions = CSoundFile::GetSupportedExtensions(true); std::string exts; for(size_t i = 0; i < modExtensions.size(); i++) @@ -1162,69 +1164,47 @@ FileDialog dlg = OpenFileDialog() .AllowMultiSelect() .ExtensionFilter("All Modules|" + exts + - "|" - "Compressed Modules (*.mdz;*.s3z;*.xmz;*.itz" - #ifndef NO_MO3 - ";*.mo3" - #endif - ")|*.mdz;*.s3z;*.xmz;*.itz;*.mdr;*.zip;*.rar;*.lha;*.pma;*.lzs;*.gz" - #ifndef NO_MO3 - ";*.mo3" - #endif - "|" - "ProTracker Modules (*.mod,*.nst)|*.mod;mod.*;*.mdz;*.nst;*.m15|" - "ScreamTracker Modules (*.s3m,*.stm)|*.s3m;*.stm;*.s3z|" - "FastTracker Modules (*.xm)|*.xm;*.xmz|" - "Impulse Tracker Modules (*.it)|*.it;*.itz|" - // -> CODE#0023 - // -> DESC="IT project files (.itp)" - "Impulse Tracker Projects (*.itp)|*.itp;*.itpz|" - // -! NEW_FEATURE#0023 - "OpenMPT Modules (*.mptm)|*.mptm;*.mptmz|" - "Other Modules (mtm,okt,mdl,669,far,...)|*.mtm;*.669;*.ult;*.wow;*.far;*.mdl;*.okt;*.dmf;*.ptm;*.med;*.ams;*.dbm;*.digi;*.dsm;*.umx;*.amf;*.psm;*.mt2;*.gdm;*.imf;*.j2b|" - "Wave Files (*.wav)|*.wav|" - "Midi Files (*.mid,*.rmi)|*.mid;*.rmi;*.smf|" - "All Files (*.*)|*.*||") + "|" + "Compressed Modules (*.mdz;*.s3z;*.xmz;*.itz" +#ifndef NO_MO3 + ";*.mo3" +#endif + ")|*.mdz;*.s3z;*.xmz;*.itz;*.mdr;*.zip;*.rar;*.lha;*.pma;*.lzs;*.gz" +#ifndef NO_MO3 + ";*.mo3" +#endif + "|" + "ProTracker Modules (*.mod,*.nst)|*.mod;mod.*;*.mdz;*.nst;*.m15|" + "ScreamTracker Modules (*.s3m,*.stm)|*.s3m;*.stm;*.s3z|" + "FastTracker Modules (*.xm)|*.xm;*.xmz|" + "Impulse Tracker Modules (*.it)|*.it;*.itz|" + // -> CODE#0023 + // -> DESC="IT project files (.itp)" + "Impulse Tracker Projects (*.itp)|*.itp;*.itpz|" + // -! NEW_FEATURE#0023 + "OpenMPT Modules (*.mptm)|*.mptm;*.mptmz|" + "Other Modules (mtm,okt,mdl,669,far,...)|*.mtm;*.669;*.ult;*.wow;*.far;*.mdl;*.okt;*.dmf;*.ptm;*.med;*.ams;*.dbm;*.digi;*.dsm;*.umx;*.amf;*.psm;*.mt2;*.gdm;*.imf;*.j2b|" + "Wave Files (*.wav)|*.wav|" + "Midi Files (*.mid,*.rmi)|*.mid;*.rmi;*.smf|" + "All Files (*.*)|*.*||") .WorkingDirectory(TrackerDirectories::Instance().GetWorkingDirectory(DIR_MODS)) .FilterIndex(&nFilterIndex); if(!dlg.Show()) return; TrackerDirectories::Instance().SetWorkingDirectory(dlg.GetWorkingDirectory(), DIR_MODS); - const FileDialog::PathList &files = dlg.GetFilenames(); - for(size_t counter = 0; counter < files.size(); counter++) - { - OpenDocumentFile(files[counter]); - } + files = dlg.GetFilenames(); } - -void CTrackApp::RegisterExtensions() -//---------------------------------- +void CTrackApp::OnFileOpen() +//-------------------------- { - HKEY key; - CHAR s[512] = ""; - CHAR exename[512] = ""; - - GetModuleFileName(AfxGetInstanceHandle(), s, sizeof(s)); - GetShortPathName(s, exename, sizeof(exename)); - if (RegCreateKey(HKEY_CLASSES_ROOT, - "OpenMPTFile\\shell\\Edit\\command", - &key) == ERROR_SUCCESS) + FileDialog::PathList files; + OpenModulesDialog(files); + for(size_t counter = 0; counter < files.size(); counter++) { - strcpy(s, exename); - strcat(s, " \"%1\""); - RegSetValueEx(key, NULL, NULL, REG_SZ, (LPBYTE)s, strlen(s)+1); - RegCloseKey(key); + OpenDocumentFile(files[counter]); } - if (RegCreateKey(HKEY_CLASSES_ROOT, - "OpenMPTFile\\shell\\Edit\\ddeexec", - &key) == ERROR_SUCCESS) - { - strcpy(s, "[Edit(\"%1\")]"); - RegSetValueEx(key, NULL, NULL, REG_SZ, (LPBYTE)s, strlen(s)+1); - RegCloseKey(key); - } } Modified: trunk/OpenMPT/mptrack/Mptrack.h =================================================================== --- trunk/OpenMPT/mptrack/Mptrack.h 2014-03-10 18:13:55 UTC (rev 3855) +++ trunk/OpenMPT/mptrack/Mptrack.h 2014-03-10 19:01:01 UTC (rev 3856) @@ -225,7 +225,6 @@ static BOOL ExportMidiConfig(const mpt::PathString &filename); static BOOL ImportMidiConfig(SettingsContainer &file, bool forgetSettings = false); static BOOL ExportMidiConfig(SettingsContainer &file); - static void RegisterExtensions(); static BOOL LoadDefaultDLSBanks(); static BOOL SaveDefaultDLSBanks(); static BOOL RemoveDLSBank(UINT nBank); @@ -278,6 +277,8 @@ mpt::PathString AbsolutePathToRelative(const mpt::PathString &path) { return path.AbsolutePathToRelative(GetAppDirPath()); } mpt::PathString RelativePathToAbsolute(const mpt::PathString &path) { return path.RelativePathToAbsolute(GetAppDirPath()); } + static void OpenModulesDialog(std::vector<mpt::PathString> &files); + // Splash Screen protected: void StartSplashScreen(); Modified: trunk/OpenMPT/mptrack/View_gen.cpp =================================================================== --- trunk/OpenMPT/mptrack/View_gen.cpp 2014-03-10 18:13:55 UTC (rev 3855) +++ trunk/OpenMPT/mptrack/View_gen.cpp 2014-03-10 19:01:01 UTC (rev 3856) @@ -24,9 +24,6 @@ #include "ChannelManagerDlg.h" #include "SelectPluginDialog.h" #include "../common/StringFixer.h" -#include "VstPresets.h" -#include "../soundlib/FileReader.h" -#include <sstream> IMPLEMENT_SERIAL(CViewGlobals, CFormView, 0) @@ -431,11 +428,11 @@ { ::EnableWindow(::GetDlgItem(m_hWnd, IDC_COMBO9), FALSE); ::EnableWindow(::GetDlgItem(m_hWnd, IDC_CHECK12), FALSE); - } - else{ + } else + { ::EnableWindow(::GetDlgItem(m_hWnd, IDC_COMBO9), TRUE); ::EnableWindow(::GetDlgItem(m_hWnd, IDC_CHECK12), TRUE); - m_CbnSpecialMixProcessing.SetCurSel(pPlugin->GetMixMode()); // update#02 (fix) + m_CbnSpecialMixProcessing.SetCurSel(pPlugin->GetMixMode()); CheckDlgButton(IDC_CHECK12, pPlugin->IsExpandedMix() ? BST_CHECKED : BST_UNCHECKED); } int gain = pPlugin->GetGain(); @@ -1393,28 +1390,6 @@ } -static void ClonePlugin(const SNDMIXPLUGIN &curPlugin, SNDMIXPLUGIN &newPlugin) -//----------------------------------------------------------------------------- -{ - CVstPlugin *curVstPlug = static_cast<CVstPlugin *>(curPlugin.pMixPlugin); - newPlugin.Destroy(); - MemCopy(newPlugin.Info, curPlugin.Info); - if(theApp.GetPluginManager()->CreateMixPlugin(newPlugin, curVstPlug->GetSoundFile())) - { - CVstPlugin *newVstPlug = static_cast<CVstPlugin *>(newPlugin.pMixPlugin); - newVstPlug->SetCurrentProgram(curVstPlug->GetCurrentProgram()); - - std::ostringstream f(std::ios::out | std::ios::binary); - if(VSTPresets::SaveFile(f, *curVstPlug, false)) - { - const std::string data = f.str(); - FileReader file(data.c_str(), data.length()); - VSTPresets::LoadFile(file, *newVstPlug); - } - } -} - - void CViewGlobals::OnClonePlug() //------------------------------ { @@ -1438,7 +1413,7 @@ const SNDMIXPLUGIN &curPlugin = sndFile.m_MixPlugins[m_nCurrentPlugin]; SNDMIXPLUGIN &newPlugin = sndFile.m_MixPlugins[emptySlots[toIndex]]; - ClonePlugin(curPlugin, newPlugin); + GetDocument()->ClonePlugin(newPlugin, curPlugin); if(curPlugin.IsOutputToMaster() || toIndex == emptySlots.size() - 1) { @@ -1528,12 +1503,12 @@ if(!bUxInited) { // retrieve path for uxtheme.dll... - TCHAR szPath[MAX_PATH]; - SHGetSpecialFolderPath(0, szPath, CSIDL_SYSTEM, FALSE); - strncat(szPath, _TEXT("\\uxtheme.dll"), MAX_PATH - (_tcslen(szPath) + 1)); + WCHAR szPath[MAX_PATH]; + SHGetSpecialFolderPathW(0, szPath, CSIDL_SYSTEM, FALSE); + wcsncat(szPath, L"\\uxtheme.dll", MAX_PATH - (wcslen(szPath) + 1)); // ...and try to load it - HMODULE uxlib = LoadLibrary(szPath); + HMODULE uxlib = LoadLibraryW(szPath); if(uxlib) hETDT = (ETDT)GetProcAddress(uxlib, "EnableThemeDialogTexture"); bUxInited = true; Modified: trunk/OpenMPT/mptrack/mptrack.rc =================================================================== --- trunk/OpenMPT/mptrack/mptrack.rc 2014-03-10 18:13:55 UTC (rev 3855) +++ trunk/OpenMPT/mptrack/mptrack.rc 2014-03-10 19:01:01 UTC (rev 3856) @@ -1975,6 +1975,7 @@ END MENUITEM "&Open...\tCtrl+O", ID_FILE_OPEN MENUITEM "Open template", 65535 + MENUITEM "Appen&d Module...", ID_FILE_APPENDMODULE MENUITEM "&Close", ID_FILE_CLOSE MENUITEM "C&lose All", ID_FILE_CLOSEALL MENUITEM "&Save\tCtrl+S", ID_FILE_SAVE Modified: trunk/OpenMPT/mptrack/mptrack_08.vcproj =================================================================== --- trunk/OpenMPT/mptrack/mptrack_08.vcproj 2014-03-10 18:13:55 UTC (rev 3855) +++ trunk/OpenMPT/mptrack/mptrack_08.vcproj 2014-03-10 19:01:01 UTC (rev 3856) @@ -229,6 +229,10 @@ > </File> <File + RelativePath=".\AppendModule.cpp" + > + </File> + <File RelativePath="..\sounddsp\AGC.cpp" > </File> Modified: trunk/OpenMPT/mptrack/mptrack_10.vcxproj =================================================================== --- trunk/OpenMPT/mptrack/mptrack_10.vcxproj 2014-03-10 18:13:55 UTC (rev 3855) +++ trunk/OpenMPT/mptrack/mptrack_10.vcxproj 2014-03-10 19:01:01 UTC (rev 3856) @@ -515,6 +515,7 @@ <ClCompile Include="..\unarchiver\unrar.cpp" /> <ClCompile Include="..\unarchiver\unzip.cpp" /> <ClCompile Include="AbstractVstEditor.cpp" /> + <ClCompile Include="AppendModule.cpp" /> <ClCompile Include="AutoSaver.cpp" /> <ClCompile Include="Autotune.cpp" /> <ClCompile Include="ChannelManagerDlg.cpp" /> Modified: trunk/OpenMPT/mptrack/mptrack_10.vcxproj.filters =================================================================== --- trunk/OpenMPT/mptrack/mptrack_10.vcxproj.filters 2014-03-10 18:13:55 UTC (rev 3855) +++ trunk/OpenMPT/mptrack/mptrack_10.vcxproj.filters 2014-03-10 19:01:01 UTC (rev 3856) @@ -508,6 +508,9 @@ <ClCompile Include="..\sounddev\SoundDeviceThread.cpp"> <Filter>Source Files\sounddev</Filter> </ClCompile> + <ClCompile Include="AppendModule.cpp"> + <Filter>Header Files\mptrack</Filter> + </ClCompile> </ItemGroup> <ItemGroup> <ClInclude Include="..\soundlib\Loaders.h"> Modified: trunk/OpenMPT/mptrack/resource.h =================================================================== --- trunk/OpenMPT/mptrack/resource.h 2014-03-10 18:13:55 UTC (rev 3855) +++ trunk/OpenMPT/mptrack/resource.h 2014-03-10 19:01:01 UTC (rev 3856) @@ -1233,6 +1233,7 @@ #define ID_PLUG_RECORD_MIDIOUT 44610 #define ID_MRU_LIST_FIRST 44611 #define ID_MRU_LIST_LAST 44642 +#define ID_FILE_APPENDMODULE 44643 // Next default values for new objects // @@ -1240,7 +1241,7 @@ #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_3D_CONTROLS 1 #define _APS_NEXT_RESOURCE_VALUE 536 -#define _APS_NEXT_COMMAND_VALUE 44643 +#define _APS_NEXT_COMMAND_VALUE 44644 #define _APS_NEXT_CONTROL_VALUE 2479 #define _APS_NEXT_SYMED_VALUE 901 #endif This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sag...@us...> - 2014-03-10 23:20:43
|
Revision: 3864 http://sourceforge.net/p/modplug/code/3864 Author: saga-games Date: 2014-03-10 23:20:37 +0000 (Mon, 10 Mar 2014) Log Message: ----------- [Fix] Sample/instrument tab: Default format filter settings were off by one . Modified Paths: -------------- trunk/OpenMPT/mptrack/Ctrl_ins.cpp trunk/OpenMPT/mptrack/Ctrl_smp.cpp Modified: trunk/OpenMPT/mptrack/Ctrl_ins.cpp =================================================================== --- trunk/OpenMPT/mptrack/Ctrl_ins.cpp 2014-03-10 22:32:44 UTC (rev 3863) +++ trunk/OpenMPT/mptrack/Ctrl_ins.cpp 2014-03-10 23:20:37 UTC (rev 3864) @@ -1735,7 +1735,7 @@ } SanitizeFilename(szFileName); - int index = (m_sndFile.GetType() == MOD_TYPE_XM || !TrackerSettings::Instance().compressITI) ? 0 : 1; + int index = (m_sndFile.GetType() == MOD_TYPE_XM || !TrackerSettings::Instance().compressITI) ? 1 : 2; FileDialog dlg = SaveFileDialog() .DefaultExtension(m_sndFile.GetType() == MOD_TYPE_XM ? "xi" : "iti") .DefaultFilename(szFileName) Modified: trunk/OpenMPT/mptrack/Ctrl_smp.cpp =================================================================== --- trunk/OpenMPT/mptrack/Ctrl_smp.cpp 2014-03-10 22:32:44 UTC (rev 3863) +++ trunk/OpenMPT/mptrack/Ctrl_smp.cpp 2014-03-10 23:20:37 UTC (rev 3864) @@ -1045,13 +1045,14 @@ switch(defaultFormat) { case dfWAV: - filter = 0; + filter = 1; break; case dfFLAC: default: - filter = 1; + filter = 2; + break; case dfRAW: - filter = 2; + filter = 3; } FileDialog dlg = SaveFileDialog() This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sag...@us...> - 2014-03-10 23:39:52
|
Revision: 3865 http://sourceforge.net/p/modplug/code/3865 Author: saga-games Date: 2014-03-10 23:39:45 +0000 (Mon, 10 Mar 2014) Log Message: ----------- [Fix] FLAC compression slider in options dialog didn't mark the dialog as modified. Modified Paths: -------------- trunk/OpenMPT/mptrack/Moptions.cpp trunk/OpenMPT/mptrack/Moptions.h Modified: trunk/OpenMPT/mptrack/Moptions.cpp =================================================================== --- trunk/OpenMPT/mptrack/Moptions.cpp 2014-03-10 23:20:37 UTC (rev 3864) +++ trunk/OpenMPT/mptrack/Moptions.cpp 2014-03-10 23:39:45 UTC (rev 3865) @@ -692,6 +692,7 @@ BEGIN_MESSAGE_MAP(COptionsSampleEditor, CPropertyPage) + ON_WM_HSCROLL() ON_EN_CHANGE(IDC_EDIT_UNDOSIZE, OnUndoSizeChanged) ON_EN_CHANGE(IDC_EDIT_FINETUNE, OnSettingsChanged) ON_EN_CHANGE(IDC_FLAC_COMPRESSION, OnSettingsChanged) Modified: trunk/OpenMPT/mptrack/Moptions.h =================================================================== --- trunk/OpenMPT/mptrack/Moptions.h 2014-03-10 23:20:37 UTC (rev 3864) +++ trunk/OpenMPT/mptrack/Moptions.h 2014-03-10 23:39:45 UTC (rev 3865) @@ -146,6 +146,7 @@ virtual void DoDataExchange(CDataExchange* pDX); virtual BOOL OnSetActive(); + afx_msg void OnHScroll(UINT /*nSBCode*/, UINT /*nPos*/, CScrollBar* /*pScrollBar*/) { OnSettingsChanged(); } afx_msg void OnSettingsChanged() { SetModified(TRUE); } afx_msg void OnUndoSizeChanged(); DECLARE_MESSAGE_MAP(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sag...@us...> - 2014-03-11 17:17:04
|
Revision: 3870 http://sourceforge.net/p/modplug/code/3870 Author: saga-games Date: 2014-03-11 17:16:55 +0000 (Tue, 11 Mar 2014) Log Message: ----------- [Mod] Unify DSP and EQ setup tabs into one tab. Modified Paths: -------------- trunk/OpenMPT/mptrack/MainFrm.cpp trunk/OpenMPT/mptrack/Mod2wave.cpp trunk/OpenMPT/mptrack/Moptions.h trunk/OpenMPT/mptrack/Mpdlgs.cpp trunk/OpenMPT/mptrack/Mpdlgs.h trunk/OpenMPT/mptrack/TrackerSettings.cpp trunk/OpenMPT/mptrack/TrackerSettings.h trunk/OpenMPT/mptrack/mptrack.rc trunk/OpenMPT/mptrack/resource.h Modified: trunk/OpenMPT/mptrack/MainFrm.cpp =================================================================== --- trunk/OpenMPT/mptrack/MainFrm.cpp 2014-03-11 16:18:35 UTC (rev 3869) +++ trunk/OpenMPT/mptrack/MainFrm.cpp 2014-03-11 17:16:55 UTC (rev 3870) @@ -218,7 +218,7 @@ } -VOID CMainFrame::Initialize() +void CMainFrame::Initialize() //--------------------------- { //Adding version number to the frame title @@ -1850,12 +1850,8 @@ COptionsSampleEditor smpeditor; COptionsKeyboard keyboard; COptionsColors colors; - COptionsPlayer playerdlg; COptionsMixer mixerdlg; CMidiSetupDlg mididlg(TrackerSettings::Instance().m_dwMidiSetup, TrackerSettings::Instance().m_nMidiDevice); -#ifndef NO_EQ - CEQSetupDlg eqdlg(&TrackerSettings::Instance().m_EqSettings); -#endif CAutoSaverGUI autosavedlg(m_pAutoSaver); //rewbs.AutoSaver CUpdateSetupDlg updatedlg; #if defined(MPT_SETTINGS_CACHE) @@ -1864,12 +1860,10 @@ dlg.AddPage(&general); dlg.AddPage(&sounddlg); dlg.AddPage(&mixerdlg); -#if !defined(NO_REVERB) || !defined(NO_DSP) || !defined(NO_EQ) || !defined(NO_AGC) +#if !defined(NO_REVERB) || !defined(NO_DSP) || !defined(NO_EQ) || !defined(NO_AGC) || !defined(NO_EQ) + COptionsPlayer playerdlg(TrackerSettings::Instance().m_EqSettings); dlg.AddPage(&playerdlg); #endif -#ifndef NO_EQ - dlg.AddPage(&eqdlg); -#endif dlg.AddPage(&smpeditor); dlg.AddPage(&keyboard); dlg.AddPage(&colors); Modified: trunk/OpenMPT/mptrack/Mod2wave.cpp =================================================================== --- trunk/OpenMPT/mptrack/Mod2wave.cpp 2014-03-11 16:18:35 UTC (rev 3869) +++ trunk/OpenMPT/mptrack/Mod2wave.cpp 2014-03-11 17:16:55 UTC (rev 3870) @@ -645,11 +645,9 @@ CPropertySheet dlg("Mixer Settings", this); COptionsMixer mixerpage; dlg.AddPage(&mixerpage); - COptionsPlayer dsppage; +#if !defined(NO_REVERB) || !defined(NO_DSP) || !defined(NO_EQ) || !defined(NO_AGC) || !defined(NO_EQ) + COptionsPlayer dsppage(TrackerSettings::Instance().m_EqSettings); dlg.AddPage(&dsppage); -#ifndef NO_EQ - CEQSetupDlg eqpage(&TrackerSettings::Instance().m_EqSettings); - dlg.AddPage(&eqpage); #endif dlg.DoModal(); } Modified: trunk/OpenMPT/mptrack/Moptions.h =================================================================== --- trunk/OpenMPT/mptrack/Moptions.h 2014-03-11 16:18:35 UTC (rev 3869) +++ trunk/OpenMPT/mptrack/Moptions.h 2014-03-11 17:16:55 UTC (rev 3870) @@ -18,7 +18,6 @@ OPTIONS_PAGE_SOUNDCARD, OPTIONS_PAGE_MIXER, OPTIONS_PAGE_PLAYER, - OPTIONS_PAGE_EQ, OPTIONS_PAGE_SAMPLEDITOR, OPTIONS_PAGE_KEYBOARD, OPTIONS_PAGE_COLORS, Modified: trunk/OpenMPT/mptrack/Mpdlgs.cpp =================================================================== --- trunk/OpenMPT/mptrack/Mpdlgs.cpp 2014-03-11 16:18:35 UTC (rev 3869) +++ trunk/OpenMPT/mptrack/Mpdlgs.cpp 2014-03-11 17:16:55 UTC (rev 3870) @@ -1029,10 +1029,111 @@ } +//////////////////////////////////////////////////////////////////////////////// +// +// CEQSavePresetDlg +// + +//==================================== +class CEQSavePresetDlg: public CDialog +//==================================== +{ +protected: + EQPreset &m_EQ; + +public: + CEQSavePresetDlg(EQPreset &eq, CWnd *parent = nullptr) : CDialog(IDD_SAVEPRESET, parent), m_EQ(eq) { } + BOOL OnInitDialog(); + void OnOK(); +}; + + +BOOL CEQSavePresetDlg::OnInitDialog() +//----------------------------------- +{ + CComboBox *pCombo = (CComboBox *)GetDlgItem(IDC_COMBO1); + if (pCombo) + { + int ndx = 0; + for (UINT i=0; i<4; i++) + { + int n = pCombo->AddString(TrackerSettings::Instance().m_EqUserPresets[i].szName); + pCombo->SetItemData( n, i); + if (!lstrcmpi(TrackerSettings::Instance().m_EqUserPresets[i].szName, m_EQ.szName)) ndx = n; + } + pCombo->SetCurSel(ndx); + } + SetDlgItemText(IDC_EDIT1, m_EQ.szName); + return TRUE; +} + + +void CEQSavePresetDlg::OnOK() +//--------------------------- +{ + CComboBox *pCombo = (CComboBox *)GetDlgItem(IDC_COMBO1); + if (pCombo) + { + int n = pCombo->GetCurSel(); + if ((n < 0) || (n >= 4)) n = 0; + GetDlgItemText(IDC_EDIT1, m_EQ.szName, CountOf(m_EQ.szName)); + mpt::String::SetNullTerminator(m_EQ.szName); + TrackerSettings::Instance().m_EqUserPresets[n] = m_EQ; + } + CDialog::OnOK(); +} + + +void CEQSlider::Init(UINT nID, UINT n, CWnd *parent) +//-------------------------------------------------- +{ + m_nSliderNo = n; + m_pParent = parent; + SubclassDlgItem(nID, parent); +} + + +BOOL CEQSlider::PreTranslateMessage(MSG *pMsg) +//-------------------------------------------- +{ + if ((pMsg) && (pMsg->message == WM_RBUTTONDOWN) && (m_pParent)) + { + m_x = LOWORD(pMsg->lParam); + m_y = HIWORD(pMsg->lParam); + m_pParent->PostMessage(WM_COMMAND, ID_EQSLIDER_BASE+m_nSliderNo, 0); + } + return CSliderCtrl::PreTranslateMessage(pMsg); +} + + ////////////////////////////////////////////////////////// -// COptionsPlayer +// COptionsPlayer - DSP / EQ settings + +#define EQ_MAX_FREQS 5 + +const UINT gEqBandFreqs[MAX_EQ_BANDS][EQ_MAX_FREQS] = +{ + { 100, 125, 150, 200, 250 }, + { 300, 350, 400, 450, 500 }, + { 600, 700, 800, 900, 1000 }, + { 1250, 1500, 1750, 2000, 2500 }, + { 3000, 3500, 4000, 4500, 5000 }, + { 6000, 7000, 8000, 9000, 10000 }, +}; + BEGIN_MESSAGE_MAP(COptionsPlayer, CPropertyPage) + // EQ + ON_WM_VSCROLL() + ON_COMMAND(IDC_BUTTON1, OnEqUser1) + ON_COMMAND(IDC_BUTTON2, OnEqUser2) + ON_COMMAND(IDC_BUTTON3, OnEqUser3) + ON_COMMAND(IDC_BUTTON4, OnEqUser4) + ON_COMMAND(IDC_BUTTON5, OnSavePreset) + ON_COMMAND_RANGE(ID_EQSLIDER_BASE, ID_EQSLIDER_BASE+MAX_EQ_BANDS, OnSliderMenu) + ON_COMMAND_RANGE(ID_EQMENU_BASE, ID_EQMENU_BASE+EQ_MAX_FREQS, OnSliderFreq) + + // DSP ON_WM_HSCROLL() ON_CBN_SELCHANGE(IDC_COMBO2, OnSettingsChanged) ON_COMMAND(IDC_CHECK1, OnSettingsChanged) @@ -1063,10 +1164,18 @@ BOOL COptionsPlayer::OnInitDialog() //--------------------------------- { - DWORD dwQuality; + CPropertyPage::OnInitDialog(); - CPropertyPage::OnInitDialog(); - dwQuality = TrackerSettings::Instance().MixerDSPMask; +#ifndef NO_EQ + for (UINT i = 0; i < MAX_EQ_BANDS; i++) + { + m_Sliders[i].Init(IDC_SLIDER7 + i, i, this); + m_Sliders[i].SetRange(0, 32); + m_Sliders[i].SetTicFreq(4); + } +#endif + + DWORD dwQuality = TrackerSettings::Instance().MixerDSPMask; // Effects #ifndef NO_DSP if (dwQuality & SNDDSP_MEGABASS) CheckDlgButton(IDC_CHECK1, MF_CHECKED); @@ -1149,6 +1258,8 @@ m_SbSurroundDepth.ShowWindow(SW_HIDE); m_SbSurroundDelay.ShowWindow(SW_HIDE); #endif + + UpdateDialog(); return TRUE; } @@ -1157,6 +1268,14 @@ //-------------------------------- { CMainFrame::m_nLastOptionsPage = OPTIONS_PAGE_PLAYER; + + SetDlgItemText(IDC_EQ_WARNING, + "Note: This EQ is applied to any and all of the modules " + "that you load in OpenMPT; its settings are stored globally, " + "rather than in each file. This means that you should avoid " + "using it as part of your production process, and instead only " + "use it to correct deficiencies in your audio hardware."); + return CPropertyPage::OnSetActive(); } @@ -1248,166 +1367,50 @@ } -//////////////////////////////////////////////////////////////////////////////// -// -// EQ Globals -// - -#define EQ_MAX_FREQS 5 - -const UINT gEqBandFreqs[MAX_EQ_BANDS][EQ_MAX_FREQS] = +void COptionsPlayer::UpdateEQ(bool bReset) +//---------------------------------------- { - { 100, 125, 150, 200, 250 }, - { 300, 350, 400, 450, 500 }, - { 600, 700, 800, 900, 1000 }, - { 1250, 1500, 1750, 2000, 2500 }, - { 3000, 3500, 4000, 4500, 5000 }, - { 6000, 7000, 8000, 9000, 10000 }, -}; - - -const EQPreset CEQSetupDlg::gEQPresets[] = -{ - { "Flat", {16,16,16,16,16,16}, { 125, 300, 600, 1250, 4000, 8000 } }, // Flat - { "Jazz", {16,16,24,20,20,14}, { 125, 300, 600, 1250, 4000, 8000 } }, // Jazz - { "Pop", {24,16,16,21,16,26}, { 125, 300, 600, 1250, 4000, 8000 } }, // Pop - { "Rock", {24,16,24,16,24,22}, { 125, 300, 600, 1250, 4000, 8000 } }, // Rock - { "Concert",{22,18,26,16,22,16}, { 125, 300, 600, 1250, 4000, 8000 } }, // Concert - { "Clear", {20,16,16,22,24,26}, { 125, 300, 600, 1250, 4000, 8000 } } // Clear -}; - - -EQPreset CEQSetupDlg::gUserPresets[] = -{ - { "User1", {16,16,16,16,16,16}, { 125, 300, 600, 1250, 4000, 8000 } }, // User1 - { "User2", {16,16,16,16,16,16}, { 125, 300, 600, 1250, 4000, 8000 } }, // User2 - { "User3", {16,16,16,16,16,16}, { 125, 300, 600, 1250, 4000, 8000 } }, // User3 - { "User4", {16,16,16,16,16,16}, { 150, 500, 1000, 2500, 5000, 10000 } } // User4 -}; - - -//////////////////////////////////////////////////////////////////////////////// -// -// CEQSavePresetDlg -// - -//==================================== -class CEQSavePresetDlg: public CDialog -//==================================== -{ -protected: - EQPreset *m_pEq; - -public: - CEQSavePresetDlg(EQPreset *pEq, CWnd *parent=NULL):CDialog(IDD_SAVEPRESET, parent) { m_pEq = pEq; } - BOOL OnInitDialog(); - VOID OnOK(); -}; - - -BOOL CEQSavePresetDlg::OnInitDialog() -//----------------------------------- -{ - CComboBox *pCombo = (CComboBox *)GetDlgItem(IDC_COMBO1); - if (pCombo) - { - int ndx = 0; - for (UINT i=0; i<4; i++) - { - int n = pCombo->AddString(CEQSetupDlg::gUserPresets[i].szName); - pCombo->SetItemData( n, i); - if (!lstrcmpi(CEQSetupDlg::gUserPresets[i].szName, m_pEq->szName)) ndx = n; - } - pCombo->SetCurSel(ndx); - } - SetDlgItemText(IDC_EDIT1, m_pEq->szName); - return TRUE; +#ifndef NO_EQ + CriticalSection cs; + if(CMainFrame::GetMainFrame()->GetSoundFilePlaying()) + CMainFrame::GetMainFrame()->GetSoundFilePlaying()->SetEQGains(m_EQPreset.Gains, MAX_EQ_BANDS, m_EQPreset.Freqs, bReset); +#endif } -VOID CEQSavePresetDlg::OnOK() -//--------------------------- +void COptionsPlayer::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar *pScrollBar) +//----------------------------------------------------------------------------- { - CComboBox *pCombo = (CComboBox *)GetDlgItem(IDC_COMBO1); - if (pCombo) + CDialog::OnVScroll(nSBCode, nPos, pScrollBar); + for (UINT i=0; i<MAX_EQ_BANDS; i++) { - int n = pCombo->GetCurSel(); - if ((n < 0) || (n >= 4)) n = 0; - GetDlgItemText(IDC_EDIT1, m_pEq->szName, sizeof(m_pEq->szName)); - m_pEq->szName[sizeof(m_pEq->szName)-1] = 0; - CEQSetupDlg::gUserPresets[n] = *m_pEq; + int n = 32 - m_Sliders[i].GetPos(); + if ((n >= 0) && (n <= 32)) m_EQPreset.Gains[i] = n; } - CDialog::OnOK(); + UpdateEQ(FALSE); } -//////////////////////////////////////////////////////////////////////////////// -// -// CEQSetupDlg -// - - -VOID CEQSlider::Init(UINT nID, UINT n, CWnd *parent) -//-------------------------------------------------- +void COptionsPlayer::LoadEQPreset(const EQPreset &preset) +//------------------------------------------------------- { - m_nSliderNo = n; - m_pParent = parent; - SubclassDlgItem(nID, parent); + m_EQPreset = preset; + UpdateEQ(TRUE); + UpdateDialog(); } -BOOL CEQSlider::PreTranslateMessage(MSG *pMsg) -//-------------------------------------------- +void COptionsPlayer::OnSavePreset() +//--------------------------------- { - if ((pMsg) && (pMsg->message == WM_RBUTTONDOWN) && (m_pParent)) + CEQSavePresetDlg dlg(m_EQPreset, this); + if (dlg.DoModal() == IDOK) { - m_x = LOWORD(pMsg->lParam); - m_y = HIWORD(pMsg->lParam); - m_pParent->PostMessage(WM_COMMAND, ID_EQSLIDER_BASE+m_nSliderNo, 0); + UpdateDialog(); } - return CSliderCtrl::PreTranslateMessage(pMsg); } -// CEQSetupDlg -BEGIN_MESSAGE_MAP(CEQSetupDlg, CDialog) - ON_WM_VSCROLL() - ON_COMMAND(IDC_BUTTON1, OnEqFlat) - ON_COMMAND(IDC_BUTTON2, OnEqJazz) - ON_COMMAND(IDC_BUTTON5, OnEqPop) - ON_COMMAND(IDC_BUTTON6, OnEqRock) - ON_COMMAND(IDC_BUTTON7, OnEqConcert) - ON_COMMAND(IDC_BUTTON8, OnEqClear) - ON_COMMAND(IDC_BUTTON3, OnEqUser1) - ON_COMMAND(IDC_BUTTON4, OnEqUser2) - ON_COMMAND(IDC_BUTTON9, OnEqUser3) - ON_COMMAND(IDC_BUTTON10,OnEqUser4) - ON_COMMAND(IDC_BUTTON13,OnSavePreset) - ON_COMMAND_RANGE(ID_EQSLIDER_BASE, ID_EQSLIDER_BASE+MAX_EQ_BANDS, OnSliderMenu) - ON_COMMAND_RANGE(ID_EQMENU_BASE, ID_EQMENU_BASE+EQ_MAX_FREQS, OnSliderFreq) -END_MESSAGE_MAP() - - -BOOL CEQSetupDlg::OnInitDialog() -//------------------------------ -{ - CDialog::OnInitDialog(); - m_Sliders[0].Init(IDC_SLIDER1, 0, this); - m_Sliders[1].Init(IDC_SLIDER3, 1, this); - m_Sliders[2].Init(IDC_SLIDER5, 2, this); - m_Sliders[3].Init(IDC_SLIDER7, 3, this); - m_Sliders[4].Init(IDC_SLIDER8, 4, this); - m_Sliders[5].Init(IDC_SLIDER9, 5, this); - for (UINT i=0; i<MAX_EQ_BANDS; i++) - { - m_Sliders[i].SetRange(0, 32); - m_Sliders[i].SetTicFreq(4); - } - UpdateDialog(); - return TRUE; -} - - static void f2s(UINT f, LPSTR s) //------------------------------ { @@ -1429,74 +1432,29 @@ } -void CEQSetupDlg::UpdateDialog() -//------------------------------ +void COptionsPlayer::UpdateDialog() +//--------------------------------- { - const USHORT uTextIds[MAX_EQ_BANDS] = {IDC_TEXT1, IDC_TEXT2, IDC_TEXT3, IDC_TEXT4, IDC_TEXT5, IDC_TEXT6}; CHAR s[32]; for (UINT i=0; i<MAX_EQ_BANDS; i++) { - int n = 32 - m_pEqPreset->Gains[i]; + int n = 32 - m_EQPreset.Gains[i]; if (n < 0) n = 0; if (n > 32) n = 32; if (n != (m_Sliders[i].GetPos() & 0xFFFF)) m_Sliders[i].SetPos(n); - f2s(m_pEqPreset->Freqs[i], s); - SetDlgItemText(uTextIds[i], s); - SetDlgItemText(IDC_BUTTON3, gUserPresets[0].szName); - SetDlgItemText(IDC_BUTTON4, gUserPresets[1].szName); - SetDlgItemText(IDC_BUTTON9, gUserPresets[2].szName); - SetDlgItemText(IDC_BUTTON10,gUserPresets[3].szName); + f2s(m_EQPreset.Freqs[i], s); + SetDlgItemText(IDC_TEXT1 + i, s); + for(size_t i = 0; i < CountOf(TrackerSettings::Instance().m_EqUserPresets); i++) + { + SetDlgItemText(IDC_BUTTON1 + i, TrackerSettings::Instance().m_EqUserPresets[i].szName); + } } } -void CEQSetupDlg::UpdateEQ(BOOL bReset) -//------------------------------------- +void COptionsPlayer::OnSliderMenu(UINT nID) +//----------------------------------------- { -#ifndef NO_EQ - CriticalSection cs; - if(CMainFrame::GetMainFrame()->GetSoundFilePlaying()) - CMainFrame::GetMainFrame()->GetSoundFilePlaying()->SetEQGains( m_pEqPreset->Gains, MAX_EQ_BANDS, m_pEqPreset->Freqs, bReset?true:false); -#endif -} - - -void CEQSetupDlg::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar *pScrollBar) -//-------------------------------------------------------------------------- -{ - CDialog::OnVScroll(nSBCode, nPos, pScrollBar); - for (UINT i=0; i<MAX_EQ_BANDS; i++) - { - int n = 32 - m_Sliders[i].GetPos(); - if ((n >= 0) && (n <= 32)) m_pEqPreset->Gains[i] = n; - } - UpdateEQ(FALSE); -} - - -void CEQSetupDlg::LoadEQPreset(const EQPreset &preset) -//---------------------------------------------------- -{ - *m_pEqPreset = preset; - UpdateEQ(TRUE); - UpdateDialog(); -} - - -void CEQSetupDlg::OnSavePreset() -//------------------------------ -{ - CEQSavePresetDlg dlg(m_pEqPreset, this); - if (dlg.DoModal() == IDOK) - { - UpdateDialog(); - } -} - - -void CEQSetupDlg::OnSliderMenu(UINT nID) -//-------------------------------------- -{ UINT n = nID - ID_EQSLIDER_BASE; if (n < MAX_EQ_BANDS) { @@ -1508,7 +1466,7 @@ for (UINT i = 0; i < EQ_MAX_FREQS; i++) { DWORD d = MF_STRING; - if (m_pEqPreset->Freqs[m_nSliderMenu] == pFreqs[i]) d |= MF_CHECKED; + if (m_EQPreset.Freqs[m_nSliderMenu] == pFreqs[i]) d |= MF_CHECKED; f2s(pFreqs[i], s); ::AppendMenu(hMenu, d, ID_EQMENU_BASE+i, s); } @@ -1520,16 +1478,16 @@ } -void CEQSetupDlg::OnSliderFreq(UINT nID) -//-------------------------------------- +void COptionsPlayer::OnSliderFreq(UINT nID) +//----------------------------------------- { UINT n = nID - ID_EQMENU_BASE; if ((m_nSliderMenu < MAX_EQ_BANDS) && (n < EQ_MAX_FREQS)) { UINT f = gEqBandFreqs[m_nSliderMenu][n]; - if (f != m_pEqPreset->Freqs[m_nSliderMenu]) + if (f != m_EQPreset.Freqs[m_nSliderMenu]) { - m_pEqPreset->Freqs[m_nSliderMenu] = f; + m_EQPreset.Freqs[m_nSliderMenu] = f; UpdateEQ(TRUE); UpdateDialog(); } @@ -1537,21 +1495,6 @@ } -BOOL CEQSetupDlg::OnSetActive() -//----------------------------- -{ - CMainFrame::m_nLastOptionsPage = OPTIONS_PAGE_EQ; - SetDlgItemText(IDC_EQ_WARNING, - "Note: This EQ, when enabled from Player tab, is applied to " - "any and all of the modules " - "that you load in OpenMPT; its settings are stored globally, " - "rather than in each file. This means that you should avoid " - "using it as part of your production process, and instead only " - "use it to correct deficiencies in your audio hardware."); - return CPropertyPage::OnSetActive(); -} - - ///////////////////////////////////////////////////////////// // CMidiSetupDlg Modified: trunk/OpenMPT/mptrack/Mpdlgs.h =================================================================== --- trunk/OpenMPT/mptrack/Mpdlgs.h 2014-03-11 16:18:35 UTC (rev 3869) +++ trunk/OpenMPT/mptrack/Mpdlgs.h 2014-03-11 17:16:55 UTC (rev 3870) @@ -122,32 +122,6 @@ }; -//======================================== -class COptionsPlayer: public CPropertyPage -//======================================== -{ -protected: - CComboBox m_CbnReverbPreset; - CSliderCtrl m_SbXBassDepth, m_SbXBassRange; - CSliderCtrl m_SbSurroundDepth, m_SbSurroundDelay; - CSliderCtrl m_SbReverbDepth; - -public: - COptionsPlayer():CPropertyPage(IDD_OPTIONS_PLAYER) {} - -protected: - virtual BOOL OnInitDialog(); - virtual void OnOK(); - virtual BOOL OnSetActive(); - virtual void DoDataExchange(CDataExchange* pDX); - afx_msg void OnHScroll(UINT, UINT, CScrollBar *); - afx_msg void OnSettingsChanged() { SetModified(TRUE); } - - DECLARE_MESSAGE_MAP() -}; - - - //================================= class CEQSlider: public CSliderCtrl //================================= @@ -163,58 +137,45 @@ }; -//===================================== -class CEQSetupDlg: public CPropertyPage -//===================================== +//======================================== +class COptionsPlayer: public CPropertyPage +//======================================== { protected: + CComboBox m_CbnReverbPreset; + CSliderCtrl m_SbXBassDepth, m_SbXBassRange; + CSliderCtrl m_SbSurroundDepth, m_SbSurroundDelay; + CSliderCtrl m_SbReverbDepth; + CEQSlider m_Sliders[MAX_EQ_BANDS]; - EQPreset *m_pEqPreset; + EQPreset &m_EQPreset; UINT m_nSliderMenu; public: - CEQSetupDlg(EQPreset *pEq):CPropertyPage(IDD_SETUP_EQ) { m_pEqPreset = pEq; } - void UpdateDialog(); - void UpdateEQ(BOOL bReset); + COptionsPlayer(EQPreset &eqPreset) : CPropertyPage(IDD_OPTIONS_PLAYER), m_EQPreset(eqPreset) {} -public: - static const EQPreset gEQPresets[]; - static EQPreset gUserPresets[]; - protected: virtual BOOL OnInitDialog(); + virtual void OnOK(); virtual BOOL OnSetActive(); + virtual void DoDataExchange(CDataExchange* pDX); + afx_msg void OnHScroll(UINT, UINT, CScrollBar *); afx_msg void OnSettingsChanged() { SetModified(TRUE); } + afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar); - - enum - { - EQPRESET_FLAT = 0, - EQPRESET_JAZZ, - EQPRESET_POP, - EQPRESET_ROCK, - EQPRESET_CONCERT, - EQPRESET_CLEAR, - }; - - afx_msg void OnEqFlat() { LoadEQPreset(gEQPresets[EQPRESET_FLAT]); }; - afx_msg void OnEqJazz() { LoadEQPreset(gEQPresets[EQPRESET_JAZZ]); }; - afx_msg void OnEqPop() { LoadEQPreset(gEQPresets[EQPRESET_POP]); }; - afx_msg void OnEqRock() { LoadEQPreset(gEQPresets[EQPRESET_ROCK]); }; - afx_msg void OnEqConcert() { LoadEQPreset(gEQPresets[EQPRESET_CONCERT]); }; - afx_msg void OnEqClear() { LoadEQPreset(gEQPresets[EQPRESET_CLEAR]); }; - - afx_msg void OnEqUser1() { LoadEQPreset(gUserPresets[0]); }; - afx_msg void OnEqUser2() { LoadEQPreset(gUserPresets[1]); }; - afx_msg void OnEqUser3() { LoadEQPreset(gUserPresets[2]); }; - afx_msg void OnEqUser4() { LoadEQPreset(gUserPresets[3]); }; - + afx_msg void OnEqUser1() { LoadEQPreset(TrackerSettings::Instance().m_EqUserPresets[0]); }; + afx_msg void OnEqUser2() { LoadEQPreset(TrackerSettings::Instance().m_EqUserPresets[1]); }; + afx_msg void OnEqUser3() { LoadEQPreset(TrackerSettings::Instance().m_EqUserPresets[2]); }; + afx_msg void OnEqUser4() { LoadEQPreset(TrackerSettings::Instance().m_EqUserPresets[3]); }; afx_msg void OnSavePreset(); afx_msg void OnSliderMenu(UINT); afx_msg void OnSliderFreq(UINT); - DECLARE_MESSAGE_MAP() + void UpdateDialog(); + void UpdateEQ(bool bReset); void LoadEQPreset(const EQPreset &preset); + + DECLARE_MESSAGE_MAP() }; Modified: trunk/OpenMPT/mptrack/TrackerSettings.cpp =================================================================== --- trunk/OpenMPT/mptrack/TrackerSettings.cpp 2014-03-11 16:18:35 UTC (rev 3869) +++ trunk/OpenMPT/mptrack/TrackerSettings.cpp 2014-03-11 17:16:55 UTC (rev 3870) @@ -231,11 +231,19 @@ m_DSPSettings.m_nProLogicDelay = conf.Read<int32>("Effects", "ProLogicDelay", m_DSPSettings.m_nProLogicDelay); #endif #ifndef NO_EQ - m_EqSettings = conf.Read<EQPreset>("Effects", "EQ_Settings", CEQSetupDlg::gEQPresets[0]); - CEQSetupDlg::gUserPresets[0] = conf.Read<EQPreset>("Effects", "EQ_User1", CEQSetupDlg::gUserPresets[0]); - CEQSetupDlg::gUserPresets[1] = conf.Read<EQPreset>("Effects", "EQ_User2", CEQSetupDlg::gUserPresets[1]); - CEQSetupDlg::gUserPresets[2] = conf.Read<EQPreset>("Effects", "EQ_User3", CEQSetupDlg::gUserPresets[2]); - CEQSetupDlg::gUserPresets[3] = conf.Read<EQPreset>("Effects", "EQ_User4", CEQSetupDlg::gUserPresets[3]); + m_EqSettings = conf.Read<EQPreset>("Effects", "EQ_Settings", FlatEQPreset); + const EQPreset userPresets[] = + { + FlatEQPreset, // User1 + { "User 1", {16,16,16,16,16,16}, { 150, 350, 700, 1500, 4500, 8000 } }, // User2 + { "User 2", {16,16,16,16,16,16}, { 200, 400, 800, 1750, 5000, 9000 } }, // User3 + { "User 3", {16,16,16,16,16,16}, { 250, 450, 900, 2000, 5000, 10000 } } // User4 + }; + + m_EqUserPresets[0] = conf.Read<EQPreset>("Effects", "EQ_User1", userPresets[0]); + m_EqUserPresets[1] = conf.Read<EQPreset>("Effects", "EQ_User2", userPresets[1]); + m_EqUserPresets[2] = conf.Read<EQPreset>("Effects", "EQ_User3", userPresets[2]); + m_EqUserPresets[3] = conf.Read<EQPreset>("Effects", "EQ_User4", userPresets[3]); #endif // Display (Colors) GetDefaultColourScheme(rgbCustomColors); @@ -501,10 +509,10 @@ // Effects FixupEQ(&m_EqSettings); - FixupEQ(&CEQSetupDlg::gUserPresets[0]); - FixupEQ(&CEQSetupDlg::gUserPresets[1]); - FixupEQ(&CEQSetupDlg::gUserPresets[2]); - FixupEQ(&CEQSetupDlg::gUserPresets[3]); + FixupEQ(&m_EqUserPresets[0]); + FixupEQ(&m_EqUserPresets[1]); + FixupEQ(&m_EqUserPresets[2]); + FixupEQ(&m_EqUserPresets[3]); // Zxx Macros if((MAKE_VERSION_NUMERIC(1,17,00,00) <= storedVersion) && (storedVersion < MAKE_VERSION_NUMERIC(1,20,00,00))) @@ -755,7 +763,7 @@ if(pEqSettings->Gains[i] > 32) pEqSettings->Gains[i] = 16; if((pEqSettings->Freqs[i] < 100) || (pEqSettings->Freqs[i] > 10000)) - pEqSettings->Freqs[i] = CEQSetupDlg::gEQPresets[0].Freqs[i]; + pEqSettings->Freqs[i] = FlatEQPreset.Freqs[i]; } mpt::String::SetNullTerminator(pEqSettings->szName); } @@ -803,10 +811,10 @@ #endif #ifndef NO_EQ conf.Write<EQPreset>("Effects", "EQ_Settings", m_EqSettings); - conf.Write<EQPreset>("Effects", "EQ_User1", CEQSetupDlg::gUserPresets[0]); - conf.Write<EQPreset>("Effects", "EQ_User2", CEQSetupDlg::gUserPresets[1]); - conf.Write<EQPreset>("Effects", "EQ_User3", CEQSetupDlg::gUserPresets[2]); - conf.Write<EQPreset>("Effects", "EQ_User4", CEQSetupDlg::gUserPresets[3]); + conf.Write<EQPreset>("Effects", "EQ_User1", m_EqUserPresets[0]); + conf.Write<EQPreset>("Effects", "EQ_User2", m_EqUserPresets[1]); + conf.Write<EQPreset>("Effects", "EQ_User3", m_EqUserPresets[2]); + conf.Write<EQPreset>("Effects", "EQ_User4", m_EqUserPresets[3]); #endif // Display (Colors) Modified: trunk/OpenMPT/mptrack/TrackerSettings.h =================================================================== --- trunk/OpenMPT/mptrack/TrackerSettings.h 2014-03-11 16:18:35 UTC (rev 3869) +++ trunk/OpenMPT/mptrack/TrackerSettings.h 2014-03-11 17:16:55 UTC (rev 3870) @@ -135,6 +135,9 @@ UINT Gains[MAX_EQ_BANDS]; UINT Freqs[MAX_EQ_BANDS]; }; + +static const EQPreset FlatEQPreset = { "Flat", {16,16,16,16,16,16}, { 125, 300, 600, 1250, 4000, 8000 } }; + #ifdef NEEDS_PRAGMA_PACK #pragma pack(pop) #endif @@ -440,6 +443,7 @@ #endif #ifndef NO_EQ EQPreset m_EqSettings; + EQPreset m_EqUserPresets[4]; #endif // Display (Colors) Modified: trunk/OpenMPT/mptrack/mptrack.rc =================================================================== --- trunk/OpenMPT/mptrack/mptrack.rc 2014-03-11 16:18:35 UTC (rev 3869) +++ trunk/OpenMPT/mptrack/mptrack.rc 2014-03-11 17:16:55 UTC (rev 3870) @@ -468,37 +468,60 @@ EDITTEXT IDC_EDIT3,26,87,212,12,ES_CENTER | ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER END -IDD_OPTIONS_PLAYER DIALOGEX 0, 0, 272, 279 +IDD_OPTIONS_PLAYER DIALOGEX 0, 0, 286, 279 STYLE DS_SETFONT | DS_3DLOOK | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION CAPTION "DSP" FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN - GROUPBOX "Control",IDC_STATIC,6,6,257,150 - CONTROL "Automatic Gain Control",IDC_CHECK2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,20,97,10 - CONTROL "Enable Graphic Equalizer",IDC_CHECK3,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,135,20,107,10 - CONTROL "Noise reduction",IDC_CHECK5,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,32,82,10 - CONTROL "Bass Expansion",IDC_CHECK1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,53,81,10 - CONTROL "Slider1",IDC_SLIDER1,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,33,65,62,15 - LTEXT "Low",IDC_STATIC,17,67,14,8 - LTEXT "High",IDC_STATIC,95,67,16,8 - LTEXT "Range:",IDC_STATIC,169,53,24,8 - CONTROL "Slider2",IDC_SLIDER2,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,149,64,62,15 - LTEXT "10Hz",IDC_STATIC,131,67,18,8 - LTEXT "100Hz",IDC_STATIC,211,66,23,8 - CONTROL "Reverb",IDC_CHECK6,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,84,62,10 - CONTROL "Slider1",IDC_SLIDER3,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,33,96,62,15 - LTEXT "Low",IDC_STATIC,17,100,14,8 - LTEXT "High",IDC_STATIC,95,100,16,8 - CTEXT "Reverb Preset:",IDC_STATIC,150,84,62,8 - COMBOBOX IDC_COMBO2,135,97,100,100,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - CONTROL "Pro-Logic Surround",IDC_CHECK4,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,116,99,10 - CONTROL "Slider1",IDC_SLIDER5,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,33,129,62,15 - LTEXT "Low",IDC_STATIC,17,132,14,8 - LTEXT "High",IDC_STATIC,95,132,16,8 - CTEXT "Front/Rear Delay:",IDC_STATIC,147,118,65,8 - CONTROL "Slider2",IDC_SLIDER6,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,149,128,62,15 - LTEXT "5ms",IDC_STATIC,131,131,18,8 - LTEXT "50ms",IDC_STATIC,211,131,23,8 + GROUPBOX "",IDC_STATIC,6,6,276,150 + CONTROL "Enable Graphic Equalizer",IDC_CHECK3,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,6,96,10 + LTEXT "+12dB",IDC_STATIC,12,21,22,8 + LTEXT "+0dB",IDC_STATIC,16,49,18,8 + LTEXT "-12dB",IDC_STATIC,14,74,20,8 + CTEXT "100Hz",IDC_TEXT1,37,87,28,8 + CONTROL "",IDC_SLIDER7,"msctls_trackbar32",TBS_AUTOTICKS | TBS_VERT | TBS_BOTH | TBS_TOOLTIPS | WS_TABSTOP,38,18,24,68 + CTEXT "500Hz",IDC_TEXT2,71,87,29,8 + CONTROL "",IDC_SLIDER8,"msctls_trackbar32",TBS_AUTOTICKS | TBS_VERT | TBS_BOTH | TBS_TOOLTIPS | WS_TABSTOP,72,18,24,68 + CTEXT "1kHz",IDC_TEXT3,108,87,25,8 + CONTROL "",IDC_SLIDER9,"msctls_trackbar32",TBS_AUTOTICKS | TBS_VERT | TBS_BOTH | TBS_TOOLTIPS | WS_TABSTOP,106,18,24,68 + CTEXT "3kHz",IDC_TEXT4,143,87,23,8 + CONTROL "",IDC_SLIDER10,"msctls_trackbar32",TBS_AUTOTICKS | TBS_VERT | TBS_BOTH | TBS_TOOLTIPS | WS_TABSTOP,140,18,24,68 + CTEXT "6kHz",IDC_TEXT5,177,87,21,8 + CONTROL "",IDC_SLIDER11,"msctls_trackbar32",TBS_AUTOTICKS | TBS_VERT | TBS_BOTH | TBS_TOOLTIPS | WS_TABSTOP,174,18,24,68 + CTEXT "10kHz",IDC_TEXT6,210,87,22,8 + CONTROL "",IDC_SLIDER12,"msctls_trackbar32",TBS_AUTOTICKS | TBS_VERT | TBS_BOTH | TBS_TOOLTIPS | WS_TABSTOP,206,18,24,68 + CTEXT "Right-click on a band to change its center frequency",IDC_STATIC,36,102,200,8 + PUSHBUTTON "User1",IDC_BUTTON1,240,18,36,12 + PUSHBUTTON "User2",IDC_BUTTON2,240,36,36,12 + PUSHBUTTON "User3",IDC_BUTTON3,240,54,36,12 + PUSHBUTTON "User4",IDC_BUTTON4,240,72,36,12 + PUSHBUTTON "Save...",IDC_BUTTON5,240,90,36,12 + LTEXT "EQ Warning Message",IDC_EQ_WARNING,12,114,264,36,0,WS_EX_TRANSPARENT + GROUPBOX "",IDC_STATIC,6,156,276,120 + CONTROL "Automatic Gain Control",IDC_CHECK2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,164,97,10 + CONTROL "Noise reduction",IDC_CHECK5,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,132,164,82,10 + CONTROL "Bass Expansion",IDC_CHECK1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,178,81,10 + CONTROL "Slider1",IDC_SLIDER1,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,33,191,62,15 + LTEXT "Low",IDC_STATIC,17,193,14,8 + LTEXT "High",IDC_STATIC,95,193,16,8 + LTEXT "Range:",IDC_STATIC,169,178,24,8 + CONTROL "Slider2",IDC_SLIDER2,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,149,190,62,15 + LTEXT "10Hz",IDC_STATIC,131,193,18,8 + LTEXT "100Hz",IDC_STATIC,211,191,23,8 + CONTROL "Reverb",IDC_CHECK6,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,210,62,10 + CONTROL "Slider1",IDC_SLIDER3,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,33,222,62,15 + LTEXT "Low",IDC_STATIC,17,226,14,8 + LTEXT "High",IDC_STATIC,95,226,16,8 + CTEXT "Reverb Preset:",IDC_STATIC,150,210,62,8 + COMBOBOX IDC_COMBO2,135,223,100,100,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + CONTROL "Pro-Logic Surround",IDC_CHECK4,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,242,99,10 + CONTROL "Slider1",IDC_SLIDER5,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,33,255,62,15 + LTEXT "Low",IDC_STATIC,17,258,14,8 + LTEXT "High",IDC_STATIC,95,258,16,8 + CTEXT "Front/Rear Delay:",IDC_STATIC,147,244,65,8 + CONTROL "Slider2",IDC_SLIDER6,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,149,254,62,15 + LTEXT "5ms",IDC_STATIC,131,257,18,8 + LTEXT "50ms",IDC_STATIC,211,257,23,8 END IDD_WAVECONVERT DIALOGEX 0, 0, 388, 239 @@ -1210,43 +1233,6 @@ GROUPBOX "",IDC_STATIC,6,6,108,60 END -IDD_SETUP_EQ DIALOGEX 0, 0, 240, 202 -STYLE DS_SETFONT | WS_CHILD | WS_DISABLED | WS_CAPTION -CAPTION "Equalizer" -FONT 8, "MS Shell Dlg", 0, 0, 0x0 -BEGIN - GROUPBOX "",IDC_STATIC,4,3,232,150 - LTEXT "+12dB",IDC_STATIC,9,28,22,8 - LTEXT "+0dB",IDC_STATIC,13,56,18,8 - LTEXT "-12dB",IDC_STATIC,11,81,20,8 - CTEXT "6-Bands Graphic Equalizer",IDC_STATIC,61,12,144,8 - CONTROL "Slider1",IDC_SLIDER1,"msctls_trackbar32",TBS_AUTOTICKS | TBS_VERT | TBS_BOTH | WS_TABSTOP,35,25,24,68 - CTEXT "100Hz",IDC_TEXT1,34,94,28,8 - CONTROL "Slider1",IDC_SLIDER3,"msctls_trackbar32",TBS_AUTOTICKS | TBS_VERT | TBS_BOTH | WS_TABSTOP,69,25,24,68 - CTEXT "500Hz",IDC_TEXT2,68,94,29,8 - CONTROL "Slider1",IDC_SLIDER5,"msctls_trackbar32",TBS_AUTOTICKS | TBS_VERT | TBS_BOTH | WS_TABSTOP,103,25,24,68 - CTEXT "1kHz",IDC_TEXT3,105,94,25,8 - CONTROL "Slider1",IDC_SLIDER7,"msctls_trackbar32",TBS_AUTOTICKS | TBS_VERT | TBS_BOTH | WS_TABSTOP,137,25,24,68 - CTEXT "3kHz",IDC_TEXT4,140,94,23,8 - CONTROL "Slider1",IDC_SLIDER8,"msctls_trackbar32",TBS_AUTOTICKS | TBS_VERT | TBS_BOTH | WS_TABSTOP,171,25,24,68 - CTEXT "6kHz",IDC_TEXT5,174,94,21,8 - CONTROL "Slider1",IDC_SLIDER9,"msctls_trackbar32",TBS_AUTOTICKS | TBS_VERT | TBS_BOTH | WS_TABSTOP,203,25,24,68 - CTEXT "10kHz",IDC_TEXT6,207,94,22,8 - PUSHBUTTON "Flat",IDC_BUTTON1,19,108,30,12 - PUSHBUTTON "Jazz",IDC_BUTTON2,53,108,30,12 - PUSHBUTTON "Pop",IDC_BUTTON5,87,108,30,12 - PUSHBUTTON "Rock",IDC_BUTTON6,121,108,30,12 - PUSHBUTTON "Clear",IDC_BUTTON8,155,108,30,12 - PUSHBUTTON "Hall",IDC_BUTTON7,189,108,30,12 - PUSHBUTTON "User1",IDC_BUTTON3,19,124,30,12 - PUSHBUTTON "User2",IDC_BUTTON4,53,124,30,12 - PUSHBUTTON "User3",IDC_BUTTON9,87,124,30,12 - PUSHBUTTON "User4",IDC_BUTTON10,121,124,30,12 - PUSHBUTTON "Save Preset...",IDC_BUTTON13,155,124,64,12 - CTEXT "Right-click on a band to change its center frequency",IDC_STATIC,20,140,200,8 - LTEXT "EQ Warning Message",IDC_EQ_WARNING,6,157,228,41 -END - IDD_OPTIONS_AUTHOR DIALOGEX 0, 0, 214, 151 STYLE DS_SETFONT | WS_CHILD | WS_DISABLED | WS_CAPTION CAPTION "Identification" @@ -1636,7 +1622,7 @@ IDD_OPTIONS_PLAYER, DIALOG BEGIN - RIGHTMARGIN, 266 + RIGHTMARGIN, 280 VERTGUIDE, 50 VERTGUIDE, 169 VERTGUIDE, 256 @@ -1768,10 +1754,6 @@ BOTTOMMARGIN, 65 END - IDD_SETUP_EQ, DIALOG - BEGIN - END - IDD_OPTIONS_AUTHOR, DIALOG BEGIN BOTTOMMARGIN, 150 Modified: trunk/OpenMPT/mptrack/resource.h =================================================================== --- trunk/OpenMPT/mptrack/resource.h 2014-03-11 16:18:35 UTC (rev 3869) +++ trunk/OpenMPT/mptrack/resource.h 2014-03-11 17:16:55 UTC (rev 3870) @@ -29,7 +29,6 @@ #define IDD_VIEW_GLOBALS 126 #define IDD_SAMPLE_AMPLIFY 130 #define IDD_SAMPLE_RESAMPLE 131 -#define IDD_SETUP_EQ 132 #define IDD_OPTIONS_EFFECTS 133 #define IDD_OPTIONS_AUTHOR 134 #define IDR_MAINFRAME 200 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sag...@us...> - 2014-03-11 20:21:49
|
Revision: 3872 http://sourceforge.net/p/modplug/code/3872 Author: saga-games Date: 2014-03-11 20:21:41 +0000 (Tue, 11 Mar 2014) Log Message: ----------- [Fix] Allow building with NO_EQ and NO_VST again. Modified Paths: -------------- trunk/OpenMPT/mptrack/MainFrm.cpp trunk/OpenMPT/mptrack/Mod2wave.cpp trunk/OpenMPT/mptrack/Modedit.cpp trunk/OpenMPT/mptrack/Mpdlgs.cpp trunk/OpenMPT/mptrack/Mpdlgs.h trunk/OpenMPT/mptrack/TrackerSettings.cpp trunk/OpenMPT/mptrack/Vstplug.h trunk/OpenMPT/mptrack/mptrack.rc Modified: trunk/OpenMPT/mptrack/MainFrm.cpp =================================================================== --- trunk/OpenMPT/mptrack/MainFrm.cpp 2014-03-11 17:52:03 UTC (rev 3871) +++ trunk/OpenMPT/mptrack/MainFrm.cpp 2014-03-11 20:21:41 UTC (rev 3872) @@ -1861,8 +1861,8 @@ dlg.AddPage(&sounddlg); dlg.AddPage(&mixerdlg); #if !defined(NO_REVERB) || !defined(NO_DSP) || !defined(NO_EQ) || !defined(NO_AGC) || !defined(NO_EQ) - COptionsPlayer playerdlg(TrackerSettings::Instance().m_EqSettings); - dlg.AddPage(&playerdlg); + COptionsPlayer dspdlg; + dlg.AddPage(&dspdlg); #endif dlg.AddPage(&smpeditor); dlg.AddPage(&keyboard); Modified: trunk/OpenMPT/mptrack/Mod2wave.cpp =================================================================== --- trunk/OpenMPT/mptrack/Mod2wave.cpp 2014-03-11 17:52:03 UTC (rev 3871) +++ trunk/OpenMPT/mptrack/Mod2wave.cpp 2014-03-11 20:21:41 UTC (rev 3872) @@ -646,7 +646,7 @@ COptionsMixer mixerpage; dlg.AddPage(&mixerpage); #if !defined(NO_REVERB) || !defined(NO_DSP) || !defined(NO_EQ) || !defined(NO_AGC) || !defined(NO_EQ) - COptionsPlayer dsppage(TrackerSettings::Instance().m_EqSettings); + COptionsPlayer dsppage; dlg.AddPage(&dsppage); #endif dlg.DoModal(); Modified: trunk/OpenMPT/mptrack/Modedit.cpp =================================================================== --- trunk/OpenMPT/mptrack/Modedit.cpp 2014-03-11 17:52:03 UTC (rev 3871) +++ trunk/OpenMPT/mptrack/Modedit.cpp 2014-03-11 20:21:41 UTC (rev 3872) @@ -596,6 +596,7 @@ CVstPlugin *srcVstPlug = static_cast<CVstPlugin *>(source.pMixPlugin); target.Destroy(); MemCopy(target.Info, source.Info); +#ifndef NO_VST if(theApp.GetPluginManager()->CreateMixPlugin(target, GetrSoundFile())) { CVstPlugin *newVstPlug = static_cast<CVstPlugin *>(target.pMixPlugin); @@ -609,6 +610,7 @@ VSTPresets::LoadFile(file, *newVstPlug); } } +#endif // !NO_VST } Modified: trunk/OpenMPT/mptrack/Mpdlgs.cpp =================================================================== --- trunk/OpenMPT/mptrack/Mpdlgs.cpp 2014-03-11 17:52:03 UTC (rev 3871) +++ trunk/OpenMPT/mptrack/Mpdlgs.cpp 2014-03-11 20:21:41 UTC (rev 3872) @@ -1034,6 +1034,8 @@ // CEQSavePresetDlg // +#ifndef NO_EQ + //==================================== class CEQSavePresetDlg: public CDialog //==================================== @@ -1105,11 +1107,14 @@ return CSliderCtrl::PreTranslateMessage(pMsg); } +#endif // !NO_EQ + ////////////////////////////////////////////////////////// // COptionsPlayer - DSP / EQ settings +#ifndef NO_EQ #define EQ_MAX_FREQS 5 const UINT gEqBandFreqs[MAX_EQ_BANDS][EQ_MAX_FREQS] = @@ -1121,8 +1126,10 @@ { 3000, 3500, 4000, 4500, 5000 }, { 6000, 7000, 8000, 9000, 10000 }, }; +#endif // !NO_EQ BEGIN_MESSAGE_MAP(COptionsPlayer, CPropertyPage) +#ifndef NO_EQ // EQ ON_WM_VSCROLL() ON_COMMAND(IDC_BUTTON1, OnEqUser1) @@ -1130,8 +1137,9 @@ ON_COMMAND(IDC_BUTTON3, OnEqUser3) ON_COMMAND(IDC_BUTTON4, OnEqUser4) ON_COMMAND(IDC_BUTTON5, OnSavePreset) - ON_COMMAND_RANGE(ID_EQSLIDER_BASE, ID_EQSLIDER_BASE+MAX_EQ_BANDS, OnSliderMenu) - ON_COMMAND_RANGE(ID_EQMENU_BASE, ID_EQMENU_BASE+EQ_MAX_FREQS, OnSliderFreq) + ON_COMMAND_RANGE(ID_EQSLIDER_BASE, ID_EQSLIDER_BASE + MAX_EQ_BANDS, OnSliderMenu) + ON_COMMAND_RANGE(ID_EQMENU_BASE, ID_EQMENU_BASE + EQ_MAX_FREQS, OnSliderFreq) +#endif // !NO_EQ // DSP ON_WM_HSCROLL() @@ -1172,6 +1180,8 @@ m_Sliders[i].SetRange(0, 32); m_Sliders[i].SetTicFreq(4); } + + UpdateDialog(); #endif DWORD dwQuality = TrackerSettings::Instance().MixerDSPMask; @@ -1257,7 +1267,6 @@ m_SbSurroundDelay.ShowWindow(SW_HIDE); #endif - UpdateDialog(); return TRUE; } @@ -1363,14 +1372,14 @@ } +#ifndef NO_EQ + void COptionsPlayer::UpdateEQ(bool bReset) //---------------------------------------- { -#ifndef NO_EQ CriticalSection cs; if(CMainFrame::GetMainFrame()->GetSoundFilePlaying()) CMainFrame::GetMainFrame()->GetSoundFilePlaying()->SetEQGains(m_EQPreset.Gains, MAX_EQ_BANDS, m_EQPreset.Freqs, bReset); -#endif } @@ -1490,7 +1499,9 @@ } } +#endif // !NO_EQ + ///////////////////////////////////////////////////////////// // CMidiSetupDlg Modified: trunk/OpenMPT/mptrack/Mpdlgs.h =================================================================== --- trunk/OpenMPT/mptrack/Mpdlgs.h 2014-03-11 17:52:03 UTC (rev 3871) +++ trunk/OpenMPT/mptrack/Mpdlgs.h 2014-03-11 20:21:41 UTC (rev 3872) @@ -122,6 +122,8 @@ }; +#ifndef NO_EQ + //================================= class CEQSlider: public CSliderCtrl //================================= @@ -132,11 +134,13 @@ short int m_x, m_y; public: CEQSlider() {} - VOID Init(UINT nID, UINT n, CWnd *parent); + void Init(UINT nID, UINT n, CWnd *parent); BOOL PreTranslateMessage(MSG *pMsg); }; +#endif // !NO_EQ + //======================================== class COptionsPlayer: public CPropertyPage //======================================== @@ -147,12 +151,18 @@ CSliderCtrl m_SbSurroundDepth, m_SbSurroundDelay; CSliderCtrl m_SbReverbDepth; +#ifndef NO_EQ CEQSlider m_Sliders[MAX_EQ_BANDS]; EQPreset &m_EQPreset; UINT m_nSliderMenu; +#endif // !NO_EQ public: - COptionsPlayer(EQPreset &eqPreset) : CPropertyPage(IDD_OPTIONS_PLAYER), m_EQPreset(eqPreset) {} + COptionsPlayer() : CPropertyPage(IDD_OPTIONS_PLAYER) +#ifndef NO_EQ + , m_EQPreset(TrackerSettings::Instance().m_EqSettings) +#endif + { } protected: virtual BOOL OnInitDialog(); @@ -162,6 +172,7 @@ afx_msg void OnHScroll(UINT, UINT, CScrollBar *); afx_msg void OnSettingsChanged() { SetModified(TRUE); } +#ifndef NO_EQ afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar); afx_msg void OnEqUser1() { LoadEQPreset(TrackerSettings::Instance().m_EqUserPresets[0]); }; afx_msg void OnEqUser2() { LoadEQPreset(TrackerSettings::Instance().m_EqUserPresets[1]); }; @@ -174,6 +185,7 @@ void UpdateDialog(); void UpdateEQ(bool bReset); void LoadEQPreset(const EQPreset &preset); +#endif // !NO_EQ DECLARE_MESSAGE_MAP() }; Modified: trunk/OpenMPT/mptrack/TrackerSettings.cpp =================================================================== --- trunk/OpenMPT/mptrack/TrackerSettings.cpp 2014-03-11 17:52:03 UTC (rev 3871) +++ trunk/OpenMPT/mptrack/TrackerSettings.cpp 2014-03-11 20:21:41 UTC (rev 3872) @@ -508,11 +508,13 @@ } // Effects +#ifndef NO_EQ FixupEQ(&m_EqSettings); FixupEQ(&m_EqUserPresets[0]); FixupEQ(&m_EqUserPresets[1]); FixupEQ(&m_EqUserPresets[2]); FixupEQ(&m_EqUserPresets[3]); +#endif // !NO_EQ // Zxx Macros if((MAKE_VERSION_NUMERIC(1,17,00,00) <= storedVersion) && (storedVersion < MAKE_VERSION_NUMERIC(1,20,00,00))) Modified: trunk/OpenMPT/mptrack/Vstplug.h =================================================================== --- trunk/OpenMPT/mptrack/Vstplug.h 2014-03-11 17:52:03 UTC (rev 3871) +++ trunk/OpenMPT/mptrack/Vstplug.h 2014-03-11 20:21:41 UTC (rev 3872) @@ -292,7 +292,7 @@ VstInt32 GetUID() const { return 0; } VstInt32 GetVersion() const { return 0; } - bool CanAutomateParameter(PlugParamIndex index) { return false; } + bool CanAutomateParameter(PlugParamIndex) { return false; } CString GetFormattedParamName(PlugParamIndex) { return ""; }; CString GetFormattedParamValue(PlugParamIndex){ return ""; }; @@ -365,7 +365,7 @@ const VSTPluginLib **begin() const { return nullptr; } const VSTPluginLib **end() const { return nullptr; } - void reserve(size_t num) { } + void reserve(size_t) { } void OnIdle() {} #endif // NO_VST Modified: trunk/OpenMPT/mptrack/mptrack.rc =================================================================== --- trunk/OpenMPT/mptrack/mptrack.rc 2014-03-11 17:52:03 UTC (rev 3871) +++ trunk/OpenMPT/mptrack/mptrack.rc 2014-03-11 20:21:41 UTC (rev 3872) @@ -474,7 +474,7 @@ FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN GROUPBOX "",IDC_STATIC,6,6,276,150 - CONTROL "Enable Graphic Equalizer",IDC_CHECK3,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,6,96,10 + CONTROL "&Enable Graphic Equalizer",IDC_CHECK3,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,6,94,10 LTEXT "+12dB",IDC_STATIC,12,21,22,8 LTEXT "+0dB",IDC_STATIC,16,49,18,8 LTEXT "-12dB",IDC_STATIC,14,74,20,8 @@ -495,11 +495,11 @@ PUSHBUTTON "User2",IDC_BUTTON2,240,36,36,12 PUSHBUTTON "User3",IDC_BUTTON3,240,54,36,12 PUSHBUTTON "User4",IDC_BUTTON4,240,72,36,12 - PUSHBUTTON "Save...",IDC_BUTTON5,240,90,36,12 + PUSHBUTTON "&Save...",IDC_BUTTON5,240,90,36,12 LTEXT "EQ Warning Message",IDC_EQ_WARNING,12,114,264,36,0,WS_EX_TRANSPARENT GROUPBOX "",IDC_STATIC,6,156,276,120 - CONTROL "Automatic Gain Control",IDC_CHECK2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,164,97,10 - CONTROL "Bass Expansion",IDC_CHECK1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,178,81,10 + CONTROL "&Automatic Gain Control",IDC_CHECK2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,164,97,10 + CONTROL "&Bass Expansion",IDC_CHECK1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,178,81,10 CONTROL "Slider1",IDC_SLIDER1,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,33,191,62,15 LTEXT "Low",IDC_STATIC,17,193,14,8 LTEXT "High",IDC_STATIC,95,193,16,8 @@ -507,13 +507,13 @@ CONTROL "Slider2",IDC_SLIDER2,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,149,190,62,15 LTEXT "10Hz",IDC_STATIC,131,193,18,8 LTEXT "100Hz",IDC_STATIC,211,191,23,8 - CONTROL "Reverb",IDC_CHECK6,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,210,62,10 + CONTROL "&Reverb",IDC_CHECK6,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,210,62,10 CONTROL "Slider1",IDC_SLIDER3,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,33,222,62,15 LTEXT "Low",IDC_STATIC,17,226,14,8 LTEXT "High",IDC_STATIC,95,226,16,8 CTEXT "Reverb Preset:",IDC_STATIC,150,210,62,8 COMBOBOX IDC_COMBO2,135,223,100,100,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - CONTROL "Pro-Logic Surround",IDC_CHECK4,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,242,99,10 + CONTROL "&Pro-Logic Surround",IDC_CHECK4,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,242,99,10 CONTROL "Slider1",IDC_SLIDER5,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,33,255,62,15 LTEXT "Low",IDC_STATIC,17,258,14,8 LTEXT "High",IDC_STATIC,95,258,16,8 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sag...@us...> - 2014-03-12 14:51:21
|
Revision: 3876 http://sourceforge.net/p/modplug/code/3876 Author: saga-games Date: 2014-03-12 14:51:13 +0000 (Wed, 12 Mar 2014) Log Message: ----------- [Fix] Don't set sample playback positions while jumping around in the module and the song is paused or when using goto. Modified Paths: -------------- trunk/OpenMPT/mptrack/Ctrl_seq.cpp trunk/OpenMPT/mptrack/Moddoc.cpp trunk/OpenMPT/mptrack/Moddoc.h trunk/OpenMPT/mptrack/View_pat.cpp Modified: trunk/OpenMPT/mptrack/Ctrl_seq.cpp =================================================================== --- trunk/OpenMPT/mptrack/Ctrl_seq.cpp 2014-03-12 13:33:38 UTC (rev 3875) +++ trunk/OpenMPT/mptrack/Ctrl_seq.cpp 2014-03-12 14:51:13 UTC (rev 3876) @@ -332,7 +332,7 @@ sndFile.m_PlayState.m_nNextRow = 0; // update channel parameters and play time - m_pModDoc.SetElapsedTime(m_nScrollPos, 0); + m_pModDoc.SetElapsedTime(m_nScrollPos, 0, true); changedPos = true; } else if(m_pParent.GetFollowSong()) @@ -344,7 +344,7 @@ sndFile.m_SongFlags.set(pausedFlags); // update channel parameters and play time - m_pModDoc.SetElapsedTime(m_nScrollPos, 0); + m_pModDoc.SetElapsedTime(m_nScrollPos, 0, !sndFile.m_SongFlags[SONG_PAUSED | SONG_STEP]); if(isPlaying) pMainFrm->ResetNotificationBuffer(); changedPos = true; Modified: trunk/OpenMPT/mptrack/Moddoc.cpp =================================================================== --- trunk/OpenMPT/mptrack/Moddoc.cpp 2014-03-12 13:33:38 UTC (rev 3875) +++ trunk/OpenMPT/mptrack/Moddoc.cpp 2014-03-12 14:51:13 UTC (rev 3876) @@ -2427,7 +2427,7 @@ m_SndFile.m_PlayState.m_nNextRow = 0; // set playback timer in the status bar (and update channel status) - SetElapsedTime(nOrd, 0); + SetElapsedTime(nOrd, 0, true); if(pModPlaying == this) { @@ -2482,7 +2482,7 @@ m_SndFile.m_PlayState.m_nNextRow = nRow; // set playback timer in the status bar (and update channel status) - SetElapsedTime(nOrd, nRow); + SetElapsedTime(nOrd, nRow, true); if(pModPlaying == this) { @@ -2540,7 +2540,7 @@ m_SndFile.m_PlayState.m_nNextRow = nRow; // set playback timer in the status bar (and update channel status) - SetElapsedTime(nOrd, nRow); + SetElapsedTime(nOrd, nRow, true); if(pModPlaying == this) { @@ -2792,10 +2792,11 @@ // Sets playback timer to playback time at given position. // At the same time, the playback parameters (global volume, channel volume and stuff like that) are calculated for this position. -void CModDoc::SetElapsedTime(ORDERINDEX nOrd, ROWINDEX nRow) -//---------------------------------------------------------- +// Sample channels positions are only updated if setSamplePos is true *and* the user has chosen to update sample play positions on seek. +void CModDoc::SetElapsedTime(ORDERINDEX nOrd, ROWINDEX nRow, bool setSamplePos) +//----------------------------------------------------------------------------- { - double t = m_SndFile.GetPlaybackTimeAt(nOrd, nRow, true, (TrackerSettings::Instance().m_dwPatternSetup & PATTERN_SYNCSAMPLEPOS) != 0); + double t = m_SndFile.GetPlaybackTimeAt(nOrd, nRow, true, setSamplePos && (TrackerSettings::Instance().m_dwPatternSetup & PATTERN_SYNCSAMPLEPOS) != 0); CMainFrame *pMainFrm = CMainFrame::GetMainFrame(); if(pMainFrm != nullptr) { Modified: trunk/OpenMPT/mptrack/Moddoc.h =================================================================== --- trunk/OpenMPT/mptrack/Moddoc.h 2014-03-12 13:33:38 UTC (rev 3875) +++ trunk/OpenMPT/mptrack/Moddoc.h 2014-03-12 14:51:13 UTC (rev 3876) @@ -327,7 +327,7 @@ void TogglePluginEditor(UINT m_nCurrentPlugin); void RecordParamChange(PLUGINDEX slot, PlugParamIndex param); void LearnMacro(int macro, PlugParamIndex param); - void SetElapsedTime(ORDERINDEX nOrd, ROWINDEX nRow); + void SetElapsedTime(ORDERINDEX nOrd, ROWINDEX nRow, bool setSamplePos); // Global settings to pattern effect conversion bool RestartPosToPattern(); Modified: trunk/OpenMPT/mptrack/View_pat.cpp =================================================================== --- trunk/OpenMPT/mptrack/View_pat.cpp 2014-03-12 13:33:38 UTC (rev 3875) +++ trunk/OpenMPT/mptrack/View_pat.cpp 2014-03-12 14:51:13 UTC (rev 3876) @@ -1999,7 +1999,7 @@ if (m_pGotoWnd->m_nRow != GetCurrentRow()) SetCurrentRow(m_pGotoWnd->m_nRow); - pModDoc->SetElapsedTime(m_pGotoWnd->m_nOrder, m_pGotoWnd->m_nRow); + pModDoc->SetElapsedTime(m_pGotoWnd->m_nOrder, m_pGotoWnd->m_nRow, false); } } return; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sag...@us...> - 2014-03-13 15:31:01
|
Revision: 3879 http://sourceforge.net/p/modplug/code/3879 Author: saga-games Date: 2014-03-13 15:30:52 +0000 (Thu, 13 Mar 2014) Log Message: ----------- [Mod] Rename "row spacing" to "edit step". Modified Paths: -------------- trunk/OpenMPT/mptrack/CommandSet.cpp trunk/OpenMPT/mptrack/View_pat.cpp trunk/OpenMPT/mptrack/View_pat.h trunk/OpenMPT/mptrack/mptrack.rc Modified: trunk/OpenMPT/mptrack/CommandSet.cpp =================================================================== --- trunk/OpenMPT/mptrack/CommandSet.cpp 2014-03-12 23:23:32 UTC (rev 3878) +++ trunk/OpenMPT/mptrack/CommandSet.cpp 2014-03-13 15:30:52 UTC (rev 3879) @@ -391,7 +391,7 @@ DefineKeyCommand(kcCopySelectWithNav, 1314, _T("kcCopySelectWithNav"), kcHidden, kcNoDummy); DefineKeyCommand(kcCopySelectOffWithNav, 1315, _T("kcCopySelectOffWithNav"), kcHidden, kcNoDummy); DefineKeyCommand(kcChordModifier, 1316, _T("Chord Modifier"), kcVisible, kcDummy); - DefineKeyCommand(kcSetSpacing, 1317, _T("Set row spacing on note entry"), kcVisible, kcDummy); + DefineKeyCommand(kcSetSpacing, 1317, _T("Set edit step on note entry"), kcVisible, kcDummy); DefineKeyCommand(kcSetSpacing0, 1318, _T(""), kcHidden, kcNoDummy); DefineKeyCommand(kcSetSpacing1, 1319, _T(""), kcHidden, kcNoDummy); DefineKeyCommand(kcSetSpacing2, 1320, _T(""), kcHidden, kcNoDummy); @@ -609,8 +609,8 @@ DefineKeyCommand(kcSelectBeat, 1858, _T("Select Beat")); DefineKeyCommand(kcSelectMeasure, 1859, _T("Select Measure")); DefineKeyCommand(kcFileSaveTemplate, 1860, _T("File/Save As Template")); - DefineKeyCommand(kcIncreaseSpacing, 1861, _T("Increase Row Spacing")); - DefineKeyCommand(kcDecreaseSpacing, 1862, _T("Decrease Row Spacing")); + DefineKeyCommand(kcIncreaseSpacing, 1861, _T("Increase Edit Step")); + DefineKeyCommand(kcDecreaseSpacing, 1862, _T("Decrease Edit Step")); DefineKeyCommand(kcSampleAutotune, 1863, _T("Tune Sample to given Note")); DefineKeyCommand(kcFileCloseAll, 1864, _T("File/Close All")); DefineKeyCommand(kcSetOctaveStop0, 1865, _T(""), kcHidden); Modified: trunk/OpenMPT/mptrack/View_pat.cpp =================================================================== --- trunk/OpenMPT/mptrack/View_pat.cpp 2014-03-12 23:23:32 UTC (rev 3878) +++ trunk/OpenMPT/mptrack/View_pat.cpp 2014-03-13 15:30:52 UTC (rev 3879) @@ -5259,7 +5259,7 @@ } } - // Set new cursor position (row spacing) + // Set new cursor position (edit step aka row spacing) if(!liveRecord) { if((m_nSpacing > 0) && (m_nSpacing <= MAX_SPACING)) @@ -5501,7 +5501,7 @@ prevChordNote = note; prevChordBaseNote = baseNote; - // Set new cursor position (row spacing) - only when not recording live + // Set new cursor position (edit step aka row spacing) - only when not recording live if(recordEnabled && !liveRecord) { if(m_nSpacing > 0 && m_nSpacing <= MAX_SPACING) Modified: trunk/OpenMPT/mptrack/View_pat.h =================================================================== --- trunk/OpenMPT/mptrack/View_pat.h 2014-03-12 23:23:32 UTC (rev 3878) +++ trunk/OpenMPT/mptrack/View_pat.h 2014-03-13 15:30:52 UTC (rev 3879) @@ -22,14 +22,14 @@ class COpenGLEditor; // Drag & Drop info -#define DRAGITEM_VALUEMASK 0x00FFFF -#define DRAGITEM_MASK 0xFF0000 -#define DRAGITEM_CHNHEADER 0x010000 -#define DRAGITEM_PATTERNHEADER 0x020000 -#define DRAGITEM_PLUGNAME 0x040000 //rewbs.patPlugName +#define DRAGITEM_VALUEMASK 0x00FFFFFF +#define DRAGITEM_MASK 0xFF000000 +#define DRAGITEM_CHNHEADER 0x01000000 +#define DRAGITEM_PATTERNHEADER 0x02000000 +#define DRAGITEM_PLUGNAME 0x04000000 -// Row Spacing +// Edit Step aka Row Spacing const ROWINDEX MAX_SPACING = 64; // MAX_PATTERN_ROWS @@ -135,8 +135,7 @@ psFocussed = 0x04, // Is the pattern editor focussed psFollowSong = 0x08, // Does the cursor follow playback psRecordingEnabled = 0x10, // Recording enabled - psDragHScroll = 0x20, // Some weird dragging stuff (?) - unused - psDragVScroll = 0x40, // Some weird dragging stuff (?) + psDragVScroll = 0x40, // Indicates that the vertical scrollbar is being dragged psShowVUMeters = 0x80, // Display channel VU meters psChordPlaying = 0x100, // Is a chord playing? (pretty much unused) psDragnDropEdit = 0x200, // Drag & Drop editing (?) @@ -150,7 +149,7 @@ psShiftDragging = 0x20000, // Drag&Drop: Dragging an item around and holding shift // All possible drag flags, to test if user is dragging a selection or a scrollbar - psDragActive = psDragVScroll | psDragHScroll | psMouseDragSelect | psRowSelection | psChannelSelection, + psDragActive = psDragVScroll | psMouseDragSelect | psRowSelection | psChannelSelection, }; protected: Modified: trunk/OpenMPT/mptrack/mptrack.rc =================================================================== --- trunk/OpenMPT/mptrack/mptrack.rc 2014-03-12 23:23:32 UTC (rev 3878) +++ trunk/OpenMPT/mptrack/mptrack.rc 2014-03-13 15:30:52 UTC (rev 3879) @@ -780,9 +780,9 @@ BEGIN CONTROL "Toolbar1",IDC_TOOLBAR1,"ToolbarWindow32",WS_GROUP | 0x4d,2,4,370,18 CONTROL "Spin1",IDC_SPIN_INSTRUMENT,"msctls_updown32",0x0,6,31,11,12 - COMBOBOX IDC_COMBO_INSTRUMENT,18,31,102,137,CBS_DROPDOWNLIST | WS_VSCROLL - PUSHBUTTON "Plugin",IDC_PATINSTROPLUGGUI,126,31,33,13,0,WS_EX_STATICEDGE - CTEXT "Row Spacing",IDC_STATIC,168,33,42,8,SS_CENTERIMAGE + COMBOBOX IDC_COMBO_INSTRUMENT,18,31,120,137,CBS_DROPDOWNLIST | WS_VSCROLL + PUSHBUTTON "Plugin",IDC_PATINSTROPLUGGUI,144,30,33,13,0,WS_EX_STATICEDGE + RTEXT "Edit Step",IDC_STATIC,180,33,30,8,SS_CENTERIMAGE EDITTEXT IDC_EDIT_SPACING,216,31,28,12,ES_AUTOHSCROLL | ES_NUMBER | NOT WS_TABSTOP CONTROL "Spin1",IDC_SPIN_SPACING,"msctls_updown32",UDS_WRAP | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,236,31,11,11 CONTROL "Loop Pattern",IDC_PATTERN_LOOP,"Button",BS_AUTOCHECKBOX | BS_FLAT | WS_TABSTOP,252,33,57,8 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sag...@us...> - 2014-03-13 23:58:15
|
Revision: 3880 http://sourceforge.net/p/modplug/code/3880 Author: saga-games Date: 2014-03-13 23:58:09 +0000 (Thu, 13 Mar 2014) Log Message: ----------- [New] Pattern tab: Alt-clicking a channel header solos / unsolos the channel. Modified Paths: -------------- trunk/OpenMPT/mptrack/View_pat.cpp trunk/OpenMPT/mptrack/View_pat.h Modified: trunk/OpenMPT/mptrack/View_pat.cpp =================================================================== --- trunk/OpenMPT/mptrack/View_pat.cpp 2014-03-13 15:30:52 UTC (rev 3879) +++ trunk/OpenMPT/mptrack/View_pat.cpp 2014-03-13 23:58:09 UTC (rev 3880) @@ -232,9 +232,9 @@ UpdateScrollSize(); UpdateIndicator(); - if(m_bWholePatternFitsOnScreen) //rewbs.scrollFix + if(m_bWholePatternFitsOnScreen) SetScrollPos(SB_VERT, 0); - else if(updateScroll) //rewbs.fix3147 + else if(updateScroll) SetScrollPos(SB_VERT, (int)GetCurrentRow() * GetColumnHeight()); UpdateScrollPos(); @@ -1275,22 +1275,22 @@ switch(m_nDragItem & DRAGITEM_MASK) { case DRAGITEM_CHNHEADER: - if(nItemNo == nTargetNo) + if(nItemNo == nTargetNo && nTargetNo < pModDoc->GetNumChannels()) { // Just clicked a channel header... - - if (nFlags & MK_SHIFT) + if(nFlags & MK_SHIFT) { - if (nItemNo < MAX_BASECHANNELS) - { - pModDoc->Record1Channel(nItemNo); - InvalidateChannelsHeaders(); - } - } - else if (!(nFlags & MK_CONTROL)) + // Toggle record state + pModDoc->Record1Channel(nItemNo); + InvalidateChannelsHeaders(); + } else if(CMainFrame::GetMainFrame()->GetInputHandler()->AltPressed()) { - pModDoc->MuteChannel(nItemNo, !pModDoc->IsChannelMuted(nItemNo)); - pModDoc->UpdateAllViews(this, HINT_MODCHANNELS | ((nItemNo / CHANNELS_IN_TAB) << HINT_SHIFT_CHNTAB)); + // Solo / Unsolo + OnSoloChannel(nItemNo); + } else if(!(nFlags & MK_CONTROL)) + { + // Mute / Unmute + OnMuteChannel(nItemNo); } } else if(nTargetNo < pModDoc->GetNumChannels() && (m_nDropItem & DRAGITEM_MASK) == DRAGITEM_CHNHEADER) { @@ -1692,18 +1692,17 @@ } -void CViewPattern::OnMuteChannel(bool current) -//-------------------------------------------- +void CViewPattern::OnMuteChannel(CHANNELINDEX chn) +//------------------------------------------------ { CModDoc *pModDoc = GetDocument(); if (pModDoc) { - const CHANNELINDEX nChn = current ? GetCurrentChannel() : m_MenuCursor.GetChannel(); - pModDoc->SoloChannel(nChn, false); //rewbs.merge: recover old solo/mute behaviour - pModDoc->MuteChannel(nChn, !pModDoc->IsChannelMuted(nChn)); + pModDoc->SoloChannel(chn, false); //rewbs.merge: recover old solo/mute behaviour + pModDoc->MuteChannel(chn, !pModDoc->IsChannelMuted(chn)); //If we just unmuted a channel, make sure none are still considered "solo". - if(!pModDoc->IsChannelMuted(nChn)) + if(!pModDoc->IsChannelMuted(chn)) { for(CHANNELINDEX i = 0; i < pModDoc->GetNumChannels(); i++) { @@ -1712,6 +1711,7 @@ } InvalidateChannelsHeaders(); + pModDoc->UpdateAllViews(this, HINT_MODCHANNELS | ((chn / CHANNELS_IN_TAB) << HINT_SHIFT_CHNTAB)); } } @@ -1719,31 +1719,30 @@ void CViewPattern::OnSoloFromClick() //---------------------------------- { - OnSoloChannel(false); + OnSoloChannel(m_MenuCursor.GetChannel()); } // When trying to solo a channel that is already the only unmuted channel, // this will result in unmuting all channels, in order to satisfy user habits. // In all other cases, soloing a channel unsoloes all and mutes all except this channel -void CViewPattern::OnSoloChannel(bool current) -//-------------------------------------------- +void CViewPattern::OnSoloChannel(CHANNELINDEX chn) +//------------------------------------------------ { CModDoc *pModDoc = GetDocument(); if (pModDoc == nullptr) return; - const CHANNELINDEX nChn = current ? GetCurrentChannel() : m_MenuCursor.GetChannel(); - if (nChn >= pModDoc->GetNumChannels()) + if (chn >= pModDoc->GetNumChannels()) { return; } - if (pModDoc->IsChannelSolo(nChn)) + if (pModDoc->IsChannelSolo(chn)) { bool nChnIsOnlyUnMutedChan=true; for (CHANNELINDEX i = 0; i < pModDoc->GetNumChannels(); i++) //check status of all other chans { - if (i != nChn && !pModDoc->IsChannelMuted(i)) + if (i != chn && !pModDoc->IsChannelMuted(i)) { nChnIsOnlyUnMutedChan=false; //found a channel that isn't muted! break; @@ -1757,10 +1756,11 @@ } for(CHANNELINDEX i = 0; i < pModDoc->GetNumChannels(); i++) { - pModDoc->MuteChannel(i, !(i == nChn)); //mute all chans except nChn, unmute nChn - pModDoc->SoloChannel(i, (i == nChn)); //unsolo all chans except nChn, solo nChn + pModDoc->MuteChannel(i, !(i == chn)); //mute all chans except nChn, unmute nChn + pModDoc->SoloChannel(i, (i == chn)); //unsolo all chans except nChn, solo nChn } InvalidateChannelsHeaders(); + pModDoc->UpdateAllViews(this, HINT_MODCHANNELS | ((chn / CHANNELS_IN_TAB) << HINT_SHIFT_CHNTAB)); } @@ -4147,7 +4147,7 @@ InvalidatePattern(true); } break; - case VIEWMSG_DOSCROLL: + case VIEWMSG_DOSCROLL: CModScrollView::OnMouseWheel(0, lParam, CPoint(0, 0)); break; @@ -4200,8 +4200,8 @@ case kcPatternRecord: OnPatternRecord(); return wParam; case kcCursorCopy: OnCursorCopy(); return wParam; case kcCursorPaste: OnCursorPaste(); return wParam; - case kcChannelMute: OnMuteChannel(true); return wParam; - case kcChannelSolo: OnSoloChannel(true); return wParam; + case kcChannelMute: OnMuteChannel(GetCurrentChannel()); return wParam; + case kcChannelSolo: OnSoloChannel(GetCurrentChannel()); return wParam; case kcChannelUnmuteAll: OnUnmuteAll(); return wParam; case kcToggleChanMuteOnPatTransition: TogglePendingMute(GetCurrentChannel()); return wParam; case kcUnmuteAllChnOnPatTransition: OnPendingUnmuteAllChnFromClick(); return wParam; @@ -5266,7 +5266,7 @@ { if(editPos.row + m_nSpacing < sndFile.Patterns[editPos.pattern].GetNumRows() || (TrackerSettings::Instance().m_dwPatternSetup & PATTERN_CONTSCROLL)) { - SetCurrentRow(editPos.row + m_nSpacing, (TrackerSettings::Instance().m_dwPatternSetup & PATTERN_CONTSCROLL) ? true: false); + SetCurrentRow(editPos.row + m_nSpacing, (TrackerSettings::Instance().m_dwPatternSetup & PATTERN_CONTSCROLL) != 0); m_bLastNoteEntryBlocked = false; } else { Modified: trunk/OpenMPT/mptrack/View_pat.h =================================================================== --- trunk/OpenMPT/mptrack/View_pat.h 2014-03-13 15:30:52 UTC (rev 3879) +++ trunk/OpenMPT/mptrack/View_pat.h 2014-03-13 23:58:09 UTC (rev 3880) @@ -366,9 +366,9 @@ afx_msg void OnEditPasteFlood() { ExecutePaste(PatternClipboard::pmPasteFlood); }; afx_msg void OnEditPushForwardPaste() { ExecutePaste(PatternClipboard::pmPushForward); }; - afx_msg void OnClearSelection(bool ITStyle = false, RowMask sb = RowMask()); //rewbs.customKeys - afx_msg void OnGrowSelection(); //rewbs.customKeys - afx_msg void OnShrinkSelection(); //rewbs.customKeys + afx_msg void OnClearSelection(bool ITStyle = false, RowMask sb = RowMask()); + afx_msg void OnGrowSelection(); + afx_msg void OnShrinkSelection(); afx_msg void OnEditSelectAll(); afx_msg void OnEditSelectColumn(); afx_msg void OnSelectCurrentColumn(); @@ -378,13 +378,13 @@ afx_msg void OnEditUndo(); afx_msg void OnEditRedo(); afx_msg void OnChannelReset(); - afx_msg void OnMuteFromClick(); //rewbs.customKeys - afx_msg void OnSoloFromClick(); //rewbs.customKeys - afx_msg void OnTogglePendingMuteFromClick(); //rewbs.customKeys + afx_msg void OnMuteFromClick(); + afx_msg void OnSoloFromClick(); + afx_msg void OnTogglePendingMuteFromClick(); afx_msg void OnPendingSoloChnFromClick(); afx_msg void OnPendingUnmuteAllChnFromClick(); - afx_msg void OnSoloChannel(bool current); //rewbs.customKeys - afx_msg void OnMuteChannel(bool current); //rewbs.customKeys + afx_msg void OnSoloChannel(CHANNELINDEX chn); + afx_msg void OnMuteChannel(CHANNELINDEX chn); afx_msg void OnUnmuteAll(); afx_msg void OnRecordSelect(); afx_msg void OnSplitRecordSelect(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sag...@us...> - 2014-03-14 14:22:08
|
Revision: 3883 http://sourceforge.net/p/modplug/code/3883 Author: saga-games Date: 2014-03-14 14:21:57 +0000 (Fri, 14 Mar 2014) Log Message: ----------- [Fix] Mnemonics in sound card dialog where not unique. [Mod] Instead of hiding DSP controls if some DSP feature is turned off, disable them. This looks much better. Modified Paths: -------------- trunk/OpenMPT/mptrack/Mpdlgs.cpp trunk/OpenMPT/mptrack/mptrack.rc Modified: trunk/OpenMPT/mptrack/Mpdlgs.cpp =================================================================== --- trunk/OpenMPT/mptrack/Mpdlgs.cpp 2014-03-14 12:55:35 UTC (rev 3882) +++ trunk/OpenMPT/mptrack/Mpdlgs.cpp 2014-03-14 14:21:57 UTC (rev 3883) @@ -1205,25 +1205,24 @@ if (dwQuality & SNDDSP_EQ) CheckDlgButton(IDC_CHECK3, MF_CHECKED); #else - GetDlgItem(IDC_CHECK3)->ShowWindow(SW_HIDE); - ::EnableWindow(::GetDlgItem(m_hWnd, IDC_CHECK3), FALSE); + GetDlgItem(IDC_CHECK3)->EnableWindow(FALSE); #endif // Effects #ifndef NO_DSP if (dwQuality & SNDDSP_MEGABASS) CheckDlgButton(IDC_CHECK1, MF_CHECKED); #else - GetDlgItem(IDC_CHECK1)->ShowWindow(SW_HIDE); + GetDlgItem(IDC_CHECK1)->EnableWindow(FALSE); #endif #ifndef NO_AGC if (dwQuality & SNDDSP_AGC) CheckDlgButton(IDC_CHECK2, MF_CHECKED); #else - GetDlgItem(IDC_CHECK2)->ShowWindow(SW_HIDE); + GetDlgItem(IDC_CHECK2)->EnableWindow(FALSE); #endif #ifndef NO_DSP if (dwQuality & SNDDSP_SURROUND) CheckDlgButton(IDC_CHECK4, MF_CHECKED); #else - GetDlgItem(IDC_CHECK4)->ShowWindow(SW_HIDE); + GetDlgItem(IDC_CHECK4)->EnableWindow(FALSE); #endif #ifndef NO_DSP @@ -1233,8 +1232,8 @@ m_SbXBassRange.SetRange(0,4); m_SbXBassRange.SetPos(4 - (TrackerSettings::Instance().m_DSPSettings.m_nXBassRange - 1) / 5); #else - m_SbXBassDepth.ShowWindow(SW_HIDE); - m_SbXBassRange.ShowWindow(SW_HIDE); + m_SbXBassDepth.EnableWindow(FALSE); + m_SbXBassRange.EnableWindow(FALSE); #endif #ifndef NO_REVERB @@ -1255,7 +1254,7 @@ m_CbnReverbPreset.SetCurSel(nSel); if(!(GetProcSupport() & PROCSUPPORT_MMX)) { - ::EnableWindow(::GetDlgItem(m_hWnd, IDC_CHECK6), FALSE); + GetDlgItem(IDC_CHECK6)->EnableWindow(FALSE); m_SbReverbDepth.EnableWindow(FALSE); m_CbnReverbPreset.EnableWindow(FALSE); } else @@ -1263,9 +1262,9 @@ if (dwQuality & SNDDSP_REVERB) CheckDlgButton(IDC_CHECK6, MF_CHECKED); } #else - GetDlgItem(IDC_CHECK6)->ShowWindow(SW_HIDE); - m_SbReverbDepth.ShowWindow(SW_HIDE); - m_CbnReverbPreset.ShowWindow(SW_HIDE); + GetDlgItem(IDC_CHECK6)->EnableWindow(FALSE); + m_SbReverbDepth.EnableWindow(FALSE); + m_CbnReverbPreset.EnableWindow(FALSE); #endif #ifndef NO_DSP @@ -1280,8 +1279,8 @@ m_SbSurroundDelay.SetPos((TrackerSettings::Instance().m_DSPSettings.m_nProLogicDelay-5)/5); } #else - m_SbSurroundDepth.ShowWindow(SW_HIDE); - m_SbSurroundDelay.ShowWindow(SW_HIDE); + m_SbSurroundDepth.EnableWindow(FALSE); + m_SbSurroundDelay.EnableWindow(FALSE); #endif return TRUE; Modified: trunk/OpenMPT/mptrack/mptrack.rc =================================================================== --- trunk/OpenMPT/mptrack/mptrack.rc 2014-03-14 12:55:35 UTC (rev 3882) +++ trunk/OpenMPT/mptrack/mptrack.rc 2014-03-14 14:21:57 UTC (rev 3883) @@ -1306,9 +1306,9 @@ COMBOBOX IDC_COMBO5,108,90,42,80,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP COMBOBOX IDC_COMBO6,156,90,42,80,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP COMBOBOX IDC_COMBO10,204,90,72,80,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - CONTROL "Use device exclusively",IDC_CHECK4,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,108,54,84,12 + CONTROL "Use device &exclusively",IDC_CHECK4,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,108,54,84,12 CONTROL "&Boost thread priority",IDC_CHECK5,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,108,72,84,12 - CONTROL "Hardware timing",IDC_CHECK9,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,198,72,66,12 + CONTROL "&Hardware timing",IDC_CHECK9,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,198,72,66,12 LTEXT "Channel &Mapping:",IDC_STATIC,12,108,60,12,SS_CENTERIMAGE CTEXT "Front Left",IDC_STATIC_CHANNEL_FRONTLEFT,78,108,48,12,SS_CENTERIMAGE,WS_EX_STATICEDGE COMBOBOX IDC_COMBO_CHANNEL_FRONTLEFT,132,108,144,72,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP @@ -1320,10 +1320,10 @@ COMBOBOX IDC_COMBO_CHANNEL_REARRIGHT,132,162,144,72,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP GROUPBOX "General",IDC_STATIC,6,186,276,30 COMBOBOX IDC_COMBO11,108,198,60,80,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - CONTROL "Open device at &startup",IDC_CHECK7,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,186,198,90,12 + CONTROL "&Open device at startup",IDC_CHECK7,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,186,198,90,12 GROUPBOX "Stat&istics",IDC_STATIC,6,222,276,55 EDITTEXT IDC_EDIT_STATISTICS,12,233,264,38,ES_MULTILINE | ES_AUTOHSCROLL | ES_READONLY | NOT WS_TABSTOP - LTEXT "When playback is &stoppped:",IDC_STATIC,12,198,90,12,SS_CENTERIMAGE + LTEXT "&When playback is stoppped:",IDC_STATIC,12,198,90,12,SS_CENTERIMAGE END IDD_MIDIMACRO DIALOGEX 0, 0, 358, 354 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sag...@us...> - 2014-03-14 18:11:32
|
Revision: 3885 http://sourceforge.net/p/modplug/code/3885 Author: saga-games Date: 2014-03-14 18:11:25 +0000 (Fri, 14 Mar 2014) Log Message: ----------- [Fix] Previous commit broke preset inc/dec buttons Modified Paths: -------------- trunk/OpenMPT/mptrack/AbstractVstEditor.cpp trunk/OpenMPT/mptrack/AbstractVstEditor.h Modified: trunk/OpenMPT/mptrack/AbstractVstEditor.cpp =================================================================== --- trunk/OpenMPT/mptrack/AbstractVstEditor.cpp 2014-03-14 17:46:12 UTC (rev 3884) +++ trunk/OpenMPT/mptrack/AbstractVstEditor.cpp 2014-03-14 18:11:25 UTC (rev 3885) @@ -255,10 +255,44 @@ void CAbstractVstEditor::OnSetPreset(UINT nID) //-------------------------------------------- { - int nIndex = nID - ID_PRESET_SET + currentPresetMenu * PRESETS_PER_GROUP; - if(nIndex >= 0) + SetPreset(nID - ID_PRESET_SET + currentPresetMenu * PRESETS_PER_GROUP); +} + + +void CAbstractVstEditor::OnSetPreviousVSTPreset() +//----------------------------------------------- +{ + SetPreset(m_VstPlugin.GetCurrentProgram() - 1); +} + + +void CAbstractVstEditor::OnSetNextVSTPreset() +//------------------------------------------- +{ + SetPreset(m_VstPlugin.GetCurrentProgram() + 1); +} + + +void CAbstractVstEditor::OnVSTPresetBackwardJump() +//------------------------------------------------ +{ + SetPreset(std::max(0, m_VstPlugin.GetCurrentProgram() - 10)); +} + + +void CAbstractVstEditor::OnVSTPresetForwardJump() +//----------------------------------------------- +{ + SetPreset(std::min(m_VstPlugin.GetCurrentProgram() + 10, m_VstPlugin.GetNumPrograms() - 1)); +} + + +void CAbstractVstEditor::SetPreset(int32 preset) +//---------------------------------------------- +{ + if(preset >= 0 && preset < m_VstPlugin.GetNumPrograms()) { - m_VstPlugin.SetCurrentProgram(nIndex); + m_VstPlugin.SetCurrentProgram(preset); UpdatePresetField(); if(m_VstPlugin.GetSoundFile().GetModSpecifications().supportsPlugins) @@ -804,34 +838,6 @@ } -void CAbstractVstEditor::OnSetPreviousVSTPreset() -//----------------------------------------------- -{ - OnSetPreset(ID_PRESET_SET + m_VstPlugin.GetCurrentProgram() - 1); -} - - -void CAbstractVstEditor::OnSetNextVSTPreset() -//------------------------------------------- -{ - OnSetPreset(ID_PRESET_SET + m_VstPlugin.GetCurrentProgram() + 1); -} - - -void CAbstractVstEditor::OnVSTPresetBackwardJump() -//------------------------------------------------ -{ - OnSetPreset(MAX(ID_PRESET_SET + m_VstPlugin.GetCurrentProgram() - 10, ID_PRESET_SET)); -} - - -void CAbstractVstEditor::OnVSTPresetForwardJump() -//----------------------------------------------- -{ - OnSetPreset(MIN(ID_PRESET_SET + m_VstPlugin.GetCurrentProgram() + 10, ID_PRESET_SET + m_VstPlugin.GetNumPrograms() - 1)); -} - - void CAbstractVstEditor::OnCreateInstrument() //------------------------------------------- { Modified: trunk/OpenMPT/mptrack/AbstractVstEditor.h =================================================================== --- trunk/OpenMPT/mptrack/AbstractVstEditor.h 2014-03-14 17:46:12 UTC (rev 3884) +++ trunk/OpenMPT/mptrack/AbstractVstEditor.h 2014-03-14 18:11:25 UTC (rev 3885) @@ -41,6 +41,7 @@ void SetLearnMacro(int inMacro); int GetLearnMacro(); + void SetPreset(int32 preset); void UpdatePresetField(); bool CreateInstrument(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sag...@us...> - 2014-03-19 01:17:41
|
Revision: 3904 http://sourceforge.net/p/modplug/code/3904 Author: saga-games Date: 2014-03-19 01:17:34 +0000 (Wed, 19 Mar 2014) Log Message: ----------- [Imp] VST: Implement more timing information for plugins that want it. [Mod] VST: Don't call (potentially expensive) effGetChunk before effSetChunk. I'm not aware of any other hosts doing this. Modified Paths: -------------- trunk/OpenMPT/mptrack/Vstplug.cpp trunk/OpenMPT/mptrack/Vstplug.h Modified: trunk/OpenMPT/mptrack/Vstplug.cpp =================================================================== --- trunk/OpenMPT/mptrack/Vstplug.cpp 2014-03-19 00:09:05 UTC (rev 3903) +++ trunk/OpenMPT/mptrack/Vstplug.cpp 2014-03-19 01:17:34 UTC (rev 3904) @@ -106,15 +106,18 @@ if(pVstPlugin->IsSongPlaying()) { timeInfo.flags |= kVstTransportPlaying; + if(pVstPlugin->GetSoundFile().m_SongFlags[SONG_PATTERNLOOP]) timeInfo.flags |= kVstTransportCycleActive; timeInfo.samplePos = sndFile.GetTotalSampleCount(); if(sndFile.HasPositionChanged()) { timeInfo.flags |= kVstTransportChanged; + pVstPlugin->lastBarStartPos = -1.0; } } else { timeInfo.flags |= kVstTransportChanged; //just stopped. timeInfo.samplePos = 0; + pVstPlugin->lastBarStartPos = -1.0; } if((value & kVstNanosValid)) { @@ -131,6 +134,16 @@ { timeInfo.ppqPos = 0; } + + if((pVstPlugin->GetSoundFile().m_PlayState.m_nRow % pVstPlugin->GetSoundFile().m_PlayState.m_nCurrentRowsPerMeasure) == 0) + { + pVstPlugin->lastBarStartPos = std::floor(timeInfo.ppqPos); + } + if(pVstPlugin->lastBarStartPos >= 0) + { + timeInfo.barStartPos = pVstPlugin->lastBarStartPos; + timeInfo.flags |= kVstBarsValid; + } } if((value & kVstTempoValid)) { @@ -1458,7 +1471,7 @@ { ProcessVSTEvents(); - //If the plug is found & ok, continue + // If the plug is found & ok, continue if(m_pProcessFP != nullptr && (mixBuffer.GetInputBufferArray()) && mixBuffer.GetOutputBufferArray() && m_pMixStruct != nullptr) { @@ -1510,7 +1523,7 @@ // if m_Effect.numOutputs is odd, mix half the signal of last output to each channel if(numOutputs != m_Effect.numOutputs) { - // trick : if we are here, nOuts = m_Effect.numOutputs - 1 !!! + // trick : if we are here, numOutputs = m_Effect.numOutputs - 1 !!! for(size_t i = 0; i < nSamples; i++) { float v = 0.5f * outputBuffers[numOutputs][i]; @@ -2130,9 +2143,6 @@ if ((Dispatch(effIdentify, 0, 0, nullptr, 0) == 'NvEf') && (nType == 'NvEf')) { - void *p = nullptr; - Dispatch(effGetChunk, 0,0, &p, 0); //init plug for chunk reception - if ((nProgram>=0) && (nProgram < m_Effect.numPrograms)) { // Bank @@ -2141,11 +2151,14 @@ } else { // Program + Dispatch(effBeginSetProgram, 0, 0, nullptr, 0.0f); Dispatch(effSetChunk, 1, m_pMixStruct->nPluginDataSize - 4, m_pMixStruct->pPluginData + 4, 0); + Dispatch(effEndSetProgram, 0, 0, nullptr, 0.0f); } } else { + Dispatch(effBeginSetProgram, 0, 0, nullptr, 0.0f); float *p = (float *)m_pMixStruct->pPluginData; if (m_pMixStruct->nPluginDataSize >= nLen + 4) p++; if (m_pMixStruct->nPluginDataSize >= nLen) @@ -2155,6 +2168,7 @@ SetParameter(i, p[i]); } } + Dispatch(effEndSetProgram, 0, 0, nullptr, 0.0f); } } } Modified: trunk/OpenMPT/mptrack/Vstplug.h =================================================================== --- trunk/OpenMPT/mptrack/Vstplug.h 2014-03-19 00:09:05 UTC (rev 3903) +++ trunk/OpenMPT/mptrack/Vstplug.h 2014-03-19 01:17:34 UTC (rev 3904) @@ -140,6 +140,7 @@ SNDMIXPLUGINSTATE m_MixState; int32 m_nEditorX, m_nEditorY; + double lastBarStartPos; float m_fGain; PLUGINDEX m_nSlot; bool m_bSongPlaying; @@ -166,6 +167,7 @@ public: VSTPluginLib &GetPluginFactory() const { return m_Factory; } + CVstPlugin *GetNextInstance() const { return m_pNext; } bool HasEditor(); VstInt32 GetNumPrograms(); PlugParamIndex GetNumParameters(); @@ -226,7 +228,7 @@ size_t AddRef() { return ++m_nRefCount; } size_t Release(); void SaveAllParameters(); - void RestoreAllParameters(long nProg=-1); //rewbs.plugDefaultProgram - added param + void RestoreAllParameters(long nProg=-1); void RecalculateGain(); void Process(float *pOutL, float *pOutR, size_t nSamples); float RenderSilence(size_t numSamples); @@ -255,9 +257,9 @@ protected: void MidiPitchBend(uint8 nMidiCh, int32 pitchBendPos); - // Converts a 14-bit MIDI pitch bend position to a 16.11 fixed point pitch bend position + // Converts a 14-bit MIDI pitch bend position to our internal pitch bend position representation static int32 EncodePitchBendParam(int32 position) { return (position << vstPitchBendShift); } - // Converts a 16.11 fixed point pitch bend position to a 14-bit MIDI pitch bend position + // Converts the internal pitch bend position to a 14-bit MIDI pitch bend position static int16 DecodePitchBendParam(int32 position) { return static_cast<int16>(position >> vstPitchBendShift); } // Apply Pitch Wheel Depth (PWD) to some MIDI pitch bend value. static inline void ApplyPitchWheelDepth(int32 &value, int8 pwd); @@ -304,7 +306,7 @@ bool LoadProgram() { return false; } bool SaveProgram() { return false; } void SetCurrentProgram(VstInt32) {} - void SetSlot(UINT) {} + void SetSlot(PLUGINDEX) {} void UpdateMixStructPtr(void*) {} void Bypass(bool = true) { } bool IsBypassed() const { return false; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sag...@us...> - 2014-03-19 02:06:13
|
Revision: 3905 http://sourceforge.net/p/modplug/code/3905 Author: saga-games Date: 2014-03-19 02:06:01 +0000 (Wed, 19 Mar 2014) Log Message: ----------- [New] Officially integrated VST bridge into OpenMPT now. It surely requires a bit more work, but is mostly usable by now. It can be force-enabled with BridgeAllPlugins=1 in the [VST Plugins] section of mptrack.ini. [Mod] OpenMPT: Version is now 1.22.07.31 Modified Paths: -------------- trunk/OpenMPT/mptrack/AbstractVstEditor.cpp trunk/OpenMPT/mptrack/AbstractVstEditor.h trunk/OpenMPT/mptrack/DefaultVstEditor.h trunk/OpenMPT/mptrack/MPTRACK_10.sln trunk/OpenMPT/mptrack/SelectPluginDialog.cpp trunk/OpenMPT/mptrack/SelectPluginDialog.h trunk/OpenMPT/mptrack/TrackerSettings.cpp trunk/OpenMPT/mptrack/TrackerSettings.h trunk/OpenMPT/mptrack/VSTEditor.cpp trunk/OpenMPT/mptrack/VSTEditor.h trunk/OpenMPT/mptrack/VstPresets.cpp trunk/OpenMPT/mptrack/Vstplug.cpp trunk/OpenMPT/mptrack/Vstplug.h trunk/OpenMPT/mptrack/mptrack.rc trunk/OpenMPT/mptrack/mptrack_08.vcproj trunk/OpenMPT/mptrack/mptrack_10.vcxproj trunk/OpenMPT/mptrack/mptrack_10.vcxproj.filters Modified: trunk/OpenMPT/mptrack/AbstractVstEditor.cpp =================================================================== --- trunk/OpenMPT/mptrack/AbstractVstEditor.cpp 2014-03-19 01:17:34 UTC (rev 3904) +++ trunk/OpenMPT/mptrack/AbstractVstEditor.cpp 2014-03-19 02:06:01 UTC (rev 3905) @@ -58,7 +58,7 @@ ON_COMMAND_RANGE(ID_LEARN_MACRO_FROM_PLUGGUI, ID_LEARN_MACRO_FROM_PLUGGUI + NUM_MACROS, PrepareToLearnMacro) END_MESSAGE_MAP() -CAbstractVstEditor::CAbstractVstEditor(CVstPlugin &plugin) : m_VstPlugin(plugin) +CAbstractVstEditor::CAbstractVstEditor(CVstPlugin &plugin) : m_VstPlugin(plugin), updateDisplay(false) { m_nCurProg = -1; @@ -450,7 +450,7 @@ if(m_VstPlugin.CanRecieveMidiEvents()) { if(!m_VstPlugin.isInstrument() || m_VstPlugin.GetSoundFile().GetModSpecifications().instrumentsMax == 0 || - Reporting::Confirm(_T("You need to assign an instrument to this plugin before you can play notes from here.\nCreate a new instrument and assign this plugin to the instrument?"), false, false) == cnfNo) + Reporting::Confirm(_T("You need to assign an instrument to this plugin before you can play notes from here.\nCreate a new instrument and assign this plugin to the instrument?"), false, false, false, this) == cnfNo) { return false; } else Modified: trunk/OpenMPT/mptrack/AbstractVstEditor.h =================================================================== --- trunk/OpenMPT/mptrack/AbstractVstEditor.h 2014-03-19 01:17:34 UTC (rev 3904) +++ trunk/OpenMPT/mptrack/AbstractVstEditor.h 2014-03-19 02:06:01 UTC (rev 3905) @@ -29,6 +29,7 @@ CMenu m_OptionsMenu; static UINT clipboardFormat; int32 currentPresetMenu; + bool updateDisplay; public: CVstPlugin &m_VstPlugin; @@ -69,13 +70,15 @@ virtual void OnCancel() = 0; virtual bool OpenEditor(CWnd *parent) = 0; virtual void DoClose() = 0; - virtual void UpdateParamDisplays() = 0; + virtual void UpdateParamDisplays() { if(updateDisplay) { SetupMenu(true); updateDisplay = false; } } virtual afx_msg void OnClose() = 0; virtual void OnActivate(UINT nState, CWnd *pWndOther, BOOL bMinimized); virtual bool IsResizable() const = 0; virtual bool SetSize(int contentWidth, int contentHeight) = 0; + void UpdateDisplay() { updateDisplay = true; } + DECLARE_MESSAGE_MAP() protected: Modified: trunk/OpenMPT/mptrack/DefaultVstEditor.h =================================================================== --- trunk/OpenMPT/mptrack/DefaultVstEditor.h 2014-03-19 01:17:34 UTC (rev 3904) +++ trunk/OpenMPT/mptrack/DefaultVstEditor.h 2014-03-19 02:06:01 UTC (rev 3905) @@ -67,7 +67,7 @@ CDefaultVstEditor(CVstPlugin &plugin); virtual ~CDefaultVstEditor(); - void UpdateParamDisplays() { UpdateControls(false); }; + virtual void UpdateParamDisplays() { CAbstractVstEditor::UpdateParamDisplays(); UpdateControls(false); }; virtual void OnOK(); virtual void OnCancel(); Modified: trunk/OpenMPT/mptrack/MPTRACK_10.sln =================================================================== --- trunk/OpenMPT/mptrack/MPTRACK_10.sln 2014-03-19 01:17:34 UTC (rev 3904) +++ trunk/OpenMPT/mptrack/MPTRACK_10.sln 2014-03-19 02:06:01 UTC (rev 3905) @@ -22,6 +22,8 @@ EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "UnRAR", "..\build\gen\UnRAR.vcxproj", "{95CC809B-03FC-4EDB-BB20-FD07A698C05F}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PluginBridge", "..\pluginBridge\PluginBridge.vcxproj", "{8D55AB6B-DAB3-4EFB-9169-7EAF995D5C10}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 @@ -164,6 +166,17 @@ {95CC809B-03FC-4EDB-BB20-FD07A698C05F}.ReleaseNoLTCG|Win32.Build.0 = ReleaseNoLTCG|Win32 {95CC809B-03FC-4EDB-BB20-FD07A698C05F}.ReleaseNoLTCG|x64.ActiveCfg = ReleaseNoLTCG|x64 {95CC809B-03FC-4EDB-BB20-FD07A698C05F}.ReleaseNoLTCG|x64.Build.0 = ReleaseNoLTCG|x64 + {8D55AB6B-DAB3-4EFB-9169-7EAF995D5C10}.Debug|Win32.ActiveCfg = Debug|Win32 + {8D55AB6B-DAB3-4EFB-9169-7EAF995D5C10}.Debug|Win32.Build.0 = Debug|Win32 + {8D55AB6B-DAB3-4EFB-9169-7EAF995D5C10}.Debug|x64.ActiveCfg = Debug|x64 + {8D55AB6B-DAB3-4EFB-9169-7EAF995D5C10}.Debug|x64.Build.0 = Debug|x64 + {8D55AB6B-DAB3-4EFB-9169-7EAF995D5C10}.Release|Win32.ActiveCfg = Release|Win32 + {8D55AB6B-DAB3-4EFB-9169-7EAF995D5C10}.Release|Win32.Build.0 = Release|Win32 + {8D55AB6B-DAB3-4EFB-9169-7EAF995D5C10}.Release|x64.ActiveCfg = Release|x64 + {8D55AB6B-DAB3-4EFB-9169-7EAF995D5C10}.Release|x64.Build.0 = Release|x64 + {8D55AB6B-DAB3-4EFB-9169-7EAF995D5C10}.ReleaseNoLTCG|Win32.ActiveCfg = Release|x64 + {8D55AB6B-DAB3-4EFB-9169-7EAF995D5C10}.ReleaseNoLTCG|x64.ActiveCfg = Release|x64 + {8D55AB6B-DAB3-4EFB-9169-7EAF995D5C10}.ReleaseNoLTCG|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE Modified: trunk/OpenMPT/mptrack/SelectPluginDialog.cpp =================================================================== --- trunk/OpenMPT/mptrack/SelectPluginDialog.cpp 2014-03-19 01:17:34 UTC (rev 3904) +++ trunk/OpenMPT/mptrack/SelectPluginDialog.cpp 2014-03-19 02:06:01 UTC (rev 3905) @@ -14,9 +14,11 @@ #include "Mainfrm.h" #include "InputHandler.h" #include "Moddoc.h" -#include "SelectPluginDialog.h" #include "../common/StringFixer.h" #include "FileDialog.h" +#include "Vstplug.h" +#include "SelectPluginDialog.h" +#include "../pluginBridge/BridgeWrapper.h" #ifndef NO_VST @@ -31,6 +33,8 @@ ON_COMMAND(IDC_BUTTON1, OnAddPlugin) ON_COMMAND(IDC_BUTTON3, OnScanFolder) ON_COMMAND(IDC_BUTTON2, OnRemovePlugin) + ON_COMMAND(IDC_CHECK1, OnSetBridge) + ON_COMMAND(IDC_CHECK2, OnSetBridge) ON_EN_CHANGE(IDC_NAMEFILTER, OnNameFilterChanged) ON_WM_SIZE() ON_WM_GETMINMAXINFO() @@ -42,6 +46,8 @@ { CDialog::DoDataExchange(pDX); DDX_Control(pDX, IDC_TREE1, m_treePlugins); + DDX_Control(pDX, IDC_CHECK1, m_chkBridge); + DDX_Control(pDX, IDC_CHECK2, m_chkShare); } @@ -52,6 +58,9 @@ m_pModDoc = pModDoc; m_nPlugSlot = nPlugSlot; + hasBridge32 = Util::sdOs::IsPathFileAvailable(theApp.GetAppDirPath() + MPT_PATHSTRING("PluginBridge32.exe"), Util::sdOs::FileModeExists); + hasBridge64 = Util::sdOs::IsPathFileAvailable(theApp.GetAppDirPath() + MPT_PATHSTRING("PluginBridge64.exe"), Util::sdOs::FileModeExists); + if(m_pModDoc) { if(0 <= m_nPlugSlot && m_nPlugSlot < MAX_MIXPLUGINS) @@ -110,7 +119,7 @@ bool changed = false; CVstPluginManager *pManager = theApp.GetPluginManager(); - VSTPluginLib *pNewPlug = (VSTPluginLib *)m_treePlugins.GetItemData(m_treePlugins.GetSelectedItem()); + VSTPluginLib *pNewPlug = GetSelectedPlugin(); VSTPluginLib *pFactory = nullptr; CVstPlugin *pCurrentPlugin = nullptr; if (m_pPlugin) pCurrentPlugin = dynamic_cast<CVstPlugin *>(m_pPlugin->pMixPlugin); @@ -157,6 +166,9 @@ { mpt::String::Copy(m_pPlugin->Info.szName, s); } + } else + { + MemsetZero(m_pPlugin->Info); } } changed = true; @@ -418,22 +430,47 @@ //----------------------------------------------------------- { CVstPluginManager *pManager = theApp.GetPluginManager(); - VSTPluginLib *pPlug = (VSTPluginLib *)m_treePlugins.GetItemData(m_treePlugins.GetSelectedItem()); + VSTPluginLib *pPlug = GetSelectedPlugin(); + int showBoxes = SW_HIDE; if ((pManager) && (pManager->IsValidPlugin(pPlug))) { SetDlgItemTextW(m_hWnd, IDC_TEXT_CURRENT_VSTPLUG, pPlug->dllPath.ToWide().c_str()); + if(pPlug->pluginId1 == kEffectMagic) + { + bool isBridgeAvailable = (hasBridge32 && pPlug->GetDllBits() == 32) || (hasBridge64 && pPlug->GetDllBits() == 64); + if(TrackerSettings::Instance().bridgeAllPlugins || !isBridgeAvailable) + { + m_chkBridge.EnableWindow(FALSE); + m_chkBridge.SetCheck(isBridgeAvailable ? BST_CHECKED : BST_UNCHECKED); + } else + { + bool native = pPlug->IsNative(); + + m_chkBridge.EnableWindow(native ? TRUE : FALSE); + m_chkBridge.SetCheck((pPlug->useBridge || !native) ? BST_CHECKED : BST_UNCHECKED); + } + + m_chkShare.SetCheck(pPlug->shareBridgeInstance ? BST_CHECKED : BST_UNCHECKED); + m_chkShare.EnableWindow(m_chkBridge.GetCheck() != BST_UNCHECKED); + + showBoxes = SW_SHOW; + } else + { + } } else { SetDlgItemText(IDC_TEXT_CURRENT_VSTPLUG, ""); } + m_chkBridge.ShowWindow(showBoxes); + m_chkShare.ShowWindow(showBoxes); if (result) *result = 0; } -bool CSelectPluginDlg::VerifyPlug(const VSTPluginLib *plug) -//--------------------------------------------------------- +bool CSelectPluginDlg::VerifyPlug(VSTPluginLib *plug) +//--------------------------------------------------- { - // TODO: Keep this list up-to-date. + // TODO: Keep these lists up-to-date. static const struct { VstInt32 id1; @@ -444,20 +481,49 @@ { { kEffectMagic, CCONST('N', 'i', '4', 'S'), "Native Instruments B4", "* v1.1.1 hangs on playback. Do not proceed unless you have v1.1.5 or newer. *" }, { kEffectMagic, CCONST('m', 'd', 'a', 'C'), "MDA Degrade", "* Old versions of this plugin can crash OpenMPT.\nEnsure that you have the latest version of this plugin. *" }, - { kEffectMagic, CCONST('f', 'V', '2', 's'), "Farbrausch V2", "* This plugin can cause OpenMPT to freeze if being used in a combination with various other plugins.\nIt is recommended to not use V2 in combination with any other plugins. *" }, - { kEffectMagic, CCONST('f', 'r', 'V', '2'), "Farbrausch V2", "* This plugin can cause OpenMPT to freeze if being used in a combination with various other plugins.\nIt is recommended to not use V2 in combination with any other plugins. *" }, + { kEffectMagic, CCONST('f', 'V', '2', 's'), "Farbrausch V2", "* This plugin can cause OpenMPT to freeze if being used in a combination with various other plugins.\nIt is recommended to not use V2 in combination with any other plugins or use it brigded mode only. *" }, + { kEffectMagic, CCONST('f', 'r', 'V', '2'), "Farbrausch V2", "* This plugin can cause OpenMPT to freeze if being used in a combination with various other plugins.\nIt is recommended to not use V2 in combination with any other plugins or use it brigded mode only. *" }, }; + // Plugins that should always be bridged. + static const struct + { + VstInt32 id1; + VstInt32 id2; + bool useBridge; + bool shareInstance; + } bridgedPlugs[] = + { + { kEffectMagic, CCONST('f', 'V', '2', 's'), true, true }, // Single instances of V2 can communicate (I think) + { kEffectMagic, CCONST('f', 'r', 'V', '2'), true, false }, + { kEffectMagic, CCONST('S', 'K', 'V', '3'), false, true }, // SideKick v3 always has to run in a shared instance + }; + for(size_t p = 0; p < CountOf(problemPlugs); p++) { if(problemPlugs[p].id2 == plug->pluginId2 && problemPlugs[p].id1 == plug->pluginId1) { CString s; s.Format("WARNING: This plugin has been identified as %s,\nwhich is known to have the following problem with OpenMPT:\n\n%s\n\nWould you still like to add this plugin to the library?", problemPlugs[p].name, problemPlugs[p].problem); - return (Reporting::Confirm(s, false, false, this) == cnfYes); + if(Reporting::Confirm(s, false, false, this) == cnfNo) + { + return false; + } + break; } } + for(size_t p = 0; p < CountOf(bridgedPlugs); p++) + { + if(bridgedPlugs[p].id2 == plug->pluginId2 && bridgedPlugs[p].id1 == plug->pluginId1) + { + plug->useBridge = bridgedPlugs[p].useBridge; + plug->shareBridgeInstance = bridgedPlugs[p].shareInstance; + plug->WriteToCache(); + break; + } + } + return true; } @@ -583,7 +649,7 @@ //------------------------------------- { const HTREEITEM pluginToDelete = m_treePlugins.GetSelectedItem(); - VSTPluginLib *pPlug = (VSTPluginLib *)m_treePlugins.GetItemData(pluginToDelete); + VSTPluginLib *pPlug = GetSelectedPlugin(); CVstPluginManager *pManager = theApp.GetPluginManager(); if ((pManager) && (pPlug)) @@ -596,6 +662,25 @@ } +void CSelectPluginDlg::OnSetBridge() +//---------------------------------- +{ + VSTPluginLib *plug = GetSelectedPlugin(); + if(plug) + { + if(m_chkBridge.IsWindowEnabled()) + { + // Only update this setting if the current setting isn't an enforced setting (e.g. because plugin isn't native). + // This has the advantage that plugins don't get force-checked when switching between 32-bit and 64-bit versions of OpenMPT. + plug->useBridge = m_chkBridge.GetCheck() != BST_UNCHECKED; + } + m_chkShare.EnableWindow(m_chkBridge.GetCheck() != BST_UNCHECKED); + plug->shareBridgeInstance = m_chkShare.GetCheck() != BST_UNCHECKED; + plug->WriteToCache(); + } +} + + void CSelectPluginDlg::OnSize(UINT nType, int cx, int cy) //------------------------------------------------------- { @@ -603,17 +688,19 @@ if (m_treePlugins) { - m_treePlugins.MoveWindow(8, 36, cx - 104, cy - 63, FALSE); + m_treePlugins.MoveWindow(8, 36, cx - 104, cy - 88, FALSE); GetDlgItem(IDC_STATIC_VSTNAMEFILTER)->MoveWindow(8, 11, 40, 21, FALSE); GetDlgItem(IDC_NAMEFILTER)->MoveWindow(40, 8, cx - 136, 21, FALSE); - GetDlgItem(IDC_TEXT_CURRENT_VSTPLUG)->MoveWindow(8, cy - 20, cx - 22, 25, FALSE); + GetDlgItem(IDC_TEXT_CURRENT_VSTPLUG)->MoveWindow(8, cy - 45, cx - 22, 20, FALSE); + m_chkBridge.MoveWindow(8, cy - 25, 110, 20, FALSE); + m_chkShare.MoveWindow(120, cy - 25, cx - 128, 20, FALSE); const int rightOff = cx - 85; // Offset of right button column GetDlgItem(IDOK)->MoveWindow( rightOff, 8, 75, 23, FALSE); GetDlgItem(IDCANCEL)->MoveWindow( rightOff, 39, 75, 23, FALSE); - GetDlgItem(IDC_BUTTON1)->MoveWindow(rightOff, cy - 108, 75, 23, FALSE); - GetDlgItem(IDC_BUTTON3)->MoveWindow(rightOff, cy - 80, 75, 23, FALSE); - GetDlgItem(IDC_BUTTON2)->MoveWindow(rightOff, cy - 52, 75, 23, FALSE); + GetDlgItem(IDC_BUTTON1)->MoveWindow(rightOff, cy - 133, 75, 23, FALSE); + GetDlgItem(IDC_BUTTON3)->MoveWindow(rightOff, cy - 105, 75, 23, FALSE); + GetDlgItem(IDC_BUTTON2)->MoveWindow(rightOff, cy - 77, 75, 23, FALSE); Invalidate(); } } @@ -621,7 +708,7 @@ void CSelectPluginDlg::OnGetMinMaxInfo(MINMAXINFO* lpMMI) //------------------------------------------------------- { - lpMMI->ptMinTrackSize.x = 300; + lpMMI->ptMinTrackSize.x = 350; lpMMI->ptMinTrackSize.y = 270; CDialog::OnGetMinMaxInfo(lpMMI); } Modified: trunk/OpenMPT/mptrack/SelectPluginDialog.h =================================================================== --- trunk/OpenMPT/mptrack/SelectPluginDialog.h 2014-03-19 01:17:34 UTC (rev 3904) +++ trunk/OpenMPT/mptrack/SelectPluginDialog.h 2014-03-19 02:06:01 UTC (rev 3905) @@ -13,9 +13,12 @@ #ifndef SELECTPLUGINDIALOG_H #define SELECTPLUGINDIALOG_H -#include "Vstplug.h" #include "CTreeCtrl.h" +class CModDoc; +struct SNDMIXPLUGIN; +struct VSTPluginLib; + //==================================== class CSelectPluginDlg: public CDialog //==================================== @@ -25,29 +28,36 @@ SNDMIXPLUGIN *m_pPlugin; CModDoc *m_pModDoc; CTreeCtrlW m_treePlugins; + CButton m_chkBridge, m_chkShare; std::wstring m_nameFilter; + bool hasBridge32, hasBridge64; HTREEITEM AddTreeItem(const WCHAR *title, int image, bool sort, HTREEITEM hParent = TVI_ROOT, LPARAM lParam = NULL); public: CSelectPluginDlg(CModDoc *pModDoc, int nPlugSlot, CWnd *parent); ~CSelectPluginDlg(); + +protected: + VSTPluginLib *GetSelectedPlugin() { return reinterpret_cast<VSTPluginLib *>(m_treePlugins.GetItemData(m_treePlugins.GetSelectedItem())); } + void DoClose(); void UpdatePluginsList(VstInt32 forceSelect = 0); - bool VerifyPlug(const VSTPluginLib *plug); + bool VerifyPlug(VSTPluginLib *plug); virtual void DoDataExchange(CDataExchange* pDX); virtual BOOL OnInitDialog(); virtual void OnOK(); virtual void OnCancel(); virtual BOOL PreTranslateMessage(MSG *pMsg); + DECLARE_MESSAGE_MAP() afx_msg void OnAddPlugin(); afx_msg void OnScanFolder(); afx_msg void OnRemovePlugin(); afx_msg void OnNameFilterChanged(); + afx_msg void OnSetBridge(); afx_msg void OnSelChanged(NMHDR *pNotifyStruct, LRESULT *result); afx_msg void OnSelDblClk(NMHDR *pNotifyStruct, LRESULT *result); - DECLARE_MESSAGE_MAP() afx_msg void OnSize(UINT nType, int cx, int cy); afx_msg void OnGetMinMaxInfo(MINMAXINFO* lpMMI); }; Modified: trunk/OpenMPT/mptrack/TrackerSettings.cpp =================================================================== --- trunk/OpenMPT/mptrack/TrackerSettings.cpp 2014-03-19 01:17:34 UTC (rev 3904) +++ trunk/OpenMPT/mptrack/TrackerSettings.cpp 2014-03-19 02:06:01 UTC (rev 3905) @@ -216,6 +216,8 @@ , defaultTemplateFile(conf, "Paths", "DefaultTemplate", mpt::PathString()) // MRU List , mruListLength(conf, "Misc", "MRUListLength", 10) + // Plugins + , bridgeAllPlugins(conf, "VST Plugins", "BridgeAllPlugins", false) { // Effects #ifndef NO_DSP Modified: trunk/OpenMPT/mptrack/TrackerSettings.h =================================================================== --- trunk/OpenMPT/mptrack/TrackerSettings.h 2014-03-19 01:17:34 UTC (rev 3904) +++ trunk/OpenMPT/mptrack/TrackerSettings.h 2014-03-19 02:06:01 UTC (rev 3905) @@ -471,6 +471,9 @@ // Chords MPTChords Chords; + // Plugins + Setting<bool> bridgeAllPlugins; + public: TrackerSettings(SettingsContainer &conf); Modified: trunk/OpenMPT/mptrack/VSTEditor.cpp =================================================================== --- trunk/OpenMPT/mptrack/VSTEditor.cpp 2014-03-19 01:17:34 UTC (rev 3904) +++ trunk/OpenMPT/mptrack/VSTEditor.cpp 2014-03-19 02:06:01 UTC (rev 3905) @@ -18,6 +18,7 @@ BEGIN_MESSAGE_MAP(COwnerVstEditor, CAbstractVstEditor) ON_WM_ERASEBKGND() + ON_WM_PAINT() END_MESSAGE_MAP() @@ -35,6 +36,24 @@ } +void COwnerVstEditor::OnPaint() +//----------------------------- +{ + CAbstractVstEditor::OnPaint(); + if(m_VstPlugin.isBridged) + { + // Instantly redraw bridged plugins so that we don't have to wait for their periodic refresh. + // This usually makes the timer used in the bridge unnecessary, but not always. + CRect rect; + if(plugWindow.GetUpdateRect(&rect, FALSE)) + { + CWnd *child = plugWindow.GetWindow(GW_CHILD | GW_HWNDFIRST); + if(child) child->RedrawWindow(&rect, nullptr, RDW_INVALIDATE | RDW_ALLCHILDREN); + } + } +} + + bool COwnerVstEditor::OpenEditor(CWnd *parent) //-------------------------------------------- { @@ -46,14 +65,18 @@ SetupMenu(); // Set editor window size + ERect rect; + MemsetZero(rect); ERect *pRect = nullptr; m_VstPlugin.Dispatch(effEditGetRect, 0, 0, &pRect, 0); + if(pRect) rect = *pRect; m_VstPlugin.Dispatch(effEditOpen, 0, 0, plugWindow.m_hWnd, 0); m_VstPlugin.Dispatch(effEditGetRect, 0, 0, &pRect, 0); - if((pRect) && (pRect->right > pRect->left) && (pRect->bottom > pRect->top)) + if(pRect) rect = *pRect; + if(rect.right > rect.left && rect.bottom > rect.top) { // Plugin provided valid window size. - SetSize(pRect->right - pRect->left, pRect->bottom - pRect->top); + SetSize(rect.right - rect.left, rect.bottom - rect.top); } // Restore previous editor position Modified: trunk/OpenMPT/mptrack/VSTEditor.h =================================================================== --- trunk/OpenMPT/mptrack/VSTEditor.h 2014-03-19 01:17:34 UTC (rev 3904) +++ trunk/OpenMPT/mptrack/VSTEditor.h 2014-03-19 02:06:01 UTC (rev 3905) @@ -29,13 +29,14 @@ DECLARE_MESSAGE_MAP() afx_msg BOOL OnEraseBkgnd(CDC *) { return TRUE; } + afx_msg void OnPaint(); // Plugins may request to change the GUI size. virtual bool IsResizable() const { return true; }; virtual bool SetSize(int contentWidth, int contentHeight); //Overridden: - void UpdateParamDisplays() { m_VstPlugin.Dispatch(effEditIdle, 0, 0, nullptr, 0.0f); }; //we trust that the plugin GUI can update its display with a bit of idle time. + virtual void UpdateParamDisplays() { CAbstractVstEditor::UpdateParamDisplays(); m_VstPlugin.Dispatch(effEditIdle, 0, 0, nullptr, 0.0f); }; //we trust that the plugin GUI can update its display with a bit of idle time. afx_msg void OnClose(); bool OpenEditor(CWnd *parent); void DoClose(); Modified: trunk/OpenMPT/mptrack/VstPresets.cpp =================================================================== --- trunk/OpenMPT/mptrack/VstPresets.cpp 2014-03-19 01:17:34 UTC (rev 3904) +++ trunk/OpenMPT/mptrack/VstPresets.cpp 2014-03-19 02:06:01 UTC (rev 3905) @@ -60,6 +60,16 @@ { // Program PlugParamIndex numParams = file.ReadUint32BE(); + + VstPatchChunkInfo info; + info.version = 1; + info.pluginUniqueID = header.fxID; + info.pluginVersion = header.fxVersion; + info.numElements = numParams; + MemsetZero(info.future); + plugin.Dispatch(effBeginLoadProgram, 0, 0, &info, 0.0f); + plugin.Dispatch(effBeginSetProgram, 0, 0, nullptr, 0.0f); + char prgName[28]; file.ReadString<mpt::String::maybeNullTerminated>(prgName, 28); plugin.Dispatch(effSetProgramName, 0, 0, prgName, 0.0f); @@ -79,6 +89,7 @@ FileReader chunk = file.ReadChunk(file.ReadUint32BE()); plugin.Dispatch(effSetChunk, 1, chunk.GetLength(), const_cast<char *>(chunk.GetRawData()), 0); } + plugin.Dispatch(effEndSetProgram, 0, 0, nullptr, 0.0f); } else if((header.fxMagic == bankMagic || header.fxMagic == chunkBankMagic) && firstChunk) { // Bank - only read if it's the first chunk in the file, not if it's a sub chunk. @@ -86,17 +97,27 @@ uint32 currentProgram = file.ReadUint32BE(); file.Skip(124); + VstPatchChunkInfo info; + info.version = 1; + info.pluginUniqueID = header.fxID; + info.pluginVersion = header.fxVersion; + info.numElements = numProgs; + MemsetZero(info.future); + plugin.Dispatch(effBeginLoadBank, 0, 0, &info, 0.0f); + if(header.fxMagic == bankMagic) { VstInt32 oldCurrentProgram = plugin.GetCurrentProgram(); for(uint32 p = 0; p < numProgs; p++) { - plugin.SetCurrentProgram(p); + plugin.Dispatch(effBeginSetProgram, 0, 0, nullptr, 0.0f); + plugin.Dispatch(effSetProgram, 0, 0, nullptr, 0.0f); ErrorCode retVal = LoadFile(file, plugin); if(retVal != noError) { return retVal; } + plugin.Dispatch(effEndSetProgram, 0, 0, nullptr, 0.0f); } plugin.SetCurrentProgram(oldCurrentProgram); } else Modified: trunk/OpenMPT/mptrack/Vstplug.cpp =================================================================== --- trunk/OpenMPT/mptrack/Vstplug.cpp 2014-03-19 01:17:34 UTC (rev 3904) +++ trunk/OpenMPT/mptrack/Vstplug.cpp 2014-03-19 02:06:01 UTC (rev 3905) @@ -412,7 +412,7 @@ CAbstractVstEditor *pVstEditor = pVstPlugin->GetEditor(); if(pVstEditor && ::IsWindow(pVstEditor->m_hWnd)) { - pVstEditor->SetupMenu(true); + pVstEditor->UpdateDisplay(); } } return 0; @@ -652,8 +652,9 @@ // CVstPlugin // -CVstPlugin::CVstPlugin(HMODULE hLibrary, VSTPluginLib &factory, SNDMIXPLUGIN &mixStruct, AEffect &effect, CSoundFile &sndFile) : m_SndFile(sndFile), m_Factory(factory), m_Effect(effect) -//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +CVstPlugin::CVstPlugin(HMODULE hLibrary, VSTPluginLib &factory, SNDMIXPLUGIN &mixStruct, AEffect &effect, CSoundFile &sndFile) + : m_SndFile(sndFile), m_Factory(factory), m_Effect(effect), isBridged(!memcmp(&effect.resvd2, "OMPT", 4)) +//----------------------------------------------------------------------------------------------------------- { m_hLibrary = hLibrary; m_nRefCount = 1; @@ -709,8 +710,7 @@ m_bPassKeypressesToPlug = false; m_bRecordMIDIOut = false; - //rewbs.VSTcompliance - //Store a pointer so we can get the CVstPlugin object from the basic VST effect object. + // Store a pointer so we can get the CVstPlugin object from the basic VST effect object. m_Effect.resvd1 = ToVstPtr(this); m_nSlot = FindSlot(); m_nSampleRate = m_SndFile.GetSampleRate(); @@ -815,7 +815,8 @@ //------------------------------------ { // Input pointer array size must be >= 2 for now - the input buffer assignment might write to non allocated mem. otherwise - bool result = mixBuffer.Initialize(MAX(m_Effect.numInputs, 2), m_Effect.numOutputs); + // In case of a bridged plugin, the AEffect struct has been updated before calling this opcode, so we don't have to worry about it being up-to-date. + bool result = mixBuffer.Initialize(std::max<size_t>(m_Effect.numInputs, 2), m_Effect.numOutputs); m_MixState.pOutBufferL = mixBuffer.GetInputBuffer(0); m_MixState.pOutBufferR = mixBuffer.GetInputBuffer(1); @@ -1487,7 +1488,10 @@ } float **outputBuffers = mixBuffer.GetOutputBufferArray(); - mixBuffer.ClearOutputBuffers(nSamples); + if(!isBridged) + { + mixBuffer.ClearOutputBuffers(nSamples); + } // Do the VST processing magic try @@ -1533,7 +1537,10 @@ } } - ProcessMixOps(pOutL, pOutR, nSamples); + if(m_Effect.numOutputs != 0) + { + ProcessMixOps(pOutL, pOutR, outputBuffers[0], outputBuffers[m_Effect.numOutputs > 1 ? 1 : 0], nSamples); + } // If dry mix is ticked, we add the unprocessed buffer, // except if this is an instrument since this it has already been done: @@ -1551,10 +1558,10 @@ } -void CVstPlugin::ProcessMixOps(float *pOutL, float *pOutR, size_t nSamples) -//------------------------------------------------------------------------- +void CVstPlugin::ProcessMixOps(float *pOutL, float *pOutR, float *leftPlugOutput, float *rightPlugOutput, size_t nSamples) +//------------------------------------------------------------------------------------------------------------------------ { - float *leftPlugOutput; +/* float *leftPlugOutput; float *rightPlugOutput; if(m_Effect.numOutputs == 1) @@ -1569,7 +1576,7 @@ } else { return; - } + }*/ // -> mixop == 0 : normal processing // -> mixop == 1 : MIX += DRY - WET * wetRatio Modified: trunk/OpenMPT/mptrack/Vstplug.h =================================================================== --- trunk/OpenMPT/mptrack/Vstplug.h 2014-03-19 01:17:34 UTC (rev 3904) +++ trunk/OpenMPT/mptrack/Vstplug.h 2014-03-19 02:06:01 UTC (rev 3905) @@ -33,6 +33,7 @@ struct VSTPluginLib { +public: enum PluginCategory { // Same plugin categories as defined in VST SDK @@ -54,6 +55,7 @@ numCategories, }; +public: CVstPlugin *pPluginsList; // Pointer to first plugin instance (this instance carries pointers to other instances) mpt::PathString libraryName; // Display name mpt::PathString dllPath; // Full path name @@ -61,24 +63,36 @@ VstInt32 pluginId2; // Plugin unique ID PluginCategory category; bool isInstrument; + bool useBridge, shareBridgeInstance; +protected: + int8 dllBits; +public: VSTPluginLib(const mpt::PathString &dllPath, const mpt::PathString &libraryName) : pPluginsList(nullptr), libraryName(libraryName), dllPath(dllPath), pluginId1(0), pluginId2(0), category(catUnknown), - isInstrument(false) + isInstrument(false), useBridge(false), shareBridgeInstance(false), + dllBits(-1) { } + // Check whether a plugin can be hosted inside OpenMPT or requires bridging + int8 GetDllBits(); + bool IsNative() { return GetDllBits() == sizeof(void *); } + + void WriteToCache() const; + uint32 EncodeCacheFlags() const { - return (isInstrument ? 1 : 0) | (category << 1); + // Format: 00000000.00000000.000000SB.CCCCCCCI + return (isInstrument ? 1 : 0) | (category << 1) | (useBridge ? 0x100 : 0) | (shareBridgeInstance ? 0x200 : 0); } void DecodeCacheFlags(uint32 flags) { - category = static_cast<PluginCategory>(flags >> 1); + category = static_cast<PluginCategory>((flags & 0xFF) >> 1); if(category >= numCategories) { category = catUnknown; @@ -88,6 +102,14 @@ isInstrument = true; category = catSynth; } + if(flags & 0x100) + { + useBridge = true; + } + if(flags & 0x200) + { + shareBridgeInstance = true; + } } }; @@ -159,6 +181,7 @@ bool m_bRecordAutomation; bool m_bPassKeypressesToPlug; bool m_bRecordMIDIOut; + const bool isBridged; // True if our built-in plugin bridge is being used. public: CVstPlugin(HINSTANCE hLibrary, VSTPluginLib &factory, SNDMIXPLUGIN &mixPlugin, AEffect &effect, CSoundFile &sndFile); @@ -238,11 +261,11 @@ void MidiPitchBend(uint8 nMidiCh, int32 increment, int8 pwd); void MidiVibrato(uint8 nMidiCh, int32 depth, int8 pwd); void MidiCommand(uint8 nMidiCh, uint8 nMidiProg, uint16 wMidiBank, uint16 note, uint16 vol, CHANNELINDEX trackChannel); - void HardAllNotesOff(); //rewbs.VSTiNoteHoldonStopFix - bool isPlaying(UINT note, UINT midiChn, UINT trackerChn); //rewbs.instroVST - bool MoveNote(UINT note, UINT midiChn, UINT sourceTrackerChn, UINT destTrackerChn); //rewbs.instroVST - void NotifySongPlaying(bool playing); //rewbs.VSTCompliance - bool IsSongPlaying() {return m_bSongPlaying;} //rewbs.VSTCompliance + void HardAllNotesOff(); + bool isPlaying(UINT note, UINT midiChn, UINT trackerChn); + bool MoveNote(UINT note, UINT midiChn, UINT sourceTrackerChn, UINT destTrackerChn); + void NotifySongPlaying(bool playing); + bool IsSongPlaying() const { return m_bSongPlaying; } bool IsResumed() {return m_bPlugResumed;} void Resume(); void Suspend(); @@ -276,7 +299,7 @@ void ProcessVSTEvents(); void ReceiveVSTEvents(const VstEvents *events) const; - void ProcessMixOps(float *pOutL, float *pOutR, size_t nSamples); + void ProcessMixOps(float *pOutL, float *pOutR, float *leftPlugOutput, float *rightPlugOutput, size_t nSamples); void ReportPlugException(std::wstring text) const; @@ -310,6 +333,7 @@ void UpdateMixStructPtr(void*) {} void Bypass(bool = true) { } bool IsBypassed() const { return false; } + bool IsSongPlaying() const { return false; } #endif // NO_VST }; @@ -347,12 +371,14 @@ protected: void EnumerateDirectXDMOs(); - AEffect *LoadPlugin(const mpt::PathString &pluginPath, HINSTANCE &library); + AEffect *LoadPlugin(const VSTPluginLib &plugin, HINSTANCE &library, bool forceBridge); +public: + static VstIntPtr VSTCALLBACK MasterCallBack(AEffect *effect, VstInt32 opcode, VstInt32 index, VstIntPtr value, void *ptr, float opt); + protected: VstIntPtr VstCallback(AEffect *effect, VstInt32 opcode, VstInt32 index, VstIntPtr value, void *ptr, float opt); VstIntPtr VstFileSelector(bool destructor, VstFileSelect *fileSel, const CVstPlugin *plugin); - static VstIntPtr VSTCALLBACK MasterCallBack(AEffect *effect, VstInt32 opcode, VstInt32 index, VstIntPtr value, void *ptr, float opt); static bool CreateMixPluginProc(SNDMIXPLUGIN &, CSoundFile &); VstTimeInfo timeInfo; Modified: trunk/OpenMPT/mptrack/mptrack.rc =================================================================== --- trunk/OpenMPT/mptrack/mptrack.rc 2014-03-19 01:17:34 UTC (rev 3904) +++ trunk/OpenMPT/mptrack/mptrack.rc 2014-03-19 02:06:01 UTC (rev 3905) @@ -1444,20 +1444,22 @@ RTEXT "--",IDC_TEXT2,260,89,22,8 END -IDD_SELECTMIXPLUGIN DIALOGEX 0, 0, 249, 220 +IDD_SELECTMIXPLUGIN DIALOGEX 0, 0, 250, 231 STYLE DS_SETFONT | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME CAPTION "Plugin Manager" FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN - LTEXT "Filter:",IDC_STATIC_VSTNAMEFILTER,6,9,18,8 + LTEXT "&Filter:",IDC_STATIC_VSTNAMEFILTER,6,9,18,8 EDITTEXT IDC_NAMEFILTER,30,6,150,14,ES_AUTOHSCROLL + DEFPUSHBUTTON "&Add to Song",IDOK,187,6,53,14 + PUSHBUTTON "&Cancel",IDCANCEL,186,24,54,14 CONTROL "Tree1",IDC_TREE1,"SysTreeView32",TVS_DISABLEDRAGDROP | TVS_SHOWSELALWAYS | WS_HSCROLL | WS_TABSTOP,6,24,174,180,WS_EX_CLIENTEDGE - DEFPUSHBUTTON "Add to Song",IDOK,187,6,53,14 + EDITTEXT IDC_TEXT_CURRENT_VSTPLUG,7,206,235,12,ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER + CONTROL "Use Plugin &Bridge",IDC_CHECK1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,216,72,12 + CONTROL "Share Bridge between all &Instances",IDC_CHECK2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,78,216,129,12 PUSHBUTTON "&New plugin...",IDC_BUTTON1,186,150,52,14,BS_MULTILINE + PUSHBUTTON "&Scan folder...",IDC_BUTTON3,186,168,52,14,BS_MULTILINE PUSHBUTTON "&Remove",IDC_BUTTON2,186,186,52,14 - PUSHBUTTON "&Cancel",IDCANCEL,186,24,54,14 - PUSHBUTTON "&Scan folder...",IDC_BUTTON3,186,168,52,14,BS_MULTILINE - EDITTEXT IDC_TEXT_CURRENT_VSTPLUG,7,206,235,14,ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER END IDD_PLUGINEDITOR DIALOGEX 0, 0, 485, 153 @@ -1818,9 +1820,9 @@ IDD_SELECTMIXPLUGIN, DIALOG BEGIN LEFTMARGIN, 7 - RIGHTMARGIN, 242 + RIGHTMARGIN, 243 TOPMARGIN, 7 - BOTTOMMARGIN, 213 + BOTTOMMARGIN, 224 END IDD_PLUGINEDITOR, DIALOG Modified: trunk/OpenMPT/mptrack/mptrack_08.vcproj =================================================================== --- trunk/OpenMPT/mptrack/mptrack_08.vcproj 2014-03-19 01:17:34 UTC (rev 3904) +++ trunk/OpenMPT/mptrack/mptrack_08.vcproj 2014-03-19 02:06:01 UTC (rev 3905) @@ -349,7 +349,7 @@ > </File> <File - RelativePath="..\soundlib\plugins\JBridge.cpp" + RelativePath="..\pluginBridge\BridgeWrapper.cpp" > </File> <File @@ -999,10 +999,14 @@ > </File> <File - RelativePath=".\soundlib\plugins\JBridge.h" + RelativePath="..\pluginBridge\BridgeWrapper.h" > </File> <File + RelativePath="..\pluginBridge\BridgeCommon.h" + > + </File> + <File RelativePath="..\common\Logging.h" > </File> Modified: trunk/OpenMPT/mptrack/mptrack_10.vcxproj =================================================================== --- trunk/OpenMPT/mptrack/mptrack_10.vcxproj 2014-03-19 01:17:34 UTC (rev 3904) +++ trunk/OpenMPT/mptrack/mptrack_10.vcxproj 2014-03-19 02:06:01 UTC (rev 3905) @@ -453,6 +453,7 @@ <ClCompile Include="..\common\serialization_utils.cpp" /> <ClCompile Include="..\common\typedefs.cpp" /> <ClCompile Include="..\common\version.cpp" /> + <ClCompile Include="..\pluginBridge\BridgeWrapper.cpp" /> <ClCompile Include="..\sounddev\SoundDevice.cpp" /> <ClCompile Include="..\sounddev\SoundDeviceASIO.cpp" /> <ClCompile Include="..\sounddev\SoundDeviceDirectSound.cpp" /> @@ -491,7 +492,6 @@ <ClCompile Include="..\soundlib\pattern.cpp" /> <ClCompile Include="..\soundlib\patternContainer.cpp" /> <ClCompile Include="..\soundlib\plugins\DmoToVst.cpp" /> - <ClCompile Include="..\soundlib\plugins\JBridge.cpp" /> <ClCompile Include="..\soundlib\plugins\PluginManager.cpp" /> <ClCompile Include="..\soundlib\RowVisitor.cpp" /> <ClCompile Include="..\soundlib\S3MTools.cpp" /> @@ -654,6 +654,9 @@ <ClInclude Include="..\common\typedefs.h" /> <ClInclude Include="..\common\version.h" /> <ClInclude Include="..\common\versionNumber.h" /> + <ClInclude Include="..\pluginBridge\AEffectWrapper.h" /> + <ClInclude Include="..\pluginBridge\BridgeCommon.h" /> + <ClInclude Include="..\pluginBridge\BridgeWrapper.h" /> <ClInclude Include="..\sounddev\SoundDevice.h" /> <ClInclude Include="..\sounddev\SoundDeviceASIO.h" /> <ClInclude Include="..\sounddev\SoundDeviceDirectSound.h" /> @@ -690,7 +693,6 @@ <ClInclude Include="..\soundlib\mod_specifications.h" /> <ClInclude Include="..\soundlib\pattern.h" /> <ClInclude Include="..\soundlib\patternContainer.h" /> - <ClInclude Include="..\soundlib\plugins\JBridge.h" /> <ClInclude Include="..\soundlib\plugins\PluginEventQueue.h" /> <ClInclude Include="..\soundlib\plugins\PluginMixBuffer.h" /> <ClInclude Include="..\soundlib\plugins\PlugInterface.h" /> Modified: trunk/OpenMPT/mptrack/mptrack_10.vcxproj.filters =================================================================== --- trunk/OpenMPT/mptrack/mptrack_10.vcxproj.filters 2014-03-19 01:17:34 UTC (rev 3904) +++ trunk/OpenMPT/mptrack/mptrack_10.vcxproj.filters 2014-03-19 02:06:01 UTC (rev 3905) @@ -169,9 +169,6 @@ <ClCompile Include="..\common\stdafx.cpp"> <Filter>Source Files\common</Filter> </ClCompile> - <ClCompile Include="..\soundlib\plugins\JBridge.cpp"> - <Filter>Source Files\soundlib\plugins</Filter> - </ClCompile> <ClCompile Include="..\soundlib\Dlsbank.cpp"> <Filter>Source Files\soundlib</Filter> </ClCompile> @@ -511,6 +508,9 @@ <ClCompile Include="AppendModule.cpp"> <Filter>Header Files\mptrack</Filter> </ClCompile> + <ClCompile Include="..\pluginBridge\BridgeWrapper.cpp"> + <Filter>Source Files\pluginBridgeWrapper</Filter> + </ClCompile> </ItemGroup> <ItemGroup> <ClInclude Include="..\soundlib\Loaders.h"> @@ -606,9 +606,6 @@ <ClInclude Include="..\common\stdafx.h"> <Filter>Header Files\common</Filter> </ClInclude> - <ClInclude Include="..\soundlib\plugins\JBridge.h"> - <Filter>Header Files\soundlib\plugins</Filter> - </ClInclude> <ClInclude Include="..\soundlib\plugins\PlugInterface.h"> <Filter>Header Files\soundlib\plugins</Filter> </ClInclude> @@ -996,6 +993,15 @@ <ClInclude Include="..\sounddev\SoundDeviceThread.h"> <Filter>Header Files\sounddev</Filter> </ClInclude> + <ClInclude Include="..\pluginBridge\AEffectWrapper.h"> + <Filter>Header Files\pluginBridgeWrapper</Filter> + </ClInclude> + <ClInclude Include="..\pluginBridge\BridgeCommon.h"> + <Filter>Header Files\pluginBridgeWrapper</Filter> + </ClInclude> + <ClInclude Include="..\pluginBridge\BridgeWrapper.h"> + <Filter>Header Files\pluginBridgeWrapper</Filter> + </ClInclude> </ItemGroup> <ItemGroup> <None Include="res\bitmap1.bmp"> @@ -1150,6 +1156,12 @@ <Filter Include="Source Files\unarchiver"> <UniqueIdentifier>{2e5a8242-6eec-48cd-93b3-5880bee8b740}</UniqueIdentifier> </Filter> + <Filter Include="Header Files\pluginBridgeWrapper"> + <UniqueIdentifier>{d5f79087-1086-472a-a35b-402923a7f138}</UniqueIdentifier> + </Filter> + <Filter Include="Source Files\pluginBridgeWrapper"> + <UniqueIdentifier>{c5ca412e-0120-4e25-a6c0-945eedd7a0de}</UniqueIdentifier> + </Filter> </ItemGroup> <ItemGroup> <ResourceCompile Include="mptrack.rc"> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sag...@us...> - 2014-03-21 01:31:20
|
Revision: 3923 http://sourceforge.net/p/modplug/code/3923 Author: saga-games Date: 2014-03-21 01:31:14 +0000 (Fri, 21 Mar 2014) Log Message: ----------- [Fix] Instrument tab: A very simple attempt at fixing keyboard-only navigation in the plugin list (http://bugs.openmpt.org/view.php?id=490). Modified Paths: -------------- trunk/OpenMPT/mptrack/Ctrl_ins.cpp trunk/OpenMPT/mptrack/Ctrl_ins.h trunk/OpenMPT/mptrack/mptrack.rc Modified: trunk/OpenMPT/mptrack/Ctrl_ins.cpp =================================================================== --- trunk/OpenMPT/mptrack/Ctrl_ins.cpp 2014-03-21 00:40:00 UTC (rev 3922) +++ trunk/OpenMPT/mptrack/Ctrl_ins.cpp 2014-03-21 01:31:14 UTC (rev 3923) @@ -792,6 +792,7 @@ ON_CBN_SELCHANGE(IDC_COMBO4, OnPPCChanged) ON_CBN_SELCHANGE(IDC_COMBO5, OnMCHChanged) ON_CBN_SELCHANGE(IDC_COMBO6, OnMixPlugChanged) //rewbs.instroVSTi + ON_CBN_DROPDOWN(IDC_COMBO6, OnOpenPluginList) ON_CBN_SELCHANGE(IDC_COMBO9, OnResamplingChanged) ON_CBN_SELCHANGE(IDC_FILTERMODE, OnFilterModeChanged) ON_CBN_SELCHANGE(IDC_PLUGIN_VOLUMESTYLE, OnPluginVolumeHandlingChanged) @@ -861,6 +862,7 @@ { m_nInstrument = 1; m_nLockCount = 1; + openendPluginListWithMouse = false; } @@ -2068,6 +2070,9 @@ ModInstrument *pIns = m_sndFile.Instruments[m_nInstrument]; PLUGINDEX nPlug = static_cast<PLUGINDEX>(m_CbnMixPlug.GetItemData(m_CbnMixPlug.GetCurSel())); + bool wasOpenedWithMouse = openendPluginListWithMouse; + openendPluginListWithMouse = false; + if (pIns) { BOOL enableVol = (nPlug < 1 || m_sndFile.GetModFlag(MSF_MIDICC_BUGEMULATION)) ? FALSE : TRUE; @@ -2092,7 +2097,7 @@ const SNDMIXPLUGIN &plugin = m_sndFile.m_MixPlugins[pIns->nMixPlug - 1]; bool active = !IsLocked(); - if(!plugin.IsValidPlugin() && active) + if(!plugin.IsValidPlugin() && active && wasOpenedWithMouse) { // No plugin in this slot yet: Ask user to add one. #ifndef NO_VST Modified: trunk/OpenMPT/mptrack/Ctrl_ins.h =================================================================== --- trunk/OpenMPT/mptrack/Ctrl_ins.h 2014-03-21 00:40:00 UTC (rev 3922) +++ trunk/OpenMPT/mptrack/Ctrl_ins.h 2014-03-21 01:31:14 UTC (rev 3923) @@ -97,16 +97,14 @@ CSliderCtrl m_SliderVolSwing, m_SliderPanSwing, m_SliderCutSwing, m_SliderResSwing, m_SliderCutOff, m_SliderResonance; CNoteMapWnd m_NoteMap; - INSTRUMENTINDEX m_nInstrument; - -// -> CODE#0027 -// -> DESC="per-instrument volume ramping setup (refered as attack)" CSliderCtrl m_SliderAttack; CSpinButtonCtrl m_SpinAttack; -// -! NEW_FEATURE#0027 - //Tuning CComboBox m_ComboTuning; + + INSTRUMENTINDEX m_nInstrument; + bool openendPluginListWithMouse; + void UpdateTuningComboBox(); void BuildTuningComboBox(); @@ -175,6 +173,7 @@ afx_msg void OnPluginVelocityHandlingChanged(); afx_msg void OnPluginVolumeHandlingChanged(); afx_msg void OnPitchWheelDepthChanged(); + afx_msg void OnOpenPluginList() { openendPluginListWithMouse = true; } // -> CODE#0027 Modified: trunk/OpenMPT/mptrack/mptrack.rc =================================================================== --- trunk/OpenMPT/mptrack/mptrack.rc 2014-03-21 00:40:00 UTC (rev 3922) +++ trunk/OpenMPT/mptrack/mptrack.rc 2014-03-21 01:31:14 UTC (rev 3923) @@ -882,84 +882,84 @@ STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN + CONTROL "Toolbar1",IDC_TOOLBAR1,"ToolbarWindow32",WS_GROUP | 0x4d,4,4,76,17 EDITTEXT IDC_EDIT_INSTRUMENT,87,7,33,12,ES_AUTOHSCROLL | ES_NUMBER CONTROL "Spin1",IDC_SPIN_INSTRUMENT,"msctls_updown32",UDS_WRAP | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS | WS_TABSTOP,111,8,11,11 EDITTEXT IDC_SAMPLE_NAME,131,6,151,12,ES_AUTOHSCROLL + CTEXT "File",IDC_STATIC,289,6,35,12,SS_CENTERIMAGE,WS_EX_STATICEDGE EDITTEXT IDC_SAMPLE_FILENAME,324,6,105,12,ES_AUTOHSCROLL - CTEXT "Global Volume",IDC_STATIC,8,36,72,12,SS_CENTERIMAGE,WS_EX_STATICEDGE + GROUPBOX "General",IDC_STATIC,3,27,123,141 + CTEXT "Global &Volume",IDC_STATIC,8,36,72,12,SS_CENTERIMAGE,WS_EX_STATICEDGE EDITTEXT IDC_EDIT8,84,36,37,12,ES_AUTOHSCROLL | ES_NUMBER CONTROL "Spin1",IDC_SPIN8,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,112,40,8,10 - CTEXT "Fade Out",IDC_STATIC,8,53,72,12,SS_CENTERIMAGE,WS_EX_STATICEDGE + CTEXT "&Fade Out",IDC_STATIC,8,53,72,12,SS_CENTERIMAGE,WS_EX_STATICEDGE EDITTEXT IDC_EDIT7,84,53,37,12,ES_AUTOHSCROLL | ES_NUMBER CONTROL "",IDC_SPIN7,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,112,57,8,10 - CONTROL "Set Pan",IDC_CHECK1,"Button",BS_AUTOCHECKBOX | BS_FLAT | WS_TABSTOP,42,72,42,10 + CONTROL "Set &Pan",IDC_CHECK1,"Button",BS_AUTOCHECKBOX | BS_FLAT | WS_TABSTOP,42,72,42,10 EDITTEXT IDC_EDIT9,84,70,37,12,ES_AUTOHSCROLL | ES_NUMBER CONTROL "",IDC_SPIN9,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,112,74,8,11 + GROUPBOX "Pitch/Pan",IDC_STATIC,3,88,123,80 CTEXT "Sep",IDC_STATIC,8,99,25,13,SS_CENTERIMAGE,WS_EX_STATICEDGE EDITTEXT IDC_EDIT15,33,99,27,13,ES_AUTOHSCROLL CONTROL "Spin1",IDC_SPIN12,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,54,102,11,11 CTEXT "Centre",IDC_STATIC,69,99,26,13,SS_CENTERIMAGE,WS_EX_STATICEDGE COMBOBOX IDC_COMBO4,95,99,27,91,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - CTEXT "Ramping",IDC_STATIC,7,133,39,13,SS_CENTERIMAGE,WS_EX_STATICEDGE + GROUPBOX "Sample Quality",IDC_STATIC,3,118,123,50 + CTEXT "Rampi&ng",IDC_STATIC,7,133,39,13,SS_CENTERIMAGE,WS_EX_STATICEDGE CONTROL "",IDC_SLIDER5,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS,47,135,36,10 EDITTEXT IDC_EDIT2,85,133,36,12,ES_AUTOHSCROLL | ES_NUMBER CONTROL "",IDC_SPIN1,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,116,133,8,12 - CTEXT "Resampling",IDC_STATIC,7,151,39,13,SS_CENTERIMAGE,WS_EX_STATICEDGE + CTEXT "Resamplin&g",IDC_STATIC,7,151,39,13,SS_CENTERIMAGE,WS_EX_STATICEDGE COMBOBOX IDC_COMBO9,50,151,71,81,CBS_DROPDOWNLIST | WS_TABSTOP - CONTROL "Reso",IDC_CHECK3,"Button",BS_AUTOCHECKBOX | BS_FLAT | WS_TABSTOP,136,37,33,10 + GROUPBOX "Filter",IDC_STATIC,131,27,104,141 + CONTROL "&Reso",IDC_CHECK3,"Button",BS_AUTOCHECKBOX | BS_FLAT | WS_TABSTOP,136,37,33,10 CONTROL "Slider2",IDC_SLIDER4,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | TBS_TOOLTIPS | WS_DISABLED | WS_TABSTOP,168,37,64,10 - CONTROL "Cutoff",IDC_CHECK2,"Button",BS_AUTOCHECKBOX | BS_FLAT | WS_TABSTOP,136,52,35,10 + CONTROL "&Cutoff",IDC_CHECK2,"Button",BS_AUTOCHECKBOX | BS_FLAT | WS_TABSTOP,136,52,35,10 CONTROL "Slider2",IDC_SLIDER3,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | TBS_TOOLTIPS | WS_DISABLED | WS_TABSTOP,168,53,64,10 RTEXT "--",IDC_FILTERTEXT,166,62,65,8 CTEXT "Mode",IDC_STATIC,135,70,23,13,SS_CENTERIMAGE,WS_EX_STATICEDGE COMBOBOX IDC_FILTERMODE,163,70,69,42,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP - CTEXT "Volume",IDC_STATIC,136,99,33,13,SS_CENTERIMAGE,WS_EX_STATICEDGE + GROUPBOX "Random Variation",IDC_STATIC,131,88,104,80 + CTEXT "V&olume",IDC_STATIC,136,99,33,13,SS_CENTERIMAGE,WS_EX_STATICEDGE CONTROL "Slider1",IDC_SLIDER1,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | TBS_TOOLTIPS | WS_TABSTOP,172,101,60,10 - CTEXT "Panning",IDC_STATIC,136,116,33,13,SS_CENTERIMAGE,WS_EX_STATICEDGE + CTEXT "P&anning",IDC_STATIC,136,116,33,13,SS_CENTERIMAGE,WS_EX_STATICEDGE CONTROL "Slider1",IDC_SLIDER2,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | TBS_TOOLTIPS | WS_TABSTOP,172,118,60,10 - CTEXT "Cutoff",IDC_STATIC,136,133,33,13,SS_CENTERIMAGE,WS_EX_STATICEDGE + CTEXT "C&utoff",IDC_STATIC,136,133,33,13,SS_CENTERIMAGE,WS_EX_STATICEDGE CONTROL "",IDC_SLIDER6,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | TBS_TOOLTIPS | WS_TABSTOP,172,135,60,10 - CTEXT "Reso",IDC_STATIC,136,151,33,13,SS_CENTERIMAGE,WS_EX_STATICEDGE + CTEXT "R&eso",IDC_STATIC,136,151,33,13,SS_CENTERIMAGE,WS_EX_STATICEDGE CONTROL "",IDC_SLIDER7,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | TBS_TOOLTIPS | WS_TABSTOP,172,152,60,10 + GROUPBOX "New Note Action",IDC_STATIC,240,27,122,60 CTEXT "Action",IDC_STATIC,246,36,59,13,SS_CENTERIMAGE,WS_EX_STATICEDGE COMBOBOX IDC_COMBO1,308,36,50,54,CBS_DROPDOWNLIST | WS_TABSTOP - CTEXT "Duplicate Check",IDC_STATIC,246,53,59,13,SS_CENTERIMAGE,WS_EX_STATICEDGE + CTEXT "&Duplicate Check",IDC_STATIC,246,53,59,13,SS_CENTERIMAGE,WS_EX_STATICEDGE COMBOBOX IDC_COMBO2,308,53,50,69,CBS_DROPDOWNLIST | WS_TABSTOP - CTEXT "Duplicate Action",IDC_STATIC,246,70,59,13,SS_CENTERIMAGE,WS_EX_STATICEDGE + CTEXT "Dupl&icate Action",IDC_STATIC,246,70,59,13,SS_CENTERIMAGE,WS_EX_STATICEDGE COMBOBOX IDC_COMBO3,308,70,50,54,CBS_DROPDOWNLIST | WS_TABSTOP + GROUPBOX "Plugin / &MIDI",IDC_STATIC,240,88,222,80 COMBOBOX IDC_COMBO6,246,99,72,127,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP PUSHBUTTON "Editor",IDC_INSVIEWPLG,321,99,37,13,0,WS_EX_STATICEDGE CTEXT "MIDI Channel",IDC_STATIC,246,116,72,12,SS_CENTERIMAGE,WS_EX_STATICEDGE COMBOBOX IDC_COMBO5,321,116,37,169,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP CTEXT "MIDI Program",IDC_STATIC,246,134,72,12,SS_CENTERIMAGE,WS_EX_STATICEDGE EDITTEXT IDC_EDIT10,321,134,37,12,ES_AUTOHSCROLL - CONTROL "Spin1",IDC_SPIN10,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,352,135,8,11 CTEXT "MIDI Bank",IDC_STATIC,245,152,72,12,SS_CENTERIMAGE,WS_EX_STATICEDGE EDITTEXT IDC_EDIT11,321,152,37,12,ES_AUTOHSCROLL + CONTROL "Spin1",IDC_SPIN10,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,352,135,8,11 CONTROL "",IDC_SPIN11,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,351,153,8,11 - CTEXT "P. Bend Range",IDC_STATIC,366,99,52,12,SS_CENTERIMAGE,WS_EX_STATICEDGE + CTEXT "P. &Bend Range",IDC_STATIC,366,99,52,12,SS_CENTERIMAGE,WS_EX_STATICEDGE EDITTEXT IDC_PITCHWHEELDEPTH,420,99,36,12,ES_AUTOHSCROLL CONTROL "",IDC_SPIN2,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS | WS_TABSTOP,444,102,11,11 - CTEXT "Volume Command Handling",IDC_STATIC,366,116,90,10,SS_CENTERIMAGE,WS_EX_STATICEDGE + CTEXT "Volume Command &Handling",IDC_STATIC,366,116,90,10,SS_CENTERIMAGE,WS_EX_STATICEDGE COMBOBOX IDC_PLUGIN_VOLUMESTYLE,366,128,90,53,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP CONTROL "Volume commands with note are Velocities",IDC_PLUGIN_VELOCITYSTYLE, "Button",BS_AUTOCHECKBOX | BS_VCENTER | BS_MULTILINE | BS_FLAT | WS_TABSTOP,366,141,90,24 + GROUPBOX "Alternative &Tuning",IDC_STATIC,364,27,98,28 COMBOBOX IDC_COMBOTUNING,368,38,88,48,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - CONTROL "Loop tempo:",IDC_CHECK_PITCHTEMPOLOCK,"Button",BS_AUTOCHECKBOX | BS_FLAT | WS_TABSTOP,369,70,51,8 + GROUPBOX "Pitch/Tempo Lock",IDC_STATIC,364,57,98,30 + CONTROL "&Loop Tempo:",IDC_CHECK_PITCHTEMPOLOCK,"Button",BS_AUTOCHECKBOX | BS_FLAT | WS_TABSTOP,369,70,51,8 EDITTEXT IDC_EDIT_PITCHTEMPOLOCK,426,68,30,12,ES_AUTOHSCROLL + GROUPBOX "Sample Map",IDC_STATIC,466,27,62,141 CONTROL "",IDC_NOTEMAP,"Static",SS_GRAYRECT | SS_NOTIFY | WS_TABSTOP,466,37,62,131,WS_EX_CLIENTEDGE - CONTROL "Toolbar1",IDC_TOOLBAR1,"ToolbarWindow32",WS_GROUP | 0x4d,4,4,76,17 - CTEXT "File",IDC_STATIC,289,6,35,12,SS_CENTERIMAGE,WS_EX_STATICEDGE - GROUPBOX "Random Variation",IDC_STATIC,131,88,104,80 - GROUPBOX "Filter",IDC_STATIC,131,27,104,141 - GROUPBOX "General",IDC_STATIC,3,27,123,141 - GROUPBOX "Pitch/Pan",IDC_STATIC,3,88,123,80 - GROUPBOX "New Note Action",IDC_STATIC,240,27,122,60 - GROUPBOX "Sample Quality",IDC_STATIC,3,118,123,50 - GROUPBOX "Pitch/Tempo Lock",IDC_STATIC,364,57,98,30 - GROUPBOX "Sample Map",IDC_STATIC,466,27,62,141 - GROUPBOX "Alternative Tuning",IDC_STATIC,364,27,98,28 - GROUPBOX "Plugin / MIDI",IDC_STATIC,240,88,222,80 END IDD_MODDOC_MODTYPE DIALOGEX 0, 0, 262, 317 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sag...@us...> - 2014-03-23 15:12:37
|
Revision: 3939 http://sourceforge.net/p/modplug/code/3939 Author: saga-games Date: 2014-03-23 15:12:27 +0000 (Sun, 23 Mar 2014) Log Message: ----------- [Imp] When rescanning plugins on startup, show a progress dialog if it's taking too long. Modified Paths: -------------- trunk/OpenMPT/mptrack/Mptrack.cpp trunk/OpenMPT/mptrack/SelectPluginDialog.cpp trunk/OpenMPT/mptrack/mptrack.rc trunk/OpenMPT/mptrack/resource.h Modified: trunk/OpenMPT/mptrack/Mptrack.cpp =================================================================== --- trunk/OpenMPT/mptrack/Mptrack.cpp 2014-03-23 15:02:20 UTC (rev 3938) +++ trunk/OpenMPT/mptrack/Mptrack.cpp 2014-03-23 15:12:27 UTC (rev 3939) @@ -2004,6 +2004,10 @@ std::wstring nonFoundPlugs; const mpt::PathString failedPlugin = theApp.GetSettings().Read<mpt::PathString>("VST Plugins", "FailedPlugin", MPT_PATHSTRING("")); + CDialog pluginScanDlg; + DWORD scanStart = GetTickCount(); + bool dialogShown = false; + m_pPluginManager->reserve(numPlugins); for(size_t plug = 0; plug < numPlugins; plug++) { @@ -2024,6 +2028,26 @@ } m_pPluginManager->AddPlugin(plugPath, true, true, &nonFoundPlugs); } + + if(!dialogShown && GetTickCount() >= scanStart + 1000) + { + // If this is taking too long, show the user what he's waiting for. + dialogShown = true; + pluginScanDlg.Create(IDD_SCANPLUGINS, gpSplashScreen); + pluginScanDlg.ShowWindow(SW_SHOW); + pluginScanDlg.CenterWindow(gpSplashScreen); + } else if(dialogShown) + { + CWnd *text = pluginScanDlg.GetDlgItem(IDC_SCANTEXT); + std::wstring scanStr = mpt::String::PrintW(L"Scanning Plugin %1 / %2...\n%3", plug, numPlugins, plugPath); + SetWindowTextW(text->m_hWnd, scanStr.c_str()); + MSG msg; + while(::PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) + { + ::TranslateMessage(&msg); + ::DispatchMessage(&msg); + } + } } if(!nonFoundPlugs.empty()) { Modified: trunk/OpenMPT/mptrack/SelectPluginDialog.cpp =================================================================== --- trunk/OpenMPT/mptrack/SelectPluginDialog.cpp 2014-03-23 15:02:20 UTC (rev 3938) +++ trunk/OpenMPT/mptrack/SelectPluginDialog.cpp 2014-03-23 15:12:27 UTC (rev 3939) @@ -587,6 +587,11 @@ VSTPluginLib *plugLib = nullptr; bool update = false; + CDialog pluginScanDlg; + pluginScanDlg.Create(IDD_SCANPLUGINS, this); + pluginScanDlg.CenterWindow(this); + pluginScanDlg.ShowWindow(SW_SHOW); + std::vector<mpt::PathString> paths(1, dlg.GetDirectory()); int files = 0; while(!paths.empty()) @@ -613,7 +618,16 @@ continue; } else if(!mpt::PathString::CompareNoCase(fileName.GetFileExt(), MPT_PATHSTRING(".dll"))) { - CMainFrame::GetMainFrame()->SetHelpText(mpt::ToLocale(wfd.cFileName).c_str()); + CWnd *text = pluginScanDlg.GetDlgItem(IDC_SCANTEXT); + std::wstring scanStr = std::wstring(L"Scanning Plugin...\n") + wfd.cFileName; + SetWindowTextW(text->m_hWnd, scanStr.c_str()); + MSG msg; + while(::PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) + { + ::TranslateMessage(&msg); + ::DispatchMessage(&msg); + } + VSTPluginLib *lib = pManager->AddPlugin(fileName, false); if(lib) { Modified: trunk/OpenMPT/mptrack/mptrack.rc =================================================================== --- trunk/OpenMPT/mptrack/mptrack.rc 2014-03-23 15:02:20 UTC (rev 3938) +++ trunk/OpenMPT/mptrack/mptrack.rc 2014-03-23 15:12:27 UTC (rev 3939) @@ -300,7 +300,16 @@ LTEXT "Warning:\nChanging advanced settings might cause stability problems.\nYou should only continue if you know what you are doing.",IDC_STATIC,6,6,258,24 END +IDD_SCANPLUGINS DIALOGEX 0, 0, 316, 34 +STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION +EXSTYLE WS_EX_APPWINDOW +CAPTION "Updating Plugin Cache..." +FONT 8, "MS Shell Dlg", 400, 0, 0x1 +BEGIN + CTEXT "",IDC_SCANTEXT,6,7,306,20,SS_NOPREFIX +END + ///////////////////////////////////////////////////////////////////////////// // // DESIGNINFO @@ -428,6 +437,14 @@ TOPMARGIN, 7 BOTTOMMARGIN, 267 END + + IDD_SCANPLUGINS, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 309 + TOPMARGIN, 7 + BOTTOMMARGIN, 27 + END END #endif // APSTUDIO_INVOKED Modified: trunk/OpenMPT/mptrack/resource.h =================================================================== --- trunk/OpenMPT/mptrack/resource.h 2014-03-23 15:02:20 UTC (rev 3938) +++ trunk/OpenMPT/mptrack/resource.h 2014-03-23 15:12:27 UTC (rev 3939) @@ -133,6 +133,7 @@ #define IDD_CLIPBOARD 533 #define IDD_OPTIONS_ADVANCED 534 #define IDD_OPTIONS_SAMPLEEDITOR 535 +#define IDD_SCANPLUGINS 536 #define IDC_BUTTON1 1001 #define IDC_BUTTON2 1002 #define IDC_BUTTON3 1003 @@ -960,6 +961,7 @@ #define IDC_COMBO_CHANNEL_FRONTRIGHT 2476 #define IDC_COMBO_CHANNEL_REARLEFT 2477 #define IDC_COMBO_CHANNEL_REARRIGHT 2478 +#define IDC_SCANTEXT 2479 #define ID_FILE_NEWMOD 32771 #define ID_FILE_NEWXM 32772 #define ID_FILE_NEWS3M 32773 @@ -1240,9 +1242,9 @@ #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_3D_CONTROLS 1 -#define _APS_NEXT_RESOURCE_VALUE 536 +#define _APS_NEXT_RESOURCE_VALUE 537 #define _APS_NEXT_COMMAND_VALUE 44644 -#define _APS_NEXT_CONTROL_VALUE 2479 +#define _APS_NEXT_CONTROL_VALUE 2480 #define _APS_NEXT_SYMED_VALUE 901 #endif #endif This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sag...@us...> - 2014-03-24 14:52:02
|
Revision: 3957 http://sourceforge.net/p/modplug/code/3957 Author: saga-games Date: 2014-03-24 14:51:53 +0000 (Mon, 24 Mar 2014) Log Message: ----------- [Fix] Removing a plugin and cloning plugins didn't set the document as modified (http://bugs.openmpt.org/view.php?id=494) Modified Paths: -------------- trunk/OpenMPT/mptrack/SelectPluginDialog.cpp trunk/OpenMPT/mptrack/View_gen.cpp Modified: trunk/OpenMPT/mptrack/SelectPluginDialog.cpp =================================================================== --- trunk/OpenMPT/mptrack/SelectPluginDialog.cpp 2014-03-24 12:50:32 UTC (rev 3956) +++ trunk/OpenMPT/mptrack/SelectPluginDialog.cpp 2014-03-24 14:51:53 UTC (rev 3957) @@ -173,13 +173,14 @@ } changed = true; } - } else + } else if(m_pPlugin->IsValidPlugin()) { // No effect CriticalSection cs; m_pPlugin->Destroy(); // Clear plugin info MemsetZero(m_pPlugin->Info); + changed = true; } //remember window size: @@ -190,7 +191,7 @@ TrackerSettings::Instance().gnPlugWindowWidth = rect.right - rect.left; TrackerSettings::Instance().gnPlugWindowHeight = rect.bottom - rect.top; - if (changed) + if(changed) { if(m_pPlugin->Info.dwPluginId2) TrackerSettings::Instance().gnPlugWindowLast = m_pPlugin->Info.dwPluginId2; Modified: trunk/OpenMPT/mptrack/View_gen.cpp =================================================================== --- trunk/OpenMPT/mptrack/View_gen.cpp 2014-03-24 12:50:32 UTC (rev 3956) +++ trunk/OpenMPT/mptrack/View_gen.cpp 2014-03-24 14:51:53 UTC (rev 3957) @@ -1426,6 +1426,9 @@ m_CbnPlugin.SetCurSel(dlg.GetSlot()); OnPluginChanged(); + + if(sndFile.GetModSpecifications().supportsPlugins) + GetDocument()->SetModified(); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sag...@us...> - 2014-03-24 17:20:16
|
Revision: 3958 http://sourceforge.net/p/modplug/code/3958 Author: saga-games Date: 2014-03-24 17:20:07 +0000 (Mon, 24 Mar 2014) Log Message: ----------- [Int] Added x64 profile to VS2008 project. Modified Paths: -------------- trunk/OpenMPT/mptrack/MPTRACK_08.sln trunk/OpenMPT/mptrack/mptrack_08.vcproj Modified: trunk/OpenMPT/mptrack/MPTRACK_08.sln =================================================================== --- trunk/OpenMPT/mptrack/MPTRACK_08.sln 2014-03-24 14:51:53 UTC (rev 3957) +++ trunk/OpenMPT/mptrack/MPTRACK_08.sln 2014-03-24 17:20:07 UTC (rev 3958) @@ -31,45 +31,83 @@ Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 + Debug|x64 = Debug|x64 Release|Win32 = Release|Win32 + Release|x64 = Release|x64 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {21D95071-FB97-4E69-B3B1-050D0D4A5021}.Debug|Win32.ActiveCfg = Debug|Win32 {21D95071-FB97-4E69-B3B1-050D0D4A5021}.Debug|Win32.Build.0 = Debug|Win32 + {21D95071-FB97-4E69-B3B1-050D0D4A5021}.Debug|x64.ActiveCfg = Debug|x64 + {21D95071-FB97-4E69-B3B1-050D0D4A5021}.Debug|x64.Build.0 = Debug|x64 {21D95071-FB97-4E69-B3B1-050D0D4A5021}.Release|Win32.ActiveCfg = Release|Win32 {21D95071-FB97-4E69-B3B1-050D0D4A5021}.Release|Win32.Build.0 = Release|Win32 + {21D95071-FB97-4E69-B3B1-050D0D4A5021}.Release|x64.ActiveCfg = Release|x64 + {21D95071-FB97-4E69-B3B1-050D0D4A5021}.Release|x64.Build.0 = Release|x64 {E599F5AA-F9A3-46CC-8DB0-C8DEFCEB90C5}.Debug|Win32.ActiveCfg = Debug|Win32 {E599F5AA-F9A3-46CC-8DB0-C8DEFCEB90C5}.Debug|Win32.Build.0 = Debug|Win32 + {E599F5AA-F9A3-46CC-8DB0-C8DEFCEB90C5}.Debug|x64.ActiveCfg = Debug|x64 + {E599F5AA-F9A3-46CC-8DB0-C8DEFCEB90C5}.Debug|x64.Build.0 = Debug|x64 {E599F5AA-F9A3-46CC-8DB0-C8DEFCEB90C5}.Release|Win32.ActiveCfg = Release|Win32 {E599F5AA-F9A3-46CC-8DB0-C8DEFCEB90C5}.Release|Win32.Build.0 = Release|Win32 + {E599F5AA-F9A3-46CC-8DB0-C8DEFCEB90C5}.Release|x64.ActiveCfg = Release|x64 + {E599F5AA-F9A3-46CC-8DB0-C8DEFCEB90C5}.Release|x64.Build.0 = Release|x64 {6B11F6A8-B131-4D2B-80EF-5731A9016436}.Debug|Win32.ActiveCfg = Debug|Win32 {6B11F6A8-B131-4D2B-80EF-5731A9016436}.Debug|Win32.Build.0 = Debug|Win32 + {6B11F6A8-B131-4D2B-80EF-5731A9016436}.Debug|x64.ActiveCfg = Debug|x64 + {6B11F6A8-B131-4D2B-80EF-5731A9016436}.Debug|x64.Build.0 = Debug|x64 {6B11F6A8-B131-4D2B-80EF-5731A9016436}.Release|Win32.ActiveCfg = Release|Win32 {6B11F6A8-B131-4D2B-80EF-5731A9016436}.Release|Win32.Build.0 = Release|Win32 + {6B11F6A8-B131-4D2B-80EF-5731A9016436}.Release|x64.ActiveCfg = Release|x64 + {6B11F6A8-B131-4D2B-80EF-5731A9016436}.Release|x64.Build.0 = Release|x64 {189B867F-FF4B-45A1-B741-A97492EE69AF}.Debug|Win32.ActiveCfg = Debug|Win32 {189B867F-FF4B-45A1-B741-A97492EE69AF}.Debug|Win32.Build.0 = Debug|Win32 + {189B867F-FF4B-45A1-B741-A97492EE69AF}.Debug|x64.ActiveCfg = Debug|x64 + {189B867F-FF4B-45A1-B741-A97492EE69AF}.Debug|x64.Build.0 = Debug|x64 {189B867F-FF4B-45A1-B741-A97492EE69AF}.Release|Win32.ActiveCfg = Release|Win32 {189B867F-FF4B-45A1-B741-A97492EE69AF}.Release|Win32.Build.0 = Release|Win32 + {189B867F-FF4B-45A1-B741-A97492EE69AF}.Release|x64.ActiveCfg = Release|x64 + {189B867F-FF4B-45A1-B741-A97492EE69AF}.Release|x64.Build.0 = Release|x64 {89AF16DD-32CC-4A7E-B219-5F117D761F9F}.Debug|Win32.ActiveCfg = Debug|Win32 {89AF16DD-32CC-4A7E-B219-5F117D761F9F}.Debug|Win32.Build.0 = Debug|Win32 + {89AF16DD-32CC-4A7E-B219-5F117D761F9F}.Debug|x64.ActiveCfg = Debug|x64 + {89AF16DD-32CC-4A7E-B219-5F117D761F9F}.Debug|x64.Build.0 = Debug|x64 {89AF16DD-32CC-4A7E-B219-5F117D761F9F}.Release|Win32.ActiveCfg = Release|Win32 {89AF16DD-32CC-4A7E-B219-5F117D761F9F}.Release|Win32.Build.0 = Release|Win32 + {89AF16DD-32CC-4A7E-B219-5F117D761F9F}.Release|x64.ActiveCfg = Release|x64 + {89AF16DD-32CC-4A7E-B219-5F117D761F9F}.Release|x64.Build.0 = Release|x64 {F5F8F6DE-84CF-4E9D-91EA-D9B5E2AA36CD}.Debug|Win32.ActiveCfg = Debug|Win32 {F5F8F6DE-84CF-4E9D-91EA-D9B5E2AA36CD}.Debug|Win32.Build.0 = Debug|Win32 + {F5F8F6DE-84CF-4E9D-91EA-D9B5E2AA36CD}.Debug|x64.ActiveCfg = Debug|x64 + {F5F8F6DE-84CF-4E9D-91EA-D9B5E2AA36CD}.Debug|x64.Build.0 = Debug|x64 {F5F8F6DE-84CF-4E9D-91EA-D9B5E2AA36CD}.Release|Win32.ActiveCfg = Release|Win32 {F5F8F6DE-84CF-4E9D-91EA-D9B5E2AA36CD}.Release|Win32.Build.0 = Release|Win32 + {F5F8F6DE-84CF-4E9D-91EA-D9B5E2AA36CD}.Release|x64.ActiveCfg = Release|x64 + {F5F8F6DE-84CF-4E9D-91EA-D9B5E2AA36CD}.Release|x64.Build.0 = Release|x64 {1654FB18-FDE6-406F-9D84-BA12BFBD67B2}.Debug|Win32.ActiveCfg = Debug|Win32 {1654FB18-FDE6-406F-9D84-BA12BFBD67B2}.Debug|Win32.Build.0 = Debug|Win32 + {1654FB18-FDE6-406F-9D84-BA12BFBD67B2}.Debug|x64.ActiveCfg = Debug|x64 + {1654FB18-FDE6-406F-9D84-BA12BFBD67B2}.Debug|x64.Build.0 = Debug|x64 {1654FB18-FDE6-406F-9D84-BA12BFBD67B2}.Release|Win32.ActiveCfg = Release|Win32 {1654FB18-FDE6-406F-9D84-BA12BFBD67B2}.Release|Win32.Build.0 = Release|Win32 + {1654FB18-FDE6-406F-9D84-BA12BFBD67B2}.Release|x64.ActiveCfg = Release|x64 + {1654FB18-FDE6-406F-9D84-BA12BFBD67B2}.Release|x64.Build.0 = Release|x64 {63AF9025-A6CE-4147-A05D-6E2CCFD3A0D7}.Debug|Win32.ActiveCfg = Debug|Win32 {63AF9025-A6CE-4147-A05D-6E2CCFD3A0D7}.Debug|Win32.Build.0 = Debug|Win32 + {63AF9025-A6CE-4147-A05D-6E2CCFD3A0D7}.Debug|x64.ActiveCfg = Debug|x64 + {63AF9025-A6CE-4147-A05D-6E2CCFD3A0D7}.Debug|x64.Build.0 = Debug|x64 {63AF9025-A6CE-4147-A05D-6E2CCFD3A0D7}.Release|Win32.ActiveCfg = Release|Win32 {63AF9025-A6CE-4147-A05D-6E2CCFD3A0D7}.Release|Win32.Build.0 = Release|Win32 + {63AF9025-A6CE-4147-A05D-6E2CCFD3A0D7}.Release|x64.ActiveCfg = Release|x64 + {63AF9025-A6CE-4147-A05D-6E2CCFD3A0D7}.Release|x64.Build.0 = Release|x64 {95CC809B-03FC-4EDB-BB20-FD07A698C05F}.Debug|Win32.ActiveCfg = Debug|Win32 {95CC809B-03FC-4EDB-BB20-FD07A698C05F}.Debug|Win32.Build.0 = Debug|Win32 + {95CC809B-03FC-4EDB-BB20-FD07A698C05F}.Debug|x64.ActiveCfg = Debug|x64 + {95CC809B-03FC-4EDB-BB20-FD07A698C05F}.Debug|x64.Build.0 = Debug|x64 {95CC809B-03FC-4EDB-BB20-FD07A698C05F}.Release|Win32.ActiveCfg = Release|Win32 {95CC809B-03FC-4EDB-BB20-FD07A698C05F}.Release|Win32.Build.0 = Release|Win32 + {95CC809B-03FC-4EDB-BB20-FD07A698C05F}.Release|x64.ActiveCfg = Release|x64 + {95CC809B-03FC-4EDB-BB20-FD07A698C05F}.Release|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE Modified: trunk/OpenMPT/mptrack/mptrack_08.vcproj =================================================================== --- trunk/OpenMPT/mptrack/mptrack_08.vcproj 2014-03-24 14:51:53 UTC (rev 3957) +++ trunk/OpenMPT/mptrack/mptrack_08.vcproj 2014-03-24 17:20:07 UTC (rev 3958) @@ -12,6 +12,9 @@ <Platform Name="Win32" /> + <Platform + Name="x64" + /> </Platforms> <ToolFiles> </ToolFiles> @@ -216,6 +219,206 @@ Name="VCPostBuildEventTool" /> </Configuration> + <Configuration + Name="Debug|x64" + OutputDirectory="$(PlatformName)\$(ConfigurationName)" + IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + UseOfMFC="2" + ATLMinimizesCRunTimeLibraryUsage="false" + > + <Tool + Name="VCPreBuildEventTool" + CommandLine="subwcrev .. ..\common\svn_version_subwcrev\svn_version.template.h ..\mptrack\svn_version\svn_version.h || del ..\mptrack\svn_version\svn_version.h || true" + /> + <Tool + Name="VCCustomBuildTool" + /> + <Tool + Name="VCXMLDataGeneratorTool" + /> + <Tool + Name="VCWebServiceProxyGeneratorTool" + /> + <Tool + Name="VCMIDLTool" + PreprocessorDefinitions="_DEBUG" + MkTypLibCompatible="true" + SuppressStartupBanner="true" + TargetEnvironment="3" + TypeLibraryName=".\Debug/mptrack.tlb" + /> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="..\common;..\soundlib;..\include\msinttypes\stdint;..\include\msinttypes\inttypes;..\include;..\include\vstsdk2.4\;..\include\ASIOSDK2\common\;..\include\lhasa\lib\public;..\include\zlib;..\;..\mptrack\svn_version;..\common\svn_version_default" + PreprocessorDefinitions="_DEBUG,WIN32,_WINDOWS,MODPLUG_TRACKER" + StringPooling="true" + ExceptionHandling="2" + BasicRuntimeChecks="3" + RuntimeLibrary="3" + BufferSecurityCheck="true" + EnableFunctionLevelLinking="true" + UsePrecompiledHeader="2" + PrecompiledHeaderThrough="stdafx.h" + BrowseInformation="1" + WarningLevel="4" + SuppressStartupBanner="false" + DebugInformationFormat="3" + CompileAs="0" + /> + <Tool + Name="VCManagedResourceCompilerTool" + /> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="_DEBUG" + Culture="1033" + /> + <Tool + Name="VCPreLinkEventTool" + /> + <Tool + Name="VCLinkerTool" + AdditionalDependencies="winmm.lib strmiids.lib dmoguids.lib version.lib Rpcrt4.lib delayimp.lib dsound.lib msacm32.lib ksguid.lib ksuser.lib" + Version="5.0" + LinkIncremental="2" + SuppressStartupBanner="true" + AdditionalLibraryDirectories="" + DelayLoadDLLs="OpenMPT_SoundTouch_f32.dll" + GenerateDebugInformation="true" + AssemblyDebug="1" + GenerateMapFile="true" + SubSystem="2" + LargeAddressAware="2" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + TargetMachine="17" + /> + <Tool + Name="VCALinkTool" + /> + <Tool + Name="VCManifestTool" + AdditionalManifestFiles="$(ProjectDir)res/rt_manif.bin" + /> + <Tool + Name="VCXDCMakeTool" + /> + <Tool + Name="VCBscMakeTool" + /> + <Tool + Name="VCFxCopTool" + /> + <Tool + Name="VCAppVerifierTool" + /> + <Tool + Name="VCPostBuildEventTool" + /> + </Configuration> + <Configuration + Name="Release|x64" + OutputDirectory="..\bin\$(PlatformName)\" + IntermediateDirectory="..\build\obj\$(ProjectName)\$(PlatformName)\$(ConfigurationName)" + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + UseOfMFC="1" + ATLMinimizesCRunTimeLibraryUsage="false" + WholeProgramOptimization="1" + > + <Tool + Name="VCPreBuildEventTool" + CommandLine="subwcrev .. ..\common\svn_version_subwcrev\svn_version.template.h ..\mptrack\svn_version\svn_version.h || del ..\mptrack\svn_version\svn_version.h || true" + /> + <Tool + Name="VCCustomBuildTool" + /> + <Tool + Name="VCXMLDataGeneratorTool" + /> + <Tool + Name="VCWebServiceProxyGeneratorTool" + /> + <Tool + Name="VCMIDLTool" + PreprocessorDefinitions="NDEBUG" + MkTypLibCompatible="true" + SuppressStartupBanner="true" + TargetEnvironment="3" + TypeLibraryName=".\Bin/mptrack.tlb" + /> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + InlineFunctionExpansion="2" + AdditionalIncludeDirectories="..\common;..\soundlib;..\include\msinttypes\stdint;..\include\msinttypes\inttypes;..\include;..\include\vstsdk2.4\;..\include\ASIOSDK2\common\;..\include\lhasa\lib\public;..\include\zlib;..\;..\mptrack\svn_version;..\common\svn_version_default" + PreprocessorDefinitions="NDEBUG,WIN32,_WINDOWS,MODPLUG_TRACKER" + StringPooling="true" + ExceptionHandling="2" + RuntimeLibrary="0" + BufferSecurityCheck="true" + EnableFunctionLevelLinking="false" + UsePrecompiledHeader="2" + PrecompiledHeaderThrough="stdafx.h" + WarningLevel="3" + SuppressStartupBanner="false" + DebugInformationFormat="3" + CompileAs="0" + /> + <Tool + Name="VCManagedResourceCompilerTool" + /> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="NDEBUG" + Culture="1033" + /> + <Tool + Name="VCPreLinkEventTool" + /> + <Tool + Name="VCLinkerTool" + AdditionalDependencies="winmm.lib strmiids.lib dmoguids.lib version.lib Rpcrt4.lib delayimp.lib wininet.lib dsound.lib msacm32.lib ksuser.lib" + Version="5.0" + LinkIncremental="1" + SuppressStartupBanner="true" + AdditionalLibraryDirectories="" + DelayLoadDLLs="OpenMPT_SoundTouch_f32.dll" + GenerateDebugInformation="true" + SubSystem="2" + LargeAddressAware="2" + OptimizeReferences="2" + EnableCOMDATFolding="2" + RandomizedBaseAddress="2" + DataExecutionPrevention="0" + TargetMachine="17" + /> + <Tool + Name="VCALinkTool" + /> + <Tool + Name="VCManifestTool" + AdditionalManifestFiles="$(ProjectDir)res/rt_manif.bin" + /> + <Tool + Name="VCXDCMakeTool" + /> + <Tool + Name="VCBscMakeTool" + /> + <Tool + Name="VCFxCopTool" + /> + <Tool + Name="VCAppVerifierTool" + /> + <Tool + Name="VCPostBuildEventTool" + /> + </Configuration> </Configurations> <References> </References> @@ -229,11 +432,11 @@ > </File> <File - RelativePath=".\AppendModule.cpp" + RelativePath="..\sounddsp\AGC.cpp" > </File> <File - RelativePath="..\sounddsp\AGC.cpp" + RelativePath=".\AppendModule.cpp" > </File> <File @@ -249,6 +452,10 @@ > </File> <File + RelativePath="..\pluginBridge\BridgeWrapper.cpp" + > + </File> + <File RelativePath=".\ChildFrm.cpp" > </File> @@ -349,10 +556,6 @@ > </File> <File - RelativePath="..\pluginBridge\BridgeWrapper.cpp" - > - </File> - <File RelativePath="..\common\Logging.cpp" > </File> @@ -587,6 +790,22 @@ UsePrecompiledHeader="1" /> </FileConfiguration> + <FileConfiguration + Name="Debug|x64" + > + <Tool + Name="VCCLCompilerTool" + UsePrecompiledHeader="1" + /> + </FileConfiguration> + <FileConfiguration + Name="Release|x64" + > + <Tool + Name="VCCLCompilerTool" + UsePrecompiledHeader="1" + /> + </FileConfiguration> </File> <File RelativePath=".\StreamEncoder.cpp" @@ -887,6 +1106,14 @@ > </File> <File + RelativePath="..\pluginBridge\BridgeCommon.h" + > + </File> + <File + RelativePath="..\pluginBridge\BridgeWrapper.h" + > + </File> + <File RelativePath="..\common\BuildSettings.h" > </File> @@ -999,14 +1226,6 @@ > </File> <File - RelativePath="..\pluginBridge\BridgeWrapper.h" - > - </File> - <File - RelativePath="..\pluginBridge\BridgeCommon.h" - > - </File> - <File RelativePath="..\common\Logging.h" > </File> @@ -1271,11 +1490,11 @@ > </File> <File - RelativePath="..\common\svn_version_default\svn_version.h" + RelativePath=".\svn_version\svn_version.h" > </File> <File - RelativePath=".\svn_version\svn_version.h" + RelativePath="..\common\svn_version_default\svn_version.h" > </File> <File This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sag...@us...> - 2014-03-24 18:16:58
|
Revision: 3960 http://sourceforge.net/p/modplug/code/3960 Author: saga-games Date: 2014-03-24 18:16:49 +0000 (Mon, 24 Mar 2014) Log Message: ----------- [Fix] Hopefully fix those disappearing combo boxes once and forever. I still don't understand *why* they disappear in some cases, but hopefully this fixes the problem completely. Modified Paths: -------------- trunk/OpenMPT/mptrack/Ctrl_ins.cpp trunk/OpenMPT/mptrack/Ctrl_pat.cpp trunk/OpenMPT/mptrack/Ctrl_smp.cpp trunk/OpenMPT/mptrack/View_gen.cpp trunk/OpenMPT/mptrack/view_com.cpp Modified: trunk/OpenMPT/mptrack/Ctrl_ins.cpp =================================================================== --- trunk/OpenMPT/mptrack/Ctrl_ins.cpp 2014-03-24 18:03:15 UTC (rev 3959) +++ trunk/OpenMPT/mptrack/Ctrl_ins.cpp 2014-03-24 18:16:49 UTC (rev 3960) @@ -1224,7 +1224,6 @@ s.Format("%d", ich); m_CbnMidiCh.SetItemData(m_CbnMidiCh.AddString(s), ich); } - } if (dwHintMask & (HINT_INSTRUMENT|HINT_MODTYPE)) { @@ -1358,6 +1357,17 @@ m_bInitialized = TRUE; UnlockControls(); } + + m_ComboNNA.Invalidate(FALSE); + m_ComboDCT.Invalidate(FALSE); + m_ComboDCA.Invalidate(FALSE); + m_ComboPPC.Invalidate(FALSE); + m_CbnMidiCh.Invalidate(FALSE); + m_CbnMixPlug.Invalidate(FALSE); + m_CbnResampling.Invalidate(FALSE); + m_CbnFilterMode.Invalidate(FALSE); + m_CbnPluginVolumeHandling.Invalidate(FALSE); + m_ComboTuning.Invalidate(FALSE); UnlockControls(); } Modified: trunk/OpenMPT/mptrack/Ctrl_pat.cpp =================================================================== --- trunk/OpenMPT/mptrack/Ctrl_pat.cpp 2014-03-24 18:03:15 UTC (rev 3959) +++ trunk/OpenMPT/mptrack/Ctrl_pat.cpp 2014-03-24 18:16:49 UTC (rev 3960) @@ -335,6 +335,7 @@ } m_CbnInstrument.SetCurSel(nPos); m_CbnInstrument.SetRedraw(TRUE); + m_CbnInstrument.Invalidate(FALSE); } if(dwHintMask & (HINT_MODTYPE|HINT_PATNAMES)) { Modified: trunk/OpenMPT/mptrack/Ctrl_smp.cpp =================================================================== --- trunk/OpenMPT/mptrack/Ctrl_smp.cpp 2014-03-24 18:03:15 UTC (rev 3959) +++ trunk/OpenMPT/mptrack/Ctrl_smp.cpp 2014-03-24 18:16:49 UTC (rev 3960) @@ -672,7 +672,7 @@ m_SpinSample.SetRange(1, m_sndFile.GetNumSamples()); // Length / Type - wsprintf(s, "%d-bit %s, len: %d", sample.GetElementarySampleSize() * 8, (sample.uFlags & CHN_STEREO) ? "stereo" : "mono", sample.nLength); + wsprintf(s, "%d-bit %s, len: %d", sample.GetElementarySampleSize() * 8, sample.uFlags[CHN_STEREO] ? "stereo" : "mono", sample.nLength); SetDlgItemText(IDC_TEXT5, s); // Name mpt::String::Copy(s, m_sndFile.m_szNames[m_nSample]); @@ -686,8 +686,7 @@ // Global Volume SetDlgItemInt(IDC_EDIT8, sample.nGlobalVol); // Panning - CheckDlgButton(IDC_CHECK1, (sample.uFlags & CHN_PANNING) ? MF_CHECKED : MF_UNCHECKED); - //rewbs.fix36944 + CheckDlgButton(IDC_CHECK1, (sample.uFlags[CHN_PANNING]) ? MF_CHECKED : MF_UNCHECKED); if (m_sndFile.GetType() == MOD_TYPE_XM) { SetDlgItemInt(IDC_EDIT9, sample.nPan); //displayed panning with XM is 0-256, just like MPT's internal engine @@ -695,7 +694,6 @@ { SetDlgItemInt(IDC_EDIT9, sample.nPan / 4); //displayed panning with anything but XM is 0-64 so we divide by 4 } - //end rewbs.fix36944 // FineTune / C-4 Speed / BaseNote int transp = 0; if (m_sndFile.GetType() & (MOD_TYPE_S3M | MOD_TYPE_IT | MOD_TYPE_MPT)) @@ -746,6 +744,11 @@ m_bInitialized = TRUE; UnlockControls(); } + + m_ComboLoopType.Invalidate(FALSE); + m_ComboSustainType.Invalidate(FALSE); + m_ComboAutoVib.Invalidate(FALSE); + UnlockControls(); } @@ -869,10 +872,10 @@ m_modDoc.GetSampleUndo().PrepareUndo(m_nSample, sundo_replace, "Replace"); m_sndFile.ReadSampleFromSong(m_nSample, sndFile, nSample); ModSample &sample = m_sndFile.GetSample(m_nSample); - if((m_sndFile.GetType() & MOD_TYPE_XM) && (!(sample.uFlags & CHN_PANNING))) + if((m_sndFile.GetType() & MOD_TYPE_XM) && (!sample.uFlags[CHN_PANNING])) { sample.nPan = 128; - sample.uFlags |= CHN_PANNING; + sample.uFlags.set(CHN_PANNING); } EndWaitCursor(); @@ -2804,12 +2807,12 @@ LockControls(); if ((!sample.nLength) || (!pSample)) goto NoSample; - if (sample.uFlags & CHN_16BIT) + if (sample.uFlags[CHN_16BIT]) { pSample++; pinc *= 2; } - if (sample.uFlags & CHN_STEREO) pinc *= 2; + if (sample.uFlags[CHN_STEREO]) pinc *= 2; // Loop Start if ((pos = (short int)m_SpinLoopStart.GetPos()) != 0) { @@ -2823,7 +2826,7 @@ for (SmpLength i=sample.nLoopStart+1; i+16<sample.nLoopEnd; i++) { p += pinc; - bOk = (sample.uFlags & CHN_PINGPONGLOOP) ? MPT_BidiStartCheck(p[0], p[pinc], p[pinc*2]) : MPT_LoopCheck(find0, find1, p[0], p[pinc]); + bOk = sample.uFlags[CHN_PINGPONGLOOP] ? MPT_BidiStartCheck(p[0], p[pinc], p[pinc*2]) : MPT_LoopCheck(find0, find1, p[0], p[pinc]); if (bOk) { sample.nLoopStart = i; @@ -2837,7 +2840,7 @@ { i--; p -= pinc; - bOk = (sample.uFlags & CHN_PINGPONGLOOP) ? MPT_BidiStartCheck(p[0], p[pinc], p[pinc*2]) : MPT_LoopCheck(find0, find1, p[0], p[pinc]); + bOk = sample.uFlags[CHN_PINGPONGLOOP] ? MPT_BidiStartCheck(p[0], p[pinc], p[pinc*2]) : MPT_LoopCheck(find0, find1, p[0], p[pinc]); if (bOk) { sample.nLoopStart = i; @@ -2867,7 +2870,7 @@ { for (SmpLength i=sample.nLoopEnd+1; i<=sample.nLength; i++, p+=pinc) { - bOk = (sample.uFlags & CHN_PINGPONGLOOP) ? MPT_BidiEndCheck(p[0], p[pinc], p[pinc*2]) : MPT_LoopCheck(find0, find1, p[0], p[pinc]); + bOk = sample.uFlags[CHN_PINGPONGLOOP] ? MPT_BidiEndCheck(p[0], p[pinc], p[pinc*2]) : MPT_LoopCheck(find0, find1, p[0], p[pinc]); if (bOk) { sample.nLoopEnd = i; @@ -2881,7 +2884,7 @@ { i--; p -= pinc; - bOk = (sample.uFlags & CHN_PINGPONGLOOP) ? MPT_BidiEndCheck(p[0], p[pinc], p[pinc*2]) : MPT_LoopCheck(find0, find1, p[0], p[pinc]); + bOk = sample.uFlags[CHN_PINGPONGLOOP] ? MPT_BidiEndCheck(p[0], p[pinc], p[pinc*2]) : MPT_LoopCheck(find0, find1, p[0], p[pinc]); if (bOk) { sample.nLoopEnd = i; @@ -2912,7 +2915,7 @@ for (SmpLength i=sample.nSustainStart+1; i+16<sample.nSustainEnd; i++) { p += pinc; - bOk = (sample.uFlags & CHN_PINGPONGSUSTAIN) ? MPT_BidiStartCheck(p[0], p[pinc], p[pinc*2]) : MPT_LoopCheck(find0, find1, p[0], p[pinc]); + bOk = sample.uFlags[CHN_PINGPONGSUSTAIN] ? MPT_BidiStartCheck(p[0], p[pinc], p[pinc*2]) : MPT_LoopCheck(find0, find1, p[0], p[pinc]); if (bOk) { sample.nSustainStart = i; @@ -2926,7 +2929,7 @@ { i--; p -= pinc; - bOk = (sample.uFlags & CHN_PINGPONGSUSTAIN) ? MPT_BidiStartCheck(p[0], p[pinc], p[pinc*2]) : MPT_LoopCheck(find0, find1, p[0], p[pinc]); + bOk = sample.uFlags[CHN_PINGPONGSUSTAIN] ? MPT_BidiStartCheck(p[0], p[pinc], p[pinc*2]) : MPT_LoopCheck(find0, find1, p[0], p[pinc]); if (bOk) { sample.nSustainStart = i; @@ -2956,7 +2959,7 @@ { for (SmpLength i=sample.nSustainEnd+1; i+1<sample.nLength; i++, p+=pinc) { - bOk = (sample.uFlags & CHN_PINGPONGSUSTAIN) ? MPT_BidiEndCheck(p[0], p[pinc], p[pinc*2]) : MPT_LoopCheck(find0, find1, p[0], p[pinc]); + bOk = sample.uFlags[CHN_PINGPONGSUSTAIN] ? MPT_BidiEndCheck(p[0], p[pinc], p[pinc*2]) : MPT_LoopCheck(find0, find1, p[0], p[pinc]); if (bOk) { sample.nSustainEnd = i; @@ -2970,7 +2973,7 @@ { i--; p -= pinc; - bOk = (sample.uFlags & CHN_PINGPONGSUSTAIN) ? MPT_BidiEndCheck(p[0], p[pinc], p[pinc*2]) : MPT_LoopCheck(find0, find1, p[0], p[pinc]); + bOk = sample.uFlags[CHN_PINGPONGSUSTAIN] ? MPT_BidiEndCheck(p[0], p[pinc], p[pinc*2]) : MPT_LoopCheck(find0, find1, p[0], p[pinc]); if (bOk) { sample.nSustainEnd = i; Modified: trunk/OpenMPT/mptrack/View_gen.cpp =================================================================== --- trunk/OpenMPT/mptrack/View_gen.cpp 2014-03-24 18:03:15 UTC (rev 3959) +++ trunk/OpenMPT/mptrack/View_gen.cpp 2014-03-24 18:16:49 UTC (rev 3960) @@ -379,23 +379,24 @@ } m_CbnEffects[ichn].SetRedraw(TRUE); m_CbnEffects[ichn].SetCurSel(fxsel); + m_CbnEffects[ichn].Invalidate(FALSE); } else SetDlgItemText(IDC_TEXT1+ichn, ""); // Enable/Disable controls for this channel BOOL bIT = ((bEnable) && (pSndFile->m_nType & (MOD_TYPE_IT|MOD_TYPE_MPT))); - ::EnableWindow(::GetDlgItem(m_hWnd, IDC_CHECK1+ichn*2), bEnable); - ::EnableWindow(::GetDlgItem(m_hWnd, IDC_CHECK2+ichn*2), bIT); + GetDlgItem(IDC_CHECK1 + ichn * 2)->EnableWindow(bEnable); + GetDlgItem(IDC_CHECK2 + ichn * 2)->EnableWindow(bIT); - ::EnableWindow(m_sbVolume[ichn].m_hWnd, bIT); - ::EnableWindow(m_spinVolume[ichn], bIT); + m_sbVolume[ichn].EnableWindow(bIT); + m_spinVolume[ichn].EnableWindow(bIT); - ::EnableWindow(m_sbPan[ichn].m_hWnd, bEnable && !(pSndFile->GetType() & (MOD_TYPE_XM|MOD_TYPE_MOD))); - ::EnableWindow(m_spinPan[ichn], bEnable && !(pSndFile->GetType() & (MOD_TYPE_XM|MOD_TYPE_MOD))); - ::EnableWindow(::GetDlgItem(m_hWnd, IDC_EDIT1 + ichn*2), bIT); // channel vol - ::EnableWindow(::GetDlgItem(m_hWnd, IDC_EDIT2 + ichn*2), bEnable && !(pSndFile->GetType() & (MOD_TYPE_XM|MOD_TYPE_MOD))); // channel pan - ::EnableWindow(::GetDlgItem(m_hWnd, IDC_EDIT9 + ichn), ((bEnable) && (pSndFile->m_nType & (MOD_TYPE_XM|MOD_TYPE_IT|MOD_TYPE_MPT)))); // channel name + m_sbPan[ichn].EnableWindow(bEnable && !(pSndFile->GetType() & (MOD_TYPE_XM|MOD_TYPE_MOD))); + m_spinPan[ichn].EnableWindow(bEnable && !(pSndFile->GetType() & (MOD_TYPE_XM|MOD_TYPE_MOD))); + GetDlgItem(IDC_EDIT1 + ichn * 2)->EnableWindow(bIT); // channel vol + GetDlgItem(IDC_EDIT2 + ichn * 2)->EnableWindow(bEnable && !(pSndFile->GetType() & (MOD_TYPE_XM|MOD_TYPE_MOD))); // channel pan + GetDlgItem(IDC_EDIT9 + ichn)->EnableWindow(((bEnable) && (pSndFile->m_nType & (MOD_TYPE_XM|MOD_TYPE_IT|MOD_TYPE_MPT)))); // channel name m_CbnEffects[ichn].EnableWindow(bEnable & (pSndFile->GetModSpecifications().supportsPlugins ? TRUE : FALSE)); } UnlockControls(); @@ -416,9 +417,9 @@ CheckDlgButton(IDC_CHECK11, pPlugin->IsWetMix() ? BST_CHECKED : BST_UNCHECKED); CVstPlugin *pVstPlugin = (pPlugin->pMixPlugin) ? (CVstPlugin *)pPlugin->pMixPlugin : nullptr; m_BtnEdit.EnableWindow((pVstPlugin != nullptr && (pVstPlugin->HasEditor() || pVstPlugin->GetNumParameters())) ? TRUE : FALSE); - ::EnableWindow(::GetDlgItem(m_hWnd, IDC_MOVEFXSLOT), (pVstPlugin) ? TRUE : FALSE); - ::EnableWindow(::GetDlgItem(m_hWnd, IDC_INSERTFXSLOT), (pVstPlugin) ? TRUE : FALSE); - ::EnableWindow(::GetDlgItem(m_hWnd, IDC_CLONEPLUG), (pVstPlugin) ? TRUE : FALSE); + GetDlgItem(IDC_MOVEFXSLOT)->EnableWindow((pVstPlugin) ? TRUE : FALSE); + GetDlgItem(IDC_INSERTFXSLOT)->EnableWindow((pVstPlugin) ? TRUE : FALSE); + GetDlgItem(IDC_CLONEPLUG)->EnableWindow((pVstPlugin) ? TRUE : FALSE); int n = static_cast<int>(pPlugin->fDryRatio*100); wsprintf(s, "(%d%% wet, %d%% dry)", 100-n, n); SetDlgItemText(IDC_STATIC8, s); @@ -426,12 +427,12 @@ if(pVstPlugin && pVstPlugin->isInstrument()) { - ::EnableWindow(::GetDlgItem(m_hWnd, IDC_COMBO9), FALSE); - ::EnableWindow(::GetDlgItem(m_hWnd, IDC_CHECK12), FALSE); + m_CbnSpecialMixProcessing.EnableWindow(FALSE); + GetDlgItem(IDC_CHECK12)->EnableWindow(FALSE); } else { - ::EnableWindow(::GetDlgItem(m_hWnd, IDC_COMBO9), TRUE); - ::EnableWindow(::GetDlgItem(m_hWnd, IDC_CHECK12), TRUE); + m_CbnSpecialMixProcessing.EnableWindow(TRUE); + GetDlgItem(IDC_CHECK12)->EnableWindow(TRUE); m_CbnSpecialMixProcessing.SetCurSel(pPlugin->GetMixMode()); CheckDlgButton(IDC_CHECK12, pPlugin->IsExpandedMix() ? BST_CHECKED : BST_UNCHECKED); } @@ -456,7 +457,6 @@ m_CbnParam.SetCurSel(0); m_CbnParam.SetRedraw(TRUE); - m_CbnParam.Invalidate(); OnParamChanged(); // Input / Output type @@ -474,9 +474,8 @@ m_sbValue.EnableWindow(TRUE); m_sbDryRatio.EnableWindow(TRUE); - ::EnableWindow(::GetDlgItem(m_hWnd, IDC_EDIT14), TRUE); - ::EnableWindow(::GetDlgItem(m_hWnd, IDC_BUTTON3), TRUE); - + GetDlgItem(IDC_EDIT14)->EnableWindow(TRUE); + GetDlgItem(IDC_BUTTON3)->EnableWindow(TRUE); } else { s[0] = 0; @@ -492,8 +491,8 @@ m_CbnPreset.SetCurSel(0); m_sbValue.EnableWindow(FALSE); m_sbDryRatio.EnableWindow(FALSE); - ::EnableWindow(::GetDlgItem(m_hWnd, IDC_EDIT14), FALSE); - ::EnableWindow(::GetDlgItem(m_hWnd, IDC_BUTTON3), FALSE); + GetDlgItem(IDC_EDIT14)->EnableWindow(FALSE); + GetDlgItem(IDC_BUTTON3)->EnableWindow(FALSE); } SetDlgItemText(IDC_TEXT6, s); int outputsel = 0; @@ -526,6 +525,12 @@ m_CbnOutput.SetRedraw(TRUE); m_CbnOutput.SetCurSel(outputsel); } + + m_CbnPlugin.Invalidate(FALSE); + m_CbnParam.Invalidate(FALSE); + m_CbnPreset.Invalidate(FALSE); + m_CbnSpecialMixProcessing.Invalidate(FALSE); + m_CbnOutput.Invalidate(FALSE); } @@ -1456,6 +1461,7 @@ if (m_nCurrentParam >= nParams) m_nCurrentParam = 0; m_CbnParam.SetCurSel(m_nCurrentParam); m_CbnParam.SetRedraw(TRUE); + m_CbnParam.Invalidate(FALSE); } @@ -1487,6 +1493,7 @@ m_CbnPreset.SetItemData(m_CbnPreset.AddString(pVstPlugin->GetFormattedProgramName(i)), i); } m_CbnPreset.SetRedraw(TRUE); + m_CbnPreset.Invalidate(FALSE); } Modified: trunk/OpenMPT/mptrack/view_com.cpp =================================================================== --- trunk/OpenMPT/mptrack/view_com.cpp 2014-03-24 18:03:15 UTC (rev 3959) +++ trunk/OpenMPT/mptrack/view_com.cpp 2014-03-24 18:16:49 UTC (rev 3960) @@ -464,6 +464,7 @@ { } m_ItemList.SetRedraw(TRUE); + m_ItemList.Invalidate(FALSE); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |