From: <sag...@us...> - 2011-10-29 18:54:05
|
Revision: 1125 http://modplug.svn.sourceforge.net/modplug/?rev=1125&view=rev Author: saga-games Date: 2011-10-29 18:53:58 +0000 (Sat, 29 Oct 2011) Log Message: ----------- [Imp] Zxx value for cutoff is now also shown in the instrument editor (http://bugs.openmpt.org/view.php?id=36). [Imp] S3M Loading / Saving: Better channel panning scaling (for full 0...256 range). [Fix] Sample tuner: Dropdown note list was editable. [Mod] When compiling with NO_VST, previously existing plugin settings are not lost anymore when closing OpenMPT. Modified Paths: -------------- trunk/OpenMPT/mptrack/Ctrl_ins.cpp trunk/OpenMPT/mptrack/Mptrack.cpp trunk/OpenMPT/mptrack/mptrack.rc trunk/OpenMPT/mptrack/resource.h trunk/OpenMPT/soundlib/Load_s3m.cpp Modified: trunk/OpenMPT/mptrack/Ctrl_ins.cpp =================================================================== --- trunk/OpenMPT/mptrack/Ctrl_ins.cpp 2011-10-29 18:32:57 UTC (rev 1124) +++ trunk/OpenMPT/mptrack/Ctrl_ins.cpp 2011-10-29 18:53:58 UTC (rev 1125) @@ -1307,14 +1307,14 @@ // Filter if (m_pSndFile->m_nType & (MOD_TYPE_IT | MOD_TYPE_MPT)) { - m_CheckCutOff.SetCheck((pIns->nIFC & 0x80) ? TRUE : FALSE); - m_CheckResonance.SetCheck((pIns->nIFR & 0x80) ? TRUE : FALSE); + m_CheckCutOff.SetCheck((pIns->IsCutoffEnabled()) ? TRUE : FALSE); + m_CheckResonance.SetCheck((pIns->IsResonanceEnabled()) ? TRUE : FALSE); m_SliderVolSwing.SetPos(pIns->nVolSwing); m_SliderPanSwing.SetPos(pIns->nPanSwing); m_SliderResSwing.SetPos(pIns->nResSwing); m_SliderCutSwing.SetPos(pIns->nCutSwing); - m_SliderCutOff.SetPos(pIns->nIFC & 0x7F); - m_SliderResonance.SetPos(pIns->nIFR & 0x7F); + m_SliderCutOff.SetPos(pIns->GetCutoff()); + m_SliderResonance.SetPos(pIns->GetResonance()); UpdateFilterText(); } // -> CODE#0027 @@ -1378,7 +1378,7 @@ } -VOID CCtrlInstruments::UpdateFilterText() +void CCtrlInstruments::UpdateFilterText() //--------------------------------------- { if ((m_nInstrument) && (m_pModDoc)) @@ -1389,17 +1389,17 @@ { CHAR s[32]; // In IT Compatible mode, it is enough to just have resonance enabled to turn on the filter. - const bool resEnabled = ((pIns->nIFR & 0x80) && (pIns->nIFR & 0x7F) && pSndFile->IsCompatibleMode(TRK_IMPULSETRACKER)); + const bool resEnabled = (pIns->IsResonanceEnabled() && pIns->GetResonance() > 0 && pSndFile->IsCompatibleMode(TRK_IMPULSETRACKER)); - if (((pIns->nIFC & 0x80) && pIns->nIFC < 0xFF) || resEnabled) + if ((pIns->IsCutoffEnabled() && pIns->GetCutoff() < 0x7F) || resEnabled) { - const BYTE cutoff = (resEnabled && !(pIns->nIFC & 0x80)) ? 0x7F : (pIns->nIFC & 0x7F); - wsprintf(s, "%d Hz", pSndFile->CutOffToFrequency(cutoff)); + const BYTE cutoff = (resEnabled && !pIns->IsCutoffEnabled()) ? 0x7F : pIns->GetCutoff(); + wsprintf(s, "Z%02X (%d Hz)", cutoff, pSndFile->CutOffToFrequency(cutoff)); } else { wsprintf(s, "Off"); } - SetDlgItemText(IDC_TEXT1, s); + SetDlgItemText(IDC_FILTERTEXT, s); } } } @@ -1441,9 +1441,8 @@ m_pModDoc->UpdateAllViews(NULL, HINT_SAMPLEINFO | HINT_MODTYPE, NULL); // -> CODE#0023 // -> DESC="IT project files (.itp)" - int n = strlen(lpszFileName); - if(n >= _MAX_PATH) n = _MAX_PATH-1; - strncpy(m_pSndFile->m_szInstrumentPath[m_nInstrument-1],lpszFileName,n); + const size_t n = max(strlen(lpszFileName), size_t(_MAX_PATH - 1)); + strncpy(m_pSndFile->m_szInstrumentPath[m_nInstrument - 1], lpszFileName, n); m_pSndFile->m_szInstrumentPath[m_nInstrument-1][n] = '\0'; SetInstrumentModified(false); // -! NEW_FEATURE#0023 @@ -1497,19 +1496,19 @@ CriticalSection cs; - BOOL bFirst = FALSE; + bool bFirst = false; if (!m_pSndFile->m_nInstruments) { - bFirst = TRUE; + bFirst = true; m_pSndFile->m_nInstruments = 1; m_NoteMap.SetCurrentInstrument(m_pModDoc, 1); m_pModDoc->SetModified(); - bFirst = TRUE; + bFirst = true; } if (!m_nInstrument) { m_nInstrument = 1; - bFirst = TRUE; + bFirst = true; } m_pSndFile->ReadInstrumentFromSong(m_nInstrument, pSndFile, nInstr); @@ -1551,13 +1550,6 @@ { switch(uId) { - case IDC_EDIT1: - { - MODINSTRUMENT *pIns = m_pSndFile->Instruments[m_nInstrument]; - wsprintf(pszText, "Z%02X", pIns->nIFC & 0x7f); - return TRUE; - break; - } case IDC_EDIT_PITCHTEMPOLOCK: case IDC_CHECK_PITCHTEMPOLOCK: { @@ -2220,7 +2212,7 @@ void CCtrlInstruments::OnEnableCutOff() //------------------------------------- { - BOOL bCutOff = IsDlgButtonChecked(IDC_CHECK2); + const bool bCutOff = IsDlgButtonChecked(IDC_CHECK2) != BST_UNCHECKED; if (m_pModDoc) { @@ -2228,23 +2220,17 @@ MODINSTRUMENT *pIns = pSndFile->Instruments[m_nInstrument]; if (pIns) { - if (bCutOff) - { - pIns->nIFC |= 0x80; - } else - { - pIns->nIFC &= 0x7F; - } + pIns->SetCutoff(pIns->GetCutoff(), bCutOff); for (UINT i=0; i<MAX_CHANNELS; i++) { if (pSndFile->Chn[i].pModInstrument == pIns) { if (bCutOff) { - pSndFile->Chn[i].nCutOff = pIns->nIFC & 0x7f; + pSndFile->Chn[i].nCutOff = pIns->GetCutoff(); } else { - pSndFile->Chn[i].nCutOff = 0x7f; + pSndFile->Chn[i].nCutOff = 0x7F; } } } @@ -2259,7 +2245,7 @@ void CCtrlInstruments::OnEnableResonance() //---------------------------------------- { - BOOL bReso = IsDlgButtonChecked(IDC_CHECK3); + const bool bReso = IsDlgButtonChecked(IDC_CHECK3) != BST_UNCHECKED; if (m_pModDoc) { @@ -2267,20 +2253,14 @@ MODINSTRUMENT *pIns = pSndFile->Instruments[m_nInstrument]; if (pIns) { - if (bReso) - { - pIns->nIFR |= 0x80; - } else - { - pIns->nIFR &= 0x7F; - } + pIns->SetResonance(pIns->GetResonance(), bReso); for (UINT i=0; i<MAX_CHANNELS; i++) { if (pSndFile->Chn[i].pModInstrument == pIns) { if (bReso) { - pSndFile->Chn[i].nResonance = pIns->nIFC & 0x7f; + pSndFile->Chn[i].nResonance = pIns->GetResonance(); } else { pSndFile->Chn[i].nResonance = 0; @@ -2423,10 +2403,9 @@ else if (pSlider == &m_SliderCutOff) { n = m_SliderCutOff.GetPos(); - if ((n >= 0) && (n < 0x80) && (n != (int)(pIns->nIFC & 0x7F))) + if ((n >= 0) && (n < 0x80) && (n != (int)(pIns->GetCutoff()))) { - pIns->nIFC &= 0x80; - pIns->nIFC |= (BYTE)n; + pIns->SetCutoff(n, pIns->IsCutoffEnabled()); SetInstrumentModified(true); UpdateFilterText(); filterChanger = true; @@ -2436,10 +2415,9 @@ { // Filter Resonance n = m_SliderResonance.GetPos(); - if ((n >= 0) && (n < 0x80) && (n != (int)(pIns->nIFR & 0x7F))) + if ((n >= 0) && (n < 0x80) && (n != (int)(pIns->GetResonance()))) { - pIns->nIFR &= 0x80; - pIns->nIFR |= (BYTE)n; + pIns->SetResonance(n, pIns->IsResonanceEnabled()); SetInstrumentModified(true); UpdateFilterText(); filterChanger = true; @@ -2453,8 +2431,8 @@ { if (pSndFile->Chn[i].pModInstrument == pIns) { - if (pIns->nIFC & 0x80) pSndFile->Chn[i].nCutOff = pIns->nIFC & 0x7F; - if (pIns->nIFR & 0x80) pSndFile->Chn[i].nResonance = pIns->nIFR & 0x7F; + if (pIns->IsCutoffEnabled()) pSndFile->Chn[i].nCutOff = pIns->GetCutoff(); + if (pIns->IsResonanceEnabled()) pSndFile->Chn[i].nResonance = pIns->GetResonance(); } } } Modified: trunk/OpenMPT/mptrack/Mptrack.cpp =================================================================== --- trunk/OpenMPT/mptrack/Mptrack.cpp 2011-10-29 18:32:57 UTC (rev 1124) +++ trunk/OpenMPT/mptrack/Mptrack.cpp 2011-10-29 18:53:58 UTC (rev 1125) @@ -873,7 +873,7 @@ if (GetProfileInt("Settings", "DisableACM", 0)) cmdInfo.m_bNoAcm = true; if (!cmdInfo.m_bNoMp3) GetACMConvert().InitializeACM(cmdInfo.m_bNoAcm); - // Initialize DXPlugins + // Initialize Plugins if (!cmdInfo.m_bNoPlugins) InitializeDXPlugins(); // Initialize localized strings @@ -882,7 +882,7 @@ // Initialize CMainFrame pMainFrame->Initialize(); InitCommonControls(); - m_dwLastPluginIdleCall=0; //rewbs.VSTCompliance + m_dwLastPluginIdleCall = 0; //rewbs.VSTCompliance pMainFrame->m_InputHandler->UpdateMainMenu(); //rewbs.customKeys // Dispatch commands specified on the command line @@ -949,7 +949,7 @@ } } - // Uninitialize DX-Plugins + // Uninitialize Plugins UninitializeDXPlugins(); // Uninitialize ACM @@ -1018,7 +1018,7 @@ if(pSndFile != nullptr) { nNewType = pSndFile->GetBestSaveFormat(); - bIsProject = ((pSndFile->m_dwSongFlags & SONG_ITPROJECT) != 0) ? true: false; + bIsProject = ((pSndFile->m_dwSongFlags & SONG_ITPROJECT) != 0); } } @@ -2190,6 +2190,8 @@ UINT iPlug; if (!m_pPluginManager) return FALSE; + +#ifndef NO_VST pPlug = m_pPluginManager->GetFirstPlugin(); iPlug = 0; while (pPlug) @@ -2210,19 +2212,10 @@ } wsprintf(s, "%d", iPlug); WritePrivateProfileString("VST Plugins", "NumPlugins", s, m_szConfigFileName); +#endif // NO_VST - #ifndef NO_VST - //WritePrivateProfileString("VST Plugins", "HostProductString", CVstPluginManager::s_szHostProductString, m_szConfigFileName); - //WritePrivateProfileString("VST Plugins", "HostVendorString", CVstPluginManager::s_szHostVendorString, m_szConfigFileName); - //CMainFrame::WritePrivateProfileLong("VST Plugins", "HostVendorVersion", CVstPluginManager::s_nHostVendorVersion, m_szConfigFileName); - #endif - - - if (m_pPluginManager) - { - delete m_pPluginManager; - m_pPluginManager = NULL; - } + delete m_pPluginManager; + m_pPluginManager = nullptr; return TRUE; } Modified: trunk/OpenMPT/mptrack/mptrack.rc =================================================================== --- trunk/OpenMPT/mptrack/mptrack.rc 2011-10-29 18:32:57 UTC (rev 1124) +++ trunk/OpenMPT/mptrack/mptrack.rc 2011-10-29 18:53:58 UTC (rev 1125) @@ -227,7 +227,7 @@ DEFPUSHBUTTON "OK",IDOK,54,60,50,14 PUSHBUTTON "Cancel",IDCANCEL,108,60,50,14 LTEXT "Tune sample to closest",IDC_STATIC,6,8,96,8 - COMBOBOX IDC_COMBO1,102,6,36,12,CBS_DROPDOWN | CBS_SORT | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_COMBO1,102,6,36,12,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP LTEXT "Pitch reference (A)",IDC_STATIC,6,26,96,8 EDITTEXT IDC_EDIT1,102,24,36,12,ES_AUTOHSCROLL | ES_NUMBER LTEXT "Hz",IDC_STATIC,144,26,18,8 @@ -814,7 +814,7 @@ CTEXT "Reso",IDC_STATIC,136,151,33,13,SS_CENTERIMAGE,WS_EX_STATICEDGE CTEXT "Resampling",IDC_STATIC,7,151,39,13,SS_CENTERIMAGE,WS_EX_STATICEDGE CTEXT "Mode",IDC_STATIC,135,70,23,13,SS_CENTERIMAGE,WS_EX_STATICEDGE - RTEXT "--",IDC_TEXT1,186,62,45,8 + RTEXT "--",IDC_FILTERTEXT,166,62,65,8 GROUPBOX "Pitch/Tempo Lock",IDC_STATIC,364,57,89,25 GROUPBOX "Sample Map",IDC_STATIC,461,27,62,141 CTEXT "Velocity handling",IDC_STATIC,367,102,83,10,SS_CENTERIMAGE,WS_EX_STATICEDGE @@ -949,7 +949,7 @@ CONTROL "Master",IDC_CHECK9,"Button",BS_AUTOCHECKBOX | BS_FLAT | WS_TABSTOP,199,242,46,10 CONTROL "Bypass",IDC_CHECK10,"Button",BS_AUTOCHECKBOX | BS_FLAT | WS_TABSTOP,199,256,40,10 CONTROL "Expand",IDC_CHECK12,"Button",BS_AUTOCHECKBOX | BS_FLAT | WS_TABSTOP,199,271,37,10 - CONTROL "Dry mix",IDC_CHECK11,"Button",BS_AUTOCHECKBOX | BS_FLAT | WS_TABSTOP,199,286,37,10 + CONTROL "Dry Mix",IDC_CHECK11,"Button",BS_AUTOCHECKBOX | BS_FLAT | WS_TABSTOP,199,286,37,10 COMBOBOX IDC_COMBO9,285,241,62,99,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP LTEXT "Gain: x 1.0",IDC_STATIC2,353,241,37,14,SS_CENTERIMAGE CONTROL "",IDC_SPIN10,"msctls_updown32",UDS_ALIGNRIGHT | UDS_ARROWKEYS | UDS_NOTHOUSANDS,392,242,9,11 @@ -972,16 +972,16 @@ LTEXT "Effect:",IDC_STATIC,113,146,29,8 LTEXT "Effect:",IDC_STATIC,216,146,29,8 LTEXT "Effect:",IDC_STATIC,319,146,29,8 - CTEXT "Display name",IDC_STATIC,263,191,48,13,SS_CENTERIMAGE,WS_EX_STATICEDGE + CTEXT "Display Name",IDC_STATIC,263,191,48,13,SS_CENTERIMAGE,WS_EX_STATICEDGE CTEXT "I/O Type:",IDC_STATIC,263,208,47,13,SS_CENTERIMAGE,WS_EX_STATICEDGE CONTROL "",IDC_TEXT6,"Static",SS_LEFTNOWORDWRAP | SS_CENTERIMAGE | WS_GROUP,312,208,95,13,WS_EX_STATICEDGE - GROUPBOX "Factory preset",IDC_STATIC,11,226,177,34 + GROUPBOX "Factory Preset",IDC_STATIC,11,226,177,34 CTEXT "Parameter",IDC_STATIC,16,266,43,13,SS_CENTERIMAGE,WS_EX_STATICEDGE GROUPBOX "",IDC_STATIC,11,255,177,49 - GROUPBOX "Mix settings",IDC_STATIC,193,226,214,78 - CTEXT "Mix mode",IDC_STATIC,245,241,37,13,SS_CENTERIMAGE,WS_EX_STATICEDGE + GROUPBOX "Mix Settings",IDC_STATIC,193,226,214,78 + CTEXT "Mix Mode",IDC_STATIC,245,241,37,13,SS_CENTERIMAGE,WS_EX_STATICEDGE CTEXT "Output to",IDC_STATIC,245,261,37,13,SS_CENTERIMAGE,WS_EX_STATICEDGE - CTEXT "Wet Dry Ratio",IDC_STATIC8,245,282,65,14,SS_CENTERIMAGE,WS_EX_STATICEDGE + CTEXT "Dry/Wet Ratio",IDC_STATIC8,245,282,65,14,SS_CENTERIMAGE,WS_EX_STATICEDGE END IDD_EDIT_FIND DIALOGEX 0, 0, 214, 162 Modified: trunk/OpenMPT/mptrack/resource.h =================================================================== --- trunk/OpenMPT/mptrack/resource.h 2011-10-29 18:32:57 UTC (rev 1124) +++ trunk/OpenMPT/mptrack/resource.h 2011-10-29 18:53:58 UTC (rev 1125) @@ -228,6 +228,7 @@ #define IDC_TEXT8 1308 #define IDC_TEXT9 1309 #define IDC_TEXT10 1310 +#define IDC_FILTERTEXT 1310 #define IDC_TEXT11 1311 #define IDC_TEXT12 1312 #define IDC_TEXT13 1313 Modified: trunk/OpenMPT/soundlib/Load_s3m.cpp =================================================================== --- trunk/OpenMPT/soundlib/Load_s3m.cpp 2011-10-29 18:32:57 UTC (rev 1124) +++ trunk/OpenMPT/soundlib/Load_s3m.cpp 2011-10-29 18:53:58 UTC (rev 1125) @@ -352,7 +352,7 @@ const BYTE *chnpan = lpStream+dwMemPos; for (UINT i=0; i<32; i++) if (chnpan[i] & 0x20) { - ChnSettings[i].nPan = ((chnpan[i] & 0x0F) << 4) + 8; + ChnSettings[i].nPan = (UINT(chnpan[i] & 0x0F) * 256 + 8) / 15; } } @@ -637,8 +637,8 @@ BYTE chnpan[32]; for (i=0; i<32; i++) { - UINT nPan = ((ChnSettings[i].nPan+7) < 0xF0) ? ChnSettings[i].nPan+7 : 0xF0; - chnpan[i] = (i<m_nChannels) ? 0x20 | (nPan >> 4) : 0x08; + const UINT nPan = ((ChnSettings[i].nPan * 15 + 128) / 256); + chnpan[i] = (i < m_nChannels) ? (0x20 | nPan) : 0x08; } fwrite(chnpan, 0x20, 1, f); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |