From: <sag...@us...> - 2013-08-28 18:33:53
|
Revision: 2617 http://sourceforge.net/p/modplug/code/2617 Author: saga-games Date: 2013-08-28 18:33:45 +0000 (Wed, 28 Aug 2013) Log Message: ----------- [Imp] General Tab: Effect parameters are now also updated while dragging the corresponding slider (tx madbrain). [Imp] Tree view: Releasing note keys now also stops sample / instrument previews (tx madbrain). [New] Tree view: Can now drag and drop samples / instruments between modules (tx madbrain). [Fix] Fine / extra fine portamento slides in IT/S3M with a parameter of 0 were broken since revision 2580 (http://bugs.openmpt.org/view.php?id=433). [Mod] OpenMPT: Version is now 1.22.04.02 Revision Links: -------------- http://sourceforge.net/p/modplug/code/2580 Modified Paths: -------------- trunk/OpenMPT/common/versionNumber.h trunk/OpenMPT/mptrack/View_gen.cpp trunk/OpenMPT/mptrack/View_tre.cpp trunk/OpenMPT/soundlib/SampleFormats.cpp trunk/OpenMPT/soundlib/Snd_fx.cpp Modified: trunk/OpenMPT/common/versionNumber.h =================================================================== --- trunk/OpenMPT/common/versionNumber.h 2013-08-26 13:47:33 UTC (rev 2616) +++ trunk/OpenMPT/common/versionNumber.h 2013-08-28 18:33:45 UTC (rev 2617) @@ -17,7 +17,7 @@ #define VER_MAJORMAJOR 1 #define VER_MAJOR 22 #define VER_MINOR 04 -#define VER_MINORMINOR 01 +#define VER_MINORMINOR 02 //Version string. For example "1.17.02.28" #define MPT_VERSION_STR VER_STRINGIZE(VER_MAJORMAJOR) "." VER_STRINGIZE(VER_MAJOR) "." VER_STRINGIZE(VER_MINOR) "." VER_STRINGIZE(VER_MINORMINOR) Modified: trunk/OpenMPT/mptrack/View_gen.cpp =================================================================== --- trunk/OpenMPT/mptrack/View_gen.cpp 2013-08-26 13:47:33 UTC (rev 2616) +++ trunk/OpenMPT/mptrack/View_gen.cpp 2013-08-28 18:33:45 UTC (rev 2617) @@ -766,7 +766,7 @@ float fValue = 0.01f * n; wsprintf(s, "%d.%02d", n/100, n%100); SetDlgItemText(IDC_EDIT14, s); - if ((nSBCode == SB_THUMBPOSITION) || (nSBCode == SB_ENDSCROLL)) + if (nSBCode == SB_THUMBPOSITION || nSBCode == SB_THUMBTRACK || nSBCode == SB_ENDSCROLL) { pVstPlugin->SetParameter(m_nCurrentParam, fValue); OnParamChanged(); @@ -1243,7 +1243,7 @@ } } -void CViewGlobals::OnMovePlugToSlot() +void CViewGlobals::OnMovePlugToSlot() //----------------------------------- { CMoveFXSlotDialog dlg((CWnd*)this); Modified: trunk/OpenMPT/mptrack/View_tre.cpp =================================================================== --- trunk/OpenMPT/mptrack/View_tre.cpp 2013-08-26 13:47:33 UTC (rev 2616) +++ trunk/OpenMPT/mptrack/View_tre.cpp 2013-08-28 18:33:45 UTC (rev 2617) @@ -1255,11 +1255,11 @@ { if (nParam & 0x80) { - pModDoc->NoteOff(nParam, true); + pModDoc->NoteOff(nParam & 0x7F, true); } else { pModDoc->NoteOff(0, true); - pModDoc->PlayNote(nParam, static_cast<INSTRUMENTINDEX>(modItemID), 0, false); + pModDoc->PlayNote(nParam & 0x7F, static_cast<INSTRUMENTINDEX>(modItemID), 0, false); } } return TRUE; @@ -2104,24 +2104,33 @@ break; case MODITEM_SAMPLE: - // Reorder samples in a module - if(m_itemDrag.type == MODITEM_SAMPLE && pInfoDrag != nullptr && sameModDoc) + if(m_itemDrag.type == MODITEM_SAMPLE && pInfoDrag != nullptr) { if(bDoDrop) { - const SAMPLEINDEX from = static_cast<SAMPLEINDEX>(modItemDragID - 1), to = static_cast<SAMPLEINDEX>(modItemDropID - 1); - - std::vector<SAMPLEINDEX> newOrder(pModDoc->GetNumSamples()); - for(SAMPLEINDEX smp = 0; smp < pModDoc->GetNumSamples(); smp++) + if(sameModDoc) { - newOrder[smp] = smp + 1; - } + // Reorder samples in a module + const SAMPLEINDEX from = static_cast<SAMPLEINDEX>(modItemDragID - 1), to = static_cast<SAMPLEINDEX>(modItemDropID - 1); - newOrder.erase(newOrder.begin() + from); - newOrder.insert(newOrder.begin() + to, from + 1); + std::vector<SAMPLEINDEX> newOrder(pModDoc->GetNumSamples()); + for(SAMPLEINDEX smp = 0; smp < pModDoc->GetNumSamples(); smp++) + { + newOrder[smp] = smp + 1; + } - pModDoc->ReArrangeSamples(newOrder); + newOrder.erase(newOrder.begin() + from); + newOrder.insert(newOrder.begin() + to, from + 1); + pModDoc->ReArrangeSamples(newOrder); + } else if(pInfoDrag->pModDoc != nullptr) + { + // Load sample into other module + pSndFile->ReadSampleFromSong(static_cast<SAMPLEINDEX>(modItemDropID), pInfoDrag->pModDoc->GetrSoundFile(), static_cast<SAMPLEINDEX>(modItemDragID)); + } else + { + return true; + } pModDoc->UpdateAllViews(NULL, HINT_SMPNAMES | HINT_SAMPLEINFO | HINT_SAMPLEDATA | HINT_PATTERNDATA, NULL); pModDoc->SetModified(); SelectItem(hItem); @@ -2131,24 +2140,33 @@ break; case MODITEM_INSTRUMENT: - // Reorder instruments in a module - if(m_itemDrag.type == MODITEM_INSTRUMENT && pInfoDrag != nullptr && sameModDoc) + if(m_itemDrag.type == MODITEM_INSTRUMENT && pInfoDrag != nullptr) { if(bDoDrop) { - const INSTRUMENTINDEX from = static_cast<INSTRUMENTINDEX>(modItemDragID - 1), to = static_cast<INSTRUMENTINDEX>(modItemDropID - 1); - - std::vector<INSTRUMENTINDEX> newOrder(pModDoc->GetNumInstruments()); - for(INSTRUMENTINDEX ins = 0; ins < pModDoc->GetNumInstruments(); ins++) + if(sameModDoc) { - newOrder[ins] = ins + 1; - } + // Reorder instruments in a module + const INSTRUMENTINDEX from = static_cast<INSTRUMENTINDEX>(modItemDragID - 1), to = static_cast<INSTRUMENTINDEX>(modItemDropID - 1); - newOrder.erase(newOrder.begin() + from); - newOrder.insert(newOrder.begin() + to, from + 1); + std::vector<INSTRUMENTINDEX> newOrder(pModDoc->GetNumInstruments()); + for(INSTRUMENTINDEX ins = 0; ins < pModDoc->GetNumInstruments(); ins++) + { + newOrder[ins] = ins + 1; + } - pModDoc->ReArrangeInstruments(newOrder); + newOrder.erase(newOrder.begin() + from); + newOrder.insert(newOrder.begin() + to, from + 1); + pModDoc->ReArrangeInstruments(newOrder); + } else if(pInfoDrag->pModDoc != nullptr) + { + // Load instrument into other module + pSndFile->ReadInstrumentFromSong(static_cast<INSTRUMENTINDEX>(modItemDropID), pInfoDrag->pModDoc->GetrSoundFile(), static_cast<INSTRUMENTINDEX>(modItemDragID)); + } else + { + return true; + } pModDoc->UpdateAllViews(NULL, HINT_INSNAMES | HINT_INSTRUMENT | HINT_ENVELOPE | HINT_PATTERNDATA, NULL); pModDoc->SetModified(); SelectItem(hItem); @@ -3294,17 +3312,18 @@ CMainFrame *pMainFrm = CMainFrame::GetMainFrame(); - if(wParam >= kcTreeViewStartNotes && wParam <= kcTreeViewEndNotes) + const bool start = wParam >= kcTreeViewStartNotes && wParam <= kcTreeViewEndNotes, + stop = wParam >= kcTreeViewStartNoteStops && wParam <= kcTreeViewEndNoteStops; + if(start || stop) { - if(PlayItem(GetSelectedItem(), static_cast<ModCommand::NOTE>(wParam - kcTreeViewStartNotes + 1 + pMainFrm->GetBaseOctave() * 12))) + ModCommand::NOTE note = static_cast<ModCommand::NOTE>(wParam - (start ? kcTreeViewStartNotes : kcTreeViewStartNoteStops) + 1 + pMainFrm->GetBaseOctave() * 12); + if(stop) note |= 0x80; + + if(PlayItem(GetSelectedItem(), note)) return wParam; else return NULL; } - if(wParam >= kcTreeViewStartNoteStops && wParam <= kcTreeViewEndNoteStops) - { - return wParam; - } return NULL; } Modified: trunk/OpenMPT/soundlib/SampleFormats.cpp =================================================================== --- trunk/OpenMPT/soundlib/SampleFormats.cpp 2013-08-26 13:47:33 UTC (rev 2616) +++ trunk/OpenMPT/soundlib/SampleFormats.cpp 2013-08-28 18:33:45 UTC (rev 2617) @@ -318,7 +318,9 @@ bool CSoundFile::ReadSampleFromSong(SAMPLEINDEX targetSample, const CSoundFile &srcSong, SAMPLEINDEX sourceSample) //---------------------------------------------------------------------------------------------------------------- { - if(!sourceSample || sourceSample > srcSong.GetNumSamples() || targetSample >= GetModSpecifications().samplesMax) + if(!sourceSample + || sourceSample > srcSong.GetNumSamples() + || (targetSample >= GetModSpecifications().samplesMax && targetSample > GetNumSamples())) { return false; } Modified: trunk/OpenMPT/soundlib/Snd_fx.cpp =================================================================== --- trunk/OpenMPT/soundlib/Snd_fx.cpp 2013-08-26 13:47:33 UTC (rev 2616) +++ trunk/OpenMPT/soundlib/Snd_fx.cpp 2013-08-28 18:33:45 UTC (rev 2617) @@ -2746,6 +2746,10 @@ return; } } + if(GetType() != MOD_TYPE_DBM) + { + return; + } } // Regular Slide if(!m_SongFlags[SONG_FIRSTTICK]) @@ -2794,6 +2798,10 @@ return; } } + if(GetType() != MOD_TYPE_DBM) + { + return; + } } if(!m_SongFlags[SONG_FIRSTTICK]) @@ -2990,7 +2998,7 @@ } // Implemented for IMF compatibility, can't actually save this in any formats -// sign should be 1 (up) or -1 (down) +// Slide up / down every x ticks by y semitones void CSoundFile::NoteSlide(ModChannel *pChn, UINT param, bool slideUp, bool retrig) //--------------------------------------------------------------------------------- { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |