From: <re...@us...> - 2007-05-27 17:47:43
|
Revision: 188 http://svn.sourceforge.net/modplug/?rev=188&view=rev Author: rewbs Date: 2007-05-27 10:47:34 -0700 (Sun, 27 May 2007) Log Message: ----------- v1.17.02.48 . <Relabs> Fix song cleanup issue (http://lpchip.com/modplug/viewtopic.php?t=1711) . <Relabs> Pitch/Tempo lock fix (broken in .46 and .47) (http://lpchip.com/modplug/viewtopic.php?t=1646) / <Relabs> Pattern manager channel reordering behviour changes / fixes. (http://lpchip.com/modplug/viewtopic.php?t=1148) . <pelya> Fix bad horizontal scrolling in pattern editor when positioning the cursor with the mouse. (http://lpchip.com/modplug/viewtopic.php?t=1650) . <rewbs> Fix odd "play row" behaviour when using 1 tick-per-row (http://lpchip.com/modplug/viewtopic.php?t=1038). . <rewbs> Fix pop due to ramping when song starts with a pattern command that sets a low global volume. (http://lpchip.com/modplug/viewtopic.php?t=523) . <rewbs> Fix occasional colour issues with orderlist (http://lpchip.com/modplug/viewtopic.php?t=867) . <rewbs> Fix impossible horizontal scrolling in pattern editor when playing with follow song on . <rewbs> Grey out "Trim" option in sample editor context menu if there's no selection. (http://lpchip.com/modplug/viewtopic.php?t=908) Modified Paths: -------------- trunk/OpenMPT/mptrack/Ctrl_pat.h trunk/OpenMPT/mptrack/Ctrl_seq.cpp trunk/OpenMPT/mptrack/MainFrm.cpp trunk/OpenMPT/mptrack/Mptrack.cpp trunk/OpenMPT/mptrack/View_pat.cpp trunk/OpenMPT/mptrack/View_pat.h trunk/OpenMPT/mptrack/View_smp.cpp trunk/OpenMPT/mptrack/bin/mptrack.exe trunk/OpenMPT/mptrack/bin/version trunk/OpenMPT/mptrack/mptrack.rc trunk/OpenMPT/packageTemplate/History.txt trunk/OpenMPT/packageTemplate/default.mkb trunk/OpenMPT/soundlib/Sndmix.cpp Modified: trunk/OpenMPT/mptrack/Ctrl_pat.h =================================================================== --- trunk/OpenMPT/mptrack/Ctrl_pat.h 2007-05-25 22:09:32 UTC (rev 187) +++ trunk/OpenMPT/mptrack/Ctrl_pat.h 2007-05-27 17:47:34 UTC (rev 188) @@ -11,12 +11,12 @@ protected: HFONT m_hFont; COLORREF colorText, colorTextSel; - int m_cxFont, m_cyFont, m_nXScroll, m_nScrollPos, m_nDropPos; //m_nXScroll : The order at the beginning of shown orderlist? //m_nScrollPos: The same as order? - BYTE m_nOrderlistMargins; + int m_cxFont, m_cyFont, m_nXScroll, m_nScrollPos, m_nDropPos; //To tell how many orders('orderboxes') to show at least //on both sides of current order(when updating orderslist position). + BYTE m_nOrderlistMargins; UINT m_nDragOrder; BOOL m_bScrolling, m_bDragging, m_bShift; CModDoc *m_pModDoc; Modified: trunk/OpenMPT/mptrack/Ctrl_seq.cpp =================================================================== --- trunk/OpenMPT/mptrack/Ctrl_seq.cpp 2007-05-25 22:09:32 UTC (rev 187) +++ trunk/OpenMPT/mptrack/Ctrl_seq.cpp 2007-05-27 17:47:34 UTC (rev 188) @@ -467,8 +467,13 @@ int nOrder = ((nIndex >= 0) && (nIndex < pSndFile->Order.size())) ? pSndFile->Order[nIndex] : -1; if ((rect.right = rect.left + m_cxFont) > rcClient.right) rect.right = rcClient.right; rect.right--; - FillRect(dc.m_hDC, &rect, (bHighLight) ? CMainFrame::brushHighLight : CMainFrame::brushWindow); + if (bHighLight) { + FillRect(dc.m_hDC, &rect, CMainFrame::brushHighLight); + } else { + FillRect(dc.m_hDC, &rect, CMainFrame::brushWindow); + } + //Drawing the shown pattern-indicator or drag position. if (nIndex == ((m_bDragging) ? (int)m_nDropPos : m_nScrollPos)) { Modified: trunk/OpenMPT/mptrack/MainFrm.cpp =================================================================== --- trunk/OpenMPT/mptrack/MainFrm.cpp 2007-05-25 22:09:32 UTC (rev 187) +++ trunk/OpenMPT/mptrack/MainFrm.cpp 2007-05-27 17:47:34 UTC (rev 188) @@ -1006,8 +1006,9 @@ HWND hWnd = ::GetFocus(); if (hWnd != NULL) { - TCHAR szClassName[512]; - textboxHasFocus = GetClassName(hWnd, szClassName, 6) && _tcsicmp(szClassName, _T("Edit")) == 0; + TCHAR activeWindowClassName[512]; + GetClassName(hWnd, activeWindowClassName, 6); + textboxHasFocus = _tcsicmp(activeWindowClassName, _T("Edit")) == 0; if (textboxHasFocus) { handledByTextBox = m_InputHandler->isKeyPressHandledByTextBox(wParam); } @@ -1752,7 +1753,7 @@ COLORREF crBkgnd = GetSysColor(COLOR_WINDOW); if (brushHighLight) DeleteObject(brushHighLight); brushHighLight = CreateSolidBrush(GetSysColor(COLOR_HIGHLIGHT)); - if (brushHighLightRed) DeleteObject(brushHighLight); + if (brushHighLightRed) DeleteObject(brushHighLightRed); brushHighLightRed = CreateSolidBrush(RGB(0xFF,0x00,0x00)); if (brushWindow) DeleteObject(brushWindow); Modified: trunk/OpenMPT/mptrack/Mptrack.cpp =================================================================== --- trunk/OpenMPT/mptrack/Mptrack.cpp 2007-05-25 22:09:32 UTC (rev 187) +++ trunk/OpenMPT/mptrack/Mptrack.cpp 2007-05-27 17:47:34 UTC (rev 188) @@ -1573,10 +1573,9 @@ SetDlgItemText(IDC_EDIT3, CString("Open Modplug Tracker, version ") + CMainFrame::GetFullVersionString()); m_heContact.SetWindowText( -"Contact:\r\n\ -MPC forums: http://lpchip.com/modplug/\r\n\ -Robin Fernandes: mailto:mo...@so...\r\n\r\n\ -Updates:\r\n\ +"Contact / Discussion:\r\n\ +http://modplug.sourceforge.net/forum\r\n\ +\r\n\Updates:\r\n\ http://modplug.sourceforge.net/builds/#dev"); char *pArrCredit = { Modified: trunk/OpenMPT/mptrack/View_pat.cpp =================================================================== --- trunk/OpenMPT/mptrack/View_pat.cpp 2007-05-25 22:09:32 UTC (rev 187) +++ trunk/OpenMPT/mptrack/View_pat.cpp 2007-05-27 17:47:34 UTC (rev 188) @@ -222,9 +222,22 @@ } -BOOL CViewPattern::SetCurrentRow(UINT row, BOOL bWrap) -//---------------------------------------------------- +// This should be used instead of consecutive calls to SetCurrentRow() then SetCurrentColumn() +BOOL CViewPattern::SetCursorPosition(UINT nrow, UINT ncol, BOOL bWrap) +//-------------------------------------------------------------------------- { + // Set row, but do not update scroll position yet + // as there is another position update on the way: + SetCurrentRow(nrow, bWrap, false); + // Now set column and update scroll position: + SetCurrentColumn(ncol); + return TRUE; +} + + +BOOL CViewPattern::SetCurrentRow(UINT row, BOOL bWrap, BOOL bUpdateHorizontalScrollbar) +//------------------------------------------------------------------------------------- +{ CSoundFile *pSndFile; CModDoc *pModDoc = GetDocument(); if (!pModDoc) return FALSE; @@ -296,7 +309,8 @@ // Fix: If cursor isn't on screen move both scrollbars to make it visible InvalidateRow(); m_nRow = row; - UpdateScrollbarPositions(); //UpdateScrollbarPositions( false ); // default behavior is to move only vertical scrollbar + // Fix: Horizontal scrollbar pos screwed when selecting with mouse + UpdateScrollbarPositions(bUpdateHorizontalScrollbar); InvalidateRow(); int sel = m_dwCursor | (m_nRow << 16); int sel0 = sel; @@ -350,7 +364,7 @@ // Assume that m_nRow and m_dwCursor are valid // When we switching to other tab the CViewPattern object is deleted // and when switching back new one is created -BOOL CViewPattern::UpdateScrollbarPositions( bool UpdateHorizontalScrollbar ) +BOOL CViewPattern::UpdateScrollbarPositions( BOOL UpdateHorizontalScrollbar ) { // HACK - after new CViewPattern object created SetCurrentRow() and SetCurrentColumn() are called - // just skip first two calls of UpdateScrollbarPositions() if pModDoc->GetOldPatternScrollbarsPos() is valid @@ -1012,8 +1026,8 @@ SetCurSel(m_dwStartSel, m_dwStartSel); } else { - SetCurrentRow(m_dwStartSel >> 16); - SetCurrentColumn(m_dwStartSel & 0xFFFF); + // Fix: Horizontal scrollbar pos screwed when selecting with mouse + SetCursorPosition( m_dwStartSel >> 16, m_dwStartSel & 0xFFFF ); } } } @@ -1071,8 +1085,8 @@ if ((m_nMidRow) && (m_dwBeginSel == m_dwEndSel)) { DWORD dwPos = m_dwBeginSel; - SetCurrentRow(dwPos >> 16); - SetCurrentColumn(dwPos & 0xFFFF); + // Fix: Horizontal scrollbar pos screwed when selecting with mouse + SetCursorPosition( dwPos >> 16, dwPos & 0xFFFF ); //UpdateIndicator(); } } @@ -1165,8 +1179,8 @@ || ((m_nMenuParam & 0xFFFF) > (m_dwEndSel & 0xFFFF))) { if (pt.y > m_szHeader.cy) { //ensure we're not clicking header - SetCurrentRow(m_nMenuParam >> 16); - SetCurrentColumn(m_nMenuParam & 0xFFFF); + // Fix: Horizontal scrollbar pos screwed when selecting with mouse + SetCursorPosition( m_nMenuParam >> 16, m_nMenuParam & 0xFFFF ); } } UINT nChn = (m_nMenuParam & 0xFFFF) >> 3; @@ -1299,8 +1313,8 @@ DragToSel(dwPos, TRUE); } else { - SetCurrentRow(dwPos >> 16); - SetCurrentColumn(dwPos & 0xFFFF); + // Fix: Horizontal scrollbar pos screwed when selecting with mouse + SetCursorPosition( dwPos >> 16, dwPos & 0xFFFF ); } } } @@ -1514,8 +1528,8 @@ //rewbs.customKeys DWORD finalPos = (min(m_dwEndSel >> 16, m_dwBeginSel >> 16) << 16 | (m_dwEndSel & 0xFFFF)); SetCurSel(finalPos, finalPos); - SetCurrentColumn(finalPos & 0xFFFF); - SetCurrentRow(finalPos >> 16); + // Fix: Horizontal scrollbar pos screwed when selecting with mouse + SetCursorPosition( finalPos >> 16, finalPos & 0xFFFF ); //end rewbs.customKeys pModDoc->SetModified(); @@ -2347,8 +2361,8 @@ if (y2<0) y2=0; if (y2>=nRows) y2=nRows-1; if (c2 >= 3) c2 = 4; - SetCurrentRow(y1); - SetCurrentColumn((x1<<3)|c1); + // Fix: Horizontal scrollbar pos screwed when selecting with mouse + SetCursorPosition( y1, (x1<<3)|c1 ); SetCurSel((y1<<16)|(x1<<3)|c1, (y2<<16)|(x2<<3)|c2); InvalidatePattern(); CSoundFile::FreePattern(pOldPattern); @@ -2769,7 +2783,7 @@ if (nOrd < pSndFile->Order.size()) SendCtrlMessage(CTRLMSG_SETCURRENTORDER, nOrd); updateOrderList = false; } - if (nRow != m_nRow) SetCurrentRow((nRow < pSndFile->PatternSize[nPat]) ? nRow : 0); + if (nRow != m_nRow) SetCurrentRow((nRow < pSndFile->PatternSize[nPat]) ? nRow : 0, FALSE, FALSE); } SetPlayCursor(0xFFFF, 0); } else @@ -3064,8 +3078,8 @@ if (/*(pState->nPattern == m_nPattern) && */(pState->cbStruct == sizeof(PATTERNVIEWSTATE))) { SetCurrentPattern(pState->nPattern); - SetCurrentRow(pState->nRow); - SetCurrentColumn(pState->nCursor); + // Fix: Horizontal scrollbar pos screwed when selecting with mouse + SetCursorPosition( pState->nRow, pState->nCursor ); SetCurSel(pState->dwBeginSel, pState->dwEndSel); } } @@ -4917,3 +4931,4 @@ + Modified: trunk/OpenMPT/mptrack/View_pat.h =================================================================== --- trunk/OpenMPT/mptrack/View_pat.h 2007-05-25 22:09:32 UTC (rev 187) +++ trunk/OpenMPT/mptrack/View_pat.h 2007-05-27 17:47:34 UTC (rev 188) @@ -73,18 +73,8 @@ CPatternGotoDialog *m_pGotoWnd; SIZE m_szHeader, m_szCell; UINT m_nPattern, m_nRow, m_nMidRow, m_nPlayPat, m_nPlayRow, m_nSpacing, m_nAccelChar, m_nLastPlayedRow, m_nLastPlayedOrder; - -// -> CODE#0012 -// -> DESC="midi keyboard split" -// UINT CViewPattern::GetCurrentSplitInstrument() const; -// UINT CViewPattern::GetCurrentSplitNote() const; -// UINT CViewPattern::GetCurrentOctaveModifier() const; -// UINT CViewPattern::GetCurrentOctaveLink() const; -// UINT CViewPattern::GetCurrentSplitVolume() const; -// rewbs.merge: inverted message direction UINT m_nSplitInstrument, m_nSplitNote, m_nOctaveModifier, m_nSplitVolume; BOOL m_bOctaveLink; -// -! NEW_FEATURE#0012 int m_nXScroll, m_nYScroll; DWORD m_nDragItem, m_nMenuParam, m_nDetailLevel; @@ -149,12 +139,13 @@ void InvalidateChannelsHeaders(); void SetCurSel(DWORD dwBegin, DWORD dwEnd); BOOL SetCurrentPattern(UINT npat, int nrow=-1); - BOOL SetCurrentRow(UINT nrow, BOOL bWrap=FALSE); + BOOL SetCurrentRow(UINT nrow, BOOL bWrap=FALSE, BOOL bUpdateHorizontalScrollbar=TRUE ); BOOL SetCurrentColumn(UINT ncol); + // This should be used instead of consecutive calls to SetCurrentRow() then SetCurrentColumn() + BOOL SetCursorPosition(UINT nrow, UINT ncol, BOOL bWrap=FALSE ); BOOL DragToSel(DWORD dwPos, BOOL bScroll, BOOL bNoMove=FALSE); BOOL SetPlayCursor(UINT nPat, UINT nRow); -// Fix: If cursor isn't on screen move scrollbars to make it visible - BOOL UpdateScrollbarPositions( bool UpdateHorizontalScrollbar=true ); + BOOL UpdateScrollbarPositions( BOOL bUpdateHorizontalScrollbar=TRUE ); // -> CODE#0014 // -> DESC="vst wet/dry slider" // BOOL EnterNote(UINT nNote, UINT nIns=0, BOOL bCheck=FALSE, int vol=-1, BOOL bMultiCh=FALSE); @@ -354,3 +345,4 @@ #endif + Modified: trunk/OpenMPT/mptrack/View_smp.cpp =================================================================== --- trunk/OpenMPT/mptrack/View_smp.cpp 2007-05-25 22:09:32 UTC (rev 187) +++ trunk/OpenMPT/mptrack/View_smp.cpp 2007-05-27 17:47:34 UTC (rev 188) @@ -1321,7 +1321,8 @@ if (pins->uFlags & CHN_STEREO) ::AppendMenu(hMenu, MF_STRING, ID_SAMPLE_MONOCONVERT, "Convert to mono"); } - ::AppendMenu(hMenu, MF_STRING, ID_SAMPLE_TRIM, "Trim\t" + ih->GetKeyTextFromCommand(kcSampleTrim)); + ::AppendMenu(hMenu, MF_STRING|(m_dwEndSel>m_dwBeginSel)?0:MF_GRAYED, + ID_SAMPLE_TRIM, "Trim\t" + ih->GetKeyTextFromCommand(kcSampleTrim)); ::AppendMenu(hMenu, MF_STRING, ID_EDIT_CUT, "Cut\t" + ih->GetKeyTextFromCommand(kcEditCut)); ::AppendMenu(hMenu, MF_STRING, ID_EDIT_COPY, "Copy\t" + ih->GetKeyTextFromCommand(kcEditCopy)); } Modified: trunk/OpenMPT/mptrack/bin/mptrack.exe =================================================================== (Binary files differ) Modified: trunk/OpenMPT/mptrack/bin/version =================================================================== --- trunk/OpenMPT/mptrack/bin/version 2007-05-25 22:09:32 UTC (rev 187) +++ trunk/OpenMPT/mptrack/bin/version 2007-05-27 17:47:34 UTC (rev 188) @@ -1 +1 @@ -1.17.02.47 \ No newline at end of file +1.17.02.48 \ No newline at end of file Modified: trunk/OpenMPT/mptrack/mptrack.rc =================================================================== --- trunk/OpenMPT/mptrack/mptrack.rc 2007-05-25 22:09:32 UTC (rev 187) +++ trunk/OpenMPT/mptrack/mptrack.rc 2007-05-27 17:47:34 UTC (rev 188) @@ -1926,7 +1926,7 @@ // VS_VERSION_INFO VERSIONINFO - FILEVERSION 1,17,2,47 + FILEVERSION 1,17,2,48 PRODUCTVERSION 0,0,0,0 FILEFLAGSMASK 0x3fL #ifdef _DEBUG @@ -1944,7 +1944,7 @@ BEGIN VALUE "CompanyName", "Olivier Lapicque / OpenMPT team" VALUE "FileDescription", "OpenMPT / ModPlug Tracker" - VALUE "FileVersion", "1, 17, 2, 47" + VALUE "FileVersion", "1, 17, 2, 48" VALUE "InternalName", "Modplug Tracker" VALUE "LegalCopyright", "Copyright \xA91997-2003 Olivier Lapicque; \xA92004-2007 GPL." VALUE "LegalTrademarks", "M.O.D.P.L.U.G" Modified: trunk/OpenMPT/packageTemplate/History.txt =================================================================== --- trunk/OpenMPT/packageTemplate/History.txt 2007-05-25 22:09:32 UTC (rev 187) +++ trunk/OpenMPT/packageTemplate/History.txt 2007-05-27 17:47:34 UTC (rev 188) @@ -6,8 +6,19 @@ -: known issue / regression /: change ?: other -(tx XYZ): thanks to XYZ for telling me about the bug +(tx XYZ): thanks to XYZ for telling us about the bug +v1.17.02.48 + . <Relabs> Fix song cleanup issue (http://lpchip.com/modplug/viewtopic.php?t=1711) + . <Relabs> Pitch/Tempo lock fix (broken in .46 and .47) (http://lpchip.com/modplug/viewtopic.php?t=1646) + / <Relabs> Pattern manager channel reordering behviour changes / fixes. (http://lpchip.com/modplug/viewtopic.php?t=1148) + . <pelya> Fix bad horizontal scrolling in pattern editor when positioning the cursor with the mouse. (http://lpchip.com/modplug/viewtopic.php?t=1650) + . <rewbs> Fix odd "play row" behaviour when using 1 tick-per-row (http://lpchip.com/modplug/viewtopic.php?t=1038). + . <rewbs> Fix pop due to ramping when song starts with a pattern command that sets a low global volume. (http://lpchip.com/modplug/viewtopic.php?t=523) + . <rewbs> Fix occasional colour issues with orderlist (http://lpchip.com/modplug/viewtopic.php?t=867) + . <rewbs> Fix impossible horizontal scrolling in pattern editor when playing with follow song on + . <rewbs> Grey out "Trim" option in sample editor context menu if there's no selection. (http://lpchip.com/modplug/viewtopic.php?t=908) + v1.17.02.47 ? <rewbs> An update checker was introduced in the previous version. If you had any problems with the update notification, please report a bug. . <pelya> Save pattern scrollbar position when switching to other tabs Modified: trunk/OpenMPT/packageTemplate/default.mkb =================================================================== --- trunk/OpenMPT/packageTemplate/default.mkb 2007-05-25 22:09:32 UTC (rev 187) +++ trunk/OpenMPT/packageTemplate/default.mkb 2007-05-27 17:47:34 UTC (rev 188) @@ -1,4 +1,4 @@ -//-------- Modplug Tracker key binding definition file ------- +//-------- OpenMPT key binding definition file ------- //-Format is: - //- Context:Command ID:Modifiers:Key:KeypressEventType //Comments - //---------------------------------------------------------------------- @@ -9,7 +9,7 @@ 0:1349:2:83:1 //File/Save: Ctrl+S (KeyDown) 0:1030:0:116:1 //Play song/Pause song: F5 (KeyDown) 0:1031:0:119:1 //Pause song: F8 (KeyDown) -0:1375:0:27:1 //Stop Song: Esc (KeyDown) +0:1375:0:27:1 //Stop Song: ESC (KeyDown) 0:1029:0:117:1 //Play song from start: F6 (KeyDown) 0:1027:0:118:5 //Play pattern from start: F7 (KeyDown|KeyHold) 0:1026:2:118:5 //Play pattern from cursor: Ctrl+F7 (KeyDown|KeyHold) @@ -17,9 +17,9 @@ 0:1359:2:90:1 //Undo: Ctrl+Z (KeyDown) 0:1360:2:88:1 //Cut: Ctrl+X (KeyDown) 0:1361:2:67:1 //Copy: Ctrl+C (KeyDown) -0:1361:2:45:1 //Copy: Ctrl+Ins (KeyDown) +0:1361:2:45:1 //Copy: Ctrl+INSERT (KeyDown) 0:1362:2:86:1 //Paste: Ctrl+V (KeyDown) -0:1362:1:45:1 //Paste: Shift+Ins (KeyDown) +0:1362:1:45:1 //Paste: Shift+INSERT (KeyDown) 0:1364:2:53:1 //SelectAll: Ctrl+5 (KeyDown) 0:1365:2:70:1 //Find: Ctrl+F (KeyDown) 0:1366:0:114:1 //Find Next: F3 (KeyDown) @@ -31,45 +31,52 @@ 0:1368:2:113:1 //Toggle Tree View: Ctrl+F2 (KeyDown) 0:1369:2:112:1 //View Options: Ctrl+F1 (KeyDown) 0:1370:0:112:1 //Help (to do): F1 (KeyDown) -0:1032:2:111:5 //Previous instrument: Ctrl+ (KeyDown|KeyHold) -0:1032:2:38:5 //Previous instrument: Ctrl+Up (KeyDown|KeyHold) -0:1033:2:106:5 //Next instrument: Ctrl+Num * (KeyDown|KeyHold) -0:1033:2:40:5 //Next instrument: Ctrl+Down (KeyDown|KeyHold) -0:1036:0:111:1 //Previous octave: (KeyDown) -0:1037:0:106:1 //Next octave: Num * (KeyDown) -0:1034:2:37:5 //Previous order: Ctrl+Left (KeyDown|KeyHold) -0:1035:2:39:5 //Next order: Ctrl+Right (KeyDown|KeyHold) +0:1032:2:111:5 //Previous instrument: Ctrl+NUM DIVIDE (KeyDown|KeyHold) +0:1032:2:38:5 //Previous instrument: Ctrl+UP (KeyDown|KeyHold) +0:1033:2:106:5 //Next instrument: Ctrl+NUMMULT (KeyDown|KeyHold) +0:1033:2:40:5 //Next instrument: Ctrl+DOWN (KeyDown|KeyHold) +0:1036:0:111:1 //Previous octave: NUM DIVIDE (KeyDown) +0:1037:0:106:1 //Next octave: NUMMULT (KeyDown) +0:1034:2:37:5 //Previous order: Ctrl+LEFT (KeyDown|KeyHold) +0:1035:2:39:5 //Next order: Ctrl+RIGHT (KeyDown|KeyHold) //----( General Context [bottom] (1) )------------ //----( Pattern Context [bottom] (2) )------------ -2:1017:0:34:1 //Jump down by highlight1: Page Down (KeyDown) -2:1018:0:33:1 //Jump up by highlight1: Page Up (KeyDown) -2:1338:4:34:1 //Jump down by highlight2: Alt+Page Down (KeyDown) -2:1339:4:33:1 //Jump up by highlight2: Alt+Page Up (KeyDown) -2:1340:6:34:5 //Snap down to highlight2: Ctrl+Alt+Page Down (KeyDown|KeyHold) -2:1341:6:33:5 //Snap up to highlight2: Ctrl+Alt+Page Up (KeyDown|KeyHold) -2:1038:0:40:5 //Navigate down: Down (KeyDown|KeyHold) -2:1039:0:38:1 //Navigate up: Up (KeyDown) -2:1040:0:37:5 //Navigate left: Left (KeyDown|KeyHold) -2:1041:0:39:5 //Navigate right: Right (KeyDown|KeyHold) -2:1042:0:9:1 //Navigate to next channel: Tab (KeyDown) -2:1043:1:9:1 //Navigate to previous channel: Shift+Tab (KeyDown) -2:1044:0:36:1 //Go to first channel: Home (KeyDown) -2:1045:2:36:1 //Go to first row: Ctrl+Home (KeyDown) -2:1046:6:36:1 //Go to first row of first channel: Ctrl+Alt+Home (KeyDown) -2:1047:0:35:1 //Go to last channel: End (KeyDown) -2:1048:2:35:1 //Go to last row: Ctrl+End (KeyDown) -2:1049:6:35:1 //Go to last row of last channel: Ctrl+Alt+End (KeyDown) +2:1017:0:34:5 //Jump down by measure: PGDOWN (KeyDown|KeyHold) +2:1018:0:33:5 //Jump up by measure: PGUP (KeyDown|KeyHold) +2:1338:4:34:5 //Jump down by beat: Alt+PGDOWN (KeyDown|KeyHold) +2:1339:4:33:5 //Jump up by beat: Alt+PGUP (KeyDown|KeyHold) +2:1340:6:34:5 //Snap down to beat: Ctrl+Alt+PGDOWN (KeyDown|KeyHold) +2:1341:6:33:5 //Snap up to beat: Ctrl+Alt+PGUP (KeyDown|KeyHold) +2:1038:0:40:5 //Navigate down by 1 row: DOWN (KeyDown|KeyHold) +2:1039:0:38:5 //Navigate up by 1 row: UP (KeyDown|KeyHold) +2:1691:4:40:5 //Navigate down by spacing: Alt+DOWN (KeyDown|KeyHold) +2:1692:4:38:5 //Navigate up by spacing: Alt+UP (KeyDown|KeyHold) +2:1040:0:37:5 //Navigate left: LEFT (KeyDown|KeyHold) +2:1041:0:39:5 //Navigate right: RIGHT (KeyDown|KeyHold) +2:1042:0:9:5 //Navigate to next channel: TAB (KeyDown|KeyHold) +2:1043:1:9:5 //Navigate to previous channel: Shift+TAB (KeyDown|KeyHold) +2:1044:0:36:1 //Go to first channel: HOME (KeyDown) +2:1045:2:36:1 //Go to first row: Ctrl+HOME (KeyDown) +2:1046:6:36:1 //Go to first row of first channel: Ctrl+Alt+HOME (KeyDown) +2:1047:0:35:1 //Go to last channel: END (KeyDown) +2:1048:2:35:1 //Go to last row: Ctrl+END (KeyDown) +2:1049:6:35:1 //Go to last row of last channel: Ctrl+Alt+END (KeyDown) +2:1050:1:16:1 //Selection key: Shift (KeyDown) +2:1051:2:17:1 //Copy select key: Ctrl (KeyDown) 2:1011:2:76:1 //Select channel / Select all: Ctrl+L (KeyDown) -2:1003:0:13:1 //Quick copy: Enter (KeyDown) -2:1004:0:32:5 //Quick paste: Space (KeyDown|KeyHold) -2:1001:2:32:1 //Enable recording: Ctrl+Space (KeyDown) -2:1002:2:13:5 //Play row: Ctrl+Enter (KeyDown|KeyHold) -2:1317:4:18:1 //Set row jump on note entry: Alt+Alt (KeyDown) -2:1685:2:9:1 //Switch to order list: Ctrl+Tab (KeyDown) +2:1663:0:122:1 //Toggle follow song: F11 (KeyDown) +2:1003:0:13:5 //Quick copy: ENTER (KeyDown|KeyHold) +2:1004:0:32:5 //Quick paste: SPACE (KeyDown|KeyHold) +2:1001:2:32:1 //Enable recording: Ctrl+SPACE (KeyDown) +2:1002:2:13:5 //Play row: Ctrl+ENTER (KeyDown|KeyHold) +2:1317:4:18:1 //Set row jump on note entry: Alt (KeyDown) +2:1685:2:9:1 //Switch to order list: Ctrl+TAB (KeyDown) 2:1662:6:80:1 //Toggle channel's plugin editor: Ctrl+Alt+P (KeyDown) 2:1062:0:93:1 //Show note properties: Application (KeyDown) +2:1005:0:121:5 //Mute current channel: F10 (KeyDown|KeyHold) +2:1006:2:121:5 //Solo current channel: Ctrl+F10 (KeyDown|KeyHold) 2:1007:2:81:5 //Transpose +1: Ctrl+Q (KeyDown|KeyHold) 2:1008:2:65:5 //Transpose -1: Ctrl+A (KeyDown|KeyHold) 2:1009:3:81:5 //Transpose +12: Shift+Ctrl+Q (KeyDown|KeyHold) @@ -78,19 +85,20 @@ 2:1014:2:74:1 //Interpolate volume: Ctrl+J (KeyDown) 2:1015:2:75:1 //Interpolate effect: Ctrl+K (KeyDown) 2:1016:4:66:1 //Open effect visualizer: Alt+B (KeyDown) +2:1766:2:71:1 //Go to row/channel/...: Ctrl+G (KeyDown) 2:1013:2:73:1 //Apply current instrument: Ctrl+I (KeyDown) 2:1660:4:69:5 //Grow selection: Alt+E (KeyDown|KeyHold) 2:1661:4:68:5 //Shrink selection: Alt+D (KeyDown|KeyHold) -2:1058:0:46:1 //Clear field: Del (KeyDown) +2:1058:0:46:1 //Clear field: DELETE (KeyDown) 2:1664:1:190:1 //Clear field (IT Style): Shift+. (KeyDown) -2:1059:2:46:1 //Clear row and step: Ctrl+Del (KeyDown) -2:1665:1:46:5 //Clear field and step (IT Style): Shift+Del (KeyDown|KeyHold) -2:1061:0:8:5 //Delete rows: Backspace (KeyDown|KeyHold) -2:1377:2:8:5 //Delete all rows: Ctrl+Backspace (KeyDown|KeyHold) -2:1378:0:45:1 //Insert Row: Ins (KeyDown) -2:1379:2:45:1 //Insert All Rows: Ctrl+Ins (KeyDown) -2:1055:0:109:5 //Previous pattern: Num - (KeyDown|KeyHold) -2:1054:0:107:5 //Next pattern: Num + (KeyDown|KeyHold) +2:1059:2:46:1 //Clear row and step: Ctrl+DELETE (KeyDown) +2:1665:1:46:5 //Clear field and step (IT Style): Shift+DELETE (KeyDown|KeyHold) +2:1061:0:8:5 //Delete rows: BACKSPACE (KeyDown|KeyHold) +2:1377:2:8:5 //Delete all rows: Ctrl+BACKSPACE (KeyDown|KeyHold) +2:1378:0:45:1 //Insert Row: INSERT (KeyDown) +2:1379:2:45:1 //Insert All Rows: Ctrl+INSERT (KeyDown) +2:1055:0:109:5 //Previous pattern: NUM SUB (KeyDown|KeyHold) +2:1054:0:107:5 //Next pattern: NUM PLUS (KeyDown|KeyHold) //----( Pattern Context [bottom] - Note Col (3) )------------ 3:1064:0:81:1 //Base octave C: Q (KeyDown) @@ -115,7 +123,7 @@ 3:1083:0:75:1 //Base octave +1 G: K (KeyDown) 3:1084:0:76:1 //Base octave +1 G#: L (KeyDown) 3:1085:0:186:1 //Base octave +2 A: ; (KeyDown) -3:1086:0:222:1 //Base octave +2 A#: ' (KeyDown) +3:1086:0:222:1 //Base octave +2 A#: # (KeyDown) 3:1087:0:220:1 //Base octave +2 B: \ (KeyDown) 3:1088:0:90:1 //Base octave +2 C: Z (KeyDown) 3:1089:0:88:1 //Base octave +2 C#: X (KeyDown) @@ -128,70 +136,70 @@ 3:1096:0:190:1 //Base octave +2 G#: . (KeyDown) 3:1097:0:191:1 //Base octave +3 A: / (KeyDown) 3:1212:0:48:1 //Set octave 0: 0 (KeyDown) -3:1212:0:96:1 //Set octave 0: Num 0 (KeyDown) +3:1212:0:96:1 //Set octave 0: NUM 0 (KeyDown) 3:1213:0:49:1 //Set octave 1: 1 (KeyDown) -3:1213:0:97:1 //Set octave 1: Num 1 (KeyDown) +3:1213:0:97:1 //Set octave 1: NUM 1 (KeyDown) 3:1214:0:50:1 //Set octave 2: 2 (KeyDown) -3:1214:0:98:1 //Set octave 2: Num 2 (KeyDown) +3:1214:0:98:1 //Set octave 2: NUM 2 (KeyDown) 3:1215:0:51:1 //Set octave 3: 3 (KeyDown) -3:1215:0:99:1 //Set octave 3: Num 3 (KeyDown) +3:1215:0:99:1 //Set octave 3: NUM 3 (KeyDown) 3:1216:0:52:1 //Set octave 4: 4 (KeyDown) -3:1216:0:100:1 //Set octave 4: Num 4 (KeyDown) +3:1216:0:100:1 //Set octave 4: NUM 4 (KeyDown) 3:1217:0:53:1 //Set octave 5: 5 (KeyDown) -3:1217:0:101:1 //Set octave 5: Num 5 (KeyDown) +3:1217:0:101:1 //Set octave 5: NUM 5 (KeyDown) 3:1218:0:54:1 //Set octave 6: 6 (KeyDown) -3:1218:0:102:1 //Set octave 6: Num 6 (KeyDown) +3:1218:0:102:1 //Set octave 6: NUM 6 (KeyDown) 3:1219:0:55:1 //Set octave 7: 7 (KeyDown) -3:1219:0:103:1 //Set octave 7: Num 7 (KeyDown) +3:1219:0:103:1 //Set octave 7: NUM 7 (KeyDown) 3:1220:0:56:1 //Set octave 8: 8 (KeyDown) -3:1220:0:104:1 //Set octave 8: Num 8 (KeyDown) +3:1220:0:104:1 //Set octave 8: NUM 8 (KeyDown) 3:1221:0:57:1 //Set octave 9: 9 (KeyDown) -3:1221:0:105:1 //Set octave 9: Num 9 (KeyDown) -3:1316:1:16:1 //Chord Modifier: Shift+Shift (KeyDown) -3:1200:0:192:1 //Note cut: ` (KeyDown) +3:1221:0:105:1 //Set octave 9: NUM 9 (KeyDown) +3:1316:1:16:1 //Chord Modifier: Shift (KeyDown) +3:1200:0:192:1 //Note cut: ' (KeyDown) 3:1201:0:187:1 //Note off: = (KeyDown) //----( Pattern Context [bottom] - Ins Col (4) )------------ -4:1202:0:96:1 //Set instrument digit 0: Num 0 (KeyDown) +4:1202:0:96:1 //Set instrument digit 0: NUM 0 (KeyDown) 4:1202:0:48:1 //Set instrument digit 0: 0 (KeyDown) -4:1203:0:97:1 //Set instrument digit 1: Num 1 (KeyDown) +4:1203:0:97:1 //Set instrument digit 1: NUM 1 (KeyDown) 4:1203:0:49:1 //Set instrument digit 1: 1 (KeyDown) -4:1204:0:98:1 //Set instrument digit 2: Num 2 (KeyDown) +4:1204:0:98:1 //Set instrument digit 2: NUM 2 (KeyDown) 4:1204:0:50:1 //Set instrument digit 2: 2 (KeyDown) -4:1205:0:99:1 //Set instrument digit 3: Num 3 (KeyDown) +4:1205:0:99:1 //Set instrument digit 3: NUM 3 (KeyDown) 4:1205:0:51:1 //Set instrument digit 3: 3 (KeyDown) -4:1206:0:100:1 //Set instrument digit 4: Num 4 (KeyDown) +4:1206:0:100:1 //Set instrument digit 4: NUM 4 (KeyDown) 4:1206:0:52:1 //Set instrument digit 4: 4 (KeyDown) -4:1207:0:101:1 //Set instrument digit 5: Num 5 (KeyDown) +4:1207:0:101:1 //Set instrument digit 5: NUM 5 (KeyDown) 4:1207:0:53:1 //Set instrument digit 5: 5 (KeyDown) -4:1208:0:102:1 //Set instrument digit 6: Num 6 (KeyDown) +4:1208:0:102:1 //Set instrument digit 6: NUM 6 (KeyDown) 4:1208:0:54:1 //Set instrument digit 6: 6 (KeyDown) -4:1209:0:103:1 //Set instrument digit 7: Num 7 (KeyDown) +4:1209:0:103:1 //Set instrument digit 7: NUM 7 (KeyDown) 4:1209:0:55:1 //Set instrument digit 7: 7 (KeyDown) 4:1210:0:56:1 //Set instrument digit 8: 8 (KeyDown) -4:1211:0:105:1 //Set instrument digit 9: Num 9 (KeyDown) +4:1211:0:105:1 //Set instrument digit 9: NUM 9 (KeyDown) 4:1211:0:57:1 //Set instrument digit 9: 9 (KeyDown) //----( Pattern Context [bottom] - Vol Col (5) )------------ 5:1222:0:48:1 //Set volume digit 0: 0 (KeyDown) -5:1222:0:96:1 //Set volume digit 0: Num 0 (KeyDown) +5:1222:0:96:1 //Set volume digit 0: NUM 0 (KeyDown) 5:1223:0:49:1 //Set volume digit 1: 1 (KeyDown) -5:1223:0:97:1 //Set volume digit 1: Num 1 (KeyDown) +5:1223:0:97:1 //Set volume digit 1: NUM 1 (KeyDown) 5:1224:0:50:1 //Set volume digit 2: 2 (KeyDown) -5:1224:0:98:1 //Set volume digit 2: Num 2 (KeyDown) +5:1224:0:98:1 //Set volume digit 2: NUM 2 (KeyDown) 5:1225:0:51:1 //Set volume digit 3: 3 (KeyDown) -5:1225:0:99:1 //Set volume digit 3: Num 3 (KeyDown) +5:1225:0:99:1 //Set volume digit 3: NUM 3 (KeyDown) 5:1226:0:52:1 //Set volume digit 4: 4 (KeyDown) -5:1226:0:100:1 //Set volume digit 4: Num 4 (KeyDown) +5:1226:0:100:1 //Set volume digit 4: NUM 4 (KeyDown) 5:1227:0:53:1 //Set volume digit 5: 5 (KeyDown) -5:1227:0:101:1 //Set volume digit 5: Num 5 (KeyDown) +5:1227:0:101:1 //Set volume digit 5: NUM 5 (KeyDown) 5:1228:0:54:1 //Set volume digit 6: 6 (KeyDown) -5:1228:0:102:1 //Set volume digit 6: Num 6 (KeyDown) +5:1228:0:102:1 //Set volume digit 6: NUM 6 (KeyDown) 5:1229:0:55:1 //Set volume digit 7: 7 (KeyDown) -5:1229:0:103:1 //Set volume digit 7: Num 7 (KeyDown) +5:1229:0:103:1 //Set volume digit 7: NUM 7 (KeyDown) 5:1230:0:56:1 //Set volume digit 8: 8 (KeyDown) 5:1231:0:57:1 //Set volume digit 9: 9 (KeyDown) -5:1231:0:105:1 //Set volume digit 9: Num 9 (KeyDown) +5:1231:0:105:1 //Set volume digit 9: NUM 9 (KeyDown) 5:1232:0:86:1 //Vol command - volume: V (KeyDown) 5:1233:0:80:1 //Vol command - pan: P (KeyDown) 5:1234:0:67:1 //Vol command - vol slide up: C (KeyDown) @@ -214,25 +222,25 @@ //----( Pattern Context [bottom] - Param Col (7) )------------ 7:1247:0:48:1 //FX Param digit 0: 0 (KeyDown) -7:1247:0:96:1 //FX Param digit 0: Num 0 (KeyDown) +7:1247:0:96:1 //FX Param digit 0: NUM 0 (KeyDown) 7:1248:0:49:1 //FX Param digit 1: 1 (KeyDown) -7:1248:0:97:1 //FX Param digit 1: Num 1 (KeyDown) +7:1248:0:97:1 //FX Param digit 1: NUM 1 (KeyDown) 7:1249:0:50:1 //FX Param digit 2: 2 (KeyDown) -7:1249:0:98:1 //FX Param digit 2: Num 2 (KeyDown) +7:1249:0:98:1 //FX Param digit 2: NUM 2 (KeyDown) 7:1250:0:51:1 //FX Param digit 3: 3 (KeyDown) -7:1250:0:99:1 //FX Param digit 3: Num 3 (KeyDown) +7:1250:0:99:1 //FX Param digit 3: NUM 3 (KeyDown) 7:1251:0:52:1 //FX Param digit 4: 4 (KeyDown) -7:1251:0:100:1 //FX Param digit 4: Num 4 (KeyDown) +7:1251:0:100:1 //FX Param digit 4: NUM 4 (KeyDown) 7:1252:0:53:1 //FX Param digit 5: 5 (KeyDown) -7:1252:0:101:1 //FX Param digit 5: Num 5 (KeyDown) +7:1252:0:101:1 //FX Param digit 5: NUM 5 (KeyDown) 7:1253:0:54:1 //FX Param digit 6: 6 (KeyDown) -7:1253:0:102:1 //FX Param digit 6: Num 6 (KeyDown) +7:1253:0:102:1 //FX Param digit 6: NUM 6 (KeyDown) 7:1254:0:55:1 //FX Param digit 7: 7 (KeyDown) -7:1254:0:103:1 //FX Param digit 7: Num 7 (KeyDown) +7:1254:0:103:1 //FX Param digit 7: NUM 7 (KeyDown) 7:1255:0:56:1 //FX Param digit 8: 8 (KeyDown) -7:1255:0:104:1 //FX Param digit 8: Num 8 (KeyDown) +7:1255:0:104:1 //FX Param digit 8: NUM 8 (KeyDown) 7:1256:0:57:1 //FX Param digit 9: 9 (KeyDown) -7:1256:0:105:1 //FX Param digit 9: Num 9 (KeyDown) +7:1256:0:105:1 //FX Param digit 9: NUM 9 (KeyDown) 7:1257:0:65:1 //FX Param digit A: A (KeyDown) 7:1258:0:66:1 //FX Param digit B: B (KeyDown) 7:1259:0:67:1 //FX Param digit C: C (KeyDown) @@ -242,12 +250,12 @@ //----( Sample Context [bottom] (8) )------------ 8:1380:2:84:1 //Trim sample around loop points: Ctrl+T (KeyDown) -8:1383:0:8:1 //Silence sample selection: Backspace (KeyDown) +8:1383:0:8:1 //Silence sample selection: BACKSPACE (KeyDown) 8:1385:3:65:1 //Amplify Sample: Shift+Ctrl+A (KeyDown) 8:1381:3:82:1 //Reverse sample: Shift+Ctrl+R (KeyDown) -8:1382:0:46:1 //Delete sample selection: Del (KeyDown) -8:1386:0:107:1 //Zoom Out: Num + (KeyDown) -8:1387:0:109:1 //Zoom In: Num - (KeyDown) +8:1382:0:46:1 //Delete sample selection: DELETE (KeyDown) +8:1386:0:107:1 //Zoom Out: NUM PLUS (KeyDown) +8:1387:0:109:1 //Zoom In: NUM SUB (KeyDown) //----( Instrument Context [bottom] (9) )------------ @@ -257,13 +265,16 @@ //----( Unknown Context (12) )------------ -//----( General Context [top] (13) )------------ +//----( Plugin GUI Context (13) )------------ -//----( Pattern Context [top] (14) )------------ +//----( General Context [top] (14) )------------ -//----( Sample Context [top] (15) )------------ +//----( Pattern Context [top] (15) )------------ -//----( Instrument Context [top] (16) )------------ +//----( Sample Context [top] (16) )------------ -//----( Comments Context [top] (17) )------------ +//----( Instrument Context [top] (17) )------------ +//----( Comments Context [top] (18) )------------ + +//----( Unknown Context (19) )------------ Modified: trunk/OpenMPT/soundlib/Sndmix.cpp =================================================================== --- trunk/OpenMPT/soundlib/Sndmix.cpp 2007-05-25 22:09:32 UTC (rev 187) +++ trunk/OpenMPT/soundlib/Sndmix.cpp 2007-05-27 17:47:34 UTC (rev 188) @@ -203,11 +203,9 @@ if (m_nMaxMixChannels > MAX_CHANNELS) m_nMaxMixChannels = MAX_CHANNELS; if (gdwMixingFreq < 4000) gdwMixingFreq = 4000; if (gdwMixingFreq > MAX_SAMPLE_RATE) gdwMixingFreq = MAX_SAMPLE_RATE; - //rewbs.resamplerConf - //gnVolumeRampSamples = (gdwMixingFreq * VOLUMERAMPLEN) / 100000; - //if (gnVolumeRampSamples < 8) gnVolumeRampSamples = 8; // - gnVolumeRampSamples = CMainFrame::glVolumeRampSamples; - //end rewbs.resamplerConf + // Start with ramping disabled to avoid clicks on first read. + // Ramping is now set after the first read in CSoundFile::Read(); + gnVolumeRampSamples = 0; gnDryROfsVol = gnDryLOfsVol = 0; #ifndef NO_REVERB gnRvbROfsVol = gnRvbLOfsVol = 0; @@ -394,6 +392,8 @@ lRead -= lCount; m_nBufferCount -= lCount; m_lTotalSampleCount += lCount; // increase sample count for VSTTimeInfo. + // Turn on ramping after first read (fix http://lpchip.com/modplug/viewtopic.php?t=523 ) + gnVolumeRampSamples = CMainFrame::glVolumeRampSamples; } MixDone: if (lRead) memset(lpBuffer, (gnBitsPerSample == 8) ? 0x80 : 0, lRead * lSampleSize); @@ -731,19 +731,19 @@ // Should we process tick0 effects? if (!m_nMusicSpeed) m_nMusicSpeed = 1; m_dwSongFlags |= SONG_FIRSTTICK; + + //End of row? stop pattern step (aka "play row"). + if (m_nTickCount >= m_nMusicSpeed * (m_nPatternDelay+1) + m_nFrameDelay - 1) { + #ifdef MODPLUG_TRACKER + if (m_dwSongFlags & SONG_STEP) { + m_dwSongFlags &= ~SONG_STEP; + m_dwSongFlags |= SONG_PAUSED; + } + #endif // MODPLUG_TRACKER + } + if (m_nTickCount) { - //End of row? stop pattern step (aka "play row"). - if (m_nTickCount >= m_nMusicSpeed * (m_nPatternDelay+1) + m_nFrameDelay - 1) { - #ifdef MODPLUG_TRACKER - if (m_dwSongFlags & SONG_STEP) { - m_dwSongFlags &= ~SONG_STEP; - m_dwSongFlags |= SONG_PAUSED; - } - #endif // MODPLUG_TRACKER - } - - m_dwSongFlags &= ~SONG_FIRSTTICK; if ((!(m_nType & MOD_TYPE_XM)) && (m_nTickCount < m_nMusicSpeed * (1 + m_nPatternDelay))) { @@ -1884,7 +1884,7 @@ VOID CSoundFile::ApplyGlobalVolume(int SoundBuffer[], long lTotalSampleCount) -//-------------------------------------------------------- +//--------------------------------------------------------------------------- { long delta=0; long step=0; @@ -1915,6 +1915,7 @@ m_nSamplesToGlobalVolRampDest--; } else { SoundBuffer[pos] = _muldiv(SoundBuffer[pos], m_nGlobalVolume, MAX_GLOBAL_VOLUME); + m_lHighResRampingGlobalVolume = m_nGlobalVolume<<VOLUMERAMPPRECISION; } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |