From: <sag...@us...> - 2010-03-05 19:41:27
|
Revision: 514 http://modplug.svn.sourceforge.net/modplug/?rev=514&view=rev Author: saga-games Date: 2010-03-05 19:41:15 +0000 (Fri, 05 Mar 2010) Log Message: ----------- [New] Pattern Editor: Extended context menu for PC Notes [Ref] Refactored code to use IsPCNote() where possible. Modified Paths: -------------- trunk/OpenMPT/mptrack/Draw_pat.cpp trunk/OpenMPT/mptrack/Modedit.cpp trunk/OpenMPT/mptrack/PSRatioCalc.cpp trunk/OpenMPT/mptrack/View_pat.cpp trunk/OpenMPT/mptrack/View_pat.h trunk/OpenMPT/mptrack/dlg_misc.h trunk/OpenMPT/soundlib/Load_it.cpp trunk/OpenMPT/soundlib/Sndfile.cpp trunk/OpenMPT/soundlib/pattern.cpp Modified: trunk/OpenMPT/mptrack/Draw_pat.cpp =================================================================== --- trunk/OpenMPT/mptrack/Draw_pat.cpp 2010-02-28 18:23:21 UTC (rev 513) +++ trunk/OpenMPT/mptrack/Draw_pat.cpp 2010-03-05 19:41:15 UTC (rev 514) @@ -401,7 +401,7 @@ { PCPATTERNFONT pfnt = GetCurrentPatternFont(); - if(mc.note == NOTE_PCS || mc.note == NOTE_PC) + if(mc.IsPcNote()) { //If note is parameter control note, drawing volume command differently. const int val = min(MODCOMMAND::maxColumnValue, mc.GetValueVolCol()); @@ -805,7 +805,7 @@ MODCOMMAND *mold = m - ncols; if (m->note == mold->note) dwSpeedUpMask |= 0x01; if ((m->instr == mold->instr) || (m_nDetailLevel < 1)) dwSpeedUpMask |= 0x02; - if ( m->note == NOTE_PCS || m->note == NOTE_PC || mold->note == NOTE_PCS || mold->note == NOTE_PC ) + if ( m->IsPcNote() || mold->IsPcNote() ) { // Handle speedup mask for PC notes. if(m->note == mold->note) { @@ -893,7 +893,7 @@ tx_col = MODCOLOR_TEXTSELECTED; bk_col = MODCOLOR_BACKSELECTED; } else - if (m->note != NOTE_PCS && m->note != NOTE_PC && (m->volcmd) && (CMainFrame::m_dwPatternSetup & PATTERN_EFFECTHILIGHT)) + if ((!m->IsPcNote()) && (m->volcmd) && (CMainFrame::m_dwPatternSetup & PATTERN_EFFECTHILIGHT)) { switch(m->volcmd) { @@ -931,7 +931,7 @@ // Command & param if (m_nDetailLevel > 2) { - const bool isPCnote = (m->note == NOTE_PC || m->note == NOTE_PCS); + const bool isPCnote = m->IsPcNote(); uint16 val = m->GetValueEffectCol(); if(val > MODCOMMAND::maxColumnValue) val = MODCOMMAND::maxColumnValue; fx_col = row_col; @@ -1475,7 +1475,7 @@ if (m->instr) { CHAR sztmp[128] = ""; - if(m->note == NOTE_PC || m->note == NOTE_PCS) + if(m->IsPcNote()) { // display plugin name. if(m->instr <= MAX_MIXPLUGINS) @@ -1523,7 +1523,7 @@ break; case 2: // display volume command - if(m->note == NOTE_PC || m->note == NOTE_PCS) + if(m->IsPcNote()) { // display plugin param name. if(m->instr > 0 && m->instr <= MAX_MIXPLUGINS) @@ -1542,7 +1542,7 @@ case 3: case 4: // display effect command - if(m->note != NOTE_PC && m->note != NOTE_PCS) + if(!m->IsPcNote()) { if (!pModDoc->GetEffectName(s, m->command, m->param, false, nChn)) s[0] = 0; } Modified: trunk/OpenMPT/mptrack/Modedit.cpp =================================================================== --- trunk/OpenMPT/mptrack/Modedit.cpp 2010-02-28 18:23:21 UTC (rev 513) +++ trunk/OpenMPT/mptrack/Modedit.cpp 2010-03-05 19:41:15 UTC (rev 514) @@ -1118,7 +1118,7 @@ ncursor++; if ((ncursor >= colmin) && (ncursor <= colmax)) { - if(m->note == NOTE_PC || m->note == NOTE_PCS) + if(m->IsPcNote()) { const uint16 val = m->GetValueVolCol(); p[6] = GetDigit<2>(val); @@ -1143,7 +1143,7 @@ if (((ncursor >= colmin) && (ncursor <= colmax)) || ((ncursor+1 >= colmin) && (ncursor+1 <= colmax))) { - if(m->note == NOTE_PC || m->note == NOTE_PCS) + if(m->IsPcNote()) { const uint16 val = m->GetValueEffectCol(); p[9] = GetDigit<2>(val); Modified: trunk/OpenMPT/mptrack/PSRatioCalc.cpp =================================================================== --- trunk/OpenMPT/mptrack/PSRatioCalc.cpp 2010-02-28 18:23:21 UTC (rev 513) +++ trunk/OpenMPT/mptrack/PSRatioCalc.cpp 2010-03-05 19:41:15 UTC (rev 514) @@ -151,17 +151,7 @@ rowTime = 2500.0 * (double)m_nSpeed/(double)m_nTempo; break; } -/* - if (CMainFrame::m_dwPatternSetup & PATTERN_MODERNSPEED) { - rowTime = 60000.0/(double)m_nTempo / (double)m_nRowsPerBeat; - } - else if (CMainFrame::m_dwPatternSetup & PATTERN_ALTERNTIVEBPMSPEED) { - rowTime = 60000.0 / (1.65625 * (double)(m_nSpeed * m_nTempo)); - } - else { - rowTime = 2500.0 * (double)m_nSpeed/(double)m_nTempo; - } -*/ + m_dRowsOrig = (double)m_lMsOrig/rowTime; m_dRowsNew = m_dRowsOrig*(m_dRatio/100); Modified: trunk/OpenMPT/mptrack/View_pat.cpp =================================================================== --- trunk/OpenMPT/mptrack/View_pat.cpp 2010-02-28 18:23:21 UTC (rev 513) +++ trunk/OpenMPT/mptrack/View_pat.cpp 2010-03-05 19:41:15 UTC (rev 514) @@ -116,6 +116,7 @@ ON_COMMAND(ID_CHANNEL_RENAME, OnRenameChannel) ON_COMMAND(ID_PATTERN_EDIT_PCNOTE_PLUGIN, OnTogglePCNotePluginEditor) ON_COMMAND_RANGE(ID_CHANGE_INSTRUMENT, ID_CHANGE_INSTRUMENT+MAX_INSTRUMENTS, OnSelectInstrument) + ON_COMMAND_RANGE(ID_CHANGE_PCNOTE_PARAM, ID_CHANGE_PCNOTE_PARAM + MODCOMMAND::maxColumnValue, OnSelectPCNoteParam) ON_UPDATE_COMMAND_UI(ID_EDIT_UNDO, OnUpdateUndo) ON_COMMAND_RANGE(ID_PLUGSELECT, ID_PLUGSELECT+MAX_MIXPLUGINS, OnSelectPlugin) //rewbs.patPlugName @@ -892,7 +893,7 @@ switch(i & 7) { case 0: // Clear note if (rm.note) { - if(m->note == NOTE_PCS || m->note == NOTE_PC) + if(m->IsPcNote()) { // Clear whole row if clearing PC note m->Clear(); invalidateAllCols = true; @@ -918,7 +919,7 @@ case 3: // Clear Command if (rm.command) { m->command = 0; - if(m->note == NOTE_PC || m->note == NOTE_PCS) m->SetValueEffectCol(0); + if(m->IsPcNote()) m->SetValueEffectCol(0); } break; case 4: // Clear Command Param @@ -1226,9 +1227,10 @@ AppendMenu(hMenu, MF_SEPARATOR, 0, ""); if (BuildVisFXCtxMenu(hMenu, ih) | //Use bitwise ORs to avoid shortcuts BuildAmplifyCtxMenu(hMenu, ih) | - BuildSetInstCtxMenu(hMenu, ih, pSndFile) | - BuildPCNoteCtxMenu(hMenu, ih, pSndFile) ) + BuildSetInstCtxMenu(hMenu, ih, pSndFile) ) AppendMenu(hMenu, MF_SEPARATOR, 0, ""); + if (BuildPCNoteCtxMenu(hMenu, ih, pSndFile)) + AppendMenu(hMenu, MF_SEPARATOR, 0, ""); if (BuildGrowShrinkCtxMenu(hMenu, ih)) AppendMenu(hMenu, MF_SEPARATOR, 0, ""); if(BuildMiscCtxMenu(hMenu, ih)) @@ -1804,7 +1806,7 @@ } // Ignore modcommands with PC/PCS notes when searching from volume or effect column. - if( (m->note == NOTE_PC || m->note == NOTE_PCS) + if( (m->IsPcNote()) && m_dwFindFlags & (PATSEARCH_VOLCMD|PATSEARCH_VOLUME|PATSEARCH_COMMAND|PATSEARCH_PARAM)) { @@ -2153,8 +2155,8 @@ //static void CArrayUtils<UINT>::Merge(CArray<UINT,UINT>& Dest, CArray<UINT,UINT>& Src); -void CViewPattern::Interpolate(UINT type) -//--------------------------------------- +void CViewPattern::Interpolate(PatternColumns type) +//------------------------------------------------- { CModDoc *pModDoc = GetDocument(); if (!pModDoc) @@ -2451,6 +2453,7 @@ if (!nIns) return; if ((pModDoc = GetDocument()) == NULL) return; pSndFile = pModDoc->GetSoundFile(); + if(!pSndFile) return; p = pSndFile->Patterns[m_nPattern]; if (!p) return; BeginWaitCursor(); @@ -2984,7 +2987,7 @@ // MPTM: Use PC Notes // only overwrite existing PC Notes - if(pRow->IsEmpty() || pRow->note == NOTE_PC || pRow->note == NOTE_PCS) + if(pRow->IsEmpty() || pRow->IsPcNote()) { pRow->Set(NOTE_PCS, plugSlot + 1, paramIndex, static_cast<uint16>(pPlug->GetParameter(paramIndex) * MODCOMMAND::maxColumnValue)); InvalidateRow(); @@ -3719,7 +3722,7 @@ MODCOMMAND* p = pSndFile->Patterns[m_nPattern].GetpModCommand(m_nRow, GetChanFromCursor(m_dwCursor)); MODCOMMAND oldcmd = *p; // This is the command we are about to overwrite - if(p->note == NOTE_PC || p->note == NOTE_PCS) + if(p->IsPcNote()) { ENTER_PCNOTE_VALUE(v, ValueVolCol); } @@ -3812,7 +3815,7 @@ PrepareUndo(m_dwBeginSel, m_dwEndSel); - if(p->note == NOTE_PC || p->note == NOTE_PCS) + if(p->IsPcNote()) { ENTER_PCNOTE_VALUE(c, ValueEffectCol); } @@ -3864,7 +3867,7 @@ PrepareUndo(m_dwBeginSel, m_dwEndSel); - if(p->note == NOTE_PC || p->note == NOTE_PCS) + if(p->IsPcNote()) { ENTER_PCNOTE_VALUE(v, ValueEffectCol); } @@ -4504,14 +4507,14 @@ switch(field) { - case 0: if(p->note == NOTE_PC || p->note == NOTE_PCS) p->Clear(); else {p->note = NOTE_NONE; if (ITStyle) p->instr = 0;} break; //Note + case 0: if(p->IsPcNote()) p->Clear(); else {p->note = NOTE_NONE; if (ITStyle) p->instr = 0;} break; //Note case 1: p->instr = 0; break; //instr case 2: p->vol = 0; p->volcmd = 0; break; //Vol case 3: p->command = 0; break; //Effect case 4: p->param = 0; break; //Param default: p->Clear(); //If not specified, delete them all! :) } - if((field == 3 || field == 4) && (p->note == NOTE_PC || p->note == NOTE_PCS)) + if((field == 3 || field == 4) && (p->IsPcNote())) p->SetValueEffectCol(0); if(IsEditingEnabled_bmsg()) @@ -4575,17 +4578,47 @@ UINT o_inst = GetCurrentInstrument(); UINT n_inst = nID-ID_CHANGE_INSTRUMENT; - if (n_inst == 0) { + if (n_inst == 0) + { RowMask sp = {0,1,0,0,0}; // Setup mask to only clear instrument data in OnClearSelection OnClearSelection(false, sp); // Clears instrument selection from pattern - } else { + } else + { SendCtrlMessage(CTRLMSG_SETCURRENTINSTRUMENT, n_inst); OnSetSelInstrument(); SendCtrlMessage(CTRLMSG_SETCURRENTINSTRUMENT, o_inst); //Restoring old instrument. } } +void CViewPattern::OnSelectPCNoteParam(UINT nID) +//---------------------------------------------- +{ + CModDoc *pModDoc = GetDocument(); if (!pModDoc) return; + CSoundFile *pSndFile = pModDoc->GetSoundFile(); if (!pSndFile) return; + UINT paramNdx = nID - ID_CHANGE_PCNOTE_PARAM; + bool bModified = false; + MODCOMMAND *p; + for(ROWINDEX nRow = GetSelectionStartRow(); nRow <= GetSelectionEndRow(); nRow++) + { + for(CHANNELINDEX nChn = GetSelectionStartChan(); nChn <= GetSelectionEndChan(); nChn++) + { + p = pSndFile->Patterns[m_nPattern] + nRow * pSndFile->GetNumChannels() + nChn; + if(p && p->IsPcNote() && (p->GetValueVolCol() != paramNdx)) + { + bModified = true; + p->SetValueVolCol(paramNdx); + } + } + } + if (bModified) + { + pModDoc->SetModified(); + pModDoc->UpdateAllViews(NULL, HINT_PATTERNDATA | (m_nPattern << HINT_SHIFT_PAT), NULL); + } +} + + void CViewPattern::OnSelectPlugin(UINT nID) //----------------------------------------- { @@ -4944,8 +4977,21 @@ CArray<UINT, UINT> validChans; DWORD greyed = (ListChansWhereColSelected(INST_COLUMN, validChans)>0)?FALSE:MF_GRAYED; - if (!greyed || !(CMainFrame::m_dwPatternSetup&PATTERN_OLDCTXMENUSTYLE)) + if (!greyed || !(CMainFrame::m_dwPatternSetup & PATTERN_OLDCTXMENUSTYLE)) { + bool isPcNote = false; + MODCOMMAND *mSelStart = nullptr; + if((pSndFile != nullptr) && (pSndFile->Patterns.IsValidPat(m_nPattern))) + { + mSelStart = pSndFile->Patterns[m_nPattern].GetpModCommand(GetSelectionStartRow(), GetSelectionStartChan()); + if(mSelStart != nullptr && mSelStart->IsPcNote()) + { + isPcNote = true; + } + } + if(isPcNote) + return false; + // Create the new menu and add it to the existing menu. HMENU instrumentChangeMenu = ::CreatePopupMenu(); AppendMenu(hMenu, MF_POPUP|greyed, (UINT)instrumentChangeMenu, "Change Instrument\t" + ih->GetKeyTextFromCommand(kcPatternSetInstrument)); @@ -5004,6 +5050,7 @@ } +// Context menu for Param Control notes bool CViewPattern::BuildPCNoteCtxMenu(HMENU hMenu, CInputHandler* ih, CSoundFile* pSndFile) //----------------------------------------------------------------------------------------- { @@ -5013,10 +5060,46 @@ mSelStart = pSndFile->Patterns[m_nPattern].GetpModCommand(GetSelectionStartRow(), GetSelectionStartChan()); if((mSelStart == nullptr) || (!mSelStart->IsPcNote())) return false; - if(mSelStart->instr < 1 || mSelStart->instr > MAX_MIXPLUGINS) - return false; - AppendMenu(hMenu, MF_STRING, ID_PATTERN_EDIT_PCNOTE_PLUGIN, "Toggle plugin editor\t" + ih->GetKeyTextFromCommand(kcPatternEditPCNotePlugin)); + char s[72]; + + // Create sub menu for "change plugin" + HMENU pluginChangeMenu = ::CreatePopupMenu(); + AppendMenu(hMenu, MF_POPUP, (UINT)pluginChangeMenu, "Change Plugin\t" + ih->GetKeyTextFromCommand(kcPatternSetInstrument)); + for(PLUGINDEX nPlg = 0; nPlg < MAX_MIXPLUGINS; nPlg++) + { + if(pSndFile->m_MixPlugins[nPlg].pMixPlugin != nullptr) + { + wsprintf(s, "%02d: %s", nPlg + 1, pSndFile->m_MixPlugins[nPlg].GetName()); + AppendMenu(pluginChangeMenu, MF_STRING | ((nPlg + 1) == mSelStart->instr) ? MF_CHECKED : 0, ID_CHANGE_INSTRUMENT + nPlg + 1, s); + } + } + + if(mSelStart->instr >= 1 && mSelStart->instr <= MAX_MIXPLUGINS) + { + CVstPlugin *plug = (CVstPlugin *)(pSndFile->m_MixPlugins[mSelStart->instr - 1].pMixPlugin); + + if(plug != nullptr) + { + + // Create sub menu for "change plugin param" + HMENU paramChangeMenu = ::CreatePopupMenu(); + AppendMenu(hMenu, MF_POPUP, (UINT)paramChangeMenu, "Change Plugin Parameter\t"); + + char sname[64]; + uint16 nThisParam = mSelStart->GetValueVolCol(); + UINT nParams = plug->GetNumParameters(); + for (UINT i = 0; i < nParams; i++) + { + plug->GetParamName(i, sname, sizeof(sname)); + wsprintf(s, "%02d: %s", i, sname); + AppendMenu(paramChangeMenu, MF_STRING | (i == nThisParam) ? MF_CHECKED : 0, ID_CHANGE_PCNOTE_PARAM + i, s); + } + } + + AppendMenu(hMenu, MF_STRING, ID_PATTERN_EDIT_PCNOTE_PLUGIN, "Toggle plugin editor\t" + ih->GetKeyTextFromCommand(kcPatternEditPCNotePlugin)); + } + return true; } @@ -5041,7 +5124,7 @@ return max(GetChanFromCursor(m_dwBeginSel), GetChanFromCursor(m_dwEndSel)); } -UINT CViewPattern::ListChansWhereColSelected(UINT colType, CArray<UINT,UINT> &chans) { +UINT CViewPattern::ListChansWhereColSelected(PatternColumns colType, CArray<UINT,UINT> &chans) { //---------------------------------------------------------------------------------- chans.RemoveAll(); UINT startChan = GetSelectionStartChan(); @@ -5071,7 +5154,7 @@ bool CViewPattern::IsInterpolationPossible(UINT startRow, UINT endRow, - UINT chan, UINT colType, CSoundFile* pSndFile) { + UINT chan, PatternColumns colType, CSoundFile* pSndFile) { //--------------------------------------------------------------------------------------- if (startRow == endRow) { return false; @@ -5082,7 +5165,7 @@ const MODCOMMAND endRowMC = *pSndFile->Patterns[m_nPattern].GetpModCommand(endRow, chan); UINT startRowCmd, endRowCmd; - if(colType == EFFECT_COLUMN && (startRowMC.note == NOTE_PC || startRowMC.note == NOTE_PCS || endRowMC.note == NOTE_PC || endRowMC.note == NOTE_PCS)) + if(colType == EFFECT_COLUMN && (startRowMC.IsPcNote() || endRowMC.IsPcNote())) return true; switch (colType) { Modified: trunk/OpenMPT/mptrack/View_pat.h =================================================================== --- trunk/OpenMPT/mptrack/View_pat.h 2010-02-28 18:23:21 UTC (rev 513) +++ trunk/OpenMPT/mptrack/View_pat.h 2010-03-05 19:41:15 UTC (rev 514) @@ -33,7 +33,8 @@ // Row Spacing #define MAX_SPACING 64 -enum { +enum PatternColumns +{ NOTE_COLUMN=0, INST_COLUMN, VOL_COLUMN, @@ -300,6 +301,7 @@ afx_msg LRESULT OnCustomKeyMsg(WPARAM, LPARAM); //rewbs.customKeys afx_msg void OnClearSelectionFromMenu(); afx_msg void OnSelectInstrument(UINT nid); + afx_msg void OnSelectPCNoteParam(UINT nid); afx_msg void OnRunScript(); afx_msg void OnShowTimeAtRow(); afx_msg void OnRenameChannel(); @@ -338,14 +340,14 @@ UINT GetSelectionEndRow(); UINT GetSelectionStartChan(); UINT GetSelectionEndChan(); - UINT ListChansWhereColSelected(UINT colType, CArray<UINT,UINT> &chans); + UINT ListChansWhereColSelected(PatternColumns colType, CArray<UINT,UINT> &chans); static ROWINDEX GetRowFromCursor(DWORD cursor); static CHANNELINDEX GetChanFromCursor(DWORD cursor); static UINT GetColTypeFromCursor(DWORD cursor); - bool IsInterpolationPossible(UINT startRow, UINT endRow, UINT chan, UINT colType, CSoundFile* pSndFile); - void Interpolate(UINT type); + bool IsInterpolationPossible(UINT startRow, UINT endRow, UINT chan, PatternColumns colType, CSoundFile* pSndFile); + void Interpolate(PatternColumns type); // Return true if recording live (i.e. editing while following playback). // rSndFile must be the CSoundFile object of given rModDoc. Modified: trunk/OpenMPT/mptrack/dlg_misc.h =================================================================== --- trunk/OpenMPT/mptrack/dlg_misc.h 2010-02-28 18:23:21 UTC (rev 513) +++ trunk/OpenMPT/mptrack/dlg_misc.h 2010-03-05 19:41:15 UTC (rev 514) @@ -271,7 +271,7 @@ public: CPageEditVolume(CModDoc *pModDoc, CEditCommand *parent):CPageEditCommand(pModDoc, parent, IDD_PAGEEDITVOLUME) {} - void Init(MODCOMMAND &m) { m_nVolCmd = m.volcmd; m_nVolume = m.vol; m_bIsParamControl = (m.note == NOTE_PC || m.note == NOTE_PCS) ? true : false;} + void Init(MODCOMMAND &m) { m_nVolCmd = m.volcmd; m_nVolume = m.vol; m_bIsParamControl = (m.IsPcNote()) ? true : false;} void UpdateDialog(); void UpdateRanges(); @@ -303,7 +303,7 @@ CPageEditEffect(CModDoc *pModDoc, CEditCommand *parent):CPageEditCommand(pModDoc, parent, IDD_PAGEEDITEFFECT) {} // -> CODE#0010 // -> DESC="add extended parameter mechanism to pattern effects" - void Init(MODCOMMAND &m) { m_nCommand = m.command; m_nParam = m.param; m_pModcommand = &m; m_bIsParamControl = (m.note == NOTE_PC || m.note == NOTE_PCS) ? true : false; m_nPlugin = m.instr; m_nPluginParam = MODCOMMAND::GetValueVolCol(m.volcmd, m.vol);} + void Init(MODCOMMAND &m) { m_nCommand = m.command; m_nParam = m.param; m_pModcommand = &m; m_bIsParamControl = (m.IsPcNote()) ? true : false; m_nPlugin = m.instr; m_nPluginParam = MODCOMMAND::GetValueVolCol(m.volcmd, m.vol);} void XInit(UINT xparam = 0, UINT multiplier = 1) { m_nXParam = xparam; m_nMultiplier = multiplier; } // -! NEW_FEATURE#0010 void UpdateDialog(); Modified: trunk/OpenMPT/soundlib/Load_it.cpp =================================================================== --- trunk/OpenMPT/soundlib/Load_it.cpp 2010-02-28 18:23:21 UTC (rev 513) +++ trunk/OpenMPT/soundlib/Load_it.cpp 2010-03-05 19:41:15 UTC (rev 514) @@ -2144,7 +2144,7 @@ for (UINT ch=0; ch<m_nChannels; ch++, m++) { // Skip mptm-specific notes. - if(GetType() == MOD_TYPE_MPT && (m->note == NOTE_PC || m->note == NOTE_PCS)) + if(GetType() == MOD_TYPE_MPT && (m->IsPcNote())) {bNeedsMptPatSave = true; continue;} BYTE b = 0; Modified: trunk/OpenMPT/soundlib/Sndfile.cpp =================================================================== --- trunk/OpenMPT/soundlib/Sndfile.cpp 2010-02-28 18:23:21 UTC (rev 513) +++ trunk/OpenMPT/soundlib/Sndfile.cpp 2010-03-05 19:41:15 UTC (rev 514) @@ -3317,7 +3317,7 @@ // Convert param control, extended envelope control if(oldTypeIsMPT) { - if(m->note == NOTE_PC || m->note == NOTE_PCS) + if(m->IsPcNote()) { m->param = (BYTE)(min(MODCOMMAND::maxColumnValue, m->GetValueEffectCol()) * 0x7F / MODCOMMAND::maxColumnValue); m->command = (m->note == NOTE_PC) ? CMD_MIDI : CMD_SMOOTHMIDI; // might be removed later Modified: trunk/OpenMPT/soundlib/pattern.cpp =================================================================== --- trunk/OpenMPT/soundlib/pattern.cpp 2010-02-28 18:23:21 UTC (rev 513) +++ trunk/OpenMPT/soundlib/pattern.cpp 2010-03-05 19:41:15 UTC (rev 514) @@ -328,7 +328,7 @@ const MODCOMMAND m = *pat.GetpModCommand(r, c); // Writing only commands not writting in IT-pattern writing: // For now this means only NOTE_PC and NOTE_PCS. - if(m.note != NOTE_PCS && m.note != NOTE_PC) + if(!m.IsPcNote()) continue; uint8 diffmask = CreateDiffMask(lastChnMC[c], m); uint8 chval = static_cast<uint8>(c+1); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |