From: <sag...@us...> - 2011-10-01 23:06:58
|
Revision: 1073 http://modplug.svn.sourceforge.net/modplug/?rev=1073&view=rev Author: saga-games Date: 2011-10-01 23:06:51 +0000 (Sat, 01 Oct 2011) Log Message: ----------- [Ref] Unified macro name retrieval [Mod] Changed some menu item names in the plugin editor to be more verbose Modified Paths: -------------- trunk/OpenMPT/mptrack/AbstractVstEditor.cpp trunk/OpenMPT/mptrack/Moddoc.cpp trunk/OpenMPT/mptrack/Moddoc.h trunk/OpenMPT/mptrack/Vstplug.cpp trunk/OpenMPT/mptrack/Vstplug.h trunk/OpenMPT/mptrack/mptrack.rc Modified: trunk/OpenMPT/mptrack/AbstractVstEditor.cpp =================================================================== --- trunk/OpenMPT/mptrack/AbstractVstEditor.cpp 2011-10-01 17:03:23 UTC (rev 1072) +++ trunk/OpenMPT/mptrack/AbstractVstEditor.cpp 2011-10-01 23:06:51 UTC (rev 1073) @@ -187,7 +187,7 @@ //-------------------------------------------- { int nIndex = nID - ID_PRESET_SET; - if (nIndex>=0) + if (nIndex >= 0) { m_pVstPlugin->SetCurrentProgram(nIndex); UpdatePresetField(); @@ -217,7 +217,8 @@ void CAbstractVstEditor::OnPassKeypressesToPlug() //----------------------------------------------- { - if (m_pVstPlugin) { + if (m_pVstPlugin) + { m_pVstPlugin->m_bPassKeypressesToPlug = !m_pVstPlugin->m_bPassKeypressesToPlug; } } @@ -378,6 +379,7 @@ #define PRESETS_PER_GROUP 128 void CAbstractVstEditor::UpdatePresetMenu() +//----------------------------------------- { long numProgs = m_pVstPlugin->GetNumPrograms(); long curProg = m_pVstPlugin->GetCurrentProgram(); @@ -454,6 +456,7 @@ } void CAbstractVstEditor::UpdateInputMenu() +//---------------------------------------- { CMenu* pInfoMenu = m_pMenu->GetSubMenu(2); pInfoMenu->DeleteMenu(0, MF_BYPOSITION); @@ -461,10 +464,12 @@ CModDoc* pModDoc = m_pVstPlugin->GetModDoc(); CSoundFile* pSndFile = pModDoc->GetSoundFile(); - if (m_pInputMenu->m_hMenu) { + if (m_pInputMenu->m_hMenu) + { m_pInputMenu->DestroyMenu(); } - if (!m_pInputMenu->m_hMenu) { + if (!m_pInputMenu->m_hMenu) + { m_pInputMenu->CreatePopupMenu(); } @@ -472,15 +477,18 @@ CArray<CVstPlugin*, CVstPlugin*> inputPlugs; m_pVstPlugin->GetInputPlugList(inputPlugs); - for (int nPlug=0; nPlug<inputPlugs.GetSize(); nPlug++) { + for (int nPlug=0; nPlug<inputPlugs.GetSize(); nPlug++) + { name.Format("FX%02d: %s", inputPlugs[nPlug]->m_nSlot+1, inputPlugs[nPlug]->m_pMixStruct->Info.szName); m_pInputMenu->AppendMenu(MF_STRING, ID_PLUGSELECT+inputPlugs[nPlug]->m_nSlot, name); } CArray<UINT, UINT> inputChannels; m_pVstPlugin->GetInputChannelList(inputChannels); - for (int nChn=0; nChn<inputChannels.GetSize(); nChn++) { - if (nChn==0 && inputPlugs.GetSize()) { + for (int nChn=0; nChn<inputChannels.GetSize(); nChn++) + { + if (nChn==0 && inputPlugs.GetSize()) + { m_pInputMenu->AppendMenu(MF_SEPARATOR); } name.Format("Chn%02d: %s", inputChannels[nChn]+1, pSndFile->ChnSettings[inputChannels[nChn]].szName); @@ -490,9 +498,11 @@ CArray<UINT, UINT> inputInstruments; m_pVstPlugin->GetInputInstrumentList(inputInstruments); bool checked; - for (int nIns=0; nIns<inputInstruments.GetSize(); nIns++) { + for (int nIns=0; nIns<inputInstruments.GetSize(); nIns++) + { checked=false; - if (nIns==0 && (inputPlugs.GetSize() || inputChannels.GetSize())) { + if (nIns==0 && (inputPlugs.GetSize() || inputChannels.GetSize())) + { m_pInputMenu->AppendMenu(MF_SEPARATOR); } name.Format("Ins%02d: %s", inputInstruments[nIns], (LPCTSTR)pSndFile->GetInstrumentName(inputInstruments[nIns])); @@ -502,7 +512,8 @@ if ((inputPlugs.GetSize() == 0) && (inputChannels.GetSize() == 0) && - (inputInstruments.GetSize() == 0)) { + (inputInstruments.GetSize() == 0)) + { m_pInputMenu->AppendMenu(MF_STRING|MF_GRAYED, NULL, "None"); } @@ -510,14 +521,17 @@ } void CAbstractVstEditor::UpdateOutputMenu() +//----------------------------------------- { CMenu* pInfoMenu = m_pMenu->GetSubMenu(2); pInfoMenu->DeleteMenu(1, MF_BYPOSITION); - if (m_pOutputMenu->m_hMenu) { + if (m_pOutputMenu->m_hMenu) + { m_pOutputMenu->DestroyMenu(); } - if (!m_pOutputMenu->m_hMenu) { + if (!m_pOutputMenu->m_hMenu) + { m_pOutputMenu->CreatePopupMenu(); } @@ -525,12 +539,14 @@ m_pVstPlugin->GetOutputPlugList(outputPlugs); CString name; - for (int nPlug=0; nPlug<outputPlugs.GetSize(); nPlug++) { + for (int nPlug = 0; nPlug < outputPlugs.GetSize(); nPlug++ + ) { if (outputPlugs[nPlug] != NULL) { name.Format("FX%02d: %s", outputPlugs[nPlug]->m_nSlot+1, outputPlugs[nPlug]->m_pMixStruct->Info.szName); m_pOutputMenu->AppendMenu(MF_STRING, ID_PLUGSELECT+outputPlugs[nPlug]->m_nSlot, name); - } else { + } else + { name = "Master Output"; m_pOutputMenu->AppendMenu(MF_STRING|MF_GRAYED, NULL, name); } @@ -543,9 +559,8 @@ //---------------------------------------- { CString label, macroName, macroText; - char paramName[128]; bool greyed; - int macroType,nParam,action; + int action; CModDoc* pModDoc = m_pVstPlugin->GetModDoc(); if (!pModDoc) @@ -565,60 +580,37 @@ m_pMacroMenu->CreatePopupMenu(); } - for (int nMacro=0; nMacro<NUM_MACROS; nMacro++) + for (int nMacro = 0; nMacro < NUM_MACROS; nMacro++) { - action=NULL; - greyed=true; + action = NULL; + greyed = true; macroText = pModDoc->GetSoundFile()->m_MidiCfg.szMidiSFXExt[nMacro]; - macroType = pModDoc->GetMacroType(macroText); + const enmParameteredMacroType macroType = pModDoc->GetMacroType(macroText); - switch (macroType) { - case sfx_unused: - macroName = "Unused. Learn Param..."; - action=ID_LEARN_MACRO_FROM_PLUGGUI+nMacro; - greyed=false; - break; - case sfx_cutoff: - macroName = "Set Filter Cutoff"; - break; - case sfx_reso: - macroName = "Set Filter Resonance"; - break; - case sfx_mode: macroName = "Set Filter Mode"; - break; - case sfx_drywet: - macroName = "Set plugin dry/wet ratio"; - greyed=false; - break; - case sfx_plug: - { - nParam = pModDoc->MacroToPlugParam(macroText); - m_pVstPlugin->GetParamName(nParam, paramName, sizeof(paramName)); - - if (paramName[0] == 0) { - strcpy(paramName, "N/A for this plug"); - } else { - greyed=false; - } - - macroName.Format("%d - %s", nParam, paramName); - break; + if(macroType == sfx_unused) + { + macroName = "Unused. Learn Param..."; + action= ID_LEARN_MACRO_FROM_PLUGGUI + nMacro; + greyed = false; + } else + { + macroName = pModDoc->GetMacroName(macroText, m_pVstPlugin->GetSlot()); + if(macroType != sfx_plug || macroName.Left(3) != "N/A") + { + greyed = false; } - case sfx_custom: - default: - macroName.Format("Custom: %s", macroText); - greyed=false; + } - } label.Format("SF%X: %s", nMacro, macroName); - m_pMacroMenu->AppendMenu(MF_STRING|(greyed?MF_GRAYED:0), action, label); + m_pMacroMenu->AppendMenu(MF_STRING | (greyed ? MF_GRAYED : 0), action, label); } - pInfoMenu->InsertMenu(2, MF_BYPOSITION|MF_POPUP, (UINT)m_pMacroMenu->m_hMenu, "&Macros"); + pInfoMenu->InsertMenu(2, MF_BYPOSITION | MF_POPUP, (UINT)m_pMacroMenu->m_hMenu, "&Macros"); } -void CAbstractVstEditor::UpdateOptionsMenu() { -//-------------------------------------------- +void CAbstractVstEditor::UpdateOptionsMenu() +//------------------------------------------ +{ if (m_pOptionsMenu->m_hMenu) m_pOptionsMenu->DestroyMenu(); @@ -628,14 +620,14 @@ m_pOptionsMenu->CreatePopupMenu(); //Bypass - m_pOptionsMenu->AppendMenu(MF_STRING | m_pVstPlugin->IsBypassed()?MF_CHECKED:0, - ID_PLUG_BYPASS, "&Bypass\t" + ih->GetKeyTextFromCommand(kcVSTGUIBypassPlug)); + m_pOptionsMenu->AppendMenu(MF_STRING | m_pVstPlugin->IsBypassed() ? MF_CHECKED : 0, + ID_PLUG_BYPASS, "&Bypass Plugin\t" + ih->GetKeyTextFromCommand(kcVSTGUIBypassPlug)); //Record Params - m_pOptionsMenu->AppendMenu(MF_STRING | m_pVstPlugin->m_bRecordAutomation?MF_CHECKED:0, - ID_PLUG_RECORDAUTOMATION, "Record &Params\t" + ih->GetKeyTextFromCommand(kcVSTGUIToggleRecordParams)); + m_pOptionsMenu->AppendMenu(MF_STRING | m_pVstPlugin->m_bRecordAutomation ? MF_CHECKED : 0, + ID_PLUG_RECORDAUTOMATION, "Record &Parameter Changes\t" + ih->GetKeyTextFromCommand(kcVSTGUIToggleRecordParams)); //Pass on keypresses - m_pOptionsMenu->AppendMenu(MF_STRING | m_pVstPlugin->m_bPassKeypressesToPlug?MF_CHECKED:0, - ID_PLUG_PASSKEYS, "Pass &Keys to Plug\t" + ih->GetKeyTextFromCommand(kcVSTGUIToggleSendKeysToPlug)); + m_pOptionsMenu->AppendMenu(MF_STRING | m_pVstPlugin->m_bPassKeypressesToPlug ? MF_CHECKED : 0, + ID_PLUG_PASSKEYS, "Pass &Keys to Plugin\t" + ih->GetKeyTextFromCommand(kcVSTGUIToggleSendKeysToPlug)); m_pMenu->DeleteMenu(3, MF_BYPOSITION); @@ -643,33 +635,41 @@ } + void CAbstractVstEditor::OnToggleEditor(UINT nID) +//----------------------------------------------- { CModDoc* pModDoc = m_pVstPlugin->GetModDoc(); - if (pModDoc) { + if (pModDoc) + { pModDoc->TogglePluginEditor(nID-ID_PLUGSELECT); } } + void CAbstractVstEditor::OnInitMenu(CMenu* /*pMenu*/) //--------------------------------------------------- { SetupMenu(); } + bool CAbstractVstEditor::CheckInstrument(int instrument) //------------------------------------------------------ { CSoundFile* pSndFile = m_pVstPlugin->GetSoundFile(); - if (instrument>=0 && instrument<MAX_INSTRUMENTS && pSndFile->Instruments[instrument]) { - return (pSndFile->Instruments[instrument]->nMixPlug) == (m_pVstPlugin->m_nSlot+1); + if (instrument >= 0 && instrument<MAX_INSTRUMENTS && pSndFile->Instruments[instrument]) + { + return (pSndFile->Instruments[instrument]->nMixPlug) == (m_pVstPlugin->m_nSlot + 1); } return false; } + int CAbstractVstEditor::GetBestInstrumentCandidate() +//-------------------------------------------------- { //First try current instrument: /* CModDoc* pModDoc = m_pVstPlugin->GetModDoc(); @@ -690,33 +690,39 @@ return -1; } + void CAbstractVstEditor::OnSetInputInstrument(UINT nID) +//----------------------------------------------------- { - m_nInstrument = (nID-ID_SELECTINST); + m_nInstrument = (nID - ID_SELECTINST); } + void CAbstractVstEditor::OnSetPreviousVSTPreset() -//-------------------------------------------- +//----------------------------------------------- { - OnSetPreset(-1+ID_PRESET_SET+m_pVstPlugin->GetCurrentProgram()); + OnSetPreset(ID_PRESET_SET + m_pVstPlugin->GetCurrentProgram() - 1); } + void CAbstractVstEditor::OnSetNextVSTPreset() -//---------------------------------------- +//------------------------------------------- { - OnSetPreset(1+ID_PRESET_SET+m_pVstPlugin->GetCurrentProgram()); + OnSetPreset(ID_PRESET_SET + m_pVstPlugin->GetCurrentProgram() + 1); } + void CAbstractVstEditor::OnVSTPresetBackwardJump() //------------------------------------------------ { - OnSetPreset(max(ID_PRESET_SET+m_pVstPlugin->GetCurrentProgram()-10, ID_PRESET_SET)); + OnSetPreset(max(ID_PRESET_SET + m_pVstPlugin->GetCurrentProgram() - 10, ID_PRESET_SET)); } + void CAbstractVstEditor::OnVSTPresetForwardJump() //----------------------------------------------- { - OnSetPreset(min(10+ID_PRESET_SET+m_pVstPlugin->GetCurrentProgram(), ID_PRESET_SET+m_pVstPlugin->GetNumPrograms()-1)); + OnSetPreset(min(ID_PRESET_SET + m_pVstPlugin->GetCurrentProgram() + 10, ID_PRESET_SET + m_pVstPlugin->GetNumPrograms() - 1)); } @@ -767,6 +773,7 @@ void CAbstractVstEditor::PrepareToLearnMacro(UINT nID) +//---------------------------------------------------- { m_nLearnMacro = (nID-ID_LEARN_MACRO_FROM_PLUGGUI); //Now we wait for a param to be touched. We'll get the message from the VST Plug Manager. @@ -774,6 +781,7 @@ } void CAbstractVstEditor::SetLearnMacro(int inMacro) +//------------------------------------------------- { if (inMacro < NUM_MACROS) { @@ -781,7 +789,9 @@ } } -int CAbstractVstEditor::GetLearnMacro() { +int CAbstractVstEditor::GetLearnMacro() +//------------------------------------- +{ return m_nLearnMacro; } Modified: trunk/OpenMPT/mptrack/Moddoc.cpp =================================================================== --- trunk/OpenMPT/mptrack/Moddoc.cpp 2011-10-01 17:03:23 UTC (rev 1072) +++ trunk/OpenMPT/mptrack/Moddoc.cpp 2011-10-01 23:06:51 UTC (rev 1073) @@ -2380,39 +2380,11 @@ if (macroText != "_no macro_") { - switch (GetMacroType(macroText)) - { - case sfx_unused: chanSpec.Append("Unused"); break; - case sfx_cutoff: chanSpec.Append("Cutoff"); break; - case sfx_reso: chanSpec.Append("Resonance"); break; - case sfx_mode: chanSpec.Append("Filter Mode"); break; - case sfx_drywet: chanSpec.Append("Plug wet/dry ratio"); break; - case sfx_cc: { - int nCC = MacroToMidiCC(macroText); - chanSpec.AppendFormat("MidiCC %d", nCC); - break; - } - case sfx_plug: { - int nParam = MacroToPlugParam(macroText); - char paramName[128]; - MemsetZero(paramName); - PLUGINDEX nPlug = m_SndFile.GetBestPlugin(nChn, PrioritiseChannel, EvenIfMuted); - if ((nPlug) && (nPlug<=MAX_MIXPLUGINS)) { - CVstPlugin *pPlug = (CVstPlugin*)m_SndFile.m_MixPlugins[nPlug-1].pMixPlugin; - if (pPlug) - pPlug->GetParamName(nParam, paramName, sizeof(paramName)); - if (paramName[0] == 0) - strcpy(paramName, "N/A"); - } - if (paramName[0] == 0) - strcpy(paramName, "N/A - no plug"); - chanSpec.AppendFormat("param %d (%s)", nParam, paramName); - break; } - case sfx_custom: - default: chanSpec.Append("Custom"); - } + const PLUGINDEX plugin = m_SndFile.GetBestPlugin(nChn, PrioritiseChannel, EvenIfMuted) - 1; + chanSpec.Append(GetMacroName(macroText, plugin)); } - if (chanSpec != "") { + if (chanSpec != "") + { strcat(pszDescription, chanSpec); } @@ -3271,19 +3243,68 @@ //---------------------------------------------------------- { value.Remove(' '); - if (value.Compare("")==0) return sfx_unused; - if (value.Compare("F0F000z")==0) return sfx_cutoff; - if (value.Compare("F0F001z")==0) return sfx_reso; - if (value.Compare("F0F002z")==0) return sfx_mode; - if (value.Compare("F0F003z")==0) return sfx_drywet; - if (value.Compare("Bc00z")>=0 && value.Compare("BcFFz")<=0 && value.GetLength()==5) + if (value.Compare("") == 0) return sfx_unused; + if (value.Compare("F0F000z") == 0) return sfx_cutoff; + if (value.Compare("F0F001z") == 0) return sfx_reso; + if (value.Compare("F0F002z") == 0) return sfx_mode; + if (value.Compare("F0F003z") == 0) return sfx_drywet; + if (value.Compare("Bc00z") >= 0 && value.Compare("BcFFz") <= 0 && value.GetLength() == 5) return sfx_cc; - if (value.Compare("F0F079z")>0 && value.Compare("F0F1G")<0 && value.GetLength()==7) + if (value.Compare("F0F080z") >= 0 && value.Compare("F0F1FFz") <= 0 && value.GetLength() == 7) return sfx_plug; return sfx_custom; //custom/unknown } +// Returns macro description including plugin parameter / MIDI CC information +CString CModDoc::GetMacroName(CString value, PLUGINDEX plugin) +//------------------------------------------------------------ +{ + const enmParameteredMacroType macroType = GetMacroType(value); + + switch(macroType) + { + case sfx_plug: + { + const int param = MacroToPlugParam(value); + char paramName[128] = { '\0' }; + + if(plugin < MAX_MIXPLUGINS) + { + CVstPlugin *pPlug = (CVstPlugin*)m_SndFile.m_MixPlugins[plugin].pMixPlugin; + if(pPlug) + { + pPlug->GetParamName(param, paramName, sizeof(paramName)); + StringFixer::SetNullTerminator(paramName); + } + if (paramName[0] == '\0') + { + return _T("N/A"); + } + + CString formattedName; + formattedName.Format(_T("Param %d (%s)"), param, paramName); + return CString(formattedName); + } else + { + return _T("N/A - No Plugin"); + } + } + + case sfx_cc: + { + CString formattedCC; + formattedCC.Format(_T("MIDI CC %d"), MacroToMidiCC(value)); + return formattedCC; + } + + default: + return GetMacroName(macroType); + } +} + + +// Returns generic macro description. CString CModDoc::GetMacroName(enmParameteredMacroType macro) //---------------------------------------------------------- { Modified: trunk/OpenMPT/mptrack/Moddoc.h =================================================================== --- trunk/OpenMPT/mptrack/Moddoc.h 2011-10-01 17:03:23 UTC (rev 1072) +++ trunk/OpenMPT/mptrack/Moddoc.h 2011-10-01 23:06:51 UTC (rev 1073) @@ -256,6 +256,7 @@ // Various MIDI Macro helpers static enmParameteredMacroType GetMacroType(CString value); //rewbs.xinfo + CString GetMacroName(CString value, PLUGINDEX plugin); static CString GetMacroName(enmParameteredMacroType macro); static int MacroToPlugParam(CString value); //rewbs.xinfo static int MacroToMidiCC(CString value); Modified: trunk/OpenMPT/mptrack/Vstplug.cpp =================================================================== --- trunk/OpenMPT/mptrack/Vstplug.cpp 2011-10-01 17:03:23 UTC (rev 1072) +++ trunk/OpenMPT/mptrack/Vstplug.cpp 2011-10-01 23:06:51 UTC (rev 1073) @@ -2965,10 +2965,10 @@ } -UINT CVstPlugin::FindSlot() -//------------------------ +PLUGINDEX CVstPlugin::FindSlot() +//------------------------------ { - UINT slot = 0; + PLUGINDEX slot = 0; if (m_pSndFile) { while ((m_pMixStruct != &(m_pSndFile->m_MixPlugins[slot])) && slot < MAX_MIXPLUGINS - 1) @@ -2979,14 +2979,14 @@ return slot; } -void CVstPlugin::SetSlot(UINT slot) -//--------------------------------- +void CVstPlugin::SetSlot(PLUGINDEX slot) +//-------------------------------------- { m_nSlot = slot; } -UINT CVstPlugin::GetSlot() -//------------------------ +PLUGINDEX CVstPlugin::GetSlot() +//----------------------------- { return m_nSlot; } Modified: trunk/OpenMPT/mptrack/Vstplug.h =================================================================== --- trunk/OpenMPT/mptrack/Vstplug.h 2011-10-01 17:03:23 UTC (rev 1072) +++ trunk/OpenMPT/mptrack/Vstplug.h 2011-10-01 23:06:51 UTC (rev 1073) @@ -98,7 +98,7 @@ DWORD m_dwTimeAtStartOfProcess; bool m_bModified; HANDLE processCalled; - UINT m_nSlot; + PLUGINDEX m_nSlot; float m_fGain; bool m_bIsInstrument; @@ -125,9 +125,9 @@ bool isModified() {return m_bModified;} inline CModDoc* GetModDoc() {return m_pModDoc;} inline CSoundFile* GetSoundFile() {return m_pSndFile;} - UINT FindSlot(); - void SetSlot(UINT slot); - UINT GetSlot(); + PLUGINDEX FindSlot(); + void SetSlot(PLUGINDEX slot); + PLUGINDEX GetSlot(); void UpdateMixStructPtr(PSNDMIXPLUGIN); void SetCurrentProgram(UINT nIndex); Modified: trunk/OpenMPT/mptrack/mptrack.rc =================================================================== --- trunk/OpenMPT/mptrack/mptrack.rc 2011-10-01 17:03:23 UTC (rev 1072) +++ trunk/OpenMPT/mptrack/mptrack.rc 2011-10-01 23:06:51 UTC (rev 1073) @@ -2827,7 +2827,7 @@ MENUITEM "&Save Preset As...", ID_PRESET_SAVE MENUITEM "Create instrument from plugin", ID_PLUGINTOINSTRUMENT MENUITEM SEPARATOR - MENUITEM "&Randomize Params", ID_PRESET_RANDOM + MENUITEM "&Randomize Parameters", ID_PRESET_RANDOM END POPUP "&Info" BEGIN @@ -2837,8 +2837,8 @@ END POPUP "&Options" BEGIN - MENUITEM "&Bypass", ID_PLUG_BYPASS - MENUITEM "Record &Params", ID_PLUG_RECORDAUTOMATION + MENUITEM "&Bypass Plugin", ID_PLUG_BYPASS + MENUITEM "Record &Parameter Changes", ID_PLUG_RECORDAUTOMATION END END This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |