From: <sag...@us...> - 2012-03-09 23:38:50
|
Revision: 1212 http://modplug.svn.sourceforge.net/modplug/?rev=1212&view=rev Author: saga-games Date: 2012-03-09 23:38:42 +0000 (Fri, 09 Mar 2012) Log Message: ----------- [Fix] Revision 1203 broke IT / MPTM extended settings loading if the last sample slot was empty. [Mod] Updated MTPM loader test. [Mod] Default ramp up setting is now 16 samples. [Imp] Instrument Editor: Also added tooltips for resonance / cutoff sliders. [Imp] Keyboard Settings: Improved shortcut search behaviour a bit. [Mod] OpenMPT: Version is now 1.20.00.77 Revision Links: -------------- http://modplug.svn.sourceforge.net/modplug/?rev=1203&view=rev Modified Paths: -------------- trunk/OpenMPT/mptrack/Ctrl_ins.cpp trunk/OpenMPT/mptrack/KeyConfigDlg.cpp trunk/OpenMPT/mptrack/TrackerSettings.cpp trunk/OpenMPT/mptrack/mptrack.rc trunk/OpenMPT/mptrack/test/test.cpp trunk/OpenMPT/mptrack/test/test.mptm trunk/OpenMPT/mptrack/version.h trunk/OpenMPT/soundlib/ITTools.cpp trunk/OpenMPT/soundlib/Load_it.cpp Modified: trunk/OpenMPT/mptrack/Ctrl_ins.cpp =================================================================== --- trunk/OpenMPT/mptrack/Ctrl_ins.cpp 2012-03-08 01:39:23 UTC (rev 1211) +++ trunk/OpenMPT/mptrack/Ctrl_ins.cpp 2012-03-09 23:38:42 UTC (rev 1212) @@ -1607,6 +1607,14 @@ wsprintf(pszText, "\xB1%d panning variation", pIns->nPanSwing); return TRUE; + case IDC_SLIDER3: + wsprintf(pszText, "%d", pIns->GetCutoff()); + return TRUE; + + case IDC_SLIDER4: + wsprintf(pszText, "%d", pIns->GetResonance()); + return TRUE; + case IDC_SLIDER6: wsprintf(pszText, "\xB1%d cutoff variation", pIns->nCutSwing); return TRUE; Modified: trunk/OpenMPT/mptrack/KeyConfigDlg.cpp =================================================================== --- trunk/OpenMPT/mptrack/KeyConfigDlg.cpp 2012-03-08 01:39:23 UTC (rev 1211) +++ trunk/OpenMPT/mptrack/KeyConfigDlg.cpp 2012-03-09 23:38:42 UTC (rev 1212) @@ -181,163 +181,195 @@ void COptionsKeyboard::DefineCommandCategories() //---------------------------------------------- { - CommandCategory *newCat; + { + CommandCategory newCat("Global keys", kCtxAllContexts); - newCat = new CommandCategory("Global keys", kCtxAllContexts); - for (int c=kcStartFile; c<=kcEndFile; c++) - newCat->commands.Add(c); - newCat->separators.Add(kcEndFile); //-------------------------------------- - for (int c=kcStartPlayCommands; c<=kcEndPlayCommands; c++) - newCat->commands.Add(c); - newCat->separators.Add(kcEndPlayCommands); //-------------------------------------- - for (int c=kcStartEditCommands; c<=kcEndEditCommands; c++) - newCat->commands.Add(c); - newCat->separators.Add(kcEndEditCommands); //-------------------------------------- - for (int c=kcStartView; c<=kcEndView; c++) - newCat->commands.Add(c); - newCat->separators.Add(kcEndView); //-------------------------------------- - for (int c=kcStartMisc; c<=kcEndMisc; c++) - newCat->commands.Add(c); - newCat->separators.Add(kcEndMisc); //-------------------------------------- + for(int c = kcStartFile; c <= kcEndFile; c++) + newCat.commands.Add(c); + newCat.separators.Add(kcEndFile); //-------------------------------------- + for(int c = kcStartPlayCommands; c <= kcEndPlayCommands; c++) + newCat.commands.Add(c); + newCat.separators.Add(kcEndPlayCommands); //-------------------------------------- + for(int c = kcStartEditCommands; c <= kcEndEditCommands; c++) + newCat.commands.Add(c); + newCat.separators.Add(kcEndEditCommands); //-------------------------------------- + for(int c = kcStartView; c <= kcEndView; c++) + newCat.commands.Add(c); + newCat.separators.Add(kcEndView); //-------------------------------------- + for(int c = kcStartMisc; c <= kcEndMisc; c++) + newCat.commands.Add(c); + newCat.separators.Add(kcEndMisc); //-------------------------------------- - commandCategories.Add(*newCat); - delete newCat; + commandCategories.Add(newCat); + } - newCat = new CommandCategory(" General [Top]", kCtxCtrlGeneral); - commandCategories.Add(*newCat); - delete newCat; + { + CommandCategory newCat(" General [Top]", kCtxCtrlGeneral); + commandCategories.Add(newCat); + } - newCat = new CommandCategory(" General [Bottom]", kCtxViewGeneral); - commandCategories.Add(*newCat); - delete newCat; + { + CommandCategory newCat(" General [Bottom]", kCtxViewGeneral); + commandCategories.Add(newCat); + } - newCat = new CommandCategory(" Pattern Editor [Top]", kCtxCtrlPatterns); - commandCategories.Add(*newCat); - delete newCat; + { + CommandCategory newCat(" Pattern Editor [Top]", kCtxCtrlPatterns); + commandCategories.Add(newCat); + } - newCat = new CommandCategory(" Pattern Editor - Order List", kCtxCtrlOrderlist); + { + CommandCategory newCat(" Pattern Editor - Order List", kCtxCtrlOrderlist); - for (int c=kcStartOrderlistCommands; c<=kcEndOrderlistCommands; c++) - newCat->commands.Add(c); - newCat->separators.Add(kcEndOrderlistNavigation); //-------------------------------------- - newCat->separators.Add(kcEndOrderlistEdit); //-------------------------------------- + for(int c = kcStartOrderlistCommands; c <= kcEndOrderlistCommands; c++) + newCat.commands.Add(c); + newCat.separators.Add(kcEndOrderlistNavigation); //-------------------------------------- + newCat.separators.Add(kcEndOrderlistEdit); //-------------------------------------- - commandCategories.Add(*newCat); - delete newCat; + commandCategories.Add(newCat); + } - newCat = new CommandCategory(" Pattern Editor - General", kCtxViewPatterns); - - for (int c=kcStartPlainNavigate; c<=kcEndPlainNavigate; c++) - newCat->commands.Add(c); - newCat->separators.Add(kcEndPlainNavigate); //-------------------------------------- - for (int c=kcStartJumpSnap; c<=kcEndJumpSnap; c++) - newCat->commands.Add(c); - newCat->separators.Add(kcEndJumpSnap); //-------------------------------------- - for (int c=kcStartHomeEnd; c<=kcEndHomeEnd; c++) - newCat->commands.Add(c); - newCat->separators.Add(kcEndHomeEnd); //-------------------------------------- - for (int c=kcPrevPattern; c<=kcNextPattern; c++) - newCat->commands.Add(c); - newCat->separators.Add(kcNextPattern); //-------------------------------------- - for (int c=kcStartSelect; c<=kcEndSelect; c++) - newCat->commands.Add(c); - newCat->separators.Add(kcEndSelect); //-------------------------------------- - newCat->commands.Add(kcCopyAndLoseSelection); - for (int c=kcClearRow; c<=kcInsertAllRows; c++) - newCat->commands.Add(c); - newCat->separators.Add(kcInsertAllRows); //-------------------------------------- - for (int c=kcChannelMute; c<=kcChannelReset; c++) - newCat->commands.Add(c); - newCat->separators.Add(kcChannelReset); //-------------------------------------- - for (int c=kcTransposeUp; c<=kcTransposeOctDown; c++) - newCat->commands.Add(c); - newCat->separators.Add(kcTransposeOctDown); //-------------------------------------- - for (int c=kcPatternAmplify; c<=kcPatternShrinkSelection; c++) - newCat->commands.Add(c); - newCat->separators.Add(kcPatternShrinkSelection); //-------------------------------------- - for (int c=kcStartPatternEditMisc; c<=kcEndPatternEditMisc; c++) - newCat->commands.Add(c); - newCat->separators.Add(kcEndPatternEditMisc); //-------------------------------------- + { + CommandCategory newCat(" Pattern Editor - General", kCtxViewPatterns); - commandCategories.Add(*newCat); - delete newCat; + for(int c = kcStartPlainNavigate; c <= kcEndPlainNavigate; c++) + newCat.commands.Add(c); + newCat.separators.Add(kcEndPlainNavigate); //-------------------------------------- + for(int c = kcStartJumpSnap; c <= kcEndJumpSnap; c++) + newCat.commands.Add(c); + newCat.separators.Add(kcEndJumpSnap); //-------------------------------------- + for(int c = kcStartHomeEnd; c <= kcEndHomeEnd; c++) + newCat.commands.Add(c); + newCat.separators.Add(kcEndHomeEnd); //-------------------------------------- + for(int c = kcPrevPattern; c <= kcNextPattern; c++) + newCat.commands.Add(c); + newCat.separators.Add(kcNextPattern); //-------------------------------------- + for(int c = kcStartSelect; c <= kcEndSelect; c++) + newCat.commands.Add(c); + newCat.separators.Add(kcEndSelect); //-------------------------------------- + newCat.commands.Add(kcCopyAndLoseSelection); + for(int c = kcClearRow; c <= kcInsertAllRows; c++) + newCat.commands.Add(c); + newCat.separators.Add(kcInsertAllRows); //-------------------------------------- + for(int c = kcChannelMute; c <= kcChannelReset; c++) + newCat.commands.Add(c); + newCat.separators.Add(kcChannelReset); //-------------------------------------- + for(int c = kcTransposeUp; c <= kcTransposeOctDown; c++) + newCat.commands.Add(c); + newCat.separators.Add(kcTransposeOctDown); //-------------------------------------- + for(int c = kcPatternAmplify; c <= kcPatternShrinkSelection; c++) + newCat.commands.Add(c); + newCat.separators.Add(kcPatternShrinkSelection); //-------------------------------------- + for(int c = kcStartPatternEditMisc; c <= kcEndPatternEditMisc; c++) + newCat.commands.Add(c); + newCat.separators.Add(kcEndPatternEditMisc); //-------------------------------------- - newCat = new CommandCategory(" Pattern Editor - Note Column", kCtxViewPatternsNote); - for (int c=kcVPStartNotes; c<=kcVPEndNotes; c++) - newCat->commands.Add(c); - newCat->separators.Add(kcVPEndNotes); //-------------------------------------- - for (int c=kcSetOctave0; c<=kcSetOctave9; c++) - newCat->commands.Add(c); - newCat->separators.Add(kcVPEndNotes); //-------------------------------------- - for (int c=kcStartNoteMisc; c<=kcEndNoteMisc; c++) - newCat->commands.Add(c); - commandCategories.Add(*newCat); - delete newCat; + commandCategories.Add(newCat); + } - newCat = new CommandCategory(" Pattern Editor - Instrument Column", kCtxViewPatternsIns); - for (int c=kcSetIns0; c<=kcSetIns9; c++) - newCat->commands.Add(c); - commandCategories.Add(*newCat); - delete newCat; + { + CommandCategory newCat(" Pattern Editor - Note Column", kCtxViewPatternsNote); - newCat = new CommandCategory(" Pattern Editor - Volume Column", kCtxViewPatternsVol); - for (int c=kcSetVolumeStart; c<=kcSetVolumeEnd; c++) - newCat->commands.Add(c); - commandCategories.Add(*newCat); - delete newCat; + for(int c = kcVPStartNotes; c <= kcVPEndNotes; c++) + newCat.commands.Add(c); + newCat.separators.Add(kcVPEndNotes); //-------------------------------------- + for(int c = kcSetOctave0; c <= kcSetOctave9; c++) + newCat.commands.Add(c); + newCat.separators.Add(kcVPEndNotes); //-------------------------------------- + for(int c = kcStartNoteMisc; c <= kcEndNoteMisc; c++) + newCat.commands.Add(c); - newCat = new CommandCategory(" Pattern Editor - Effect Column", kCtxViewPatternsFX); - for (int c=kcSetFXStart; c<=kcSetFXEnd; c++) - newCat->commands.Add(c); - commandCategories.Add(*newCat); - delete newCat; + commandCategories.Add(newCat); + } - newCat = new CommandCategory(" Pattern Editor - Effect Parameter Column", kCtxViewPatternsFXparam); - for (int c=kcSetFXParam0; c<=kcSetFXParamF; c++) - newCat->commands.Add(c); - commandCategories.Add(*newCat); - delete newCat; + { + CommandCategory newCat(" Pattern Editor - Instrument Column", kCtxViewPatternsIns); - newCat = new CommandCategory(" Sample [Top]", kCtxCtrlSamples); - commandCategories.Add(*newCat); - delete newCat; + for(int c = kcSetIns0; c <= kcSetIns9; c++) + newCat.commands.Add(c); - newCat = new CommandCategory(" Sample Editor", kCtxViewSamples); - for (int c=kcStartSampleEditing; c<=kcEndSampleEditing; c++) - newCat->commands.Add(c); - newCat->separators.Add(kcEndSampleEditing); //-------------------------------------- - for (int c=kcStartSampleMisc; c<=kcEndSampleMisc; c++) - newCat->commands.Add(c); - commandCategories.Add(*newCat); - delete newCat; + commandCategories.Add(newCat); + } - newCat = new CommandCategory(" Instrument Editor", kCtxCtrlInstruments); - for (int c=kcStartInstrumentCtrlMisc; c<=kcEndInstrumentCtrlMisc; c++) - newCat->commands.Add(c); - commandCategories.Add(*newCat); - delete newCat; + { + CommandCategory newCat(" Pattern Editor - Volume Column", kCtxViewPatternsVol); - newCat = new CommandCategory(" Envelope Editor", kCtxViewInstruments); - for (int c=kcStartInstrumentMisc; c<=kcEndInstrumentMisc; c++) - newCat->commands.Add(c); - commandCategories.Add(*newCat); - delete newCat; + for(int c = kcSetVolumeStart; c <= kcSetVolumeEnd; c++) + newCat.commands.Add(c); - newCat = new CommandCategory(" Comments [Top]", kCtxCtrlComments); - commandCategories.Add(*newCat); - delete newCat; + commandCategories.Add(newCat); + } - newCat = new CommandCategory(" Comments [Bottom]", kCtxViewComments); - commandCategories.Add(*newCat); - delete newCat; + { + CommandCategory newCat(" Pattern Editor - Effect Column", kCtxViewPatternsFX); - newCat = new CommandCategory(" Plugin Editor", kCtxVSTGUI); - for (int c=kcStartVSTGUICommands; c<=kcEndVSTGUICommands; c++) - newCat->commands.Add(c); - commandCategories.Add(*newCat); - delete newCat; + for(int c = kcSetFXStart; c <= kcSetFXEnd; c++) + newCat.commands.Add(c); + commandCategories.Add(newCat); + } + { + CommandCategory newCat(" Pattern Editor - Effect Parameter Column", kCtxViewPatternsFXparam); + for(int c = kcSetFXParam0; c <= kcSetFXParamF; c++) + newCat.commands.Add(c); + commandCategories.Add(newCat); + } + + { + CommandCategory newCat(" Sample [Top]", kCtxCtrlSamples); + commandCategories.Add(newCat); + } + + { + CommandCategory newCat(" Sample Editor", kCtxViewSamples); + + for(int c = kcStartSampleEditing; c <= kcEndSampleEditing; c++) + newCat.commands.Add(c); + newCat.separators.Add(kcEndSampleEditing); //-------------------------------------- + for(int c = kcStartSampleMisc; c <= kcEndSampleMisc; c++) + newCat.commands.Add(c); + + commandCategories.Add(newCat); + } + + { + CommandCategory newCat(" Instrument Editor", kCtxCtrlInstruments); + + for(int c = kcStartInstrumentCtrlMisc; c <= kcEndInstrumentCtrlMisc; c++) + newCat.commands.Add(c); + + commandCategories.Add(newCat); + } + + { + CommandCategory newCat(" Envelope Editor", kCtxViewInstruments); + + for(int c = kcStartInstrumentMisc; c <= kcEndInstrumentMisc; c++) + newCat.commands.Add(c); + + commandCategories.Add(newCat); + } + + { + CommandCategory newCat(" Comments [Top]", kCtxCtrlComments); + commandCategories.Add(newCat); + } + + { + CommandCategory newCat(" Comments [Bottom]", kCtxViewComments); + commandCategories.Add(newCat); + } + + { + CommandCategory newCat(" Plugin Editor", kCtxVSTGUI); + + for(int c = kcStartVSTGUICommands; c <= kcEndVSTGUICommands; c++) + newCat.commands.Add(c); + + commandCategories.Add(newCat); + } + } @@ -377,7 +409,22 @@ void COptionsKeyboard::OnSearchTermChanged() //------------------------------------------ { - UpdateShortcutList(); + CString findString; + m_eFind.GetWindowText(findString); + + if(findString.IsEmpty()) + { + // Go back to last found category + for(int i = 0; i < m_cmbCategory.GetCount(); i++) + { + if((int)m_cmbCategory.GetItemData(i) == m_nCurCategory) + { + m_cmbCategory.SetCurSel(i); + break; + } + } + } + UpdateShortcutList(findString.IsEmpty() ? m_nCurCategory : -1); } @@ -391,8 +438,6 @@ const bool doSearch = !findString.IsEmpty(); - m_nCurCategory = category; - int firstCat = category, lastCat = category; if(category == -1) { @@ -401,6 +446,7 @@ lastCat = commandCategories.GetSize() - 1; } + CommandID curCommand = static_cast<CommandID>(m_lbnCommandKeys.GetItemData( m_lbnCommandKeys.GetCurSel())); m_lbnCommandKeys.ResetContent(); for(int cat = firstCat; cat <= lastCat; cat++) @@ -421,6 +467,8 @@ if(addString) { + m_nCurCategory = cat; + if(!plocalCmdSet->isHidden(com)) { if(doSearch && addCategoryName) @@ -430,7 +478,14 @@ addCategoryName = false; } - m_lbnCommandKeys.SetItemData(m_lbnCommandKeys.AddString(plocalCmdSet->GetCommandText(com)), com); + int item = m_lbnCommandKeys.AddString(plocalCmdSet->GetCommandText(com)); + m_lbnCommandKeys.SetItemData(item, com); + + if(curCommand == com) + { + // Keep selection on previously selected string + m_lbnCommandKeys.SetCurSel(item); + } } if(commandCategories[cat].separatorAt(com)) @@ -440,7 +495,10 @@ } - m_lbnCommandKeys.SetCurSel(0); + if(m_lbnCommandKeys.GetCurSel() == -1) + { + m_lbnCommandKeys.SetCurSel(0); + } OnCommandKeySelChanged(); } @@ -449,7 +507,7 @@ void COptionsKeyboard::OnCommandKeySelChanged() //--------------------------------------------- { - CommandID nCmd = (CommandID)m_lbnCommandKeys.GetItemData( m_lbnCommandKeys.GetCurSel() ); + CommandID nCmd = static_cast<CommandID>(m_lbnCommandKeys.GetItemData( m_lbnCommandKeys.GetCurSel())); CString str; //Separator Modified: trunk/OpenMPT/mptrack/TrackerSettings.cpp =================================================================== --- trunk/OpenMPT/mptrack/TrackerSettings.cpp 2012-03-08 01:39:23 UTC (rev 1211) +++ trunk/OpenMPT/mptrack/TrackerSettings.cpp 2012-03-09 23:38:42 UTC (rev 1212) @@ -50,7 +50,7 @@ gcsInstallGUID = ""; // Audio Setup //rewbs.resamplerConf - glVolumeRampUpSamples = 42; + glVolumeRampUpSamples = 16; glVolumeRampDownSamples = 42; gdWFIRCutoff = 0.97; gbWFIRType = 7; //WFIR_KAISER4T; Modified: trunk/OpenMPT/mptrack/mptrack.rc =================================================================== --- trunk/OpenMPT/mptrack/mptrack.rc 2012-03-08 01:39:23 UTC (rev 1211) +++ trunk/OpenMPT/mptrack/mptrack.rc 2012-03-09 23:38:42 UTC (rev 1212) @@ -766,9 +766,9 @@ CONTROL "",IDC_SPIN1,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,116,133,8,12 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 - CONTROL "Slider2",IDC_SLIDER4,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_DISABLED | WS_TABSTOP,168,37,64,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 "Slider2",IDC_SLIDER3,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_DISABLED | WS_TABSTOP,168,53,64,10 + CONTROL "Slider2",IDC_SLIDER3,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | TBS_TOOLTIPS | WS_DISABLED | WS_TABSTOP,168,53,64,10 COMBOBOX IDC_FILTERMODE,163,70,69,42,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP CONTROL "Slider1",IDC_SLIDER1,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | TBS_TOOLTIPS | WS_TABSTOP,172,101,60,10 CONTROL "Slider1",IDC_SLIDER2,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | TBS_TOOLTIPS | WS_TABSTOP,172,118,60,10 Modified: trunk/OpenMPT/mptrack/test/test.cpp =================================================================== --- trunk/OpenMPT/mptrack/test/test.cpp 2012-03-08 01:39:23 UTC (rev 1211) +++ trunk/OpenMPT/mptrack/test/test.cpp 2012-03-09 23:38:42 UTC (rev 1212) @@ -323,6 +323,16 @@ VERIFY_EQUAL_NONCONT(sample.nVibRate, 4); VERIFY_EQUAL_NONCONT(sample.nVibDepth, 5); + // Sample Data + for(size_t i = 0; i < 6; i++) + { + VERIFY_EQUAL_NONCONT(sample.pSample[i], 18); + } + for(size_t i = 6; i < 16; i++) + { + VERIFY_EQUAL_NONCONT(sample.pSample[i], 0); + } + // Instruments VERIFY_EQUAL_NONCONT(pSndFile->GetNumInstruments(), 1); const ModInstrument *pIns = pSndFile->Instruments[1]; @@ -364,14 +374,7 @@ for(size_t i = pSndFile->GetModSpecifications().noteMin; i < pSndFile->GetModSpecifications().noteMax; i++) { - if(i == NOTE_MIDDLEC - 1) - { - VERIFY_EQUAL_NONCONT(pIns->Keyboard[i], 2); - } - else - { - VERIFY_EQUAL_NONCONT(pIns->Keyboard[i], 1); - } + VERIFY_EQUAL_NONCONT(pIns->Keyboard[i], (i == NOTE_MIDDLEC - 1) ? 2 : 1); } VERIFY_EQUAL_NONCONT(pIns->VolEnv.dwFlags, ENV_ENABLED | ENV_SUSTAIN); @@ -486,6 +489,7 @@ // Macros VERIFY_EQUAL_NONCONT(pSndFile->m_MidiCfg.GetParameteredMacroType(0), sfx_reso); VERIFY_EQUAL_NONCONT(pSndFile->m_MidiCfg.GetParameteredMacroType(1), sfx_drywet); + VERIFY_EQUAL_NONCONT(pSndFile->m_MidiCfg.GetParameteredMacroType(2), sfx_polyAT); VERIFY_EQUAL_NONCONT(pSndFile->m_MidiCfg.GetFixedMacroType(), zxx_resomode); // Channels @@ -503,28 +507,57 @@ VERIFY_EQUAL_NONCONT(pSndFile->ChnSettings[1].nMixPlugin, 1); // Samples - VERIFY_EQUAL_NONCONT(pSndFile->GetNumSamples(), 1); - const ModSample &sample = pSndFile->GetSample(1); - VERIFY_EQUAL_NONCONT(sample.GetBytesPerSample(), 1); - VERIFY_EQUAL_NONCONT(sample.GetNumChannels(), 1); - VERIFY_EQUAL_NONCONT(sample.GetElementarySampleSize(), 1); - VERIFY_EQUAL_NONCONT(sample.GetSampleSizeInBytes(), 16); - VERIFY_EQUAL_NONCONT(sample.GetSampleRate(MOD_TYPE_MPT), 9001); - VERIFY_EQUAL_NONCONT(sample.nVolume, 32 * 4); - VERIFY_EQUAL_NONCONT(sample.nGlobalVol, 16); - VERIFY_EQUAL_NONCONT(sample.nPan, 160); - VERIFY_EQUAL_NONCONT(sample.uFlags, CHN_PANNING | CHN_LOOP | CHN_SUSTAINLOOP | CHN_PINGPONGSUSTAIN); + VERIFY_EQUAL_NONCONT(pSndFile->GetNumSamples(), 3); + { + const ModSample &sample = pSndFile->GetSample(1); + VERIFY_EQUAL_NONCONT(sample.GetBytesPerSample(), 1); + VERIFY_EQUAL_NONCONT(sample.GetNumChannels(), 1); + VERIFY_EQUAL_NONCONT(sample.GetElementarySampleSize(), 1); + VERIFY_EQUAL_NONCONT(sample.GetSampleSizeInBytes(), 16); + VERIFY_EQUAL_NONCONT(sample.GetSampleRate(MOD_TYPE_MPT), 9001); + VERIFY_EQUAL_NONCONT(sample.nVolume, 32 * 4); + VERIFY_EQUAL_NONCONT(sample.nGlobalVol, 16); + VERIFY_EQUAL_NONCONT(sample.nPan, 160); + VERIFY_EQUAL_NONCONT(sample.uFlags, CHN_PANNING | CHN_LOOP | CHN_SUSTAINLOOP | CHN_PINGPONGSUSTAIN); - VERIFY_EQUAL_NONCONT(sample.nLoopStart, 1); - VERIFY_EQUAL_NONCONT(sample.nLoopEnd, 8); - VERIFY_EQUAL_NONCONT(sample.nSustainStart, 1); - VERIFY_EQUAL_NONCONT(sample.nSustainEnd, 7); + VERIFY_EQUAL_NONCONT(sample.nLoopStart, 1); + VERIFY_EQUAL_NONCONT(sample.nLoopEnd, 8); + VERIFY_EQUAL_NONCONT(sample.nSustainStart, 1); + VERIFY_EQUAL_NONCONT(sample.nSustainEnd, 7); - VERIFY_EQUAL_NONCONT(sample.nVibType, VIB_SQUARE); - VERIFY_EQUAL_NONCONT(sample.nVibSweep, 3); - VERIFY_EQUAL_NONCONT(sample.nVibRate, 4); - VERIFY_EQUAL_NONCONT(sample.nVibDepth, 5); + VERIFY_EQUAL_NONCONT(sample.nVibType, VIB_SQUARE); + VERIFY_EQUAL_NONCONT(sample.nVibSweep, 3); + VERIFY_EQUAL_NONCONT(sample.nVibRate, 4); + VERIFY_EQUAL_NONCONT(sample.nVibDepth, 5); + // Sample Data + for(size_t i = 0; i < 6; i++) + { + VERIFY_EQUAL_NONCONT(sample.pSample[i], 18); + } + for(size_t i = 6; i < 16; i++) + { + VERIFY_EQUAL_NONCONT(sample.pSample[i], 0); + } + } + + { + const ModSample &sample = pSndFile->GetSample(2); + VERIFY_EQUAL_NONCONT(strcmp(pSndFile->m_szNames[2], "Stereo / 16-Bit"), 0); + VERIFY_EQUAL_NONCONT(sample.GetBytesPerSample(), 4); + VERIFY_EQUAL_NONCONT(sample.GetNumChannels(), 2); + VERIFY_EQUAL_NONCONT(sample.GetElementarySampleSize(), 2); + VERIFY_EQUAL_NONCONT(sample.GetSampleSizeInBytes(), 16 * 4); + VERIFY_EQUAL_NONCONT(sample.GetSampleRate(MOD_TYPE_MPT), 16000); + VERIFY_EQUAL_NONCONT(sample.uFlags, CHN_16BIT | CHN_STEREO | CHN_LOOP); + + // Sample Data (Stereo Interleaved) + for(size_t i = 0; i < 7; i++) + { + VERIFY_EQUAL_NONCONT(reinterpret_cast<int16 *>(sample.pSample)[4 + i], int16(-32768)); + } + } + // Instruments VERIFY_EQUAL_NONCONT(pSndFile->GetNumInstruments(), 1); const ModInstrument *pIns = pSndFile->Instruments[1]; @@ -534,7 +567,7 @@ VERIFY_EQUAL_NONCONT(pIns->dwFlags, INS_SETPANNING); VERIFY_EQUAL_NONCONT(pIns->nPPS, 16); - VERIFY_EQUAL_NONCONT(pIns->nPPC, (NOTE_MIDDLEC - 1) + 6); // F#5 + VERIFY_EQUAL_NONCONT(pIns->nPPC, (NOTE_MIDDLEC - NOTE_MIN) + 6); // F#5 VERIFY_EQUAL_NONCONT(pIns->nVolRampUp, 1200); VERIFY_EQUAL_NONCONT(pIns->nResampling, SRCMODE_POLYPHASE); @@ -568,16 +601,8 @@ for(size_t i = 0; i < NOTE_MAX; i++) { - if(i == NOTE_MIDDLEC - 1) - { - VERIFY_EQUAL_NONCONT(pIns->Keyboard[i], 99); - VERIFY_EQUAL_NONCONT(pIns->NoteMap[i], i + 13); - } - else - { - VERIFY_EQUAL_NONCONT(pIns->Keyboard[i], 1); - VERIFY_EQUAL_NONCONT(pIns->NoteMap[i], i + 1); - } + VERIFY_EQUAL_NONCONT(pIns->Keyboard[i], (i == NOTE_MIDDLEC - 1) ? 99 : 1); + VERIFY_EQUAL_NONCONT(pIns->NoteMap[i], (i == NOTE_MIDDLEC - 1) ? (i + 13) : (i + 1)); } VERIFY_EQUAL_NONCONT(pIns->VolEnv.dwFlags, ENV_ENABLED | ENV_CARRY); @@ -788,7 +813,7 @@ pat[1].resize(numCommands[1]); pat[2].resize(numCommands[2]); - for(size_t i = 0; i<3; i++) // Copy pattern data for comparison. + for(size_t i = 0; i < 3; i++) // Copy pattern data for comparison. { CPattern::const_iterator iter = pSndFile->Patterns[i].Begin(); for(size_t j = 0; j < numCommands[i]; j++, iter++) pat[i][j] = *iter; Modified: trunk/OpenMPT/mptrack/test/test.mptm =================================================================== (Binary files differ) Modified: trunk/OpenMPT/mptrack/version.h =================================================================== --- trunk/OpenMPT/mptrack/version.h 2012-03-08 01:39:23 UTC (rev 1211) +++ trunk/OpenMPT/mptrack/version.h 2012-03-09 23:38:42 UTC (rev 1212) @@ -19,7 +19,7 @@ #define VER_MAJORMAJOR 1 #define VER_MAJOR 20 #define VER_MINOR 00 -#define VER_MINORMINOR 76 +#define VER_MINORMINOR 77 //Creates version number from version parts that appears in version string. //For example MAKE_VERSION_NUMERIC(1,17,02,28) gives version number of Modified: trunk/OpenMPT/soundlib/ITTools.cpp =================================================================== --- trunk/OpenMPT/soundlib/ITTools.cpp 2012-03-08 01:39:23 UTC (rev 1211) +++ trunk/OpenMPT/soundlib/ITTools.cpp 2012-03-09 23:38:42 UTC (rev 1212) @@ -546,7 +546,7 @@ mptSmp.nVibDepth = vid & 0x7F; mptSmp.nVibSweep = vir; - return mptSmp.nLength ? LittleEndian(samplepointer) : 0; + return LittleEndian(samplepointer); } Modified: trunk/OpenMPT/soundlib/Load_it.cpp =================================================================== --- trunk/OpenMPT/soundlib/Load_it.cpp 2012-03-08 01:39:23 UTC (rev 1211) +++ trunk/OpenMPT/soundlib/Load_it.cpp 2012-03-09 23:38:42 UTC (rev 1212) @@ -766,7 +766,7 @@ memcpy(m_szNames[nsmp + 1], pis->name, 26); StringFixer::SpaceToNullStringFixed<25>(m_szNames[nsmp + 1]); - lastSampleOffset = sampleOffset + ReadSample(&Samples[nsmp + 1], pis->GetSampleFormat(itHeader.cwtv), (LPSTR)(lpStream + sampleOffset), dwMemLength - sampleOffset); + lastSampleOffset = Util::Max(lastSampleOffset, sampleOffset + ReadSample(&Samples[nsmp + 1], pis->GetSampleFormat(itHeader.cwtv), (LPSTR)(lpStream + sampleOffset), dwMemLength - sampleOffset)); } } m_nSamples = max(1, m_nSamples); @@ -1822,7 +1822,7 @@ UINT nTotalSize = 0; UINT nChInfo = 0; - for(UINT i=0; i<MAX_MIXPLUGINS; i++) + for(PLUGINDEX i = 0; i < MAX_MIXPLUGINS; i++) { const SNDMIXPLUGIN &plugin = m_MixPlugins[i]; if(plugin.IsValidPlugin()) @@ -1944,7 +1944,7 @@ nPlugin = (p[nPos + 2] - '0') * 10 + (p[nPos + 3] - '0'); //calculate plug-in number. - if ((nPlugin < MAX_MIXPLUGINS) && (nPluginSize >= sizeof(SNDMIXPLUGININFO)+4)) + if ((nPlugin < MAX_MIXPLUGINS) && (nPluginSize >= sizeof(SNDMIXPLUGININFO) + 4)) { // MPT's standard plugin data. Size not specified in file.. grrr.. m_MixPlugins[nPlugin].Info = *(const SNDMIXPLUGININFO *)( p +nPos + 8); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |