From: <sag...@us...> - 2009-09-13 20:41:39
|
Revision: 363 http://modplug.svn.sourceforge.net/modplug/?rev=363&view=rev Author: saga-games Date: 2009-09-13 20:41:27 +0000 (Sun, 13 Sep 2009) Log Message: ----------- [New] Sequence Editor: Added context menu item "Render to wave", to render one ore more patterns to wave. [New] Sample Editor: Added setting "FinetuneStep" to INI section "Sample Editor" [Fix] Sample Editor: When using the spin control, frequency is not clamped to [2000, 96000] anymore. [Imp] Pattern Editor: Don't reset "replace all" flag after every search Modified Paths: -------------- trunk/OpenMPT/mptrack/Ctrl_pat.h trunk/OpenMPT/mptrack/Ctrl_seq.cpp trunk/OpenMPT/mptrack/Ctrl_smp.cpp trunk/OpenMPT/mptrack/Ctrl_smp.h trunk/OpenMPT/mptrack/Mod2wave.cpp trunk/OpenMPT/mptrack/Moddoc.cpp trunk/OpenMPT/mptrack/Moddoc.h trunk/OpenMPT/mptrack/View_pat.cpp trunk/OpenMPT/mptrack/mod2wave.h trunk/OpenMPT/mptrack/resource.h Modified: trunk/OpenMPT/mptrack/Ctrl_pat.h =================================================================== --- trunk/OpenMPT/mptrack/Ctrl_pat.h 2009-09-13 13:44:24 UTC (rev 362) +++ trunk/OpenMPT/mptrack/Ctrl_pat.h 2009-09-13 20:41:27 UTC (rev 363) @@ -101,6 +101,7 @@ afx_msg void OnSwitchToView(); afx_msg void OnInsertOrder(); afx_msg void OnDeleteOrder(); + afx_msg void OnRenderOrder(); afx_msg void OnPatternProperties(); afx_msg void OnPlayerPlay(); afx_msg void OnPlayerPause(); Modified: trunk/OpenMPT/mptrack/Ctrl_seq.cpp =================================================================== --- trunk/OpenMPT/mptrack/Ctrl_seq.cpp 2009-09-13 13:44:24 UTC (rev 362) +++ trunk/OpenMPT/mptrack/Ctrl_seq.cpp 2009-09-13 20:41:27 UTC (rev 363) @@ -43,6 +43,7 @@ ON_COMMAND(ID_CONTROLTAB, OnSwitchToView) ON_COMMAND(ID_ORDERLIST_INSERT, OnInsertOrder) ON_COMMAND(ID_ORDERLIST_DELETE, OnDeleteOrder) + ON_COMMAND(ID_ORDERLIST_RENDER, OnRenderOrder) ON_COMMAND(ID_PATTERN_PROPERTIES, OnPatternProperties) ON_COMMAND(ID_PLAYER_PLAY, OnPlayerPlay) ON_COMMAND(ID_PLAYER_PAUSE, OnPlayerPause) @@ -831,6 +832,9 @@ AppendMenu(hMenu, MF_STRING | greyed, ID_PATTERN_PROPERTIES, "&Properties..."); } } + AppendMenu(hMenu, MF_SEPARATOR, NULL, ""); + AppendMenu(hMenu, MF_STRING, ID_ORDERLIST_RENDER, "Render to &Wave"); + ClientToScreen(&pt); ::TrackPopupMenu(hMenu, TPM_LEFTALIGN | TPM_RIGHTBUTTON, pt.x, pt.y, 0, m_hWnd, NULL); ::DestroyMenu(hMenu); @@ -939,7 +943,14 @@ } } +void COrderList::OnRenderOrder() +//------------------------------ +{ + ORD_SELECTION selection = GetCurSel(false); + m_pModDoc->OnFileWaveConvert(selection.nOrdLo, selection.nOrdHi); +} + void COrderList::OnDeleteOrder() //------------------------------ { Modified: trunk/OpenMPT/mptrack/Ctrl_smp.cpp =================================================================== --- trunk/OpenMPT/mptrack/Ctrl_smp.cpp 2009-09-13 13:44:24 UTC (rev 362) +++ trunk/OpenMPT/mptrack/Ctrl_smp.cpp 2009-09-13 20:41:27 UTC (rev 363) @@ -402,6 +402,9 @@ } } SetCurrentSample((lParam > 0) ? lParam : m_nSample); + + m_nFinetuneStep = CMainFrame::GetPrivateProfileLong("Sample Editor", "FinetuneStep", 25, theApp.GetConfigFileName()); + // Initial Update // 05/01/05 : ericus replaced "m_nSample << 24" by "m_nSample << 20" : 4000 samples -> 12bits [see Moddoc.h] if (!m_bInitialized) UpdateView((m_nSample << HINT_SHIFT_SMP) | HINT_SAMPLEINFO | HINT_MODTYPE, NULL); @@ -3121,12 +3124,10 @@ { if (m_pSndFile->m_nType & (MOD_TYPE_S3M|MOD_TYPE_IT|MOD_TYPE_MPT)) { - LONG d = pSmp->nC5Speed; + UINT d = pSmp->nC5Speed; if (d < 1) d = 8363; - d += (pos * 25); - if (d > 96000) d = 96000; - if (d < 2000) d = 2000; - pSmp->nC5Speed = d; + d += (pos * m_nFinetuneStep); + pSmp->nC5Speed = CLAMP(d, 579, 139921); // B-8, C-1 int transp = CSoundFile::FrequencyToTranspose(pSmp->nC5Speed) >> 7; int basenote = 60 - transp; if (basenote < BASENOTE_MIN) basenote = BASENOTE_MIN; Modified: trunk/OpenMPT/mptrack/Ctrl_smp.h =================================================================== --- trunk/OpenMPT/mptrack/Ctrl_smp.h 2009-09-13 13:44:24 UTC (rev 362) +++ trunk/OpenMPT/mptrack/Ctrl_smp.h 2009-09-13 20:41:27 UTC (rev 363) @@ -23,6 +23,7 @@ uint32 m_nSequenceMs; uint32 m_nSeekWindowMs; uint32 m_nOverlapMs; + uint16 m_nFinetuneStep; // Increment finetune by x when using spin control. Default = 25 enum {nDefaultStretchChunkSize = 8192}; CComboBox m_ComboPitch, m_ComboQuality, m_ComboFFT; Modified: trunk/OpenMPT/mptrack/Mod2wave.cpp =================================================================== --- trunk/OpenMPT/mptrack/Mod2wave.cpp 2009-09-13 13:44:24 UTC (rev 362) +++ trunk/OpenMPT/mptrack/Mod2wave.cpp 2009-09-13 20:41:27 UTC (rev 363) @@ -57,14 +57,24 @@ END_MESSAGE_MAP() -CWaveConvert::CWaveConvert(CWnd *parent):CDialog(IDD_WAVECONVERT, parent) -//----------------------------------------------------------------------- +CWaveConvert::CWaveConvert(CWnd *parent, ORDERINDEX nMinOrder, ORDERINDEX nMaxOrder): + CDialog(IDD_WAVECONVERT, parent) +//----------------------------------------------------------------------------------- { m_bGivePlugsIdleTime = false; m_bNormalize = FALSE; m_bHighQuality = FALSE; m_bSelectPlay = FALSE; - m_nMinOrder = m_nMaxOrder = 0; + if(nMinOrder != ORDERINDEX_INVALID && nMaxOrder != ORDERINDEX_INVALID) + { + // render selection + m_nMinOrder = nMinOrder; + m_nMaxOrder = nMaxOrder; + m_bSelectPlay = true; + } else + { + m_nMinOrder = m_nMaxOrder = 0; + } m_dwFileLimit = 0; m_dwSongLimit = 0; memset(&WaveFormat, 0, sizeof(WaveFormat)); @@ -110,6 +120,8 @@ SetDlgItemInt(IDC_EDIT3, m_nMinOrder); SetDlgItemInt(IDC_EDIT4, m_nMaxOrder); + + for (UINT i=0; i<NUMMIXRATE; i++) { UINT n = nMixingRates[i]; Modified: trunk/OpenMPT/mptrack/Moddoc.cpp =================================================================== --- trunk/OpenMPT/mptrack/Moddoc.cpp 2009-09-13 13:44:24 UTC (rev 362) +++ trunk/OpenMPT/mptrack/Moddoc.cpp 2009-09-13 20:41:27 UTC (rev 363) @@ -1388,6 +1388,12 @@ void CModDoc::OnFileWaveConvert() //------------------------------- { + OnFileWaveConvert(0, 0); +} + +void CModDoc::OnFileWaveConvert(ORDERINDEX nMinOrder, ORDERINDEX nMaxOrder) +//------------------------------------------------------------------------- +{ TCHAR fname[_MAX_FNAME]=""; CMainFrame *pMainFrm = CMainFrame::GetMainFrame(); @@ -1398,7 +1404,7 @@ "Wave Files (*.wav)|*.wav||", pMainFrm); dlg.m_ofn.lpstrInitialDir = CMainFrame::GetWorkingDirectory(DIR_EXPORT); - CWaveConvert wsdlg(pMainFrm); + CWaveConvert wsdlg(pMainFrm, nMinOrder, nMaxOrder); if (wsdlg.DoModal() != IDOK) return; if (dlg.DoModal() != IDOK) return; //rewbs: made filename dialog appear after wav settings dialog @@ -1409,9 +1415,7 @@ strcpy(s, dlg.GetPathName()); // Saving as wave file -// -> CODE#0024 -// -> DESC="wav export update" - UINT p = 0,n = 1; + UINT p = 0, n = 1; DWORD flags[MAX_BASECHANNELS]; CHAR channel[MAX_CHANNELNAME+10]; @@ -1434,38 +1438,12 @@ dwcdlg.m_dwSongLimit = wsdlg.m_dwSongLimit; dwcdlg.m_nMaxPatterns = (wsdlg.m_bSelectPlay) ? wsdlg.m_nMaxOrder - wsdlg.m_nMinOrder + 1 : 0; //if(wsdlg.m_bHighQuality) CSoundFile::SetResamplingMode(SRCMODE_POLYPHASE); -// -! NEW_FEATURE#0024 BOOL bplaying = FALSE; UINT pos = m_SndFile.GetCurrentPos(); bplaying = TRUE; pMainFrm->PauseMod(); -// rewbs.fix3239: moved position definition into loop below -/* m_SndFile.SetCurrentPos(0); - if (wsdlg.m_bSelectPlay) - { - m_SndFile.SetCurrentOrder(wsdlg.m_nMinOrder); - m_SndFile.m_nCurrentPattern = wsdlg.m_nMinOrder; - m_SndFile.GetLength(TRUE, FALSE); - m_SndFile.m_nMaxOrderPosition = wsdlg.m_nMaxOrder + 1; - } -*/ -//end rewbs.fix3239: moved position definition into loop below - // Saving file - -// -> CODE#0024 -// -> DESC="wav export update" -// CDoWaveConvert dwcdlg(&m_SndFile, s, &wsdlg.WaveFormat.Format, wsdlg.m_bNormalize, pMainFrm); -// dwcdlg.m_dwFileLimit = wsdlg.m_dwFileLimit; -// dwcdlg.m_dwSongLimit = wsdlg.m_dwSongLimit; -// dwcdlg.m_nMaxPatterns = (wsdlg.m_bSelectPlay) ? wsdlg.m_nMaxOrder - wsdlg.m_nMinOrder + 1 : 0; -// if (wsdlg.m_bHighQuality) -// { -// CSoundFile::SetResamplingMode(SRCMODE_POLYPHASE); -// } -// dwcdlg.DoModal(); - for(UINT i = 0 ; i < n ; i++){ // Channel mode @@ -1504,7 +1482,6 @@ if(wsdlg.m_bChannelMode){ for(UINT i = 0 ; i < n ; i++) m_SndFile.ChnSettings[i].dwFlags = flags[i]; } -// -! NEW_FEATURE#0024 m_SndFile.SetCurrentPos(pos); m_SndFile.GetLength(TRUE); Modified: trunk/OpenMPT/mptrack/Moddoc.h =================================================================== --- trunk/OpenMPT/mptrack/Moddoc.h 2009-09-13 13:44:24 UTC (rev 362) +++ trunk/OpenMPT/mptrack/Moddoc.h 2009-09-13 20:41:27 UTC (rev 363) @@ -268,6 +268,8 @@ CSize GetOldPatternScrollbarsPos() const { return m_szOldPatternScrollbarsPos; }; void SetOldPatternScrollbarsPos( CSize s ){ m_szOldPatternScrollbarsPos = s; }; + void OnFileWaveConvert(ORDERINDEX nMinOrder, ORDERINDEX nMaxOrder); + // protected members protected: CSize m_szOldPatternScrollbarsPos; Modified: trunk/OpenMPT/mptrack/View_pat.cpp =================================================================== --- trunk/OpenMPT/mptrack/View_pat.cpp 2009-09-13 13:44:24 UTC (rev 362) +++ trunk/OpenMPT/mptrack/View_pat.cpp 2009-09-13 20:41:27 UTC (rev 363) @@ -1946,7 +1946,7 @@ m_bContinueSearch = TRUE; EndWaitCursor(); // Display search results - m_dwReplaceFlags &= ~PATSEARCH_REPLACEALL; + //m_dwReplaceFlags &= ~PATSEARCH_REPLACEALL; if (!nFound) { if (m_dwFindFlags & PATSEARCH_NOTE) Modified: trunk/OpenMPT/mptrack/mod2wave.h =================================================================== --- trunk/OpenMPT/mptrack/mod2wave.h 2009-09-13 13:44:24 UTC (rev 362) +++ trunk/OpenMPT/mptrack/mod2wave.h 2009-09-13 20:41:27 UTC (rev 363) @@ -14,7 +14,7 @@ ULONGLONG m_dwFileLimit; DWORD m_dwSongLimit; BOOL m_bSelectPlay, m_bNormalize, m_bHighQuality, m_bGivePlugsIdleTime; - UINT m_nMinOrder, m_nMaxOrder; + ORDERINDEX m_nMinOrder, m_nMaxOrder; CComboBox m_CbnSampleRate, m_CbnSampleFormat; CEdit m_EditMinOrder, m_EditMaxOrder; @@ -24,7 +24,7 @@ // -! NEW_FEATURE#0024 public: - CWaveConvert(CWnd *parent); + CWaveConvert(CWnd *parent, ORDERINDEX nMinOrder = ORDERINDEX_INVALID, ORDERINDEX nMaxOrder = ORDERINDEX_INVALID); public: void UpdateDialog(); Modified: trunk/OpenMPT/mptrack/resource.h =================================================================== --- trunk/OpenMPT/mptrack/resource.h 2009-09-13 13:44:24 UTC (rev 362) +++ trunk/OpenMPT/mptrack/resource.h 2009-09-13 20:41:27 UTC (rev 363) @@ -1116,6 +1116,7 @@ #define ID_OVERFLOWPASTE 59226 #define ID_NOTEMAP_COPY_NOTE 59227 #define ID_CLEANUP_REARRANGESAMPLES 59228 +#define ID_ORDERLIST_RENDER 59229 // Next default values for new objects // @@ -1123,7 +1124,7 @@ #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_3D_CONTROLS 1 #define _APS_NEXT_RESOURCE_VALUE 521 -#define _APS_NEXT_COMMAND_VALUE 59229 +#define _APS_NEXT_COMMAND_VALUE 59230 #define _APS_NEXT_CONTROL_VALUE 2387 #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. |