You can subscribe to this list here.
| 2006 |
Jan
|
Feb
|
Mar
(1) |
Apr
(1) |
May
|
Jun
(1) |
Jul
|
Aug
(10) |
Sep
|
Oct
|
Nov
|
Dec
(3) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2007 |
Jan
(1) |
Feb
(2) |
Mar
(3) |
Apr
(2) |
May
(10) |
Jun
(2) |
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
(3) |
Dec
|
| 2008 |
Jan
(6) |
Feb
(4) |
Mar
(5) |
Apr
(2) |
May
(1) |
Jun
(1) |
Jul
(4) |
Aug
(6) |
Sep
(2) |
Oct
(9) |
Nov
(1) |
Dec
(4) |
| 2009 |
Jan
(9) |
Feb
(2) |
Mar
(2) |
Apr
(2) |
May
(6) |
Jun
(18) |
Jul
(33) |
Aug
(39) |
Sep
(33) |
Oct
(24) |
Nov
(23) |
Dec
(22) |
| 2010 |
Jan
(29) |
Feb
(32) |
Mar
(51) |
Apr
(17) |
May
(31) |
Jun
(21) |
Jul
(32) |
Aug
(28) |
Sep
(35) |
Oct
(27) |
Nov
(11) |
Dec
(13) |
| 2011 |
Jan
(14) |
Feb
(13) |
Mar
(27) |
Apr
(27) |
May
(28) |
Jun
(20) |
Jul
(43) |
Aug
(52) |
Sep
(66) |
Oct
(61) |
Nov
(11) |
Dec
(8) |
| 2012 |
Jan
(20) |
Feb
(30) |
Mar
(38) |
Apr
(21) |
May
(33) |
Jun
(21) |
Jul
(25) |
Aug
(9) |
Sep
(24) |
Oct
(42) |
Nov
(27) |
Dec
(41) |
| 2013 |
Jan
(20) |
Feb
(35) |
Mar
(156) |
Apr
(298) |
May
(258) |
Jun
(201) |
Jul
(105) |
Aug
(60) |
Sep
(193) |
Oct
(245) |
Nov
(280) |
Dec
(194) |
| 2014 |
Jan
(63) |
Feb
(202) |
Mar
(200) |
Apr
(23) |
May
(53) |
Jun
(105) |
Jul
(18) |
Aug
(26) |
Sep
(110) |
Oct
(187) |
Nov
(97) |
Dec
(74) |
| 2015 |
Jan
(45) |
Feb
(55) |
Mar
(116) |
Apr
(116) |
May
(193) |
Jun
(164) |
Jul
(50) |
Aug
(111) |
Sep
(98) |
Oct
(71) |
Nov
(103) |
Dec
(63) |
| 2016 |
Jan
(33) |
Feb
(101) |
Mar
(182) |
Apr
(139) |
May
(140) |
Jun
(103) |
Jul
(165) |
Aug
(286) |
Sep
(208) |
Oct
(127) |
Nov
(97) |
Dec
(54) |
| 2017 |
Jan
(64) |
Feb
(335) |
Mar
(202) |
Apr
(212) |
May
(139) |
Jun
(127) |
Jul
(294) |
Aug
(154) |
Sep
(170) |
Oct
(152) |
Nov
(156) |
Dec
(62) |
| 2018 |
Jan
(168) |
Feb
(237) |
Mar
(196) |
Apr
(174) |
May
(174) |
Jun
(161) |
Jul
(127) |
Aug
(88) |
Sep
(149) |
Oct
(66) |
Nov
(52) |
Dec
(135) |
| 2019 |
Jan
(146) |
Feb
(126) |
Mar
(104) |
Apr
(58) |
May
(60) |
Jun
(28) |
Jul
(197) |
Aug
(129) |
Sep
(141) |
Oct
(148) |
Nov
(63) |
Dec
(100) |
| 2020 |
Jan
(74) |
Feb
(37) |
Mar
(59) |
Apr
(154) |
May
(194) |
Jun
(133) |
Jul
(313) |
Aug
(197) |
Sep
(49) |
Oct
(162) |
Nov
(143) |
Dec
(57) |
| 2021 |
Jan
(120) |
Feb
(107) |
Mar
(314) |
Apr
(157) |
May
(524) |
Jun
(169) |
Jul
(72) |
Aug
(133) |
Sep
(135) |
Oct
(146) |
Nov
(198) |
Dec
(325) |
| 2022 |
Jan
(409) |
Feb
(249) |
Mar
(138) |
Apr
(95) |
May
(102) |
Jun
(221) |
Jul
(66) |
Aug
(120) |
Sep
(192) |
Oct
(131) |
Nov
(53) |
Dec
(171) |
| 2023 |
Jan
(357) |
Feb
(82) |
Mar
(168) |
Apr
(218) |
May
(196) |
Jun
(86) |
Jul
(115) |
Aug
(49) |
Sep
(190) |
Oct
(102) |
Nov
(45) |
Dec
(76) |
| 2024 |
Jan
(86) |
Feb
(50) |
Mar
(324) |
Apr
(209) |
May
(197) |
Jun
(232) |
Jul
(194) |
Aug
(247) |
Sep
(219) |
Oct
(266) |
Nov
(328) |
Dec
(304) |
| 2025 |
Jan
(191) |
Feb
(115) |
Mar
(137) |
Apr
(32) |
May
(126) |
Jun
(403) |
Jul
(213) |
Aug
(203) |
Sep
(148) |
Oct
(109) |
Nov
(191) |
Dec
(209) |
| 2026 |
Jan
(127) |
Feb
(123) |
Mar
(160) |
Apr
(141) |
May
(45) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
|
From: <sag...@us...> - 2009-12-28 02:58:06
|
Revision: 451
http://modplug.svn.sourceforge.net/modplug/?rev=451&view=rev
Author: saga-games
Date: 2009-12-28 02:57:57 +0000 (Mon, 28 Dec 2009)
Log Message:
-----------
[Imp] VST: Further improvement to param mapping so that the midi dialog really only pops up when the VST window has the focus
[Fix] IT Compatibility: Reset NNA actions on every note (tentative fix)
Modified Paths:
--------------
trunk/OpenMPT/mptrack/Vstplug.cpp
trunk/OpenMPT/soundlib/Snd_fx.cpp
Modified: trunk/OpenMPT/mptrack/Vstplug.cpp
===================================================================
--- trunk/OpenMPT/mptrack/Vstplug.cpp 2009-12-25 12:00:26 UTC (rev 450)
+++ trunk/OpenMPT/mptrack/Vstplug.cpp 2009-12-28 02:57:57 UTC (rev 451)
@@ -669,7 +669,7 @@
pModDoc->RecordParamChange(pVstPlugin->GetSlot(), index);
}
- if (pModDoc && CMainFrame::GetInputHandler()->ShiftPressed() && pVstPlugin->GetEditor() && pVstPlugin->GetEditor()->m_hWnd)
+ if (pModDoc && CMainFrame::GetInputHandler()->ShiftPressed() && pVstPlugin->GetEditor() && (pVstPlugin->GetEditor()->m_hWnd == ::GetForegroundWindow()))
{
CMainFrame::GetInputHandler()->SetModifierMask(0); // Make sure that the dialog will open only once.
CAbstractVstEditor *pVstEditor = pVstPlugin->GetEditor();
Modified: trunk/OpenMPT/soundlib/Snd_fx.cpp
===================================================================
--- trunk/OpenMPT/soundlib/Snd_fx.cpp 2009-12-25 12:00:26 UTC (rev 450)
+++ trunk/OpenMPT/soundlib/Snd_fx.cpp 2009-12-28 02:57:57 UTC (rev 451)
@@ -777,6 +777,7 @@
pChn->nResSwing = pChn->nCutSwing = 0;
if (pIns)
{
+ if(IsCompatibleMode(TRK_IMPULSETRACKER)) pChn->nNNA = pIns->nNNA;
if (!(pIns->VolEnv.dwFlags & ENV_CARRY)) pChn->nVolEnvPosition = 0;
if (!(pIns->PanEnv.dwFlags & ENV_CARRY)) pChn->nPanEnvPosition = 0;
if (!(pIns->PitchEnv.dwFlags & ENV_CARRY)) pChn->nPitchEnvPosition = 0;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <sag...@us...> - 2009-12-25 12:00:44
|
Revision: 450
http://modplug.svn.sourceforge.net/modplug/?rev=450&view=rev
Author: saga-games
Date: 2009-12-25 12:00:26 +0000 (Fri, 25 Dec 2009)
Log Message:
-----------
[Fix] FT2 compatibility: Almost perfect arpeggio emulation (only a few notes are still wrong)
[Fix] FT2 compatibility: Rogue note delays
Modified Paths:
--------------
trunk/OpenMPT/soundlib/Snd_fx.cpp
trunk/OpenMPT/soundlib/Sndmix.cpp
Modified: trunk/OpenMPT/soundlib/Snd_fx.cpp
===================================================================
--- trunk/OpenMPT/soundlib/Snd_fx.cpp 2009-12-23 19:56:16 UTC (rev 449)
+++ trunk/OpenMPT/soundlib/Snd_fx.cpp 2009-12-25 12:00:26 UTC (rev 450)
@@ -635,7 +635,7 @@
note = pIns->NoteMap[note-1];
}
// Key Off
- if (note >= 0x80)
+ if (note > NOTE_MAX)
{
// Key Off (+ Invalid Note for XM - TODO is this correct?)
if (note == NOTE_KEYOFF || !(m_nType & (MOD_TYPE_IT|MOD_TYPE_MPT)))
@@ -664,7 +664,7 @@
if(bNewTuning)
{
- if(!bPorta || pChn->nNote == 0)
+ if(!bPorta || pChn->nNote == NOTE_NONE)
pChn->nPortamentoDest = 0;
else
{
@@ -1268,6 +1268,12 @@
pChn->nVolume = 0;
note = instr = 0;
}
+
+ // XM: Rogue note delays cause retrig
+ if ((note == NOTE_NONE) && IsCompatibleMode(TRK_FASTTRACKER2) && !(m_dwSongFlags & SONG_FIRSTTICK))
+ {
+ note = pChn->nNote - pChn->nTranspose;
+ }
}
if ((!note) && (instr)) //Case: instrument with no note data.
{
Modified: trunk/OpenMPT/soundlib/Sndmix.cpp
===================================================================
--- trunk/OpenMPT/soundlib/Sndmix.cpp 2009-12-23 19:56:16 UTC (rev 449)
+++ trunk/OpenMPT/soundlib/Sndmix.cpp 2009-12-25 12:00:26 UTC (rev 450)
@@ -1227,18 +1227,17 @@
}
else if(IsCompatibleMode(TRK_FASTTRACKER2)) // FastTracker 2
{
- // Using MilkyTracker's logic - still not perfect
BYTE note = pChn->nNote;
int arpPos = 0;
if (!(m_dwSongFlags & SONG_FIRSTTICK))
{
- arpPos = ((int)m_nTickCount - (int)m_nMusicSpeed) % 3;
- if(arpPos < 0) arpPos += 3;
+ arpPos = ((int)m_nMusicSpeed - (int)m_nTickCount) % 3;
+ if((m_nMusicSpeed > 18) && (m_nMusicSpeed - m_nTickCount > 16)) arpPos = 2; // swedish tracker logic, I love it
switch(arpPos)
{
- case 1: note += (pChn->nArpeggio & 0x0F); break; // x/y are swapped!
- case 2: note += (pChn->nArpeggio >> 4); break;
+ case 1: note += (pChn->nArpeggio >> 4); break;
+ case 2: note += (pChn->nArpeggio & 0x0F); break;
}
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <sag...@us...> - 2009-12-23 19:56:29
|
Revision: 449
http://modplug.svn.sourceforge.net/modplug/?rev=449&view=rev
Author: saga-games
Date: 2009-12-23 19:56:16 +0000 (Wed, 23 Dec 2009)
Log Message:
-----------
[Fix] XM Compatibility: Perfect emulation of buggy Rxy behaviour. Thanks to Ian Luck for helping me with this.
[Imp] Pattern Editor: When using Find&Replace, "follow song" will be disabled, because it's pointless and unusable with "follow song" on.
Modified Paths:
--------------
trunk/OpenMPT/mptrack/View_pat.cpp
trunk/OpenMPT/soundlib/Snd_fx.cpp
Modified: trunk/OpenMPT/mptrack/View_pat.cpp
===================================================================
--- trunk/OpenMPT/mptrack/View_pat.cpp 2009-12-23 13:43:29 UTC (rev 448)
+++ trunk/OpenMPT/mptrack/View_pat.cpp 2009-12-23 19:56:16 UTC (rev 449)
@@ -1817,6 +1817,10 @@
nFound++;
if (bUpdPos)
{
+ // turn off "follow song"
+ m_dwStatus &= ~PATSTATUS_FOLLOWSONG;
+ SendCtrlMessage(CTRLMSG_PAT_FOLLOWSONG, 0);
+ // go to place of finding
SetCurrentPattern(nPat);
SetCurrentRow(n / pSndFile->m_nChannels);
}
Modified: trunk/OpenMPT/soundlib/Snd_fx.cpp
===================================================================
--- trunk/OpenMPT/soundlib/Snd_fx.cpp 2009-12-23 13:43:29 UTC (rev 448)
+++ trunk/OpenMPT/soundlib/Snd_fx.cpp 2009-12-23 19:56:16 UTC (rev 449)
@@ -3165,8 +3165,8 @@
if(m_dwSongFlags & SONG_FIRSTTICK)
{
// here are some really stupid things FT2 does
+ if(pChn->nRowVolCmd == VOLCMD_VOLUME) return;
if(pChn->nRowInstr > 0 && pChn->nRowNote == NOTE_NONE) nRetrigCount = 1;
- if(pChn->nRowVolCmd == VOLCMD_VOLUME) nRetrigCount = -1; // not correct yet
if(pChn->nRowNote != NOTE_NONE && pChn->nRowNote <= GetModSpecifications().noteMax) nRetrigCount++;
}
if (nRetrigCount >= nRetrigSpeed)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <rel...@us...> - 2009-12-23 13:43:38
|
Revision: 448
http://modplug.svn.sourceforge.net/modplug/?rev=448&view=rev
Author: relabsoluness
Date: 2009-12-23 13:43:29 +0000 (Wed, 23 Dec 2009)
Log Message:
-----------
[Fix] GUI: Shift key erroneously opened MIDI mapping dialog in some cases (appeared in rev. 344).
[Fix] GUI: Multiselection was partly broken in load dialogs (appeared in rev. 444).
[Fix] Orderlist: Follow song keyshortcut didn't work in this context (appeared in rev. 424).
Modified Paths:
--------------
trunk/OpenMPT/mptrack/Ctrl_seq.cpp
trunk/OpenMPT/mptrack/Mptrack.cpp
trunk/OpenMPT/mptrack/Vstplug.cpp
Modified: trunk/OpenMPT/mptrack/Ctrl_seq.cpp
===================================================================
--- trunk/OpenMPT/mptrack/Ctrl_seq.cpp 2009-12-21 18:56:25 UTC (rev 447)
+++ trunk/OpenMPT/mptrack/Ctrl_seq.cpp 2009-12-23 13:43:29 UTC (rev 448)
@@ -421,7 +421,8 @@
return wParam;
case kcChangeLoopStatus:
m_pParent->OnModCtrlMsg(CTRLMSG_PAT_LOOP, -1); return wParam;
- case kcToggleFollowSong: m_pParent->OnFollowSong(); return wParam;
+ case kcToggleFollowSong:
+ m_pParent->OnModCtrlMsg(CTRLMSG_PAT_FOLLOWSONG, 0); return wParam;
case kcChannelUnmuteAll:
case kcUnmuteAllChnOnPatTransition:
@@ -1047,8 +1048,6 @@
AppendMenu(menuSequence, MF_STRING, ID_SEQUENCE_ITEM + MAX_SEQUENCES, TEXT("Create new sequence"));
if (pSndFile->Order.GetNumSequences() > 1)
AppendMenu(menuSequence, MF_STRING, ID_SEQUENCE_ITEM + MAX_SEQUENCES + 1, TEXT("Delete current sequence"));
-
- ::DestroyMenu(menuSequence);
}
}
AppendMenu(hMenu, MF_SEPARATOR, NULL, "");
Modified: trunk/OpenMPT/mptrack/Mptrack.cpp
===================================================================
--- trunk/OpenMPT/mptrack/Mptrack.cpp 2009-12-21 18:56:25 UTC (rev 447)
+++ trunk/OpenMPT/mptrack/Mptrack.cpp 2009-12-23 13:43:29 UTC (rev 448)
@@ -3307,11 +3307,14 @@
if(filterIndex != nullptr)
dlg.m_ofn.nFilterIndex = (DWORD)(*filterIndex);
- // TODO is this necessary? Apparently not!
- /*const size_t bufferSize = 2048; //Note: This is possibly the maximum buffer size in MFC 7(this note was written November 2006).
- vector<char> filenameBuffer(bufferSize, 0);
- dlg.GetOFN().lpstrFile = &filenameBuffer[0];
- dlg.GetOFN().nMaxFile = bufferSize;*/
+ vector<TCHAR> filenameBuffer;
+ if (allowMultiSelect)
+ {
+ const size_t bufferSize = 2048; // Note: This is possibly the maximum buffer size in MFC 7(this note was written November 2006).
+ filenameBuffer.resize(bufferSize, 0);
+ dlg.GetOFN().lpstrFile = &filenameBuffer[0];
+ dlg.GetOFN().nMaxFile = bufferSize;
+ }
// Do it!
CMainFrame::GetInputHandler()->Bypass(true);
Modified: trunk/OpenMPT/mptrack/Vstplug.cpp
===================================================================
--- trunk/OpenMPT/mptrack/Vstplug.cpp 2009-12-21 18:56:25 UTC (rev 447)
+++ trunk/OpenMPT/mptrack/Vstplug.cpp 2009-12-23 13:43:29 UTC (rev 448)
@@ -669,7 +669,7 @@
pModDoc->RecordParamChange(pVstPlugin->GetSlot(), index);
}
- if (CMainFrame::GetInputHandler()->ShiftPressed())
+ if (pModDoc && CMainFrame::GetInputHandler()->ShiftPressed() && pVstPlugin->GetEditor() && pVstPlugin->GetEditor()->m_hWnd)
{
CMainFrame::GetInputHandler()->SetModifierMask(0); // Make sure that the dialog will open only once.
CAbstractVstEditor *pVstEditor = pVstPlugin->GetEditor();
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <sag...@us...> - 2009-12-21 18:56:42
|
Revision: 447
http://modplug.svn.sourceforge.net/modplug/?rev=447&view=rev
Author: saga-games
Date: 2009-12-21 18:56:25 +0000 (Mon, 21 Dec 2009)
Log Message:
-----------
[Fix] Sequence list: Shift+End didn't work.
[Fix] Pattern editor: When pasting only partly copied channels, push forward paste failed.
[Fix] Pattern editor: Push forward paste shortcut didn't work.
[Ref] J2B Loader: Cleaned up command code translation a bit.
Modified Paths:
--------------
trunk/OpenMPT/mptrack/Ctrl_seq.cpp
trunk/OpenMPT/mptrack/Modedit.cpp
trunk/OpenMPT/mptrack/View_pat.cpp
trunk/OpenMPT/soundlib/load_j2b.cpp
Modified: trunk/OpenMPT/mptrack/Ctrl_seq.cpp
===================================================================
--- trunk/OpenMPT/mptrack/Ctrl_seq.cpp 2009-12-20 18:17:16 UTC (rev 446)
+++ trunk/OpenMPT/mptrack/Ctrl_seq.cpp 2009-12-21 18:56:25 UTC (rev 447)
@@ -381,7 +381,7 @@
case kcOrderlistNavigateLast:
if((m_pModDoc != nullptr) && (m_pModDoc->GetSoundFile() != nullptr))
{
- SetCurSelTo2ndSel(wParam == kcOrderlistNavigateLast);
+ SetCurSelTo2ndSel(wParam == kcOrderlistNavigateLastSelect);
ORDERINDEX nLast = m_pModDoc->GetSoundFile()->Order.GetLengthTailTrimmed();
if(nLast > 0) nLast--;
SetCurSel(nLast);
Modified: trunk/OpenMPT/mptrack/Modedit.cpp
===================================================================
--- trunk/OpenMPT/mptrack/Modedit.cpp 2009-12-20 18:17:16 UTC (rev 446)
+++ trunk/OpenMPT/mptrack/Modedit.cpp 2009-12-21 18:56:25 UTC (rev 447)
@@ -1178,7 +1178,6 @@
bool bS3MCommands = false, bOk = false;
MODTYPE origFormat = MOD_TYPE_IT;
UINT len = 0, startLen;
- MODCOMMAND origModCmd;
bool doOverflowPaste = (CMainFrame::m_dwPatternSetup & PATTERN_OVERFLOWPASTE) && (pasteMode != pm_pasteflood) && (pasteMode != pm_pushforwardpaste);
bool doITStyleMix = (pasteMode == pm_mixpaste_it);
@@ -1235,8 +1234,10 @@
// Paste columns
while ((p[len] == '|') && (len + 11 < dwMemSize))
{
- origModCmd = m[col]; // ITSyle mixpaste requires that we keep a copy of the thing we are about to paste on
- // so that we can refer back to check if there was anything in e.g. the note column before we pasted.
+ // ITSyle mixpaste requires that we keep a copy of the thing we are about to paste on
+ // so that we can refer back to check if there was anything in e.g. the note column before we pasted.
+ MODCOMMAND origModCmd = m[col];
+
LPSTR s = p+len+1;
if (col < m_SndFile.m_nChannels)
@@ -1248,6 +1249,7 @@
{
m[col + nPushRow * m_SndFile.m_nChannels] = m[col + (nPushRow - 1) * m_SndFile.m_nChannels];
}
+ m[col].Clear();
}
// Note
Modified: trunk/OpenMPT/mptrack/View_pat.cpp
===================================================================
--- trunk/OpenMPT/mptrack/View_pat.cpp 2009-12-20 18:17:16 UTC (rev 446)
+++ trunk/OpenMPT/mptrack/View_pat.cpp 2009-12-21 18:56:25 UTC (rev 447)
@@ -3607,6 +3607,7 @@
case kcEditMixPaste: OnEditMixPaste(); return wParam;
case kcEditMixPasteITStyle: OnEditMixPasteITStyle(); return wParam;
case kcEditPasteFlood: OnEditPasteFlood(); return wParam;
+ case kcEditPushForwardPaste: OnEditPushForwardPaste(); return wParam;
case kcEditSelectAll: OnEditSelectAll(); return wParam;
case kcTogglePluginEditor: TogglePluginEditor((m_dwCursor & 0xFFFF) >> 3); return wParam;
case kcToggleFollowSong: SendCtrlMessage(CTRLMSG_PAT_FOLLOWSONG); return wParam;
Modified: trunk/OpenMPT/soundlib/load_j2b.cpp
===================================================================
--- trunk/OpenMPT/soundlib/load_j2b.cpp 2009-12-20 18:17:16 UTC (rev 446)
+++ trunk/OpenMPT/soundlib/load_j2b.cpp 2009-12-21 18:56:25 UTC (rev 447)
@@ -94,6 +94,17 @@
#pragma pack()
+static BYTE riffam_efftrans[26] =
+{
+ CMD_ARPEGGIO, CMD_PORTAMENTOUP, CMD_PORTAMENTODOWN, CMD_TONEPORTAMENTO,
+ CMD_VIBRATO, CMD_TONEPORTAVOL, CMD_VIBRATOVOL, CMD_TREMOLO,
+ CMD_PANNING8, CMD_OFFSET, CMD_VOLUMESLIDE, CMD_POSITIONJUMP,
+ CMD_VOLUME, CMD_PATTERNBREAK, CMD_MODCMDEX, CMD_TEMPO,
+ CMD_GLOBALVOLUME, CMD_GLOBALVOLSLIDE, CMD_KEYOFF, CMD_SETENVPOSITION,
+ CMD_CHANNELVOLUME, CMD_CHANNELVOLSLIDE, CMD_PANNINGSLIDE, CMD_RETRIG,
+ CMD_TREMOR, CMD_XFINEPORTAUPDOWN,
+};
+
bool CSoundFile::Convert_RIFF_AM_Pattern(PATTERNINDEX nPat, const LPCBYTE lpStream, DWORD dwMemLength, bool bIsAM)
//----------------------------------------------------------------------------------------------------------------
{
@@ -139,45 +150,53 @@
m->command = lpStream[dwMemPos + 1];
m->param = lpStream[dwMemPos];
dwMemPos += 2;
- switch(m->command)
+
+ if(m->command <= 25)
{
- case 0x00: if (m->param) m->command = CMD_ARPEGGIO; break;
- case 0x01: m->command = CMD_PORTAMENTOUP; break;
- case 0x02: m->command = CMD_PORTAMENTODOWN; break;
- case 0x03: m->command = CMD_TONEPORTAMENTO; break;
- case 0x04: m->command = CMD_VIBRATO; break;
- case 0x05: m->command = CMD_TONEPORTAVOL; if (m->param & 0xF0) m->param &= 0xF0; break;
- case 0x06: m->command = CMD_VIBRATOVOL; if (m->param & 0xF0) m->param &= 0xF0; break;
- case 0x07: m->command = CMD_TREMOLO; break;
- case 0x08: m->command = CMD_PANNING8;
- if(m->param <= 0x80) m->param = min(m->param << 1, 0xFF);
- else if(m->param == 0xA4) {m->command = CMD_S3MCMDEX; m->param = 0x91;}
+ // command translation
+ m->command = riffam_efftrans[m->command];
+
+ // handling special commands
+ switch(m->command)
+ {
+ case CMD_ARPEGGIO:
+ if(m->param == 0) m->command = CMD_NONE;
+ break;
+ case CMD_TONEPORTAVOL:
+ case CMD_VIBRATOVOL:
+ case CMD_VOLUMESLIDE:
+ case CMD_GLOBALVOLSLIDE:
+ case CMD_PANNINGSLIDE:
+ if (m->param & 0xF0) m->param &= 0xF0;
+ break;
+ case CMD_PANNING8:
+ if(m->param <= 0x80) m->param = min(m->param << 1, 0xFF);
+ else if(m->param == 0xA4) {m->command = CMD_S3MCMDEX; m->param = 0x91;}
+ break;
+ case CMD_PATTERNBREAK:
+ m->param = ((m->param >> 4) * 10) + (m->param & 0x0F);
+ break;
+ case CMD_MODCMDEX:
+ MODExx2S3MSxx(m);
+ break;
+ case CMD_TEMPO:
+ if(m->param <= 0x1F) m->command = CMD_SPEED;
+ break;
+ case CMD_XFINEPORTAUPDOWN:
+ switch(m->param & 0xF0)
+ {
+ case 0x10:
+ m->command = CMD_PORTAMENTOUP;
break;
- case 0x09: m->command = CMD_OFFSET; break;
- case 0x0A: m->command = CMD_VOLUMESLIDE; if (m->param & 0xF0) m->param &= 0xF0; break;
- case 0x0B: m->command = CMD_POSITIONJUMP; break;
- case 0x0C: m->command = CMD_VOLUME; break;
- case 0x0D: m->command = CMD_PATTERNBREAK; m->param = ((m->param >> 4) * 10) + (m->param & 0x0F); break;
- case 0x0E: m->command = CMD_MODCMDEX; MODExx2S3MSxx(m); break;
- case 0x0F: m->command = (m->param <= 0x1F) ? CMD_SPEED : CMD_TEMPO; break;
- case 'G' - 55: m->command = CMD_GLOBALVOLUME; break;
- case 'H' - 55: m->command = CMD_GLOBALVOLSLIDE; if (m->param & 0xF0) m->param &= 0xF0; break;
- case 'K' - 55: m->command = CMD_KEYOFF; break;
- case 'L' - 55: m->command = CMD_SETENVPOSITION; break;
- case 'M' - 55: m->command = CMD_CHANNELVOLUME; break;
- case 'N' - 55: m->command = CMD_CHANNELVOLSLIDE; break;
- case 'P' - 55: m->command = CMD_PANNINGSLIDE; if (m->param & 0xF0) m->param &= 0xF0; break;
- case 'R' - 55: m->command = CMD_RETRIG; break;
- case 'T' - 55: m->command = CMD_TREMOR; break;
- case 'X' - 55:
- switch(m->param & 0xF0)
- {
- case 0x10: m->command = CMD_PORTAMENTOUP; m->param = (m->param & 0x0F) | 0xE0; break;
- case 0x20: m->command = CMD_PORTAMENTODOWN; m->param = (m->param & 0x0F) | 0xE0; break;
- default: m->command = CMD_S3MCMDEX; break;
- }
+ case 0x20:
+ m->command = CMD_PORTAMENTODOWN;
break;
- default:
+ }
+ m->param = (m->param & 0x0F) | 0xE0;
+ break;
+ }
+ } else
+ {
#ifdef DEBUG
{
CHAR s[64];
@@ -186,7 +205,6 @@
}
#endif
m->command = CMD_NONE;
- break;
}
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <sag...@us...> - 2009-12-20 18:17:26
|
Revision: 446
http://modplug.svn.sourceforge.net/modplug/?rev=446&view=rev
Author: saga-games
Date: 2009-12-20 18:17:16 +0000 (Sun, 20 Dec 2009)
Log Message:
-----------
[Fix] The S3M format actually knows muted channels. Added this to the S3M loader/saver and MuteChannel functions.
Modified Paths:
--------------
trunk/OpenMPT/mptrack/Moddoc.cpp
trunk/OpenMPT/soundlib/Load_s3m.cpp
Modified: trunk/OpenMPT/mptrack/Moddoc.cpp
===================================================================
--- trunk/OpenMPT/mptrack/Moddoc.cpp 2009-12-20 01:10:47 UTC (rev 445)
+++ trunk/OpenMPT/mptrack/Moddoc.cpp 2009-12-20 18:17:16 UTC (rev 446)
@@ -1013,7 +1013,7 @@
bool CModDoc::MuteChannel(CHANNELINDEX nChn, bool doMute)
-//----------------------------------------------
+//-------------------------------------------------------
{
DWORD muteType = (CMainFrame::m_dwPatternSetup&PATTERN_SYNCMUTE)? CHN_SYNCMUTE:CHN_MUTE;
@@ -1057,8 +1057,8 @@
}
}
- //Mark IT as modified
- if (m_SndFile.m_nType & (MOD_TYPE_IT | MOD_TYPE_MPT)) {
+ //Mark IT/MPTM/S3M as modified
+ if (m_SndFile.m_nType & (MOD_TYPE_IT | MOD_TYPE_MPT | MOD_TYPE_S3M)) {
CMainFrame::GetMainFrame()->ThreadSafeSetModified(this);
}
Modified: trunk/OpenMPT/soundlib/Load_s3m.cpp
===================================================================
--- trunk/OpenMPT/soundlib/Load_s3m.cpp 2009-12-20 01:10:47 UTC (rev 445)
+++ trunk/OpenMPT/soundlib/Load_s3m.cpp 2009-12-20 18:17:16 UTC (rev 446)
@@ -218,7 +218,7 @@
bool CSoundFile::ReadS3M(const BYTE *lpStream, DWORD dwMemLength)
//---------------------------------------------------------------
{
- if ((!lpStream) || (dwMemLength <= sizeof(S3MFILEHEADER)+sizeof(S3MSAMPLESTRUCT)+64)) return false;
+ if ((!lpStream) || (dwMemLength <= sizeof(S3MFILEHEADER)+64)) return false;
UINT insnum,patnum,nins,npat;
DWORD insfile[128];
@@ -282,16 +282,24 @@
m_nChannels = 4;
for (UINT ich=0; ich<32; ich++)
{
- ChnSettings[ich].nPan = 128;
ChnSettings[ich].nVolume = 64;
- ChnSettings[ich].dwFlags = CHN_MUTE;
- if (psfh.channels[ich] != 0xFF)
+ if(psfh.channels[ich] == 0xFF)
{
- m_nChannels = ich+1;
- UINT b = psfh.channels[ich] & 0x0F;
- ChnSettings[ich].nPan = (b & 8) ? 0xC0 : 0x40;
- ChnSettings[ich].dwFlags = 0;
+ ChnSettings[ich].nPan = 128;
+ ChnSettings[ich].dwFlags = CHN_MUTE;
+ } else
+ {
+ m_nChannels = ich + 1;
+ ChnSettings[ich].nPan = (psfh.channels[ich] & 8) ? 0xC0 : 0x40;
+ if (psfh.channels[ich] & 0x80)
+ {
+ ChnSettings[ich].dwFlags = CHN_MUTE;
+ /* Detect Adlib channels:
+ c = channels[ich] ^ 0x80;
+ if(c >= 16 && c < 32) adlibChannel = true;
+ */
+ }
}
}
if (m_nChannels < 1) m_nChannels = 1;
@@ -572,7 +580,9 @@
if (i < m_nChannels)
{
UINT tmp = (i & 0x0F) >> 1;
- header[0x40+i] = (i & 0x10) | ((i & 1) ? 8+tmp : tmp);
+ tmp = (i & 0x10) | ((i & 1) ? 8 + tmp : tmp);
+ if((ChnSettings[i].dwFlags & CHN_MUTE) != 0) tmp |= 0x80;
+ header[0x40+i] = tmp;
} else header[0x40+i] = 0xFF;
}
fwrite(header, 0x60, 1, f);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <sag...@us...> - 2009-12-20 01:10:59
|
Revision: 445
http://modplug.svn.sourceforge.net/modplug/?rev=445&view=rev
Author: saga-games
Date: 2009-12-20 01:10:47 +0000 (Sun, 20 Dec 2009)
Log Message:
-----------
[Fix] Pattern Editor: Search&Replace didn't create an undo point.
[Fix] Orderlist: Sequence sub menu (in context menu) was not destroyed properly.
[Imp] Instrument Editor: When creating a new envelope, automatically enable it as well.
Modified Paths:
--------------
trunk/OpenMPT/mptrack/Ctrl_seq.cpp
trunk/OpenMPT/mptrack/Undo.cpp
trunk/OpenMPT/mptrack/View_ins.cpp
trunk/OpenMPT/mptrack/View_pat.cpp
Modified: trunk/OpenMPT/mptrack/Ctrl_seq.cpp
===================================================================
--- trunk/OpenMPT/mptrack/Ctrl_seq.cpp 2009-12-18 21:51:37 UTC (rev 444)
+++ trunk/OpenMPT/mptrack/Ctrl_seq.cpp 2009-12-20 01:10:47 UTC (rev 445)
@@ -1047,6 +1047,8 @@
AppendMenu(menuSequence, MF_STRING, ID_SEQUENCE_ITEM + MAX_SEQUENCES, TEXT("Create new sequence"));
if (pSndFile->Order.GetNumSequences() > 1)
AppendMenu(menuSequence, MF_STRING, ID_SEQUENCE_ITEM + MAX_SEQUENCES + 1, TEXT("Delete current sequence"));
+
+ ::DestroyMenu(menuSequence);
}
}
AppendMenu(hMenu, MF_SEPARATOR, NULL, "");
Modified: trunk/OpenMPT/mptrack/Undo.cpp
===================================================================
--- trunk/OpenMPT/mptrack/Undo.cpp 2009-12-18 21:51:37 UTC (rev 444)
+++ trunk/OpenMPT/mptrack/Undo.cpp 2009-12-20 01:10:47 UTC (rev 445)
@@ -35,8 +35,8 @@
// - pattern: Pattern of which an undo step should be created from.
// - x: first channel
// - y: first row
-// - cx: last channel
-// - cy: last row
+// - cx: width
+// - cy: height
bool CPatternUndo::PrepareUndo(PATTERNINDEX pattern, UINT x, UINT y, UINT cx, UINT cy)
//------------------------------------------------------------------------------------
{
Modified: trunk/OpenMPT/mptrack/View_ins.cpp
===================================================================
--- trunk/OpenMPT/mptrack/View_ins.cpp 2009-12-18 21:51:37 UTC (rev 444)
+++ trunk/OpenMPT/mptrack/View_ins.cpp 2009-12-20 01:10:47 UTC (rev 445)
@@ -1039,6 +1039,7 @@
envelope->Ticks[0] = 0;
envelope->Values[0] = cDefaultValue;
envelope->nNodes = 1;
+ envelope->dwFlags |= ENV_ENABLED;
}
UINT i = 0;
for (i = 0; i < envelope->nNodes; i++) if (nTick <= envelope->Ticks[i]) break;
Modified: trunk/OpenMPT/mptrack/View_pat.cpp
===================================================================
--- trunk/OpenMPT/mptrack/View_pat.cpp 2009-12-18 21:51:37 UTC (rev 444)
+++ trunk/OpenMPT/mptrack/View_pat.cpp 2009-12-20 01:10:47 UTC (rev 445)
@@ -1847,6 +1847,8 @@
}
if (bReplace)
{
+ pModDoc->GetPatternUndo()->PrepareUndo(nPat, n % pSndFile->m_nChannels, n / pSndFile->m_nChannels, 1, 1);
+
if ((m_dwReplaceFlags & PATSEARCH_NOTE))
{
// -1 octave
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <sag...@us...> - 2009-12-18 21:51:51
|
Revision: 444
http://modplug.svn.sourceforge.net/modplug/?rev=444&view=rev
Author: saga-games
Date: 2009-12-18 21:51:37 +0000 (Fri, 18 Dec 2009)
Log Message:
-----------
[Fix] When using a Load/Save dialog, MPT's key handler will be disabled so that common shortcuts like F2, Ctrl+C, Ctrl+V, Esc. etc. can still be used.
[Fix] General tab: VST Preset Load/save buttons didn't use default directories.
[Ref] Built a nice abstraction of the CFileDialog to realize the first fix. Now CFileDialog is used in only on place, and using Load/Save dialogs should be a lot easier now - especially when dealing with multiple file selections.
Modified Paths:
--------------
trunk/OpenMPT/mptrack/AbstractVstEditor.cpp
trunk/OpenMPT/mptrack/Ctrl_ins.cpp
trunk/OpenMPT/mptrack/Ctrl_smp.cpp
trunk/OpenMPT/mptrack/KeyConfigDlg.cpp
trunk/OpenMPT/mptrack/MainFrm.cpp
trunk/OpenMPT/mptrack/Mainfrm.h
trunk/OpenMPT/mptrack/Moddoc.cpp
trunk/OpenMPT/mptrack/Moptions.cpp
trunk/OpenMPT/mptrack/Mptrack.cpp
trunk/OpenMPT/mptrack/Mptrack.h
trunk/OpenMPT/mptrack/TuningDialog.cpp
trunk/OpenMPT/mptrack/View_gen.cpp
trunk/OpenMPT/mptrack/View_tre.cpp
trunk/OpenMPT/mptrack/Vstplug.cpp
Modified: trunk/OpenMPT/mptrack/AbstractVstEditor.cpp
===================================================================
--- trunk/OpenMPT/mptrack/AbstractVstEditor.cpp 2009-12-17 21:42:45 UTC (rev 443)
+++ trunk/OpenMPT/mptrack/AbstractVstEditor.cpp 2009-12-18 21:51:37 UTC (rev 444)
@@ -110,48 +110,35 @@
VOID CAbstractVstEditor::OnLoadPreset()
//-------------------------------------
{
- if (m_pVstPlugin)
- {
- CFileDialog dlg(TRUE, "fxp", NULL,
- OFN_HIDEREADONLY| OFN_OVERWRITEPROMPT | OFN_PATHMUSTEXIST | OFN_ENABLESIZING | OFN_NOREADONLYRETURN,
- "VST Program (*.fxp)|*.fxp||", theApp.m_pMainWnd);
- const LPCTSTR pszWdir = CMainFrame::GetWorkingDirectory(DIR_PLUGINPRESETS);
- if(pszWdir[0])
- dlg.m_ofn.lpstrInitialDir = pszWdir;
+ if(!m_pVstPlugin) return;
+ FileDlgResult files = CTrackApp::ShowOpenSaveFileDialog(true, "fxp", "",
+ "VST Program (*.fxp)|*.fxp||",
+ CMainFrame::GetWorkingDirectory(DIR_PLUGINPRESETS));
+ if(files.abort) return;
- if (!(dlg.DoModal() == IDOK)) return;
+ CMainFrame::SetWorkingDirectory(files.workingDirectory.c_str(), DIR_PLUGINPRESETS, true);
- CString sFile = dlg.GetPathName();
- CMainFrame::SetWorkingDirectory(sFile, DIR_PLUGINPRESETS, true);
-
- //TODO: exception handling to distinguish errors at this level.
- if (!(m_pVstPlugin->LoadProgram(sFile)))
- ::AfxMessageBox("Error loading preset. Are you sure it is for this plugin?");
- }
+ //TODO: exception handling to distinguish errors at this level.
+ if (!(m_pVstPlugin->LoadProgram(files.first_file.c_str())))
+ ::AfxMessageBox("Error loading preset. Are you sure it is for this plugin?");
}
VOID CAbstractVstEditor::OnSavePreset()
//-------------------------------------
{
- if (m_pVstPlugin)
- {
- CFileDialog dlg(FALSE, "fxp", NULL,
- OFN_HIDEREADONLY| OFN_OVERWRITEPROMPT | OFN_PATHMUSTEXIST | OFN_ENABLESIZING | OFN_NOREADONLYRETURN,
- "VST Program (*.fxp)|*.fxp||", theApp.m_pMainWnd);
- const LPCTSTR pszWdir = CMainFrame::GetWorkingDirectory(DIR_PLUGINPRESETS);
- if(pszWdir[0])
- dlg.m_ofn.lpstrInitialDir = pszWdir;
- if (!(dlg.DoModal() == IDOK)) return;
+ if(!m_pVstPlugin) return;
- CString sFile = dlg.GetPathName();
- CMainFrame::SetWorkingDirectory(sFile, DIR_PLUGINPRESETS, true);
+ FileDlgResult files = CTrackApp::ShowOpenSaveFileDialog(false, "fxp", "",
+ "VST Program (*.fxp)|*.fxp||",
+ CMainFrame::GetWorkingDirectory(DIR_PLUGINPRESETS));
+ if(files.abort) return;
- //TODO: exception handling
- if (!(m_pVstPlugin->SaveProgram(sFile)))
- ::AfxMessageBox("Error saving preset.");
- }
- return;
+ CMainFrame::SetWorkingDirectory(files.workingDirectory.c_str(), DIR_PLUGINPRESETS, true);
+
+ //TODO: exception handling
+ if (!(m_pVstPlugin->SaveProgram(files.first_file.c_str())))
+ ::AfxMessageBox("Error saving preset.");
}
VOID CAbstractVstEditor::OnRandomizePreset()
Modified: trunk/OpenMPT/mptrack/Ctrl_ins.cpp
===================================================================
--- trunk/OpenMPT/mptrack/Ctrl_ins.cpp 2009-12-17 21:42:45 UTC (rev 443)
+++ trunk/OpenMPT/mptrack/Ctrl_ins.cpp 2009-12-18 21:51:37 UTC (rev 444)
@@ -1529,31 +1529,22 @@
void CCtrlInstruments::OnInstrumentOpen()
//---------------------------------------
{
- CFileDialog dlg(TRUE,
- NULL,
- NULL,
- OFN_HIDEREADONLY | OFN_ENABLESIZING | OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST | OFN_ALLOWMULTISELECT,
- "All Instruments|*.xi;*.pat;*.iti;*.wav;*.aif;*.aiff|"
- "FastTracker II Instruments (*.xi)|*.xi|"
- "GF1 Patches (*.pat)|*.pat|"
- "Impulse Tracker Instruments (*.iti)|*.iti|"
- "All Files (*.*)|*.*||",
- this);
+ static int nLastIndex = 0;
- const LPCTSTR pszWdir = CMainFrame::GetWorkingDirectory(DIR_INSTRUMENTS);
- if(pszWdir[0])
- dlg.m_ofn.lpstrInitialDir = pszWdir;
+ FileDlgResult files = CTrackApp::ShowOpenSaveFileDialog(true, "", "",
+ "All Instruments|*.xi;*.pat;*.iti;*.wav;*.aif;*.aiff|"
+ "FastTracker II Instruments (*.xi)|*.xi|"
+ "GF1 Patches (*.pat)|*.pat|"
+ "Impulse Tracker Instruments (*.iti)|*.iti|"
+ "All Files (*.*)|*.*||",
+ CMainFrame::GetWorkingDirectory(DIR_INSTRUMENTS),
+ true,
+ &nLastIndex);
+ if(files.abort) return;
- const size_t bufferSize = 2048; //Note: This is possibly the maximum buffer size.
- vector<char> filenameBuffer(bufferSize, 0);
- dlg.GetOFN().lpstrFile = &filenameBuffer[0];
- dlg.GetOFN().nMaxFile = bufferSize;
+ CMainFrame::SetWorkingDirectory(files.workingDirectory.c_str(), DIR_INSTRUMENTS, true);
- if (dlg.DoModal() != IDOK) return;
-
- POSITION pos = dlg.GetStartPosition();
- size_t counter = 0;
- while(pos != NULL)
+ for(size_t counter = 0; counter < files.filenames.size(); counter++)
{
//If loading multiple instruments, advancing to next instrument and creating
//new instrument if necessary.
@@ -1568,12 +1559,10 @@
OnInstrumentNew();
}
- if(!OpenInstrument(dlg.GetNextPathName(pos)))
+ if(!OpenInstrument(files.filenames[counter].c_str()))
ErrorBox(IDS_ERR_FILEOPEN, this);
-
- counter++;
}
- filenameBuffer.clear();
+
if (m_pParent) m_pParent->InstrumentChanged(m_nInstrument);
SwitchToView();
}
@@ -1597,43 +1586,29 @@
}
SanitizeFilename(szFileName);
-// -> CODE#0019
-// -> DESC="correctly load ITI & XI instruments sample note map"
-// CFileDialog dlg(FALSE, (m_pSndFile->m_nType & MOD_TYPE_IT) ? "iti" : "xi",
-// szFileName,
-// OFN_HIDEREADONLY| OFN_OVERWRITEPROMPT | OFN_PATHMUSTEXIST | OFN_NOREADONLYRETURN,
-// "FastTracker II Instruments (*.xi)|*.xi|"
-// "Impulse Tracker Instruments (*.iti)|*.iti||",
-// this);
- CFileDialog dlg(FALSE, (m_pSndFile->m_nType & (MOD_TYPE_IT | MOD_TYPE_MPT)) ? "iti" : "xi",
- szFileName,
- OFN_HIDEREADONLY| OFN_ENABLESIZING | OFN_OVERWRITEPROMPT | OFN_PATHMUSTEXIST | OFN_NOREADONLYRETURN,
- ( m_pSndFile->m_nType & (MOD_TYPE_IT | MOD_TYPE_MPT) ? "Impulse Tracker Instruments (*.iti)|*.iti|"
- "FastTracker II Instruments (*.xi)|*.xi||"
- : "FastTracker II Instruments (*.xi)|*.xi|"
- "Impulse Tracker Instruments (*.iti)|*.iti||" ),
- this);
-// -! BUG_FIX#0019
-
+ FileDlgResult files = CTrackApp::ShowOpenSaveFileDialog(false, (m_pSndFile->GetType() == MOD_TYPE_XM) ? "xi" : "iti", szFileName,
+ (m_pSndFile->GetType() == MOD_TYPE_XM) ?
+ "FastTracker II Instruments (*.xi)|*.xi|"
+ "Impulse Tracker Instruments (*.iti)|*.iti||" :
+ "Impulse Tracker Instruments (*.iti)|*.iti|"
+ "FastTracker II Instruments (*.xi)|*.xi||",
+ CMainFrame::GetWorkingDirectory(DIR_INSTRUMENTS));
+ if(files.abort) return;
- const LPCTSTR pszWdir = CMainFrame::GetWorkingDirectory(DIR_INSTRUMENTS);
- if(pszWdir[0])
- dlg.m_ofn.lpstrInitialDir = pszWdir;
-
- if (dlg.DoModal() != IDOK) return;
BeginWaitCursor();
- _splitpath(dlg.GetPathName(), drive, path, NULL, ext);
+
+ _splitpath(files.first_file.c_str(), drive, path, NULL, ext);
BOOL bOk = FALSE;
if (!lstrcmpi(ext, ".iti"))
- bOk = m_pSndFile->SaveITIInstrument(m_nInstrument, dlg.GetPathName());
+ bOk = m_pSndFile->SaveITIInstrument(m_nInstrument, files.first_file.c_str());
else
- bOk = m_pSndFile->SaveXIInstrument(m_nInstrument, dlg.GetPathName());
+ bOk = m_pSndFile->SaveXIInstrument(m_nInstrument, files.first_file.c_str());
// -> CODE#0023
// -> DESC="IT project files (.itp)"
- int n = strlen(dlg.GetPathName());
+ int n = strlen(files.first_file.c_str());
if(n > _MAX_PATH) n = _MAX_PATH;
- strncpy(m_pSndFile->m_szInstrumentPath[m_nInstrument-1],dlg.GetPathName(),n);
+ strncpy(m_pSndFile->m_szInstrumentPath[m_nInstrument-1], files.first_file.c_str(),n);
m_pSndFile->instrumentModified[m_nInstrument-1] = FALSE;
// -! NEW_FEATURE#0023
@@ -1643,7 +1618,7 @@
strcpy(szFileName, drive);
strcat(szFileName, path);
- CMainFrame::SetWorkingDirectory(szFileName, DIR_INSTRUMENTS);
+ CMainFrame::SetWorkingDirectory(files.workingDirectory.c_str(), DIR_INSTRUMENTS);
// -> CODE#0023
// -> DESC="IT project files (.itp)"
Modified: trunk/OpenMPT/mptrack/Ctrl_smp.cpp
===================================================================
--- trunk/OpenMPT/mptrack/Ctrl_smp.cpp 2009-12-17 21:42:45 UTC (rev 443)
+++ trunk/OpenMPT/mptrack/Ctrl_smp.cpp 2009-12-18 21:51:37 UTC (rev 444)
@@ -902,38 +902,25 @@
//-------------------------------
{
static int nLastIndex = 0;
- CFileDialog dlg(TRUE,
- NULL,
- NULL,
- OFN_HIDEREADONLY | OFN_ENABLESIZING | OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST | OFN_ALLOWMULTISELECT,
- "All Samples|*.wav;*.pat;*.s3i;*.smp;*.snd;*.raw;*.xi;*.aif;*.aiff;*.its;*.8sv;*.8svx;*.svx;*.pcm|"
- "Wave Files (*.wav)|*.wav|"
- "XI Samples (*.xi)|*.xi|"
- "Impulse Tracker Samples (*.its)|*.its|"
- "ScreamTracker Samples (*.s3i,*.smp)|*.s3i;*.smp|"
- "GF1 Patches (*.pat)|*.pat|"
- "AIFF Files (*.aiff;*.8svx)|*.aif;*.aiff;*.8sv;*.8svx;*.svx|"
- "Raw Samples (*.raw,*.snd,*.pcm)|*.raw;*.snd;*.pcm|"
- "All Files (*.*)|*.*||",
- this);
+
+ FileDlgResult files = CTrackApp::ShowOpenSaveFileDialog(true, "", "",
+ "All Samples|*.wav;*.pat;*.s3i;*.smp;*.snd;*.raw;*.xi;*.aif;*.aiff;*.its;*.8sv;*.8svx;*.svx;*.pcm|"
+ "Wave Files (*.wav)|*.wav|"
+ "XI Samples (*.xi)|*.xi|"
+ "Impulse Tracker Samples (*.its)|*.its|"
+ "ScreamTracker Samples (*.s3i,*.smp)|*.s3i;*.smp|"
+ "GF1 Patches (*.pat)|*.pat|"
+ "AIFF Files (*.aiff;*.8svx)|*.aif;*.aiff;*.8sv;*.8svx;*.svx|"
+ "Raw Samples (*.raw,*.snd,*.pcm)|*.raw;*.snd;*.pcm|"
+ "All Files (*.*)|*.*||",
+ CMainFrame::GetWorkingDirectory(DIR_SAMPLES),
+ true,
+ &nLastIndex);
+ if(files.abort) return;
- const LPCTSTR pszWdir = CMainFrame::GetWorkingDirectory(DIR_SAMPLES);
- if(pszWdir[0])
- dlg.m_ofn.lpstrInitialDir = pszWdir;
+ CMainFrame::SetWorkingDirectory(files.workingDirectory.c_str(), DIR_SAMPLES, true);
- dlg.m_ofn.nFilterIndex = nLastIndex;
- const size_t bufferSize = 2048; //Note: This is possibly the maximum buffer size in MFC 7(this note was written November 2006).
- vector<char> filenameBuffer(bufferSize, 0);
- dlg.GetOFN().lpstrFile = &filenameBuffer[0];
- dlg.GetOFN().nMaxFile = bufferSize;
-
- if (dlg.DoModal() != IDOK) return;
-
- nLastIndex = dlg.m_ofn.nFilterIndex;
-
- POSITION pos = dlg.GetStartPosition();
- size_t counter = 0;
- while(pos != NULL)
+ for(size_t counter = 0; counter < files.filenames.size(); counter++)
{
//If loading multiple samples, advancing to next sample and creating
//new one if necessary.
@@ -944,16 +931,13 @@
else
m_nSample++;
- if(m_nSample > m_pSndFile->GetNumSamples())
+ if(m_nSample > m_pSndFile->GetNumSamples())
OnSampleNew();
}
- if(!OpenSample(dlg.GetNextPathName(pos)))
+ if(!OpenSample(files.filenames[counter].c_str()))
ErrorBox(IDS_ERR_FILEOPEN, this);
-
- counter++;
}
- filenameBuffer.clear();
SwitchToView();
}
@@ -1000,24 +984,20 @@
}
SanitizeFilename(szFileName);
- CFileDialog dlg(FALSE, "wav",
- szFileName,
- OFN_HIDEREADONLY| OFN_ENABLESIZING | OFN_OVERWRITEPROMPT | OFN_PATHMUSTEXIST | OFN_NOREADONLYRETURN,
- "Wave File (*.wav)|*.wav|"
- "RAW Audio (*.raw)|*.raw||",
- this);
- const LPCTSTR pszWdir = CMainFrame::GetWorkingDirectory(DIR_SAMPLES);
- if(pszWdir[0])
- dlg.m_ofn.lpstrInitialDir = pszWdir;
- if (dlg.DoModal() != IDOK) return;
+ FileDlgResult files = CTrackApp::ShowOpenSaveFileDialog(false, "wav", szFileName,
+ "Wave File (*.wav)|*.wav|"
+ "RAW Audio (*.raw)|*.raw||",
+ CMainFrame::GetWorkingDirectory(DIR_SAMPLES));
+ if(files.abort) return;
+
BeginWaitCursor();
TCHAR ext[_MAX_EXT];
- _splitpath(dlg.GetPathName(), NULL, NULL, NULL, ext);
+ _splitpath(files.first_file.c_str(), NULL, NULL, NULL, ext);
bool bOk = false;
UINT iMinSmp = m_nSample, iMaxSmp = m_nSample;
- CString sFilename = dlg.GetPathName(), sNumberFormat;
+ CString sFilename = files.first_file.c_str(), sNumberFormat;
if(bBatchSave)
{
iMinSmp = 1;
@@ -1040,7 +1020,7 @@
SanitizeFilename(sSampleName);
SanitizeFilename(sSampleFilename);
- sFilename = dlg.GetPathName();
+ sFilename = files.first_file.c_str();
sFilename.Replace("%sample_number%", sSampleNumber);
sFilename.Replace("%sample_filename%", sSampleFilename);
sFilename.Replace("%sample_name%", sSampleName);
@@ -1058,7 +1038,7 @@
ErrorBox(IDS_ERR_SAVESMP, this);
} else
{
- CMainFrame::SetWorkingDirectory(dlg.GetPathName(), DIR_SAMPLES, true);
+ CMainFrame::SetWorkingDirectory(files.workingDirectory.c_str(), DIR_SAMPLES, true);
}
SwitchToView();
}
Modified: trunk/OpenMPT/mptrack/KeyConfigDlg.cpp
===================================================================
--- trunk/OpenMPT/mptrack/KeyConfigDlg.cpp 2009-12-17 21:42:45 UTC (rev 443)
+++ trunk/OpenMPT/mptrack/KeyConfigDlg.cpp 2009-12-18 21:51:37 UTC (rev 444)
@@ -646,37 +646,29 @@
void COptionsKeyboard::OnLoad()
{
- CFileDialog dlg(TRUE, "mkb", m_sFullPathName,
- OFN_HIDEREADONLY| OFN_OVERWRITEPROMPT | OFN_PATHMUSTEXIST | OFN_ENABLESIZING | OFN_NOREADONLYRETURN,
- "OpenMPT Key Bindings (*.mkb)|*.mkb||", theApp.m_pMainWnd);
- if (CMainFrame::m_szKbdFile[0])
- dlg.m_ofn.lpstrInitialDir = CMainFrame::m_szKbdFile;
+ std::string filename = m_sFullPathName;
+ FileDlgResult files = CTrackApp::ShowOpenSaveFileDialog(true, "mkb", filename,
+ "OpenMPT Key Bindings (*.mkb)|*.mkb||",
+ CMainFrame::m_szKbdFile);
+ if(files.abort) return;
- if (dlg.DoModal() == IDOK)
- {
- m_sFullPathName=dlg.GetPathName();
- plocalCmdSet->LoadFile(m_sFullPathName);
- ForceUpdateGUI();
- TentativeSetToDefaultFile(m_sFullPathName);
- }
-
+ m_sFullPathName = files.first_file.c_str();
+ plocalCmdSet->LoadFile(m_sFullPathName);
+ ForceUpdateGUI();
+ TentativeSetToDefaultFile(m_sFullPathName);
}
void COptionsKeyboard::OnSave()
{
- CFileDialog dlg(FALSE, "mkb", m_sFullPathName,
- OFN_HIDEREADONLY| OFN_OVERWRITEPROMPT | OFN_PATHMUSTEXIST | OFN_ENABLESIZING | OFN_NOREADONLYRETURN,
- "OpenMPT Key Bindings (*.mkb)|*.mkb||", theApp.m_pMainWnd);
- if (CMainFrame::m_szKbdFile[0])
- dlg.m_ofn.lpstrInitialDir = CMainFrame::m_szKbdFile;
-
- if (dlg.DoModal() == IDOK)
- {
- m_sFullPathName=dlg.GetPathName();
- plocalCmdSet->SaveFile(m_sFullPathName, m_bDebugSave.GetCheck());
- TentativeSetToDefaultFile(m_sFullPathName);
- }
-
+ std::string filename = m_sFullPathName;
+ FileDlgResult files = CTrackApp::ShowOpenSaveFileDialog(false, "mkb", filename,
+ "OpenMPT Key Bindings (*.mkb)|*.mkb||",
+ CMainFrame::m_szKbdFile);
+ if(files.abort) return;
+
+ m_sFullPathName = files.first_file.c_str();
+ plocalCmdSet->SaveFile(m_sFullPathName, m_bDebugSave.GetCheck());
+ TentativeSetToDefaultFile(m_sFullPathName);
}
bool COptionsKeyboard::TentativeSetToDefaultFile(CString m_sFullPathName)
Modified: trunk/OpenMPT/mptrack/MainFrm.cpp
===================================================================
--- trunk/OpenMPT/mptrack/MainFrm.cpp 2009-12-17 21:42:45 UTC (rev 443)
+++ trunk/OpenMPT/mptrack/MainFrm.cpp 2009-12-18 21:51:37 UTC (rev 444)
@@ -132,7 +132,6 @@
BOOL CMainFrame::gbPatternVUMeters = FALSE;
BOOL CMainFrame::gbPatternPluginNames = TRUE;
DWORD CMainFrame::gdwNotificationType = MPTNOTIFY_DEFAULT;
-UINT CMainFrame::m_nFilterIndex = 0;
UINT CMainFrame::m_nLastOptionsPage = 0;
BOOL CMainFrame::gbMdiMaximize = FALSE;
bool CMainFrame::gbShowHackControls = false;
@@ -2418,45 +2417,40 @@
void CMainFrame::OnAddDlsBank()
//-----------------------------
{
- CFileDialog dlg(TRUE,
- ".dls",
- NULL,
- OFN_HIDEREADONLY | OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST,
- "All Sound Banks|*.dls;*.sbk;*.sf2;*.mss|"
- "Downloadable Sounds Banks (*.dls)|*.dls;*.mss|"
- "SoundFont 2.0 Banks (*.sf2)|*.sbk;*.sf2|"
- "All Files (*.*)|*.*||",
- this);
- if (dlg.DoModal() == IDOK)
+ FileDlgResult files = CTrackApp::ShowOpenSaveFileDialog(true, "dls", "",
+ "All Sound Banks|*.dls;*.sbk;*.sf2;*.mss|"
+ "Downloadable Sounds Banks (*.dls)|*.dls;*.mss|"
+ "SoundFont 2.0 Banks (*.sf2)|*.sbk;*.sf2|"
+ "All Files (*.*)|*.*||",
+ "",
+ true);
+ if(files.abort) return;
+
+ BeginWaitCursor();
+ for(size_t counter = 0; counter < files.filenames.size(); counter++)
{
- BeginWaitCursor();
- CTrackApp::AddDLSBank(dlg.GetPathName());
- m_wndTree.RefreshDlsBanks();
- EndWaitCursor();
+ CTrackApp::AddDLSBank(files.filenames[counter].c_str());
}
+ m_wndTree.RefreshDlsBanks();
+ EndWaitCursor();
}
void CMainFrame::OnImportMidiLib()
//--------------------------------
{
- CFileDialog dlg(TRUE,
- NULL,
- NULL,
- OFN_HIDEREADONLY | OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST,
- "Text and INI files (*.txt,*.ini)|*.txt;*.ini;*.dls;*.sf2;*.sbk|"
- "Downloadable Sound Banks (*.dls)|*.dls;*.mss|"
- "SoundFont 2.0 banks (*.sf2)|*.sbk;*.sf2|"
- "Gravis UltraSound (ultrasnd.ini)|ultrasnd.ini|"
- "All Files (*.*)|*.*||",
- this);
- if (dlg.DoModal() == IDOK)
- {
- BeginWaitCursor();
- CTrackApp::ImportMidiConfig(dlg.GetPathName());
- m_wndTree.RefreshMidiLibrary();
- EndWaitCursor();
- }
+ FileDlgResult files = CTrackApp::ShowOpenSaveFileDialog(true, "", "",
+ "Text and INI files (*.txt,*.ini)|*.txt;*.ini;*.dls;*.sf2;*.sbk|"
+ "Downloadable Sound Banks (*.dls)|*.dls;*.mss|"
+ "SoundFont 2.0 banks (*.sf2)|*.sbk;*.sf2|"
+ "Gravis UltraSound (ultrasnd.ini)|ultrasnd.ini|"
+ "All Files (*.*)|*.*||");
+ if(files.abort) return;
+
+ BeginWaitCursor();
+ CTrackApp::ImportMidiConfig(files.first_file.c_str());
+ m_wndTree.RefreshMidiLibrary();
+ EndWaitCursor();
}
Modified: trunk/OpenMPT/mptrack/Mainfrm.h
===================================================================
--- trunk/OpenMPT/mptrack/Mainfrm.h 2009-12-17 21:42:45 UTC (rev 443)
+++ trunk/OpenMPT/mptrack/Mainfrm.h 2009-12-18 21:51:37 UTC (rev 444)
@@ -368,7 +368,7 @@
CString m_csRegSettings;
CString m_csRegWindow;
// Globals
- static UINT m_nLastOptionsPage, m_nFilterIndex;
+ static UINT m_nLastOptionsPage;
static BOOL gbMdiMaximize;
static bool gbShowHackControls;
static LONG glCtrlWindowHeight, glTreeWindowWidth, glTreeSplitRatio;
Modified: trunk/OpenMPT/mptrack/Moddoc.cpp
===================================================================
--- trunk/OpenMPT/mptrack/Moddoc.cpp 2009-12-17 21:42:45 UTC (rev 443)
+++ trunk/OpenMPT/mptrack/Moddoc.cpp 2009-12-18 21:51:37 UTC (rev 444)
@@ -22,12 +22,12 @@
static char THIS_FILE[] = __FILE__;
#endif
-const TCHAR* const FileFilterMOD = TEXT("ProTracker Modules (*.mod)|*.mod||");
-const TCHAR* const FileFilterXM = TEXT("FastTracker Modules (*.xm)|*.xm||");
-const TCHAR* const FileFilterS3M = TEXT("ScreamTracker Modules (*.s3m)|*.s3m||");
-const TCHAR* const FileFilterIT = TEXT("Impulse Tracker Modules (*.it)|*.it||");
-const TCHAR* const FileFilterITP = TEXT("Impulse Tracker Projects (*.itp)|*.itp||");
-const TCHAR* const FileFilterMPT = TEXT("OpenMPT Modules (*.mptm)|*.mptm||");
+const std::string FileFilterMOD = _T("ProTracker Modules (*.mod)|*.mod||");
+const std::string FileFilterXM = _T("FastTracker Modules (*.xm)|*.xm||");
+const std::string FileFilterS3M = _T("ScreamTracker Modules (*.s3m)|*.s3m||");
+const std::string FileFilterIT = _T("Impulse Tracker Modules (*.it)|*.it||");
+const std::string FileFilterITP = _T("Impulse Tracker Projects (*.itp)|*.itp||");
+const std::string FileFilterMPT = _T("OpenMPT Modules (*.mptm)|*.mptm||");
/////////////////////////////////////////////////////////////////////////////
// CModDoc
@@ -489,25 +489,25 @@
CHAR s[_MAX_PATH] = "";
CHAR path[_MAX_PATH]="", drive[_MAX_DRIVE]="";
CHAR fname[_MAX_FNAME]="", fext[_MAX_EXT]="";
- LPCSTR lpszFilter = NULL, lpszDefExt = NULL;
+ std::string extFilter = "", defaultExtension = "";
switch(m_SndFile.GetType())
{
case MOD_TYPE_MOD:
MsgBoxHidable(ModCompatibilityExportTip);
- lpszDefExt = "mod";
- lpszFilter = FileFilterMOD;
+ defaultExtension = "mod";
+ extFilter = FileFilterMOD;
strcpy(fext, ".mod");
break;
case MOD_TYPE_S3M:
- lpszDefExt = "s3m";
- lpszFilter = FileFilterS3M;
+ defaultExtension = "s3m";
+ extFilter = FileFilterS3M;
strcpy(fext, ".s3m");
break;
case MOD_TYPE_XM:
MsgBoxHidable(XMCompatibilityExportTip);
- lpszDefExt = "xm";
- lpszFilter = FileFilterXM;
+ defaultExtension = "xm";
+ extFilter = FileFilterXM;
strcpy(fext, ".xm");
break;
case MOD_TYPE_IT:
@@ -517,22 +517,22 @@
// lpszFilter = "Impulse Tracker Modules (*.it)|*.it||";
// strcpy(fext, ".it");
if(m_SndFile.m_dwSongFlags & SONG_ITPROJECT){
- lpszDefExt = "itp";
- lpszFilter = FileFilterITP;
+ defaultExtension = "itp";
+ extFilter = FileFilterITP;
strcpy(fext, ".itp");
}
else
{
MsgBoxHidable(ItCompatibilityExportTip);
- lpszDefExt = "it";
- lpszFilter = FileFilterIT;
+ defaultExtension = "it";
+ extFilter = FileFilterIT;
strcpy(fext, ".it");
}
// -! NEW_FEATURE#0023
break;
case MOD_TYPE_MPT:
- lpszDefExt = "mptm";
- lpszFilter = FileFilterMPT;
+ defaultExtension = "mptm";
+ extFilter = FileFilterMPT;
strcpy(fext, ".mptm");
break;
default:
@@ -547,18 +547,15 @@
strcat(s, path);
strcat(s, fname);
strcat(s, fext);
- CFileDialog dlg(FALSE, lpszDefExt, s,
- OFN_HIDEREADONLY| OFN_ENABLESIZING | OFN_OVERWRITEPROMPT | OFN_PATHMUSTEXIST | OFN_NOREADONLYRETURN,
- lpszFilter,
- theApp.m_pMainWnd);
+
+ FileDlgResult files = CTrackApp::ShowOpenSaveFileDialog(false, defaultExtension, s,
+ extFilter,
+ CMainFrame::GetWorkingDirectory(DIR_MODS));
+ if(files.abort) return FALSE;
- const LPCTSTR pszWdir = CMainFrame::GetWorkingDirectory(DIR_MODS);
- if(pszWdir[0])
- dlg.m_ofn.lpstrInitialDir = pszWdir;
+ CMainFrame::SetWorkingDirectory(files.workingDirectory.c_str(), DIR_MODS, true);
- if (dlg.DoModal() != IDOK) return FALSE;
- strcpy(s, dlg.GetPathName());
- CMainFrame::SetWorkingDirectory(s, DIR_MODS, true);
+ strcpy(s, files.first_file.c_str());
_splitpath(s, drive, path, fname, fext);
} else
{
@@ -1415,20 +1412,20 @@
if ((!pMainFrm) || (!m_SndFile.GetType())) return;
_splitpath(GetPathName(), NULL, NULL, fname, NULL);
- CFileDialog dlg(FALSE, "wav", fname,
- OFN_HIDEREADONLY | OFN_ENABLESIZING | OFN_OVERWRITEPROMPT | OFN_PATHMUSTEXIST | OFN_NOREADONLYRETURN,
- "Wave Files (*.wav)|*.wav||", pMainFrm);
- dlg.m_ofn.lpstrInitialDir = CMainFrame::GetWorkingDirectory(DIR_EXPORT);
CWaveConvert wsdlg(pMainFrm, nMinOrder, nMaxOrder);
if (wsdlg.DoModal() != IDOK) return;
- if (dlg.DoModal() != IDOK) return; //rewbs: made filename dialog appear after wav settings dialog
+ FileDlgResult files = CTrackApp::ShowOpenSaveFileDialog(false, "wav", fname,
+ "Wave Files (*.wav)|*.wav||",
+ CMainFrame::GetWorkingDirectory(DIR_EXPORT));
+ if(files.abort) return;
+
// will set default dir here because there's no setup option for export dir yet (feel free to add one...)
- pMainFrm->SetDefaultDirectory(dlg.GetPathName(), DIR_EXPORT, true);
+ CMainFrame::SetDefaultDirectory(files.workingDirectory.c_str(), DIR_EXPORT, true);
TCHAR s[_MAX_PATH];
- strcpy(s, dlg.GetPathName());
+ strcpy(s, files.first_file.c_str());
// Saving as wave file
UINT p = 0, n = 1;
@@ -1508,59 +1505,58 @@
void CModDoc::OnFileMP3Convert()
//------------------------------
{
+ int nFilterIndex = 0;
TCHAR sFName[_MAX_FNAME] = "";
CMainFrame *pMainFrm = CMainFrame::GetMainFrame();
if ((!pMainFrm) || (!m_SndFile.GetType())) return;
_splitpath(GetPathName(), NULL, NULL, sFName, NULL);
- CFileDialog dlg(FALSE, "mp3", sFName,
- OFN_HIDEREADONLY | OFN_ENABLESIZING | OFN_OVERWRITEPROMPT | OFN_PATHMUSTEXIST | OFN_NOREADONLYRETURN,
- "MPEG Layer III Files (*.mp3)|*.mp3|Layer3 Wave Files (*.wav)|*.wav||", pMainFrm);
- dlg.m_ofn.nFilterIndex = 0;
-
- dlg.m_ofn.lpstrInitialDir = CMainFrame::GetWorkingDirectory(DIR_EXPORT);
- if (dlg.DoModal() == IDOK)
- {
- MPEGLAYER3WAVEFORMAT wfx;
- HACMDRIVERID hadid;
+ FileDlgResult files = CTrackApp::ShowOpenSaveFileDialog(false, "mp3", sFName,
+ "MPEG Layer III Files (*.mp3)|*.mp3|Layer3 Wave Files (*.wav)|*.wav||",
+ CMainFrame::GetWorkingDirectory(DIR_EXPORT),
+ false,
+ &nFilterIndex);
+ if(files.abort) return;
- // will set default dir here because there's no setup option for export dir yet (feel free to add one...)
- pMainFrm->SetDefaultDirectory(dlg.GetPathName(), DIR_EXPORT, true);
+ MPEGLAYER3WAVEFORMAT wfx;
+ HACMDRIVERID hadid;
- TCHAR s[_MAX_PATH], fext[_MAX_EXT];
- strcpy(s, dlg.GetPathName());
- _splitpath(s, NULL, NULL, NULL, fext);
- if (strlen(fext) <= 1)
- {
- int l = strlen(s) - 1;
- if ((l >= 0) && (s[l] == '.')) s[l] = 0;
- strcpy(fext, (dlg.m_ofn.nFilterIndex == 2) ? ".wav" : ".mp3");
- strcat(s, fext);
- }
- CLayer3Convert wsdlg(&m_SndFile, pMainFrm);
- if (m_SndFile.m_szNames[0][0]) wsdlg.m_bSaveInfoField = TRUE;
- if (wsdlg.DoModal() != IDOK) return;
- wsdlg.GetFormat(&wfx, &hadid);
- // Saving as mpeg file
- BOOL bplaying = FALSE;
- UINT pos = m_SndFile.GetCurrentPos();
- bplaying = TRUE;
- pMainFrm->PauseMod();
- m_SndFile.SetCurrentPos(0);
+ // will set default dir here because there's no setup option for export dir yet (feel free to add one...)
+ pMainFrm->SetDefaultDirectory(files.workingDirectory.c_str(), DIR_EXPORT, true);
- m_SndFile.m_dwSongFlags &= ~SONG_PATTERNLOOP;
-
- // Saving file
- CFileTagging *pTag = (wsdlg.m_bSaveInfoField) ? &wsdlg.m_FileTags : NULL;
- CDoAcmConvert dwcdlg(&m_SndFile, s, &wfx.wfx, hadid, pTag, pMainFrm);
- dwcdlg.m_dwFileLimit = wsdlg.m_dwFileLimit;
- dwcdlg.m_dwSongLimit = wsdlg.m_dwSongLimit;
- dwcdlg.DoModal();
- m_SndFile.SetCurrentPos(pos);
- m_SndFile.GetLength(TRUE);
- CMainFrame::UpdateAudioParameters(TRUE);
+ TCHAR s[_MAX_PATH], fext[_MAX_EXT];
+ strcpy(s, files.first_file.c_str());
+ _splitpath(s, NULL, NULL, NULL, fext);
+ if (strlen(fext) <= 1)
+ {
+ int l = strlen(s) - 1;
+ if ((l >= 0) && (s[l] == '.')) s[l] = 0;
+ strcpy(fext, (nFilterIndex == 2) ? ".wav" : ".mp3");
+ strcat(s, fext);
}
+ CLayer3Convert wsdlg(&m_SndFile, pMainFrm);
+ if (m_SndFile.m_szNames[0][0]) wsdlg.m_bSaveInfoField = TRUE;
+ if (wsdlg.DoModal() != IDOK) return;
+ wsdlg.GetFormat(&wfx, &hadid);
+ // Saving as mpeg file
+ BOOL bplaying = FALSE;
+ UINT pos = m_SndFile.GetCurrentPos();
+ bplaying = TRUE;
+ pMainFrm->PauseMod();
+ m_SndFile.SetCurrentPos(0);
+
+ m_SndFile.m_dwSongFlags &= ~SONG_PATTERNLOOP;
+
+ // Saving file
+ CFileTagging *pTag = (wsdlg.m_bSaveInfoField) ? &wsdlg.m_FileTags : NULL;
+ CDoAcmConvert dwcdlg(&m_SndFile, s, &wfx.wfx, hadid, pTag, pMainFrm);
+ dwcdlg.m_dwFileLimit = wsdlg.m_dwFileLimit;
+ dwcdlg.m_dwSongLimit = wsdlg.m_dwSongLimit;
+ dwcdlg.DoModal();
+ m_SndFile.SetCurrentPos(pos);
+ m_SndFile.GetLength(TRUE);
+ CMainFrame::UpdateAudioParameters(TRUE);
}
@@ -1577,19 +1573,17 @@
strcat(s, path);
strcat(s, fname);
strcat(s, ".mid");
- CFileDialog dlg(FALSE, "mid", s,
- OFN_HIDEREADONLY | OFN_ENABLESIZING | OFN_OVERWRITEPROMPT | OFN_PATHMUSTEXIST | OFN_NOREADONLYRETURN,
- "Midi Files (*.mid,*.rmi)|*.mid;*.rmi||", pMainFrm);
- dlg.m_ofn.nFilterIndex = 0;
- if (dlg.DoModal() == IDOK)
+
+ FileDlgResult files = CTrackApp::ShowOpenSaveFileDialog(false, "mid", s,
+ "Midi Files (*.mid,*.rmi)|*.mid;*.rmi||");
+ if(files.abort) return;
+
+ CModToMidi mididlg(files.first_file.c_str(), &m_SndFile, pMainFrm);
+ if (mididlg.DoModal() == IDOK)
{
- CModToMidi mididlg(dlg.GetPathName(), &m_SndFile, pMainFrm);
- if (mididlg.DoModal() == IDOK)
- {
- BeginWaitCursor();
- mididlg.DoConvert();
- EndWaitCursor();
- }
+ BeginWaitCursor();
+ mididlg.DoConvert();
+ EndWaitCursor();
}
}
@@ -1598,9 +1592,9 @@
//-------------------------------------
{
CHAR path[_MAX_PATH]="", drive[_MAX_DRIVE]="";
- CHAR s[_MAX_PATH], fname[_MAX_FNAME]="";
+ CHAR fname[_MAX_FNAME]="";
CMainFrame *pMainFrm = CMainFrame::GetMainFrame();
- CString ext, pattern;
+ std::string ext, pattern, filename;
UINT type = m_SndFile.GetType();
@@ -1639,35 +1633,30 @@
}
_splitpath(GetPathName(), drive, path, fname, NULL);
- strcpy(s, drive);
- strcat(s, path);
- strcat(s, fname);
- if (!strstr(fname, "compat")) {
- strcat(s, ".compat.");
- } else {
- strcat(s, ".");
- }
- strcat(s, ext);
- CFileDialog dlg(FALSE, ext, s,
- OFN_HIDEREADONLY | OFN_ENABLESIZING | OFN_OVERWRITEPROMPT | OFN_PATHMUSTEXIST | OFN_NOREADONLYRETURN,
- pattern, pMainFrm);
- dlg.m_ofn.lpstrInitialDir = CMainFrame::GetWorkingDirectory(DIR_MODS);
+ filename = drive;
+ filename += path;
+ filename += fname;
+ if (!strstr(fname, "compat"))
+ filename += ".compat.";
+ else
+ filename += ".";
+ filename += ext;
- if (dlg.DoModal() != IDOK){
- return;
- }
+ FileDlgResult files = CTrackApp::ShowOpenSaveFileDialog(false, ext, filename, pattern, CMainFrame::GetWorkingDirectory(DIR_MODS));
+ if(files.abort) return;
+
switch (type)
{
case MOD_TYPE_MOD:
- m_SndFile.SaveMod(dlg.GetPathName(), 0, true);
+ m_SndFile.SaveMod(files.first_file.c_str(), 0, true);
SetModified(); // Compatibility save may adjust samples so set modified...
m_ShowSavedialog = true; // ...and force save dialog to appear when saving.
break;
case MOD_TYPE_XM:
- m_SndFile.SaveXM(dlg.GetPathName(), 0, true);
+ m_SndFile.SaveXM(files.first_file.c_str(), 0, true);
break;
case MOD_TYPE_IT:
- m_SndFile.SaveCompatIT(dlg.GetPathName());
+ m_SndFile.SaveCompatIT(files.first_file.c_str());
break;
}
}
Modified: trunk/OpenMPT/mptrack/Moptions.cpp
===================================================================
--- trunk/OpenMPT/mptrack/Moptions.cpp 2009-12-17 21:42:45 UTC (rev 443)
+++ trunk/OpenMPT/mptrack/Moptions.cpp 2009-12-18 21:51:37 UTC (rev 444)
@@ -514,16 +514,10 @@
void COptionsColors::OnLoadColorScheme()
//--------------------------------------
{
- CFileDialog dlg(TRUE, NULL, NULL,
- OFN_ENABLESIZING | OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST,
- "OpenMPT Color Schemes|*.mptcolor|"
- "All Files (*.*)|*.*||",
- this);
- dlg.m_ofn.lpstrInitialDir = theApp.GetConfigPath();
- if (dlg.DoModal() != IDOK) return;
-
- TCHAR sFilename[MAX_PATH];
- strcpy(sFilename, dlg.GetPathName());
+ FileDlgResult files = CTrackApp::ShowOpenSaveFileDialog(true, "mptcolor", "",
+ "OpenMPT Color Schemes|*.mptcolor||",
+ theApp.GetConfigPath());
+ if(files.abort) return;
// Ensure that all colours are reset (for outdated colour schemes)
OnPresetMPT();
@@ -531,7 +525,7 @@
{
TCHAR sKeyName[16];
wsprintf(sKeyName, "Color%02d", i);
- CustomColors[i] = CMainFrame::GetPrivateProfileLong("Colors", sKeyName, CustomColors[i], sFilename);
+ CustomColors[i] = CMainFrame::GetPrivateProfileLong("Colors", sKeyName, CustomColors[i], files.first_file.c_str());
}
OnPreviewChanged();
}
@@ -539,21 +533,16 @@
void COptionsColors::OnSaveColorScheme()
//--------------------------------------
{
- CFileDialog dlg(FALSE, "mptcolor", NULL,
- OFN_HIDEREADONLY| OFN_ENABLESIZING | OFN_OVERWRITEPROMPT | OFN_PATHMUSTEXIST | OFN_NOREADONLYRETURN,
- "OpenMPT Color Schemes|*.mptcolor|",
- this);
- dlg.m_ofn.lpstrInitialDir = theApp.GetConfigPath();
- if (dlg.DoModal() != IDOK) return;
+ FileDlgResult files = CTrackApp::ShowOpenSaveFileDialog(false, "mptcolor", "",
+ "OpenMPT Color Schemes|*.mptcolor||",
+ theApp.GetConfigPath());
+ if(files.abort) return;
- TCHAR sFilename[MAX_PATH];
- strcpy(sFilename, dlg.GetPathName());
-
for(int i = 0; i < MAX_MODCOLORS; i++)
{
TCHAR sKeyName[16];
wsprintf(sKeyName, "Color%02d", i);
- CMainFrame::WritePrivateProfileLong("Colors", sKeyName, CustomColors[i], sFilename);
+ CMainFrame::WritePrivateProfileLong("Colors", sKeyName, CustomColors[i], files.first_file.c_str());
}
}
Modified: trunk/OpenMPT/mptrack/Mptrack.cpp
===================================================================
--- trunk/OpenMPT/mptrack/Mptrack.cpp 2009-12-17 21:42:45 UTC (rev 443)
+++ trunk/OpenMPT/mptrack/Mptrack.cpp 2009-12-18 21:51:37 UTC (rev 444)
@@ -1430,63 +1430,47 @@
void CTrackApp::OnFileOpen()
//--------------------------
{
- CFileDialog dlg(TRUE,
- NULL,
- NULL,
- OFN_HIDEREADONLY | OFN_ENABLESIZING | OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST | OFN_FORCESHOWHIDDEN | OFN_ALLOWMULTISELECT,
-// -> CODE#0023
-// -> DESC="IT project files (.itp)"
- "All Modules|*.mod;*.nst;*.wow;*.s3m;*.stm;*.669;*.mtm;*.xm;*.it;*.itp;*.mptm;*.ult;*.mdz;*.s3z;*.xmz;*.itz;mod.*;*.far;*.mdl;*.okt;*.dmf;*.ptm;*.mdr;*.med;*.ams;*.dbm;*.dsm;*.mid;*.rmi;*.smf;*.umx;*.amf;*.psm;*.mt2;*.gdm;*.imf;*.j2b"
- #ifndef NO_MO3_SUPPORT
- ";*.mo3"
- #endif
- "|"
- "Compressed Modules (*.mdz;*.s3z;*.xmz;*.itz"
- #ifndef NO_MO3_SUPPORT
- ";*.mo3"
- #endif
- ")|*.mdz;*.s3z;*.xmz;*.itz;*.mdr;*.zip;*.rar;*.lha"
- #ifndef NO_MO3_SUPPORT
- ";*.mo3"
- #endif
- "|"
-// -! NEW_FEATURE#0023
- "ProTracker Modules (*.mod,*.nst)|*.mod;mod.*;*.mdz;*.nst;*.m15|"
- "ScreamTracker Modules (*.s3m,*.stm)|*.s3m;*.stm;*.s3z|"
- "FastTracker Modules (*.xm)|*.xm;*.xmz|"
- "Impulse Tracker Modules (*.it)|*.it;*.itz|"
-// -> CODE#0023
-// -> DESC="IT project files (.itp)"
- "Impulse Tracker Projects (*.itp)|*.itp;*.itpz|"
-// -! NEW_FEATURE#0023
- "OpenMPT Modules (*.mptm)|*.mptm;*.mptmz|"
- "Other Modules (mtm,okt,mdl,669,far,...)|*.mtm;*.669;*.ult;*.wow;*.far;*.mdl;*.okt;*.dmf;*.ptm;*.med;*.ams;*.dbm;*.dsm;*.umx;*.amf;*.psm;*.mt2;*.gdm;*.imf;*.j2b|"
- "Wave Files (*.wav)|*.wav|"
- "Midi Files (*.mid,*.rmi)|*.mid;*.rmi;*.smf|"
- "All Files (*.*)|*.*||",
- NULL);
- dlg.m_ofn.nFilterIndex = CMainFrame::m_nFilterIndex;
+ static int nFilterIndex = 0;
+ FileDlgResult files = ShowOpenSaveFileDialog(true, "", "",
+ "All Modules|*.mod;*.nst;*.wow;*.s3m;*.stm;*.669;*.mtm;*.xm;*.it;*.itp;*.mptm;*.ult;*.mdz;*.s3z;*.xmz;*.itz;mod.*;*.far;*.mdl;*.okt;*.dmf;*.ptm;*.mdr;*.med;*.ams;*.dbm;*.dsm;*.mid;*.rmi;*.smf;*.umx;*.amf;*.psm;*.mt2;*.gdm;*.imf;*.j2b"
+#ifndef NO_MO3_SUPPORT
+ ";*.mo3"
+#endif
+ "|"
+ "Compressed Modules (*.mdz;*.s3z;*.xmz;*.itz"
+#ifndef NO_MO3_SUPPORT
+ ";*.mo3"
+#endif
+ ")|*.mdz;*.s3z;*.xmz;*.itz;*.mdr;*.zip;*.rar;*.lha"
+#ifndef NO_MO3_SUPPORT
+ ";*.mo3"
+#endif
+ "|"
+ // -! NEW_FEATURE#0023
+ "ProTracker Modules (*.mod,*.nst)|*.mod;mod.*;*.mdz;*.nst;*.m15|"
+ "ScreamTracker Modules (*.s3m,*.stm)|*.s3m;*.stm;*.s3z|"
+ "FastTracker Modules (*.xm)|*.xm;*.xmz|"
+ "Impulse Tracker Modules (*.it)|*.it;*.itz|"
+ // -> CODE#0023
+ // -> DESC="IT project files (.itp)"
+ "Impulse Tracker Projects (*.itp)|*.itp;*.itpz|"
+ // -! NEW_FEATURE#0023
+ "OpenMPT Modules (*.mptm)|*.mptm;*.mptmz|"
+ "Other Modules (mtm,okt,mdl,669,far,...)|*.mtm;*.669;*.ult;*.wow;*.far;*.mdl;*.okt;*.dmf;*.ptm;*.med;*.ams;*.dbm;*.dsm;*.umx;*.amf;*.psm;*.mt2;*.gdm;*.imf;*.j2b|"
+ "Wave Files (*.wav)|*.wav|"
+ "Midi Files (*.mid,*.rmi)|*.mid;*.rmi;*.smf|"
+ "All Files (*.*)|*.*||",
+ CMainFrame::GetWorkingDirectory(DIR_MODS),
+ true,
+ &nFilterIndex);
+ if(files.abort) return;
- const LPCTSTR pszWdir = CMainFrame::GetWorkingDirectory(DIR_MODS);
- if(pszWdir[0])
- dlg.m_ofn.lpstrInitialDir = pszWdir;
+ CMainFrame::SetWorkingDirectory(files.workingDirectory.c_str(), DIR_MODS, true);
- const size_t bufferSize = 2048; //Note: This is possibly the maximum buffer size in MFC 7(this note was written November 2006).
- vector<char> filenameBuffer(bufferSize, 0);
- dlg.GetOFN().lpstrFile = &filenameBuffer[0];
- dlg.GetOFN().nMaxFile = bufferSize;
- if (dlg.DoModal() == IDOK)
+ for(size_t counter = 0; counter < files.filenames.size(); counter++)
{
- POSITION pos = dlg.GetStartPosition();
- while(pos != NULL)
- {
- CString pathName = dlg.GetNextPathName(pos);
- CMainFrame::SetWorkingDirectory(pathName, DIR_MODS, true);
- CMainFrame::m_nFilterIndex = dlg.m_ofn.nFilterIndex;
- OpenDocumentFile(pathName);
- }
+ OpenDocumentFile(files.filenames[counter].c_str());
}
- filenameBuffer.clear();
}
@@ -3282,3 +3266,92 @@
return CWinApp::ProcessWndProcException(e, pMsg);
}
//end rewbs.crashHandler
+
+
+/* Open or save one or multiple files using the system's file dialog
+ * Parameter list:
+ * - load: true: load dialog. false: save dialog.
+ * - defaultExtension: dialog should use this as the default extension for the file(s)
+ * - defaultFilename: dialog should use this as the default filename
+ * - extFilter: list of possible extensions. format: "description|extensions|description|extensions|..."
+ * - workingDirectory: default directory of the dialog
+ * - allowMultiSelect: allow the user to select multiple files? (will be ignored if load == false)
+ * - filterIndex: pointer to a variable holding the index of the last extension filter used.
+ */
+FileDlgResult CTrackApp::ShowOpenSaveFileDialog(bool load, std::string defaultExtension, std::string defaultFilename, std::string extFilter, std::string workingDirectory, bool allowMultiSelect, int *filterIndex)
+//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+{
+ FileDlgResult result;
+ result.workingDirectory = workingDirectory;
+ result.first_file = "";
+ result.filenames.clear();
+ result.extension = defaultExtension;
+ result.abort = true;
+
+ // we can't save multiple files.
+ if(!load)
+ {
+ allowMultiSelect = false;
+ }
+
+ // First, set up the dialog...
+ CFileDialog dlg(load ? TRUE : FALSE,
+ defaultExtension.empty() ? NULL : defaultExtension.c_str(),
+ defaultFilename.empty() ? NULL : defaultFilename.c_str(),
+ load ? (OFN_HIDEREADONLY | OFN_ENABLESIZING | OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST | (allowMultiSelect ? OFN_ALLOWMULTISELECT : 0))
+ : (OFN_HIDEREADONLY | OFN_ENABLESIZING | OFN_OVERWRITEPROMPT | OFN_PATHMUSTEXIST | OFN_NOREADONLYRETURN),
+ extFilter.empty() ? NULL : extFilter.c_str(),
+ theApp.m_pMainWnd);
+ if(!workingDirectory.empty())
+ dlg.m_ofn.lpstrInitialDir = workingDirectory.c_str();
+ if(filterIndex != nullptr)
+ dlg.m_ofn.nFilterIndex = (DWORD)(*filterIndex);
+
+ // TODO is this necessary? Apparently not!
+ /*const size_t bufferSize = 2048; //Note: This is possibly the maximum buffer size in MFC 7(this note was written November 2006).
+ vector<char> filenameBuffer(bufferSize, 0);
+ dlg.GetOFN().lpstrFile = &filenameBuffer[0];
+ dlg.GetOFN().nMaxFile = bufferSize;*/
+
+ // Do it!
+ CMainFrame::GetInputHandler()->Bypass(true);
+ if(dlg.DoModal() != IDOK)
+ {
+ CMainFrame::GetInputHandler()->Bypass(false);
+ return result;
+ }
+ CMainFrame::GetInputHandler()->Bypass(false);
+
+ // Retrieve variables
+ if(filterIndex != nullptr)
+ *filterIndex = dlg.m_ofn.nFilterIndex;
+
+ if(allowMultiSelect)
+ {
+ // multiple files might have been selected
+ POSITION pos = dlg.GetStartPosition();
+ while(pos != NULL)
+ {
+ std::string filename = dlg.GetNextPathName(pos);
+ result.filenames.push_back(filename);
+ }
+
+ } else
+ {
+ // only one file
+ std::string filename = dlg.GetPathName();
+ result.filenames.push_back(filename);
+ }
+
+ if(!result.filenames.empty())
+ {
+ // some file has been selected.
+ result.workingDirectory = result.filenames.back();
+ result.first_file = result.filenames.front();
+ result.abort = false;
+ }
+
+ result.extension = dlg.GetFileExt();
+
+ return result;
+}
Modified: trunk/OpenMPT/mptrack/Mptrack.h
===================================================================
--- trunk/OpenMPT/mptrack/Mptrack.h 2009-12-17 21:42:45 UTC (rev 443)
+++ trunk/OpenMPT/mptrack/Mptrack.h 2009-12-18 21:51:37 UTC (rev 444)
@@ -112,7 +112,20 @@
} REQUEST_CONTEXT;
#endif
+
/////////////////////////////////////////////////////////////////////////////
+// File dialog (open/save) results
+struct FileDlgResult
+{
+ std::string workingDirectory; // working directory. will include filename, so beware.
+ std::string first_file; // for some convenience, this will keep the first filename of the filenames vector.
+ std::vector <std::string> filenames; // all selected filenames in one vector.
+ std::string extension; // extension used. beware of this when multiple files can be selected!
+ bool abort; // no selection has been made.
+};
+
+
+/////////////////////////////////////////////////////////////////////////////
// CTrackApp:
// See mptrack.cpp for the implementation of this class
//
@@ -175,6 +188,8 @@
static BOOL AddDLSBank(LPCSTR);
static BOOL OpenURL(LPCSTR lpszURL);
+ static FileDlgResult ShowOpenSaveFileDialog(bool load, std::string defaultExtension, std::string defaultFilename, std::string extFilter, std::string workingDirectory = "", bool allowMultiSelect = false, int *filterIndex = nullptr);
+
public:
CDocTemplate *GetModDocTemplate() const { return m_pModTemplate; }
CVstPluginManager *GetPluginManager() const { return m_pPluginManager; }
Modified: trunk/OpenMPT/mptrack/TuningDialog.cpp
===================================================================
--- trunk/OpenMPT/mptrack/TuningDialog.cpp 2009-12-17 21:42:45 UTC (rev 443)
+++ trunk/OpenMPT/mptrack/TuningDialog.cpp 2009-12-18 21:51:37 UTC (rev 444)
@@ -619,24 +619,23 @@
return;
}
- string filter;
+ std::string filter;
if(pT != NULL)
filter = string("Tuning files (*") + CTuning::s_FileExtension + string(")|*") + CTuning::s_FileExtension + string("|");
if(pTC != NULL)
filter += string("Tuning collection files (") + CTuningCollection::s_FileExtension + string(")|*") + CTuningCollection::s_FileExtension + string("|");
- CFileDialog dlg(FALSE, CTuning::s_FileExtension.c_str(),
- NULL,
- OFN_HIDEREADONLY| OFN_ENABLESIZING | OFN_OVERWRITEPROMPT | OFN_PATHMUSTEXIST | OFN_NOREADONLYRETURN,
- filter.c_str(), this);
- dlg.m_ofn.lpstrInitialDir = theApp.GetTuningsPath();
+ FileDlgResult files = CTrackApp::ShowOpenSaveFileDialog(false, CTuning::s_FileExtension, "",
+ filter,
+ theApp.GetTuningsPath());
+ if(files.abort) return;
+ BeginWaitCursor();
+
bool failure = true;
- if (dlg.DoModal() != IDOK) return;
- BeginWaitCursor();
- ofstream fout(dlg.GetPathName(), ios::binary);
- const string ext = "." + dlg.GetFileExt();
+ ofstream fout(files.first_file.c_str(), ios::binary);
+ const string ext = "." + files.extension;
if(ext == CTuning::s_FileExtension)
{
@@ -663,23 +662,18 @@
string filter = string("Tuning files (*") + CTuning::s_FileExtension + string(", *") + CTuningCollection::s_FileExtension + string(")|*") +
CTuning::s_FileExtension + string(";*") + CTuningCollection::s_FileExtension + string("|");
- CFileDialog dlg(TRUE,
- NULL,
- NULL,
- OFN_HIDEREADONLY | OFN_ENABLESIZING | OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST,
- filter.c_str(),
- this);
- dlg.m_ofn.lpstrInitialDir = theApp.GetTuningsPath();
+ FileDlgResult files = CTrackApp::ShowOpenSaveFileDialog(true, "", "",
+ filter,
+ theApp.GetTuningsPath());
+ if(files.abort) return;
- if (dlg.DoModal() != IDOK) return;
+ const string ext = string(".") + files.extension;
- const string ext = string(".") + string(dlg.GetFileExt());
-
bool failure = true;
if(ext == CTuning::s_FileExtension)
{
- ifstream fin(dlg.GetPathName(), ios::binary);
+ ifstream fin(files.first_file.c_str(), ios::binary);
CTuning* pT = CTuningRTI::DeserializeOLD(fin);
if(pT == 0) {fin.clear(); fin.seekg(0); pT = CTuningRTI::Deserialize(fin);}
fin.close();
@@ -701,7 +695,7 @@
//a separate collection - no possibility to
//directly replace some collection.
CTuningCollection* pNewTCol = new CTuningCollection;
- pNewTCol->SetSavefilePath(static_cast<LPCTSTR>(dlg.GetPathName()));
+ pNewTCol->SetSavefilePath(static_cast<LPCTSTR>(files.first_file.c_str()));
failure = pNewTCol->Deserialize();
if(failure)
{
Modified: trunk/OpenMPT/mptrack/View_gen.cpp
===================================================================
--- trunk/OpenMPT/mptrack/View_gen.cpp 2009-12-17 21:42:45 UTC (rev 443)
+++ trunk/OpenMPT/mptrack/View_gen.cpp 2009-12-18 21:51:37 UTC (rev 444)
@@ -1019,13 +1019,13 @@
//rewbs.fxpPresets: changed Eric's code to use fxp load/save
if(pVstPlugin == NULL) return;
- CFileDialog dlg(TRUE, "fxp", NULL,
- OFN_HIDEREADONLY| OFN_OVERWRITEPROMPT | OFN_PATHMUSTEXIST | OFN_ENABLESIZING | OFN_NOREADONLYRETURN,
- "VST FX Program (*.fxp)|*.fxp||", theApp.m_pMainWnd);
- if (!(dlg.DoModal() == IDOK)) return;
+ FileDlgResult files = CTrackApp::ShowOpenSaveFileDialog(true, "fxp", "",
+ "VST FX Program (*.fxp)|*.fxp||",
+ CMainFrame::GetDefaultDirectory(DIR_PLUGINPRESETS));
+ if(files.abort) return;
//TODO: exception handling
- if (!(pVstPlugin->LoadProgram(dlg.GetFileName()))) {
+ if (!(pVstPlugin->LoadProgram(files.first_file.c_str()))) {
::AfxMessageBox("Error loading preset.Are you sure it is for this plugin?");
} else {
if (pSndFile->m_nType & (MOD_TYPE_XM|MOD_TYPE_IT|MOD_TYPE_MPT)) pModDoc->SetModified();
@@ -1045,13 +1045,13 @@
if(pVstPlugin == NULL) return;
//rewbs.fxpPresets: changed Eric's code to use fxp load/save
- CFileDialog dlg(FALSE, "fxp", NULL,
- OFN_HIDEREADONLY| OFN_OVERWRITEPROMPT | OFN_PATHMUSTEXIST | OFN_ENABLESIZING | OFN_NOREADONLYRETURN,
- "VST Program (*.fxp)|*.fxp||", theApp.m_pMainWnd);
- if (!(dlg.DoModal() == IDOK)) return;
+ FileDlgResult files = CTrackApp::ShowOpenSaveFileDialog(false, "fxp", "",
+ "VST Program (*.fxp)|*.fxp||",
+ CMainFrame::GetDefaultDirectory(DIR_PLUGINPRESETS));
+ if(files.abort) return;
//TODO: exception handling
- if (!(pVstPlugin->SaveProgram(dlg.GetFileName())))
+ if (!(pVstPlugin->SaveProgram(files.first_file.c_str())))
::AfxMessageBox("Error saving preset.");
//end rewbs.fxpPresets
Modified: trunk/OpenMPT/mptrack/View_tre.cpp
===================================================================
--- trunk/OpenMPT/mptrack/View_tre.cpp 2009-12-17 21:42:45 UTC (rev 443)
+++ trunk/OpenMPT/mptrack/View_tre.cpp 2009-12-18 21:51:37 UTC (rev 444)
@@ -1492,24 +1492,21 @@
BOOL CModTree::OpenMidiInstrument(DWORD dwItem)
//---------------------------------------------
{
- CFileDialog dlg(TRUE,
- NULL,
- NULL,
- OFN_HIDEREADONLY | OFN_ENABLESIZING | OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST,
- "All Instruments and Banks|*.xi;*.pat;*.iti;*.wav;*.aif;*.aiff;*.sf2;*.sbk;*.dls|"
- "FastTracker II Instruments (*.xi)|*.xi|"
- "GF1 Patches (*.pat)|*.pat|"
- "Wave Files (*.wav)|*.wav|"
- "Impulse Tracker Instruments (*.iti)|*.iti;*.its|"
- "SoundFont 2.0 Banks (*.sf2)|*.sf2;*.sbk|"
- "DLS Sound Banks (*.dls)|*.dls|"
- "All Files (*.*)|*.*||",
- this);
- if (dlg.DoModal() != IDOK) return FALSE;
+ FileDlgResult files = CTrackApp::ShowOpenSaveFileDialog(true, "", "",
+ "All Instruments and Banks|*.xi;*.pat;*.iti;*.wav;*.aif;*.aiff;*.sf2;*.sbk;*.dls|"
+ "FastTracker II Instruments (*.xi)|*.xi|"
+ "GF1 Patches (*.pat)|*.pat|"
+ "Wave Files (*.wav)|*.wav|"
+ "Impulse Tracker Instruments (*.iti)|*.iti;*.its|"
+ "SoundFont 2.0 Banks (*.sf2)|*.sf2;*.sbk|"
+ "DLS Sound Banks (*.dls)|*.dls|"
+ "All Files (*.*)|*.*||");
+ if(files.abort) return FALSE;
+
if (dwItem & 0x80)
- return SetMidiPercussion(dwItem & 0x7F, dlg.GetPathName());
+ return SetMidiPercussion(dwItem & 0x7F, files.first_file.c_str());
else
- return SetMidiInstrument(dwItem, dlg.GetPathName());
+ return SetMidiInstrument(dwItem, files.first_file.c_str());
}
@@ -2914,24 +2911,12 @@
if(pSndFile && modItemID){
- CHAR pszFileNames[_MAX_PATH];
- CFileDialog dlg(TRUE, NULL, NULL,
- OFN_FILEMUSTEXIST|OFN_PATHMUSTEXIST|OFN_FORCESHOWHIDDEN,
- "All files(*.*)|*.*||",
- this);
+ FileDlgResult files = CTrackApp::ShowOpenSaveFileDialog(true, "", "",
+ "All files(*.*)|*.*||");
+ if(files.abort) return;
- pszFileNames[0] = 0;
- pszFileNames[1] = 0;
- dlg.m_ofn.lpstrFile = pszFileNames;
- dlg.m_ofn.nMaxFile = _MAX_PATH;
-
- if(dlg.DoModal() == IDOK){
- strcpy(pSndFile->m_szInstrumentPath[modItemID - 1], pszFileNames);
- OnRefreshTree();
- }
-
- dlg.m_ofn.lpstrFile = NULL;
- dlg.m_ofn.nMaxFile = 0;
+ strcpy(pSndFile->m_szInstrumentPath[modItemID - 1], files.first_file.c_str());
+ OnRefreshTree();
}
}
@@ -2948,26 +2933,17 @@
if(pSndFile && modItemID){
- if(pSndFile->m_szInstrumentPath[modItemID - 1][0] == '\0'){
- CHAR pszFileNames[_MAX_PATH];
+ if(pSndFile->m_szInstrumentPath[modItemID - 1][0] == '\0')
+ {
+ FileDlgResult files = CTrackApp::ShowOpenSaveFileDialog(false, (pSndFile->GetType() == MOD_TYPE_XM) ? "xi" : "iti", "",
+ (pSndFile->GetType() == MOD_TYPE_XM) ?
+ "FastTracker II Instruments (*.xi)|*.xi|"
+ "Impulse Tracker Instruments (*.iti)|*.iti||" :
+ "Impulse Tracker Instruments (*.iti)|*.iti|"
+ "FastTracker II Instruments (*.xi)|*.xi||");
+ if(files.abort) return;
- CFileDialog dlg(FALSE, (pSndFile->m_nType & (MOD_TYPE_IT|MOD_TYPE_MPT)) ? "iti" : "xi", NULL,
- OFN_HIDEREADONLY| OFN_OVERWRITEPROMPT | OFN_PATHMUSTEXIST | OFN_NOREADONLYRETURN,
- ( pSndFile->m_nType & (MOD_TYPE_IT|MOD_TYPE_MPT) ? "Impulse Tracker Instruments (*.iti)|*.iti|"
- "FastTracker II Instruments (*.xi)|*.xi||"
- : "FastTracker II Instruments (*.xi)|*.xi|"
- "Impulse Tracker Instruments (*.iti)|*.iti||" ),
- this);
-
- pszFileNames[0] = 0;
- pszFileNames[1] = 0;
- dlg.m_ofn.lpstrFile = pszFileNames;
- dlg.m_ofn.nMaxFile = _MAX_PATH;
-
- if(dlg.DoModal() == IDOK) strcpy(pSndFile->m_szInstrumentPath[modItemID - 1], pszFileNames);
-
- dlg.m_ofn.lpstrFile = NULL;
- dlg.m_ofn.nMaxFile = 0;
+ strcpy(pSndFile->m_szInstrumentPath[modItemID - 1], files.first_file.c_str());
}
if(pSndFile->m_szInstrumentPath[modItemID - 1][0] != '\0'){
@@ -3009,18 +2985,12 @@
void CModTree::OnExportMidiLib()
//------------------------------
{
- CHAR szFileName[_MAX_PATH] = "mptrack.ini";
- CFileDialog dlg(FALSE,
- "ini",
- szFileName,
- OFN_HIDEREADONLY| OFN_ENABLESIZING | OFN_OVERWRITEPROMPT | OFN_PATHMUSTEXIST | OFN_NOREADONLYRETURN,
- "Text and INI files (*.txt,*.ini)|*.txt;*.ini|"
- "All Files (*.*)|*.*||",
- this);
- if (dlg.DoModal() == IDOK)
- {
- CTrackApp::ExportMidiConfig(dlg.GetPathName());
- }
+ FileDlgResult files = CTrackApp::ShowOpenSaveFileDialog(false, "ini", "mptrack.ini",
+ "Text and INI files (*.txt,*.ini)|*.txt;*.ini|"
+ "All Files (*.*)|*.*||");
+ if(files.abort) return;
+
+ CTrackApp::ExportMidiConfig(files.first_file.c_str());
}
Modified: trunk/OpenMPT/mptrack/Vstplug.cpp
===================================================================
--- trunk/OpenMPT/mptrack/Vstplug.cpp 2009-12-17 21:42:45 UTC (rev 443)
+++ trunk/OpenMPT/mptrack/Vstplug.cpp 2009-12-18 21:51:37 UTC (rev 444)
@@ -1411,54 +1411,34 @@
//----------------------------------
{
CHAR *pszFileNames;
- CFileDialog dlg(TRUE, ".dll", NULL,
- OFN_FILEMUSTEXIST|OFN_ENABLESIZING |OFN_HIDEREADONLY|OFN_PATHMUSTEXIST|OFN_FORCESHOWHIDDEN|OFN_ALLOWMULTISELECT,
- "VST Plugins (*.dll)|*.dll||",
- this);
-
- const LPCTSTR pszWdir = CMainFrame::GetWorkingDirectory(DIR_PLUGINS);
- if(pszWdir[0])
- dlg.m_ofn.lpstrInitialDir = pszWdir;
- pszFileNames = new CHAR[MAX_FILEOPEN_BUFSIZE];
- if (!pszFileNames) return;
- pszFileNames[0] = 0;
- pszFileNames[1] = 0;
- dlg.m_ofn.lpstrFile = pszFileNames;
- dlg.m_ofn.nMaxFile = MAX_FILEOPEN_BUFSIZE;
- if (dlg.DoModal() == IDOK)
+ FileDlgResult files = CTrackApp::ShowOpenSaveFileDialog(true, "dll", "",
+ "VST Plugins (*.dll)|*.dll||",
+ CMainFrame::GetWorkingDirectory(DIR_PLUGINS),
+ true);
+ if(files.abort) return;
+
+ CMainFrame::SetWorkingDirectory(files.workingDirectory.c_str(), DIR_PLUGINS, true);
+
+ CVstPluginManager *pManager = theApp.GetPluginManager();
+ bool bOk = false;
+
+ PVSTPLUGINLIB plugLib = NULL;
+ for(size_t counter = 0; counter < files.filenames.size(); counter++)
{
- CVstPluginManager *pManager = theApp.GetPluginManager();
- pszFileNames[MAX_FILEOPEN_BUFSIZE-1] = 0;
- POSITION pos = dlg.GetStartPosition();
- BOOL bOk = FALSE;
-
- int n = 0;
- PVSTPLUGINLIB plugLib = NULL;
- while (pos != NULL) {
- CString sFilename = dlg.GetNextPathName(pos);
- if (!n) {
- CMainFrame::SetWorkingDirectory(sFilename, DIR_PLUGINS, true);
- }
- n++;
+ CString sFilename = files.filenames[counter].c_str();
- if (pManager) {
- plugLib = pManager->AddPlugin(sFilename, FALSE);
- if (plugLib) {
- bOk = TRUE;
- }
- }
+ if (pManager) {
+ plugLib = pManager->AddPlugin(sFilename, FALSE);
+ if (plugLib) bOk = true;
}
- if (bOk) {
- UpdatePluginsList(plugLib->dwPluginId2); //force selection to last added plug.
- } else {
- MessageBox("At least one selected file was not a valid VST-Plugin", NULL, MB_ICONERROR|MB_OK);
- }
}
- dlg.m_ofn.lpstrFile = NULL;
- dlg.m_ofn.nMaxFile = 0;
- delete[] pszFileNames;
+ if (bOk) {
+ UpdatePluginsList(plugLib->dwPluginId2); //force selection to last added plug.
+ } else {
+ MessageBox("At least one selected file was not a valid VST-Plugin", NULL, MB_ICONERROR|MB_OK);
+ }
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <sag...@us...> - 2009-12-17 21:42:57
|
Revision: 443
http://modplug.svn.sourceforge.net/modplug/?rev=443&view=rev
Author: saga-games
Date: 2009-12-17 21:42:45 +0000 (Thu, 17 Dec 2009)
Log Message:
-----------
[Fix] Sample Editor: When going down close to 0 Hz in the sample editor, the sample freq wrapped around to the maximum value.
[Fix] Pattern Editor: When in sample mode, samples were never stopped when in new-style note off mode, which lead to sample jam when using long/looped samples.
[Ref] Some less important refactoring in soundlib
Modified Paths:
--------------
trunk/OpenMPT/mptrack/Ctrl_smp.cpp
trunk/OpenMPT/mptrack/View_pat.cpp
trunk/OpenMPT/soundlib/Snd_fx.cpp
Modified: trunk/OpenMPT/mptrack/Ctrl_smp.cpp
===================================================================
--- trunk/OpenMPT/mptrack/Ctrl_smp.cpp 2009-12-14 20:12:20 UTC (rev 442)
+++ trunk/OpenMPT/mptrack/Ctrl_smp.cpp 2009-12-17 21:42:45 UTC (rev 443)
@@ -2917,6 +2917,7 @@
{
UINT d = pSmp->nC5Speed;
if (d < 1) d = 8363;
+ if(d < m_nFinetuneStep) d = m_nFinetuneStep;
d += (pos * m_nFinetuneStep);
pSmp->nC5Speed = CLAMP(d, 1, 9999999); // 9999999 is max. in Impulse Tracker
int transp = CSoundFile::FrequencyToTranspose(pSmp->nC5Speed) >> 7;
Modified: trunk/OpenMPT/mptrack/View_pat.cpp
===================================================================
--- trunk/OpenMPT/mptrack/View_pat.cpp 2009-12-14 20:12:20 UTC (rev 442)
+++ trunk/OpenMPT/mptrack/View_pat.cpp 2009-12-17 21:42:45 UTC (rev 443)
@@ -3929,10 +3929,7 @@
}
else
{
- if(CMainFrame::m_dwPatternSetup & PATTERN_NOTEFADE)
- pModDoc->NoteOff(note, TRUE, ins, GetChanFromCursor(m_dwCursor));
- else
- pModDoc->NoteOff(note, FALSE, ins, GetChanFromCursor(m_dwCursor));
+ pModDoc->NoteOff(note, ((CMainFrame::m_dwPatternSetup & PATTERN_NOTEFADE) || pSndFile->GetNumInstruments() == 0) ? TRUE : FALSE, ins, GetChanFromCursor(m_dwCursor));
}
}
Modified: trunk/OpenMPT/soundlib/Snd_fx.cpp
===================================================================
--- trunk/OpenMPT/soundlib/Snd_fx.cpp 2009-12-14 20:12:20 UTC (rev 442)
+++ trunk/OpenMPT/soundlib/Snd_fx.cpp 2009-12-17 21:42:45 UTC (rev 443)
@@ -1310,10 +1310,10 @@
// Note Cut/Off/Fade => ignore instrument
if (note >= NOTE_MIN_SPECIAL) instr = 0;
- if ((note) && (note <= 128)) pChn->nNewNote = note;
+ if ((note) && (note <= NOTE_MAX)) pChn->nNewNote = note;
// New Note Action ?
- if ((note) && (note <= 128) && (!bPorta))
+ if ((note) && (note <= NOTE_MAX) && (!bPorta))
{
CheckNNA(nChn, instr, note, FALSE);
}
@@ -2550,11 +2550,7 @@
if((m_nType & MOD_TYPE_MOD) != 0) // MOD: Invert Loop
{
pChn->nEFxSpeed = param;
- if(m_dwSongFlags & SONG_FIRSTTICK)
- {
- //if((pChn->nRowInstr != 0) && (m_nTickCount == 0)) pChn->nEFxOffset = 0; // reset offset (except when in pattern delay) TODO
- InvertLoop(pChn);
- }
+ if(m_dwSongFlags & SONG_FIRSTTICK) InvertLoop(pChn);
}
else // XM: Set Active Midi Macro
{
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <sag...@us...> - 2009-12-14 20:12:37
|
Revision: 442
http://modplug.svn.sourceforge.net/modplug/?rev=442&view=rev
Author: saga-games
Date: 2009-12-14 20:12:20 +0000 (Mon, 14 Dec 2009)
Log Message:
-----------
Added muParser (http://muparser.sourceforge.net/) to repository. To be used with upcoming new features.
Added Paths:
-----------
trunk/OpenMPT/muParser/
trunk/OpenMPT/muParser/License.txt
trunk/OpenMPT/muParser/Makefile.in
trunk/OpenMPT/muParser/build/
trunk/OpenMPT/muParser/build/autoconf/
trunk/OpenMPT/muParser/build/autoconf/aclocal.m4
trunk/OpenMPT/muParser/build/autoconf/acregen.sh
trunk/OpenMPT/muParser/build/autoconf/autoconf_inc.m4
trunk/OpenMPT/muParser/build/autoconf/bakefile-presets.m4
trunk/OpenMPT/muParser/build/autoconf/config.guess
trunk/OpenMPT/muParser/build/autoconf/config.sub
trunk/OpenMPT/muParser/build/autoconf/configure.ac
trunk/OpenMPT/muParser/build/autoconf/install-sh
trunk/OpenMPT/muParser/build/autoconf/muparser.pc.in
trunk/OpenMPT/muParser/build/makefile.bcc
trunk/OpenMPT/muParser/build/makefile.mingw
trunk/OpenMPT/muParser/build/makefile.vc
trunk/OpenMPT/muParser/build/makefile.wat
trunk/OpenMPT/muParser/build/msvc8/
trunk/OpenMPT/muParser/build/msvc8/muparser_dynamic.sln
trunk/OpenMPT/muParser/build/msvc8/muparser_example1.dsp
trunk/OpenMPT/muParser/build/msvc8/muparser_example1.vcproj
trunk/OpenMPT/muParser/build/msvc8/muparser_example3.dsp
trunk/OpenMPT/muParser/build/msvc8/muparser_example3.vcproj
trunk/OpenMPT/muParser/build/msvc8/muparser_muParser.dsp
trunk/OpenMPT/muParser/build/msvc8/muparser_muParser.vcproj
trunk/OpenMPT/muParser/build/msvc8/muparser_static.sln
trunk/OpenMPT/muParser/build/msvc9/
trunk/OpenMPT/muParser/build/msvc9/muparser_dynamic.sln
trunk/OpenMPT/muParser/build/msvc9/muparser_example1.dsp
trunk/OpenMPT/muParser/build/msvc9/muparser_example1.vcproj
trunk/OpenMPT/muParser/build/msvc9/muparser_example3.dsp
trunk/OpenMPT/muParser/build/msvc9/muparser_example3.vcproj
trunk/OpenMPT/muParser/build/msvc9/muparser_muParser.dsp
trunk/OpenMPT/muParser/build/msvc9/muparser_muParser.vcproj
trunk/OpenMPT/muParser/build/msvc9/muparser_static.sln
trunk/OpenMPT/muParser/build/obj/
trunk/OpenMPT/muParser/build/obj/Readme.txt
trunk/OpenMPT/muParser/build/obj/bcc_obj/
trunk/OpenMPT/muParser/build/obj/bcc_obj/Readme.txt
trunk/OpenMPT/muParser/configure
trunk/OpenMPT/muParser/include/
trunk/OpenMPT/muParser/include/muParser.h
trunk/OpenMPT/muParser/include/muParserBase.h
trunk/OpenMPT/muParser/include/muParserBytecode.h
trunk/OpenMPT/muParser/include/muParserCallback.h
trunk/OpenMPT/muParser/include/muParserComplex.h
trunk/OpenMPT/muParser/include/muParserDef.h
trunk/OpenMPT/muParser/include/muParserError.h
trunk/OpenMPT/muParser/include/muParserFixes.h
trunk/OpenMPT/muParser/include/muParserInt.h
trunk/OpenMPT/muParser/include/muParserStack.h
trunk/OpenMPT/muParser/include/muParserTest.h
trunk/OpenMPT/muParser/include/muParserToken.h
trunk/OpenMPT/muParser/include/muParserTokenReader.h
trunk/OpenMPT/muParser/lib/
trunk/OpenMPT/muParser/lib/Readme.txt
trunk/OpenMPT/muParser/src/
trunk/OpenMPT/muParser/src/muParser.cpp
trunk/OpenMPT/muParser/src/muParserBase.cpp
trunk/OpenMPT/muParser/src/muParserBytecode.cpp
trunk/OpenMPT/muParser/src/muParserCallback.cpp
trunk/OpenMPT/muParser/src/muParserComplex.cpp
trunk/OpenMPT/muParser/src/muParserError.cpp
trunk/OpenMPT/muParser/src/muParserInt.cpp
trunk/OpenMPT/muParser/src/muParserTest.cpp
trunk/OpenMPT/muParser/src/muParserTokenReader.cpp
Added: trunk/OpenMPT/muParser/License.txt
===================================================================
--- trunk/OpenMPT/muParser/License.txt (rev 0)
+++ trunk/OpenMPT/muParser/License.txt 2009-12-14 20:12:20 UTC (rev 442)
@@ -0,0 +1,28 @@
+
+ __________
+ _____ __ __\______ \_____ _______ ______ ____ _______
+ / \ | | \| ___/\__ \ \_ __ \/ ___/_/ __ \\_ __ \
+ | Y Y \| | /| | / __ \_| | \/\___ \ \ ___/ | | \/
+ |__|_| /|____/ |____| (____ /|__| /____ > \___ >|__|
+ \/ \/ \/ \/
+
+ Version 1.27
+
+ Copyright (C) 2004-2006 Ingo Berg (ingo_berg{at}gmx.de)
+
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this
+ software and associated documentation files (the "Software"), to deal in the Software
+ without restriction, including without limitation the rights to use, copy, modify,
+ merge, publish, distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all copies or
+ substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
+ NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ OR OTHER DEALINGS IN THE SOFTWARE.
Added: trunk/OpenMPT/muParser/Makefile.in
===================================================================
--- trunk/OpenMPT/muParser/Makefile.in (rev 0)
+++ trunk/OpenMPT/muParser/Makefile.in 2009-12-14 20:12:20 UTC (rev 442)
@@ -0,0 +1,345 @@
+# =========================================================================
+# This makefile was generated by
+# Bakefile 0.2.1 (http://bakefile.sourceforge.net)
+# Do not modify, all changes will be overwritten!
+# =========================================================================
+
+
+@MAKE_SET@
+
+prefix = @prefix@
+exec_prefix = @exec_prefix@
+INSTALL = @INSTALL@
+SHARED_LD_CXX = @SHARED_LD_CXX@
+LIBEXT = @LIBEXT@
+LIBPREFIX = @LIBPREFIX@
+SO_SUFFIX = @SO_SUFFIX@
+DLLIMP_SUFFIX = @DLLIMP_SUFFIX@
+EXEEXT = @EXEEXT@
+LN_S = @LN_S@
+SETFILE = @SETFILE@
+PIC_FLAG = @PIC_FLAG@
+SONAME_FLAG = @SONAME_FLAG@
+STRIP = @STRIP@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_DIR = @INSTALL_DIR@
+BK_DEPS = @BK_DEPS@
+srcdir = @srcdir@
+top_builddir = @top_builddir@
+libdir = @libdir@
+DLLPREFIX = @DLLPREFIX@
+LIBS = @LIBS@
+AR = @AR@
+AROPTIONS = @AROPTIONS@
+RANLIB = @RANLIB@
+CXX = @CXX@
+CXXFLAGS = @CXXFLAGS@
+CPPFLAGS = @CPPFLAGS@
+LDFLAGS = @LDFLAGS@
+
+### Variables: ###
+
+DESTDIR =
+MUPARSER_LIB_CXXFLAGS = $(____DEBUG) $(____SHARED) $(____SHARED_0) \
+ -I$(srcdir)/include $(CPPFLAGS) $(CXXFLAGS)
+MUPARSER_LIB_OBJECTS = \
+ muParser_lib_muParserBytecode.o \
+ muParser_lib_muParserTest.o \
+ muParser_lib_muParser.o \
+ muParser_lib_muParserDLL.o \
+ muParser_lib_muParserInt.o \
+ muParser_lib_muParserTokenReader.o \
+ muParser_lib_muParserError.o \
+ muParser_lib_muParserCallback.o \
+ muParser_lib_muParserBase.o
+MUPARSER_LIB_HEADERS = \
+ include/muParserError.h \
+ include/muParserFixes.h \
+ include/muParserStack.h \
+ include/muParserBytecode.h \
+ include/muParserToken.h \
+ include/muParserBase.h \
+ include/muParserTest.h \
+ include/muParserTokenReader.h \
+ include/muParserCallback.h \
+ include/muParser.h \
+ include/muParserDLL.h \
+ include/muParserDef.h \
+ include/muParserInt.h
+MUPARSER_DLL_CXXFLAGS = $(____DEBUG) $(____SHARED) $(____SHARED_0) \
+ -I$(srcdir)/include $(PIC_FLAG) $(CPPFLAGS) $(CXXFLAGS)
+MUPARSER_DLL_OBJECTS = \
+ muParser_dll_muParserBytecode.o \
+ muParser_dll_muParserTest.o \
+ muParser_dll_muParser.o \
+ muParser_dll_muParserDLL.o \
+ muParser_dll_muParserInt.o \
+ muParser_dll_muParserTokenReader.o \
+ muParser_dll_muParserError.o \
+ muParser_dll_muParserCallback.o \
+ muParser_dll_muParserBase.o
+MUPARSER_DLL_HEADERS = \
+ include/muParserError.h \
+ include/muParserFixes.h \
+ include/muParserStack.h \
+ include/muParserBytecode.h \
+ include/muParserToken.h \
+ include/muParserBase.h \
+ include/muParserTest.h \
+ include/muParserTokenReader.h \
+ include/muParserCallback.h \
+ include/muParser.h \
+ include/muParserDLL.h \
+ include/muParserDef.h \
+ include/muParserInt.h
+EXAMPLE1_CXXFLAGS = $(____DEBUG) -I$(srcdir)/include $(CPPFLAGS) $(CXXFLAGS)
+EXAMPLE1_OBJECTS = \
+ example1_Example1.o
+
+### Conditionally set variables: ###
+
+@COND_DEPS_TRACKING_0@CXXC = $(CXX)
+@COND_DEPS_TRACKING_1@CXXC = $(BK_DEPS) $(CXX)
+@COND_DEBUG_0@DEBUG_BUILD_POSTFIX =
+@COND_DEBUG_1@DEBUG_BUILD_POSTFIX = d
+@COND_SHARED_0@__muParser_lib___depname = \
+@COND_SHARED_0@ $(top_builddir)/lib/$(LIBPREFIX)muparser$(DEBUG_BUILD_POSTFIX)$(LIBEXT)
+@COND_SHARED_0@__install_muParser_lib___depname = install_muParser_lib
+@COND_SHARED_0@__uninstall_muParser_lib___depname = uninstall_muParser_lib
+@COND_SHARED_0@__install_muParser_lib_headers___depname = \
+@COND_SHARED_0@ install_muParser_lib_headers
+@COND_SHARED_0@__uninstall_muParser_lib_headers___depname = \
+@COND_SHARED_0@ uninstall_muParser_lib_headers
+COND_SHARED_1___muParser_dll___depname = \
+ $(top_builddir)/lib/$(DLLPREFIX)muparser$(DEBUG_BUILD_POSTFIX)$(__muParser_dll___targetsuf3)
+@COND_SHARED_1@__muParser_dll___depname = $(COND_SHARED_1___muParser_dll___depname)
+@COND_SHARED_1@__install_muParser_dll___depname = install_muParser_dll
+@COND_SHARED_1@__uninstall_muParser_dll___depname = uninstall_muParser_dll
+COND_PLATFORM_MACOSX_1___muParser_dll___macinstnamecmd = -install_name \
+ $(libdir)/$(DLLPREFIX)muparser$(DEBUG_BUILD_POSTFIX)$(__muParser_dll___targetsuf2)
+@COND_PLATFORM_MACOSX_1@__muParser_dll___macinstnamecmd = $(COND_PLATFORM_MACOSX_1___muParser_dll___macinstnamecmd)
+@COND_SHARED_1@__install_muParser_dll_headers___depname = \
+@COND_SHARED_1@ install_muParser_dll_headers
+@COND_SHARED_1@__uninstall_muParser_dll_headers___depname = \
+@COND_SHARED_1@ uninstall_muParser_dll_headers
+COND_PLATFORM_OS2_1___muParser_dll___importlib = -import \
+ $(top_builddir)/lib/$(LIBPREFIX)muparser$(DEBUG_BUILD_POSTFIX).$(DLLIMP_SUFFIX)
+@COND_PLATFORM_OS2_1@__muParser_dll___importlib = $(COND_PLATFORM_OS2_1___muParser_dll___importlib)
+COND_WINDOWS_IMPLIB_1___muParser_dll___importlib = \
+ -Wl,--out-implib=$(top_builddir)/lib/$(LIBPREFIX)muparser$(DEBUG_BUILD_POSTFIX).$(DLLIMP_SUFFIX)
+@COND_WINDOWS_IMPLIB_1@__muParser_dll___importlib = $(COND_WINDOWS_IMPLIB_1___muParser_dll___importlib)
+@COND_PLATFORM_MACOSX_0_USE_SOVERSION_1@__muParser_dll___targetsuf2 \
+@COND_PLATFORM_MACOSX_0_USE_SOVERSION_1@ = .$(SO_SUFFIX).0
+@COND_PLATFORM_MACOSX_1_USE_SOVERSION_1@__muParser_dll___targetsuf2 \
+@COND_PLATFORM_MACOSX_1_USE_SOVERSION_1@ = .0.$(SO_SUFFIX)
+@COND_USE_SOVERSION_0@__muParser_dll___targetsuf2 = .$(SO_SUFFIX)
+@COND_PLATFORM_MACOSX_0_USE_SOVERCYGWIN_0_USE_SOVERSION_1@__muParser_dll___targetsuf3 \
+@COND_PLATFORM_MACOSX_0_USE_SOVERCYGWIN_0_USE_SOVERSION_1@ = \
+@COND_PLATFORM_MACOSX_0_USE_SOVERCYGWIN_0_USE_SOVERSION_1@ .$(SO_SUFFIX).0.0.0
+@COND_PLATFORM_MACOSX_1_USE_SOVERSION_1@__muParser_dll___targetsuf3 \
+@COND_PLATFORM_MACOSX_1_USE_SOVERSION_1@ = .0.0.0.$(SO_SUFFIX)
+@COND_USE_SOVERCYGWIN_1_USE_SOVERSION_1@__muParser_dll___targetsuf3 \
+@COND_USE_SOVERCYGWIN_1_USE_SOVERSION_1@ = -0.$(SO_SUFFIX)
+@COND_USE_SOVERSION_0@__muParser_dll___targetsuf3 = .$(SO_SUFFIX)
+COND_USE_SOVERLINUX_1___muParser_dll___soname_flags = \
+ $(SONAME_FLAG)$(DLLPREFIX)muparser$(DEBUG_BUILD_POSTFIX)$(__muParser_dll___targetsuf2)
+@COND_USE_SOVERLINUX_1@__muParser_dll___soname_flags = $(COND_USE_SOVERLINUX_1___muParser_dll___soname_flags)
+COND_USE_SOVERSOLARIS_1___muParser_dll___soname_flags = \
+ $(SONAME_FLAG)$(DLLPREFIX)muparser$(DEBUG_BUILD_POSTFIX)$(__muParser_dll___targetsuf3)
+@COND_USE_SOVERSOLARIS_1@__muParser_dll___soname_flags = $(COND_USE_SOVERSOLARIS_1___muParser_dll___soname_flags)
+COND_USE_SOSYMLINKS_1___muParser_dll___so_symlinks_cmd = (cd \
+ $(top_builddir)/lib/; rm -f \
+ $(LIBPREFIX)muparser$(DEBUG_BUILD_POSTFIX).$(DLLIMP_SUFFIX) \
+ $(DLLPREFIX)muparser$(DEBUG_BUILD_POSTFIX)$(__muParser_dll___targetsuf2); \
+ $(LN_S) \
+ $(DLLPREFIX)muparser$(DEBUG_BUILD_POSTFIX)$(__muParser_dll___targetsuf3) \
+ $(DLLPREFIX)muparser$(DEBUG_BUILD_POSTFIX)$(__muParser_dll___targetsuf2); \
+ $(LN_S) \
+ $(DLLPREFIX)muparser$(DEBUG_BUILD_POSTFIX)$(__muParser_dll___targetsuf2) \
+ $(LIBPREFIX)muparser$(DEBUG_BUILD_POSTFIX).$(DLLIMP_SUFFIX))
+@COND_USE_SOSYMLINKS_1@__muParser_dll___so_symlinks_cmd = $(COND_USE_SOSYMLINKS_1___muParser_dll___so_symlinks_cmd)
+COND_USE_SOSYMLINKS_1___muParser_dll___so_symlinks_inst_cmd = rm -f \
+ $(LIBPREFIX)muparser$(DEBUG_BUILD_POSTFIX).$(DLLIMP_SUFFIX) \
+ $(DLLPREFIX)muparser$(DEBUG_BUILD_POSTFIX)$(__muParser_dll___targetsuf2); \
+ $(LN_S) \
+ $(DLLPREFIX)muparser$(DEBUG_BUILD_POSTFIX)$(__muParser_dll___targetsuf3) \
+ $(DLLPREFIX)muparser$(DEBUG_BUILD_POSTFIX)$(__muParser_dll___targetsuf2); \
+ $(LN_S) \
+ $(DLLPREFIX)muparser$(DEBUG_BUILD_POSTFIX)$(__muParser_dll___targetsuf2) \
+ $(LIBPREFIX)muparser$(DEBUG_BUILD_POSTFIX).$(DLLIMP_SUFFIX)
+@COND_USE_SOSYMLINKS_1@__muParser_dll___so_symlinks_inst_cmd = $(COND_USE_SOSYMLINKS_1___muParser_dll___so_symlinks_inst_cmd)
+COND_USE_SOSYMLINKS_1___muParser_dll___so_symlinks_uninst_cmd = rm -f \
+ $(DLLPREFIX)muparser$(DEBUG_BUILD_POSTFIX)$(__muParser_dll___targetsuf2) \
+ $(LIBPREFIX)muparser$(DEBUG_BUILD_POSTFIX).$(DLLIMP_SUFFIX)
+@COND_USE_SOSYMLINKS_1@__muParser_dll___so_symlinks_uninst_cmd = $(COND_USE_SOSYMLINKS_1___muParser_dll___so_symlinks_uninst_cmd)
+@COND_PLATFORM_MACOSX_1@__muParser_dll___macver = \
+@COND_PLATFORM_MACOSX_1@ -compatibility_version 1 -current_version 1
+@COND_SAMPLES_1@__example1___depname = \
+@COND_SAMPLES_1@ $(top_builddir)/samples/example1/example1$(EXEEXT)
+@COND_PLATFORM_MAC_1@__example1___mac_setfilecmd = \
+@COND_PLATFORM_MAC_1@ $(SETFILE) -t APPL \
+@COND_PLATFORM_MAC_1@ $(top_builddir)/samples/example1/example1$(EXEEXT)
+@COND_SHARED_0@____SHARED =
+@COND_SHARED_1@____SHARED = -DMUPARSER_DLL
+@COND_SHARED_0@____SHARED_0 =
+@COND_SHARED_1@____SHARED_0 = -DMUPARSERLIB_EXPORTS
+@COND_DEBUG_0@____DEBUG = -DNDEBUG
+@COND_DEBUG_1@____DEBUG =
+
+### Targets: ###
+
+all: $(__muParser_lib___depname) $(__muParser_dll___depname) $(__example1___depname)
+
+install: all $(__install_muParser_lib___depname) $(__install_muParser_lib_headers___depname) $(__install_muParser_dll___depname) $(__install_muParser_dll_headers___depname)
+ $(INSTALL_DIR) $(libdir)/pkgconfig
+ $(INSTALL_DATA) build/autoconf/muparser.pc $(libdir)/pkgconfig
+
+uninstall: $(__uninstall_muParser_lib___depname) $(__uninstall_muParser_lib_headers___depname) $(__uninstall_muParser_dll___depname) $(__uninstall_muParser_dll_headers___depname)
+
+install-strip: install
+ $(STRIP) $(DESTDIR)$(libdir)/$(DLLPREFIX)muparser$(DEBUG_BUILD_POSTFIX)$(__muParser_dll___targetsuf3)
+
+clean:
+ rm -rf ./.deps ./.pch
+ rm -f ./*.o
+ rm -f $(top_builddir)/lib/$(LIBPREFIX)muparser$(DEBUG_BUILD_POSTFIX)$(LIBEXT)
+ rm -f $(top_builddir)/lib/$(DLLPREFIX)muparser$(DEBUG_BUILD_POSTFIX)$(__muParser_dll___targetsuf3)
+ rm -f $(top_builddir)/lib/$(LIBPREFIX)muparser$(DEBUG_BUILD_POSTFIX).$(DLLIMP_SUFFIX)
+ rm -f $(top_builddir)/lib/$(LIBPREFIX)muparser$(DEBUG_BUILD_POSTFIX).$(DLLIMP_SUFFIX) $(top_builddir)/lib/$(DLLPREFIX)muparser$(DEBUG_BUILD_POSTFIX)$(__muParser_dll___targetsuf2)
+ rm -f $(top_builddir)/samples/example1/example1$(EXEEXT)
+
+distclean: clean
+ rm -f config.cache config.log config.status bk-deps bk-make-pch shared-ld-sh Makefile
+ rm -f build/autoconf/muparser.pc
+
+@COND_SHARED_0@$(top_builddir)/lib/$(LIBPREFIX)muparser$(DEBUG_BUILD_POSTFIX)$(LIBEXT): $(MUPARSER_LIB_OBJECTS)
+@COND_SHARED_0@ rm -f $@
+@COND_SHARED_0@ $(AR) $(AROPTIONS) $@ $(MUPARSER_LIB_OBJECTS)
+@COND_SHARED_0@ $(RANLIB) $@
+
+@COND_SHARED_0@install_muParser_lib:
+@COND_SHARED_0@ $(INSTALL_DIR) $(DESTDIR)$(libdir)
+@COND_SHARED_0@ $(INSTALL_DATA) $(top_builddir)/lib/$(LIBPREFIX)muparser$(DEBUG_BUILD_POSTFIX)$(LIBEXT) $(DESTDIR)$(libdir)
+
+@COND_SHARED_0@uninstall_muParser_lib:
+@COND_SHARED_0@ rm -f $(DESTDIR)$(libdir)/$(LIBPREFIX)muparser$(DEBUG_BUILD_POSTFIX)$(LIBEXT)
+
+@COND_SHARED_0@install_muParser_lib_headers:
+@COND_SHARED_0@ $(INSTALL_DIR) $(DESTDIR)$(prefix)
+@COND_SHARED_0@ for f in $(MUPARSER_LIB_HEADERS); do \
+@COND_SHARED_0@ if test ! -d $(DESTDIR)$(prefix)/`dirname $$f` ; then \
+@COND_SHARED_0@ $(INSTALL_DIR) $(DESTDIR)$(prefix)/`dirname $$f`; \
+@COND_SHARED_0@ fi; \
+@COND_SHARED_0@ $(INSTALL_DATA) $(srcdir)/$$f $(DESTDIR)$(prefix)/$$f; \
+@COND_SHARED_0@ done
+
+@COND_SHARED_0@uninstall_muParser_lib_headers:
+@COND_SHARED_0@ for f in $(MUPARSER_LIB_HEADERS); do \
+@COND_SHARED_0@ rm -f $(DESTDIR)$(prefix)/$$f; \
+@COND_SHARED_0@ done
+
+@COND_SHARED_1@$(top_builddir)/lib/$(DLLPREFIX)muparser$(DEBUG_BUILD_POSTFIX)$(__muParser_dll___targetsuf3): $(MUPARSER_DLL_OBJECTS)
+@COND_SHARED_1@ $(SHARED_LD_CXX) $@ $(MUPARSER_DLL_OBJECTS) $(LDFLAGS) $(__muParser_dll___macinstnamecmd) $(__muParser_dll___importlib) $(__muParser_dll___soname_flags) $(__muParser_dll___macver) $(LIBS)
+@COND_SHARED_1@
+@COND_SHARED_1@ $(__muParser_dll___so_symlinks_cmd)
+
+@COND_SHARED_1@install_muParser_dll:
+@COND_SHARED_1@ $(INSTALL_DIR) $(DESTDIR)$(libdir)
+@COND_SHARED_1@ $(INSTALL_DATA) $(top_builddir)/lib/$(LIBPREFIX)muparser$(DEBUG_BUILD_POSTFIX).$(DLLIMP_SUFFIX) $(DESTDIR)$(libdir)
+@COND_SHARED_1@ $(INSTALL_PROGRAM) $(top_builddir)/lib/$(DLLPREFIX)muparser$(DEBUG_BUILD_POSTFIX)$(__muParser_dll___targetsuf3) $(DESTDIR)$(libdir)
+@COND_SHARED_1@ (cd $(DESTDIR)$(libdir) ; $(__muParser_dll___so_symlinks_inst_cmd))
+
+@COND_SHARED_1@uninstall_muParser_dll:
+@COND_SHARED_1@ rm -f $(DESTDIR)$(libdir)/$(LIBPREFIX)muparser$(DEBUG_BUILD_POSTFIX).$(DLLIMP_SUFFIX)
+@COND_SHARED_1@ rm -f $(DESTDIR)$(libdir)/$(DLLPREFIX)muparser$(DEBUG_BUILD_POSTFIX)$(__muParser_dll___targetsuf3)
+@COND_SHARED_1@ (cd $(DESTDIR)$(libdir) ; $(__muParser_dll___so_symlinks_uninst_cmd))
+
+@COND_SHARED_1@install_muParser_dll_headers:
+@COND_SHARED_1@ $(INSTALL_DIR) $(DESTDIR)$(prefix)
+@COND_SHARED_1@ for f in $(MUPARSER_DLL_HEADERS); do \
+@COND_SHARED_1@ if test ! -d $(DESTDIR)$(prefix)/`dirname $$f` ; then \
+@COND_SHARED_1@ $(INSTALL_DIR) $(DESTDIR)$(prefix)/`dirname $$f`; \
+@COND_SHARED_1@ fi; \
+@COND_SHARED_1@ $(INSTALL_DATA) $(srcdir)/$$f $(DESTDIR)$(prefix)/$$f; \
+@COND_SHARED_1@ done
+
+@COND_SHARED_1@uninstall_muParser_dll_headers:
+@COND_SHARED_1@ for f in $(MUPARSER_DLL_HEADERS); do \
+@COND_SHARED_1@ rm -f $(DESTDIR)$(prefix)/$$f; \
+@COND_SHARED_1@ done
+
+@COND_SAMPLES_1@$(top_builddir)/samples/example1/example1$(EXEEXT): $(EXAMPLE1_OBJECTS) $(__muParser_lib___depname)
+@COND_SAMPLES_1@ $(CXX) -o $@ $(EXAMPLE1_OBJECTS) -L$(top_builddir)/lib $(LDFLAGS) -L$(srcdir)/lib $(LIBS) -lmuparser$(DEBUG_BUILD_POSTFIX)
+@COND_SAMPLES_1@
+@COND_SAMPLES_1@ $(__example1___mac_setfilecmd)
+
+lib: $(__muParser_lib___depname) $(__muParser_dll___depname)
+
+samples: $(__example1___depname)
+
+documentation:
+ ( cd $(srcdir)/docs && doxygen )
+
+muParser_lib_muParserBytecode.o: $(srcdir)/src/muParserBytecode.cpp
+ $(CXXC) -c -o $@ $(MUPARSER_LIB_CXXFLAGS) $(srcdir)/src/muParserBytecode.cpp
+
+muParser_lib_muParserTest.o: $(srcdir)/src/muParserTest.cpp
+ $(CXXC) -c -o $@ $(MUPARSER_LIB_CXXFLAGS) $(srcdir)/src/muParserTest.cpp
+
+muParser_lib_muParser.o: $(srcdir)/src/muParser.cpp
+ $(CXXC) -c -o $@ $(MUPARSER_LIB_CXXFLAGS) $(srcdir)/src/muParser.cpp
+
+muParser_lib_muParserDLL.o: $(srcdir)/src/muParserDLL.cpp
+ $(CXXC) -c -o $@ $(MUPARSER_LIB_CXXFLAGS) $(srcdir)/src/muParserDLL.cpp
+
+muParser_lib_muParserInt.o: $(srcdir)/src/muParserInt.cpp
+ $(CXXC) -c -o $@ $(MUPARSER_LIB_CXXFLAGS) $(srcdir)/src/muParserInt.cpp
+
+muParser_lib_muParserTokenReader.o: $(srcdir)/src/muParserTokenReader.cpp
+ $(CXXC) -c -o $@ $(MUPARSER_LIB_CXXFLAGS) $(srcdir)/src/muParserTokenReader.cpp
+
+muParser_lib_muParserError.o: $(srcdir)/src/muParserError.cpp
+ $(CXXC) -c -o $@ $(MUPARSER_LIB_CXXFLAGS) $(srcdir)/src/muParserError.cpp
+
+muParser_lib_muParserCallback.o: $(srcdir)/src/muParserCallback.cpp
+ $(CXXC) -c -o $@ $(MUPARSER_LIB_CXXFLAGS) $(srcdir)/src/muParserCallback.cpp
+
+muParser_lib_muParserBase.o: $(srcdir)/src/muParserBase.cpp
+ $(CXXC) -c -o $@ $(MUPARSER_LIB_CXXFLAGS) $(srcdir)/src/muParserBase.cpp
+
+muParser_dll_muParserBytecode.o: $(srcdir)/src/muParserBytecode.cpp
+ $(CXXC) -c -o $@ $(MUPARSER_DLL_CXXFLAGS) $(srcdir)/src/muParserBytecode.cpp
+
+muParser_dll_muParserTest.o: $(srcdir)/src/muParserTest.cpp
+ $(CXXC) -c -o $@ $(MUPARSER_DLL_CXXFLAGS) $(srcdir)/src/muParserTest.cpp
+
+muParser_dll_muParser.o: $(srcdir)/src/muParser.cpp
+ $(CXXC) -c -o $@ $(MUPARSER_DLL_CXXFLAGS) $(srcdir)/src/muParser.cpp
+
+muParser_dll_muParserDLL.o: $(srcdir)/src/muParserDLL.cpp
+ $(CXXC) -c -o $@ $(MUPARSER_DLL_CXXFLAGS) $(srcdir)/src/muParserDLL.cpp
+
+muParser_dll_muParserInt.o: $(srcdir)/src/muParserInt.cpp
+ $(CXXC) -c -o $@ $(MUPARSER_DLL_CXXFLAGS) $(srcdir)/src/muParserInt.cpp
+
+muParser_dll_muParserTokenReader.o: $(srcdir)/src/muParserTokenReader.cpp
+ $(CXXC) -c -o $@ $(MUPARSER_DLL_CXXFLAGS) $(srcdir)/src/muParserTokenReader.cpp
+
+muParser_dll_muParserError.o: $(srcdir)/src/muParserError.cpp
+ $(CXXC) -c -o $@ $(MUPARSER_DLL_CXXFLAGS) $(srcdir)/src/muParserError.cpp
+
+muParser_dll_muParserCallback.o: $(srcdir)/src/muParserCallback.cpp
+ $(CXXC) -c -o $@ $(MUPARSER_DLL_CXXFLAGS) $(srcdir)/src/muParserCallback.cpp
+
+muParser_dll_muParserBase.o: $(srcdir)/src/muParserBase.cpp
+ $(CXXC) -c -o $@ $(MUPARSER_DLL_CXXFLAGS) $(srcdir)/src/muParserBase.cpp
+
+example1_Example1.o: $(srcdir)/samples/example1/Example1.cpp
+ $(CXXC) -c -o $@ $(EXAMPLE1_CXXFLAGS) $(srcdir)/samples/example1/Example1.cpp
+
+
+# Include dependency info, if present:
+@IF_GNU_MAKE@-include .deps/*.d
+
+.PHONY: all install uninstall clean distclean install_muParser_lib uninstall_muParser_lib install_muParser_lib_headers uninstall_muParser_lib_headers install_muParser_dll uninstall_muParser_dll install_muParser_dll_headers uninstall_muParser_dll_headers lib samples
Added: trunk/OpenMPT/muParser/build/autoconf/aclocal.m4
===================================================================
--- trunk/OpenMPT/muParser/build/autoconf/aclocal.m4 (rev 0)
+++ trunk/OpenMPT/muParser/build/autoconf/aclocal.m4 2009-12-14 20:12:20 UTC (rev 442)
@@ -0,0 +1,1593 @@
+# generated automatically by aclocal 1.9.6 -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+dnl ---------------------------------------------------------------------------
+dnl Support macros for makefiles generated by BAKEFILE.
+dnl ---------------------------------------------------------------------------
+
+dnl Lots of compiler & linker detection code contained here was taken from
+dnl wxWindows configure.in script (see http://www.wxwindows.org)
+
+
+
+dnl ---------------------------------------------------------------------------
+dnl AC_BAKEFILE_GNUMAKE
+dnl
+dnl Detects GNU make
+dnl ---------------------------------------------------------------------------
+
+AC_DEFUN([AC_BAKEFILE_GNUMAKE],
+[
+ dnl does make support "-include" (only GNU make does AFAIK)?
+ AC_CACHE_CHECK([if make is GNU make], bakefile_cv_prog_makeisgnu,
+ [
+ if ( ${SHELL-sh} -c "${MAKE-make} --version" 2> /dev/null |
+ egrep -s GNU > /dev/null); then
+ bakefile_cv_prog_makeisgnu="yes"
+ else
+ bakefile_cv_prog_makeisgnu="no"
+ fi
+ ])
+
+ if test "x$bakefile_cv_prog_makeisgnu" = "xyes"; then
+ IF_GNU_MAKE=""
+ else
+ IF_GNU_MAKE="#"
+ fi
+ AC_SUBST(IF_GNU_MAKE)
+])
+
+dnl ---------------------------------------------------------------------------
+dnl AC_BAKEFILE_PLATFORM
+dnl
+dnl Detects platform and sets PLATFORM_XXX variables accordingly
+dnl ---------------------------------------------------------------------------
+
+AC_DEFUN([AC_BAKEFILE_PLATFORM],
+[
+ PLATFORM_UNIX=0
+ PLATFORM_WIN32=0
+ PLATFORM_MSDOS=0
+ PLATFORM_MAC=0
+ PLATFORM_MACOS=0
+ PLATFORM_MACOSX=0
+ PLATFORM_OS2=0
+ PLATFORM_BEOS=0
+
+ if test "x$BAKEFILE_FORCE_PLATFORM" = "x"; then
+ case "${BAKEFILE_HOST}" in
+ *-*-mingw32* )
+ PLATFORM_WIN32=1
+ ;;
+ *-pc-msdosdjgpp )
+ PLATFORM_MSDOS=1
+ ;;
+ *-pc-os2_emx | *-pc-os2-emx )
+ PLATFORM_OS2=1
+ ;;
+ *-*-darwin* )
+ PLATFORM_MAC=1
+ PLATFORM_MACOSX=1
+ ;;
+ *-*-beos* )
+ PLATFORM_BEOS=1
+ ;;
+ powerpc-apple-macos* )
+ PLATFORM_MAC=1
+ PLATFORM_MACOS=1
+ ;;
+ * )
+ PLATFORM_UNIX=1
+ ;;
+ esac
+ else
+ case "$BAKEFILE_FORCE_PLATFORM" in
+ win32 )
+ PLATFORM_WIN32=1
+ ;;
+ msdos )
+ PLATFORM_MSDOS=1
+ ;;
+ os2 )
+ PLATFORM_OS2=1
+ ;;
+ darwin )
+ PLATFORM_MAC=1
+ PLATFORM_MACOSX=1
+ ;;
+ unix )
+ PLATFORM_UNIX=1
+ ;;
+ beos )
+ PLATFORM_BEOS=1
+ ;;
+ * )
+ AC_MSG_ERROR([Unknown platform: $BAKEFILE_FORCE_PLATFORM])
+ ;;
+ esac
+ fi
+
+ AC_SUBST(PLATFORM_UNIX)
+ AC_SUBST(PLATFORM_WIN32)
+ AC_SUBST(PLATFORM_MSDOS)
+ AC_SUBST(PLATFORM_MAC)
+ AC_SUBST(PLATFORM_MACOS)
+ AC_SUBST(PLATFORM_MACOSX)
+ AC_SUBST(PLATFORM_OS2)
+ AC_SUBST(PLATFORM_BEOS)
+])
+
+
+dnl ---------------------------------------------------------------------------
+dnl AC_BAKEFILE_PLATFORM_SPECIFICS
+dnl
+dnl Sets misc platform-specific settings
+dnl ---------------------------------------------------------------------------
+
+AC_DEFUN([AC_BAKEFILE_PLATFORM_SPECIFICS],
+[
+ AC_ARG_ENABLE([omf], AS_HELP_STRING([--enable-omf],
+ [use OMF object format (OS/2)]),
+ [bk_os2_use_omf="$enableval"])
+
+ case "${BAKEFILE_HOST}" in
+ *-*-darwin* )
+ dnl For Unix to MacOS X porting instructions, see:
+ dnl http://fink.sourceforge.net/doc/porting/porting.html
+ if test "x$GCC" = "xyes"; then
+ CFLAGS="$CFLAGS -fno-common"
+ CXXFLAGS="$CXXFLAGS -fno-common"
+ fi
+ if test "x$XLCC" = "xyes"; then
+ CFLAGS="$CFLAGS -qnocommon"
+ CXXFLAGS="$CXXFLAGS -qnocommon"
+ fi
+ ;;
+
+ *-pc-os2_emx | *-pc-os2-emx )
+ if test "x$bk_os2_use_omf" = "xyes" ; then
+ AR=emxomfar
+ RANLIB=:
+ LDFLAGS="-Zomf $LDFLAGS"
+ CFLAGS="-Zomf $CFLAGS"
+ CXXFLAGS="-Zomf $CXXFLAGS"
+ OS2_LIBEXT="lib"
+ else
+ OS2_LIBEXT="a"
+ fi
+ ;;
+
+ i*86-*-beos* )
+ LDFLAGS="-L/boot/develop/lib/x86 $LDFLAGS"
+ ;;
+ esac
+])
+
+dnl ---------------------------------------------------------------------------
+dnl AC_BAKEFILE_SUFFIXES
+dnl
+dnl Detects shared various suffixes for shared libraries, libraries, programs,
+dnl plugins etc.
+dnl ---------------------------------------------------------------------------
+
+AC_DEFUN([AC_BAKEFILE_SUFFIXES],
+[
+ SO_SUFFIX="so"
+ SO_SUFFIX_MODULE="so"
+ EXEEXT=""
+ LIBPREFIX="lib"
+ LIBEXT=".a"
+ DLLPREFIX="lib"
+ DLLPREFIX_MODULE=""
+ DLLIMP_SUFFIX=""
+ dlldir="$libdir"
+
+ case "${BAKEFILE_HOST}" in
+ *-hp-hpux* )
+ SO_SUFFIX="sl"
+ SO_SUFFIX_MODULE="sl"
+ ;;
+ *-*-aix* )
+ dnl quoting from
+ dnl http://www-1.ibm.com/servers/esdd/articles/gnu.html:
+ dnl Both archive libraries and shared libraries on AIX have an
+ dnl .a extension. This will explain why you can't link with an
+ dnl .so and why it works with the name changed to .a.
+ SO_SUFFIX="a"
+ SO_SUFFIX_MODULE="a"
+ ;;
+ *-*-cygwin* )
+ SO_SUFFIX="dll"
+ SO_SUFFIX_MODULE="dll"
+ DLLIMP_SUFFIX="dll.a"
+ EXEEXT=".exe"
+ DLLPREFIX="cyg"
+ dlldir="$bindir"
+ ;;
+ *-*-mingw32* )
+ SO_SUFFIX="dll"
+ SO_SUFFIX_MODULE="dll"
+ DLLIMP_SUFFIX="dll.a"
+ EXEEXT=".exe"
+ DLLPREFIX=""
+ dlldir="$bindir"
+ ;;
+ *-pc-msdosdjgpp )
+ EXEEXT=".exe"
+ DLLPREFIX=""
+ dlldir="$bindir"
+ ;;
+ *-pc-os2_emx | *-pc-os2-emx )
+ SO_SUFFIX="dll"
+ SO_SUFFIX_MODULE="dll"
+ DLLIMP_SUFFIX=$OS2_LIBEXT
+ EXEEXT=".exe"
+ DLLPREFIX=""
+ LIBPREFIX=""
+ LIBEXT=".$OS2_LIBEXT"
+ dlldir="$bindir"
+ ;;
+ *-*-darwin* )
+ SO_SUFFIX="dylib"
+ SO_SUFFIX_MODULE="bundle"
+ ;;
+ esac
+
+ if test "x$DLLIMP_SUFFIX" = "x" ; then
+ DLLIMP_SUFFIX="$SO_SUFFIX"
+ fi
+
+ AC_SUBST(SO_SUFFIX)
+ AC_SUBST(SO_SUFFIX_MODULE)
+ AC_SUBST(DLLIMP_SUFFIX)
+ AC_SUBST(EXEEXT)
+ AC_SUBST(LIBPREFIX)
+ AC_SUBST(LIBEXT)
+ AC_SUBST(DLLPREFIX)
+ AC_SUBST(DLLPREFIX_MODULE)
+ AC_SUBST(dlldir)
+])
+
+
+dnl ---------------------------------------------------------------------------
+dnl AC_BAKEFILE_SHARED_LD
+dnl
+dnl Detects command for making shared libraries, substitutes SHARED_LD_CC
+dnl and SHARED_LD_CXX.
+dnl ---------------------------------------------------------------------------
+
+AC_DEFUN([AC_BAKEFILE_SHARED_LD],
+[
+ dnl the extra compiler flags needed for compilation of shared library
+ PIC_FLAG=""
+ if test "x$GCC" = "xyes"; then
+ dnl the switch for gcc is the same under all platforms
+ PIC_FLAG="-fPIC"
+ fi
+
+ dnl Defaults for GCC and ELF .so shared libs:
+ SHARED_LD_CC="\$(CC) -shared ${PIC_FLAG} -o"
+ SHARED_LD_CXX="\$(CXX) -shared ${PIC_FLAG} -o"
+ WINDOWS_IMPLIB=0
+
+ case "${BAKEFILE_HOST}" in
+ *-hp-hpux* )
+ dnl default settings are good for gcc but not for the native HP-UX
+ if test "x$GCC" != "xyes"; then
+ dnl no idea why it wants it, but it does
+ LDFLAGS="$LDFLAGS -L/usr/lib"
+
+ SHARED_LD_CC="${CC} -b -o"
+ SHARED_LD_CXX="${CXX} -b -o"
+ PIC_FLAG="+Z"
+ fi
+ ;;
+
+ *-*-linux* )
+ if test "x$GCC" != "xyes"; then
+ AC_CACHE_CHECK([for Intel compiler], bakefile_cv_prog_icc,
+ [
+ AC_TRY_COMPILE([],
+ [
+ #ifndef __INTEL_COMPILER
+ This is not ICC
+ #endif
+ ],
+ bakefile_cv_prog_icc=yes,
+ bakefile_cv_prog_icc=no
+ )
+ ])
+ if test "$bakefile_cv_prog_icc" = "yes"; then
+ PIC_FLAG="-KPIC"
+ fi
+ fi
+ ;;
+
+ *-*-solaris2* )
+ if test "x$GCC" != xyes ; then
+ SHARED_LD_CC="${CC} -G -o"
+ SHARED_LD_CXX="${CXX} -G -o"
+ PIC_FLAG="-KPIC"
+ fi
+ ;;
+
+ *-*-darwin* )
+ AC_BAKEFILE_CREATE_FILE_SHARED_LD_SH
+ chmod +x shared-ld-sh
+
+ SHARED_LD_MODULE_CC="`pwd`/shared-ld-sh -bundle -headerpad_max_install_names -o"
+ SHARED_LD_MODULE_CXX="$SHARED_LD_MODULE_CC"
+
+ dnl Most apps benefit from being fully binded (its faster and static
+ dnl variables initialized at startup work).
+ dnl This can be done either with the exe linker flag -Wl,-bind_at_load
+ dnl or with a double stage link in order to create a single module
+ dnl "-init _wxWindowsDylibInit" not useful with lazy linking solved
+
+ dnl If using newer dev tools then there is a -single_module flag that
+ dnl we can use to do this for dylibs, otherwise we'll need to use a helper
+ dnl script. Check the version of gcc to see which way we can go:
+ AC_CACHE_CHECK([for gcc 3.1 or later], bakefile_cv_gcc31, [
+ AC_TRY_COMPILE([],
+ [
+ #if (__GNUC__ < 3) || \
+ ((__GNUC__ == 3) && (__GNUC_MINOR__ < 1))
+ This is old gcc
+ #endif
+ ],
+ [
+ bakefile_cv_gcc31=yes
+ ],
+ [
+ bakefile_cv_gcc31=no
+ ]
+ )
+ ])
+ if test "$bakefile_cv_gcc31" = "no"; then
+ dnl Use the shared-ld-sh helper script
+ SHARED_LD_CC="`pwd`/shared-ld-sh -dynamiclib -headerpad_max_install_names -o"
+ SHARED_LD_CXX="$SHARED_LD_CC"
+ else
+ dnl Use the -single_module flag and let the linker do it for us
+ SHARED_LD_CC="\${CC} -dynamiclib -single_module -headerpad_max_install_names -o"
+ SHARED_LD_CXX="\${CXX} -dynamiclib -single_module -headerpad_max_install_names -o"
+ fi
+
+ if test "x$GCC" == "xyes"; then
+ PIC_FLAG="-dynamic -fPIC"
+ fi
+ if test "x$XLCC" = "xyes"; then
+ PIC_FLAG="-dynamic -DPIC"
+ fi
+ ;;
+
+ *-*-aix* )
+ if test "x$GCC" = "xyes"; then
+ dnl at least gcc 2.95 warns that -fPIC is ignored when
+ dnl compiling each and every file under AIX which is annoying,
+ dnl so don't use it there (it's useless as AIX runs on
+ dnl position-independent architectures only anyhow)
+ PIC_FLAG=""
+
+ dnl -bexpfull is needed by AIX linker to export all symbols (by
+ dnl default it doesn't export any and even with -bexpall it
+ dnl doesn't export all C++ support symbols, e.g. vtable
+ dnl pointers) but it's only available starting from 5.1 (with
+ dnl maintenance pack 2, whatever this is), see
+ dnl http://www-128.ibm.com/developerworks/eserver/articles/gnu.html
+ case "${BAKEFILE_HOST}" in
+ *-*-aix5* )
+ LD_EXPFULL="-Wl,-bexpfull"
+ ;;
+ esac
+
+ SHARED_LD_CC="\$(CC) -shared $LD_EXPFULL -o"
+ SHARED_LD_CXX="\$(CXX) -shared $LD_EXPFULL -o"
+ else
+ dnl FIXME: makeC++SharedLib is obsolete, what should we do for
+ dnl recent AIX versions?
+ AC_CHECK_PROG(AIX_CXX_LD, makeC++SharedLib,
+ makeC++SharedLib, /usr/lpp/xlC/bin/makeC++SharedLib)
+ SHARED_LD_CC="$AIX_CC_LD -p 0 -o"
+ SHARED_LD_CXX="$AIX_CXX_LD -p 0 -o"
+ fi
+ ;;
+
+ *-*-beos* )
+ dnl can't use gcc under BeOS for shared library creation because it
+ dnl complains about missing 'main'
+ SHARED_LD_CC="${LD} -nostart -o"
+ SHARED_LD_CXX="${LD} -nostart -o"
+ ;;
+
+ *-*-irix* )
+ dnl default settings are ok for gcc
+ if test "x$GCC" != "xyes"; then
+ PIC_FLAG="-KPIC"
+ fi
+ ;;
+
+ *-*-cygwin* | *-*-mingw32* )
+ PIC_FLAG=""
+ SHARED_LD_CC="\$(CC) -shared -o"
+ SHARED_LD_CXX="\$(CXX) -shared -o"
+ WINDOWS_IMPLIB=1
+ ;;
+
+ *-pc-os2_emx | *-pc-os2-emx )
+ SHARED_LD_CC="`pwd`/dllar.sh -libf INITINSTANCE -libf TERMINSTANCE -o"
+ SHARED_LD_CXX="`pwd`/dllar.sh -libf INITINSTANCE -libf TERMINSTANCE -o"
+ PIC_FLAG=""
+ AC_BAKEFILE_CREATE_FILE_DLLAR_SH
+ chmod +x dllar.sh
+ ;;
+
+ powerpc-apple-macos* | \
+ *-*-freebsd* | *-*-openbsd* | *-*-netbsd* | *-*-k*bsd*-gnu | \
+ *-*-mirbsd* | \
+ *-*-sunos4* | \
+ *-*-osf* | \
+ *-*-dgux5* | \
+ *-*-sysv5* | \
+ *-pc-msdosdjgpp )
+ dnl defaults are ok
+ ;;
+
+ *)
+ AC_MSG_ERROR(unknown system type $BAKEFILE_HOST.)
+ esac
+
+ if test "x$PIC_FLAG" != "x" ; then
+ PIC_FLAG="$PIC_FLAG -DPIC"
+ fi
+
+ if test "x$SHARED_LD_MODULE_CC" = "x" ; then
+ SHARED_LD_MODULE_CC="$SHARED_LD_CC"
+ fi
+ if test "x$SHARED_LD_MODULE_CXX" = "x" ; then
+ SHARED_LD_MODULE_CXX="$SHARED_LD_CXX"
+ fi
+
+ AC_SUBST(SHARED_LD_CC)
+ AC_SUBST(SHARED_LD_CXX)
+ AC_SUBST(SHARED_LD_MODULE_CC)
+ AC_SUBST(SHARED_LD_MODULE_CXX)
+ AC_SUBST(PIC_FLAG)
+ AC_SUBST(WINDOWS_IMPLIB)
+])
+
+
+dnl ---------------------------------------------------------------------------
+dnl AC_BAKEFILE_SHARED_VERSIONS
+dnl
+dnl Detects linker options for attaching versions (sonames) to shared libs.
+dnl ---------------------------------------------------------------------------
+
+AC_DEFUN([AC_BAKEFILE_SHARED_VERSIONS],
+[
+ USE_SOVERSION=0
+ USE_SOVERLINUX=0
+ USE_SOVERSOLARIS=0
+ USE_SOVERCYGWIN=0
+ USE_SOSYMLINKS=0
+ USE_MACVERSION=0
+ SONAME_FLAG=
+
+ case "${BAKEFILE_HOST}" in
+ *-*-linux* | *-*-freebsd* | *-*-k*bsd*-gnu )
+ SONAME_FLAG="-Wl,-soname,"
+ USE_SOVERSION=1
+ USE_SOVERLINUX=1
+ USE_SOSYMLINKS=1
+ ;;
+
+ *-*-solaris2* )
+ SONAME_FLAG="-h "
+ USE_SOVERSION=1
+ USE_SOVERSOLARIS=1
+ USE_SOSYMLINKS=1
+ ;;
+
+ *-*-darwin* )
+ USE_MACVERSION=1
+ USE_SOVERSION=1
+ USE_SOSYMLINKS=1
+ ;;
+
+ *-*-cygwin* )
+ USE_SOVERSION=1
+ USE_SOVERCYGWIN=1
+ ;;
+ esac
+
+ AC_SUBST(USE_SOVERSION)
+ AC_SUBST(USE_SOVERLINUX)
+ AC_SUBST(USE_SOVERSOLARIS)
+ AC_SUBST(USE_SOVERCYGWIN)
+ AC_SUBST(USE_MACVERSION)
+ AC_SUBST(USE_SOSYMLINKS)
+ AC_SUBST(SONAME_FLAG)
+])
+
+
+dnl ---------------------------------------------------------------------------
+dnl AC_BAKEFILE_DEPS
+dnl
+dnl Detects available C/C++ dependency tracking options
+dnl ---------------------------------------------------------------------------
+
+AC_DEFUN([AC_BAKEFILE_DEPS],
+[
+ AC_ARG_ENABLE([dependency-tracking],
+ AS_HELP_STRING([--disable-dependency-tracking],
+ [don't use dependency tracking even if the compiler can]),
+ [bk_use_trackdeps="$enableval"])
+
+ AC_MSG_CHECKING([for dependency tracking method])
+
+ BK_DEPS=""
+ if test "x$bk_use_trackdeps" = "xno" ; then
+ DEPS_TRACKING=0
+ AC_MSG_RESULT([disabled])
+ else
+ DEPS_TRACKING=1
+
+ if test "x$GCC" = "xyes"; then
+ DEPSMODE=gcc
+ case "${BAKEFILE_HOST}" in
+ *-*-darwin* )
+ dnl -cpp-precomp (the default) conflicts with -MMD option
+ dnl used by bk-deps (see also http://developer.apple.com/documentation/Darwin/Conceptual/PortingUnix/compiling/chapter_4_section_3.html)
+ DEPSFLAG="-no-cpp-precomp -MMD"
+ ;;
+ * )
+ DEPSFLAG="-MMD"
+ ;;
+ esac
+ AC_MSG_RESULT([gcc])
+ elif test "x$MWCC" = "xyes"; then
+ DEPSMODE=mwcc
+ DEPSFLAG="-MM"
+ AC_MSG_RESULT([mwcc])
+ elif test "x$SUNCC" = "xyes"; then
+ DEPSMODE=unixcc
+ DEPSFLAG="-xM1"
+ AC_MSG_RESULT([Sun cc])
+ elif test "x$SGICC" = "xyes"; then
+ DEPSMODE=unixcc
+ DEPSFLAG="-M"
+ AC_MSG_RESULT([SGI cc])
+ elif test "x$HPCC" = "xyes"; then
+ DEPSMODE=unixcc
+ DEPSFLAG="+make"
+ AC_MSG_RESULT([HP cc])
+ elif test "x$COMPAQCC" = "xyes"; then
+ DEPSMODE=gcc
+ DEPSFLAG="-MD"
+ AC_MSG_RESULT([Compaq cc])
+ else
+ DEPS_TRACKING=0
+ AC_MSG_RESULT([none])
+ fi
+
+ if test $DEPS_TRACKING = 1 ; then
+ AC_BAKEFILE_CREATE_FILE_BK_DEPS
+ chmod +x bk-deps
+ dnl FIXME: make this $(top_builddir)/bk-deps once autoconf-2.60
+ dnl is required (and so top_builddir is never empty):
+ BK_DEPS="`pwd`/bk-deps"
+ fi
+ fi
+
+ AC_SUBST(DEPS_TRACKING)
+ AC_SUBST(BK_DEPS)
+])
+
+dnl ---------------------------------------------------------------------------
+dnl AC_BAKEFILE_CHECK_BASIC_STUFF
+dnl
+dnl Checks for presence of basic programs, such as C and C++ compiler, "ranlib"
+dnl or "install"
+dnl ---------------------------------------------------------------------------
+
+AC_DEFUN([AC_BAKEFILE_CHECK_BASIC_STUFF],
+[
+ AC_PROG_RANLIB
+ AC_PROG_INSTALL
+ AC_PROG_LN_S
+
+ AC_PROG_MAKE_SET
+ AC_SUBST(MAKE_SET)
+
+ if test "x$SUNCXX" = "xyes"; then
+ dnl Sun C++ compiler requires special way of creating static libs;
+ dnl see here for more details:
+ dnl https://sourceforge.net/tracker/?func=detail&atid=109863&aid=1229751&group_id=9863
+ AR=$CXX
+ AC_SUBST(AR)
+ AROPTIONS="-xar -o"
+ else
+ AC_CHECK_TOOL(AR, ar, ar)
+ AROPTIONS=rcu
+ fi
+ AC_SUBST(AROPTIONS)
+
+ AC_CHECK_TOOL(STRIP, strip, :)
+ AC_CHECK_TOOL(NM, nm, :)
+
+ case ${BAKEFILE_HOST} in
+ *-hp-hpux* )
+ dnl HP-UX install doesn't handle the "-d" switch so don't
+ dnl use it there
+ INSTALL_DIR="mkdir -p"
+ ;;
+ * )
+ dnl we must refer to makefile's $(INSTALL) variable and not
+ dnl current value of shell variable, hence the single quoting:
+ INSTALL_DIR='$(INSTALL) -d'
+ ;;
+ esac
+ AC_SUBST(INSTALL_DIR)
+
+ LDFLAGS_GUI=
+ case ${BAKEFILE_HOST} in
+ *-*-cygwin* | *-*-mingw32* )
+ LDFLAGS_GUI="-mwindows"
+ esac
+ AC_SUBST(LDFLAGS_GUI)
+])
+
+
+dnl ---------------------------------------------------------------------------
+dnl AC_BAKEFILE_RES_COMPILERS
+dnl
+dnl Checks for presence of resource compilers for win32 or mac
+dnl ---------------------------------------------------------------------------
+
+AC_DEFUN([AC_BAKEFILE_RES_COMPILERS],
+[
+ case ${BAKEFILE_HOST} in
+ *-*-cygwin* | *-*-mingw32* )
+ dnl Check for win32 resources compiler:
+ AC_CHECK_TOOL(WINDRES, windres)
+ ;;
+
+ *-*-darwin* | powerpc-apple-macos* )
+ AC_CHECK_PROG(REZ, Rez, Rez, /Developer/Tools/Rez)
+ AC_CHECK_PROG(SETFILE, SetFile, SetFile, /Developer/Tools/SetFile)
+ ;;
+ esac
+
+ AC_SUBST(WINDRES)
+ AC_SUBST(REZ)
+ AC_SUBST(SETFILE)
+])
+
+dnl ---------------------------------------------------------------------------
+dnl AC_BAKEFILE_PRECOMP_HEADERS
+dnl
+dnl Check for precompiled headers support (GCC >= 3.4)
+dnl ---------------------------------------------------------------------------
+
+AC_DEFUN([AC_BAKEFILE_PRECOMP_HEADERS],
+[
+
+ AC_ARG_ENABLE([precomp-headers],
+ AS_HELP_STRING([--disable-precomp-headers],
+ [don't use precompiled headers even if compiler can]),
+ [bk_use_pch="$enableval"])
+
+ GCC_PCH=0
+ ICC_PCH=0
+ USE_PCH=0
+ BK_MAKE_PCH=""
+
+ case ${BAKEFILE_HOST} in
+ *-*-cygwin* )
+ dnl PCH support is broken in cygwin gcc because of unportable
+ dnl assumptions about mmap() in gcc code which make PCH generation
+ dnl fail erratically; disable PCH completely until this is fixed
+ bk_use_pch="no"
+ ;;
+ esac
+
+ if test "x$bk_use_pch" = "x" -o "x$bk_use_pch" = "xyes" ; then
+ if test "x$GCC" = "xyes"; then
+ dnl test if we have gcc-3.4:
+ AC_MSG_CHECKING([if the compiler supports precompiled headers])
+ AC_TRY_COMPILE([],
+ [
+ #if !defined(__GNUC__) || !defined(__GNUC_MINOR__)
+ There is no PCH support
+ #endif
+ #if (__GNUC__ < 3)
+ There is no PCH support
+ #endif
+ #if (__GNUC__ == 3) && \
+ ((!defined(__APPLE_CC__) && (__GNUC_MINOR__ < 4)) || \
+ ( defined(__APPLE_CC__) && (__GNUC_MINOR__ < 3))) || \
+ ( defined(__INTEL_COMPILER) )
+ There is no PCH support
+ #endif
+ ],
+ [
+ AC_MSG_RESULT([yes])
+ GCC_PCH=1
+ ],
+ [
+ AC_TRY_COMPILE([],
+ [
+ #if !defined(__INTEL_COMPILER) || \
+ (__INTEL_COMPILER < 800)
+ There is no PCH support
+ #endif
+ ],
+ [
+ AC_MSG_RESULT([yes])
+ ICC_PCH=1
+ ],
+ [
+ AC_MSG_RESULT([no])
+ ])
+ ])
+ if test $GCC_PCH = 1 -o $ICC_PCH = 1 ; then
+ USE_PCH=1
+ AC_BAKEFILE_CREATE_FILE_BK_MAKE_PCH
+ chmod +x bk-make-pch
+ dnl FIXME: make this $(top_builddir)/bk-make-pch once
+ dnl autoconf-2.60 is required (and so top_builddir is
+ dnl never empty):
+ BK_MAKE_PCH="`pwd`/bk-make-pch"
+ fi
+ fi
+ fi
+
+ AC_SUBST(GCC_PCH)
+ AC_SUBST(ICC_PCH)
+ AC_SUBST(BK_MAKE_PCH)
+])
+
+
+
+dnl ---------------------------------------------------------------------------
+dnl AC_BAKEFILE([autoconf_inc.m4 inclusion])
+dnl
+dnl To be used in configure.in of any project using Bakefile-generated mks
+dnl
+dnl Behaviour can be modified by setting following variables:
+dnl BAKEFILE_CHECK_BASICS set to "no" if you don't want bakefile to
+dnl to perform check for basic tools like ranlib
+dnl BAKEFILE_HOST set this to override host detection, defaults
+dnl to ${host}
+dnl BAKEFILE_FORCE_PLATFORM set to override platform detection
+dnl
+dnl Example usage:
+dnl
+dnl AC_BAKEFILE([FOO(autoconf_inc.m4)])
+dnl
+dnl (replace FOO with m4_include above, aclocal would die otherwise)
+dnl (yes, it's ugly, but thanks to a bug in aclocal, it's the only thing
+dnl we can do...)
+dnl ---------------------------------------------------------------------------
+
+AC_DEFUN([AC_BAKEFILE],
+[
+ AC_PREREQ([2.58])
+
+ if test "x$BAKEFILE_HOST" = "x"; then
+ if test "x${host}" = "x" ; then
+ AC_MSG_ERROR([You must call the autoconf "CANONICAL_HOST" macro in your configure.ac (or .in) file.])
+ fi
+
+ BAKEFILE_HOST="${host}"
+ fi
+
+ if test "x$BAKEFILE_CHECK_BASICS" != "xno"; then
+ AC_BAKEFILE_CHECK_BASIC_STUFF
+ fi
+ AC_BAKEFILE_GNUMAKE
+ AC_BAKEFILE_PLATFORM
+ AC_BAKEFILE_PLATFORM_SPECIFICS
+ AC_BAKEFILE_SUFFIXES
+ AC_BAKEFILE_SHARED_LD
+ AC_BAKEFILE_SHARED_VERSIONS
+ AC_BAKEFILE_DEPS
+ AC_BAKEFILE_RES_COMPILERS
+
+ BAKEFILE_BAKEFILE_M4_VERSION="0.2.1"
+
+ dnl includes autoconf_inc.m4:
+ $1
+
+ if test "$BAKEFILE_AUTOCONF_INC_M4_VERSION" = "" ; then
+ AC_MSG_ERROR([No version found in autoconf_inc.m4 - bakefile macro was changed to take additional argument, perhaps configure.in wasn't updated (see the documentation)?])
+ fi
+
+ if test "$BAKEFILE_BAKEFILE_M4_VERSION" != "$BAKEFILE_AUTOCONF_INC_M4_VERSION" ; then
+ AC_MSG_ERROR([Versions of Bakefile used to generate makefiles ($BAKEFILE_AUTOCONF_INC_M4_VERSION) and configure ($BAKEFILE_BAKEFILE_M4_VERSION) do not match.])
+ fi
+])
+
+
+dnl ---------------------------------------------------------------------------
+dnl Embedded copies of helper scripts follow:
+dnl ---------------------------------------------------------------------------
+
+AC_DEFUN([AC_BAKEFILE_CREATE_FILE_DLLAR_SH],
+[
+dnl ===================== dllar.sh begins here =====================
+dnl (Created by merge-scripts.py from dllar.sh
+dnl file do not edit here!)
+D='$'
+cat <<EOF >dllar.sh
+#!/bin/sh
+#
+# dllar - a tool to build both a .dll and an .a file
+# from a set of object (.o) files for EMX/OS2.
+#
+# Written by Andrew Zabolotny, bi...@fr...
+# Ported to Unix like shell by Stefan Neis, Ste...@t-...
+#
+# This script will accept a set of files on the command line.
+# All the public symbols from the .o files will be exported into
+# a .DEF file, then linker will be run (through gcc) against them to
+# build a shared library consisting of all given .o files. All libraries
+# (.a) will be first decompressed into component .o files then act as
+# described above. You can optionally give a description (-d "description")
+# which will be put into .DLL. To see the list of accepted options (as well
+# as command-line format) simply run this program without options. The .DLL
+# is built to be imported by name (there is no guarantee that new versions
+# of the library you build will have same ordinals for same symbols).
+#
+# dllar is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# dllar is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with dllar; see the file COPYING. If not, write to the Free
+# Software Foundation, 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# To successfuly run this program you will need:
+# - Current drive should have LFN support (HPFS, ext2, network, etc)
+# (Sometimes dllar generates filenames which won't fit 8.3 scheme)
+# - gcc
+# (used to build the .dll)
+# - emxexp
+# (used to create .def file from .o files)
+# - emximp
+# (used to create .a file from .def file)
+# - GNU text utilites (cat, sort, uniq)
+# used to process emxexp output
+# - GNU file utilities (mv, rm)
+# - GNU sed
+# - lxlite (optional, see flag below)
+# (used for general .dll cleanup)
+#
+
+flag_USE_LXLITE=1;
+
+#
+# helper functions
+# basnam, variant of basename, which does _not_ remove the path, _iff_
+# second argument (suffix to remove) is given
+basnam(){
+ case ${D}# in
+ 1)
+ echo ${D}1 | sed 's/.*\\///' | sed 's/.*\\\\//'
+ ;;
+ 2)
+ echo ${D}1 | sed 's/'${D}2'${D}//'
+ ;;
+ *)
+ echo "error in basnam ${D}*"
+ exit 8
+ ;;
+ esac
+}
+
+# Cleanup temporary files and output
+CleanUp() {
+ cd ${D}curDir
+ for i in ${D}inputFiles ; do
+ case ${D}i in
+ *!)
+ rm -rf \`basnam ${D}i !\`
+ ;;
+ *)
+ ;;
+ esac
+ done
+
+ # Kill result in case of failure as there is just to many stupid make/nmake
+ # things out there which doesn't do this.
+ if @<:@ ${D}# -eq 0 @:>@; then
+ rm -f ${D}arcFile ${D}arcFile2 ${D}defFile ${D}dllFile
+ fi
+}
+
+# Print usage and exit script with rc=1.
+PrintHelp() {
+ echo 'Usage: dllar.sh @<:@-o@<:@utput@:>@ output_file@:>@ @<:@-i@<:@mport@:>@ importlib_name@:>@'
+ echo ' @<:@-name-mangler-script script.sh@:>@'
+ echo ' @<:@-d@<:@escription@:>@ "dll descrption"@:>@ @<:@-cc "CC"@:>@ @<:@-f@<:@lags@:>@ "CFLAGS"@:>@'
+ echo ' @<:@-ord@<:@inals@:>@@:>@ -ex@<:@clude@:>@ "symbol(s)"'
+ echo ' @<:@-libf@<:@lags@:>@ "{INIT|TERM}{GLOBAL|INSTANCE}"@:>@ @<:@-nocrt@<:@dll@:>@@:>@ @<:@-nolxl@<:@ite@:>@@:>@'
+ echo ' @<:@*.o@:>@ @<:@*.a@:>@'
+ echo '*> "output_file" should have no extension.'
+ echo ' If it has the .o, .a or .dll extension, it is automatically removed.'
+ echo ' The import library name is derived from this and is set to "name".a,'
+ echo ' unless overridden by -import'
+ echo '*> "importlib_name" should have no extension.'
+ echo ' If it has the .o, or .a extension, it is automatically removed.'
+ echo ' This name is used as the import library name and may be longer and'
+ echo ' more descriptive than the DLL name which has to follow the old '
+ echo ' 8.3 convention of FAT.'
+ echo '*> "script.sh may be given to override the output_file name by a'
+ echo ' different name. It is mainly useful if the regular make process'
+ echo ' of some package does not take into account OS/2 restriction of'
+ echo ' DLL name lengths. It takes the importlib name as input and is'
+ echo ' supposed to procude a shorter name as output. The script should'
+ echo ' expect to get importlib_name without extension and should produce'
+ echo ' a (max.) 8 letter name without extension.'
+ echo '*> "cc" is used to use another GCC executable. (default: gcc.exe)'
+ echo '*> "flags" should be any set of valid GCC flags. (default: -s -Zcrtdll)'
+ echo ' These flags will be put at the start of GCC command line.'
+ echo '*> -ord@<:@inals@:>@ tells dllar to export entries by ordinals. Be careful.'
+ echo '*> -ex@<:@clude@:>@ defines symbols which will not be exported. You can define'
+ echo ' multiple symbols, for example -ex "myfunc yourfunc _GLOBAL*".'
+ echo ' If the last character of a symbol is "*", all symbols beginning'
+ echo ' with the prefix before "*" will be exclude, (see _GLOBAL* above).'
+ echo '*> -libf@<:@lags@:>@ can be used to add INITGLOBAL/INITINSTANCE and/or'
+ echo ' TERMGLOBAL/TERMINSTANCE flags to the dynamically-linked library.'
+ echo '*> -nocrt@<:@dll@:>@ switch will disable linking the library against emx''s'
+ echo ' C runtime DLLs.'
+ echo '*> -nolxl@<:@ite@:>@ switch will disable running lxlite on the resulting DLL.'
+ echo '*> All other switches (for example -L./ or -lmylib) will be passed'
+ echo ' unchanged to GCC at the end of command line.'
+ echo '*> If you create a DLL from a library and you do not specify -o,'
+ echo ' the basename for DLL and import library will be set to library name,'
+ echo ' the initial library will be renamed to 'name'_s.a (_s for static)'
+ echo ' i.e. "dllar gcc.a" will create gcc.dll and gcc.a, and the initial'
+ echo ' library will be renamed into gcc_s.a.'
+ echo '--------'
+ echo 'Example:'
+ echo ' dllar -o gcc290.dll libgcc.a -d "GNU C runtime library" -ord'
+ echo ' -ex "__main __ctordtor*" -libf "INITINSTANCE TERMINSTANCE"'
+ CleanUp
+ exit 1
+}
+
+# Execute a command.
+# If exit code of the commnad <> 0 CleanUp() is called and we'll exit the script.
+# @Uses Whatever CleanUp() uses.
+doCommand() {
+ echo "${D}*"
+ eval ${D}*
+ rcCmd=${D}?
+
+ if @<:@ ${D}rcCmd -ne 0 @:>@; then
+ echo "command failed, exit code="${D}rcCmd
+ CleanUp
+ exit ${D}rcCmd
+ fi
+}
+
+# main routine
+# setup globals
+cmdLine=${D}*
+outFile=""
+outimpFile=""
+inputFiles=""
+renameScript=""
+description=""
+CC=gcc.exe
+CFLAGS="-s -Zcrtdll"
+EXTRA_CFLAGS=""
+EXPORT_BY_ORDINALS=0
+exclude_symbols=""
+library_flags=""
+curDir=\`pwd\`
+curDirS=curDir
+case ${D}curDirS in
+*/)
+ ;;
+*)
+ curDirS=${D}{curDirS}"/"
+ ;;
+esac
+# Parse commandline
+libsToLink=0
+omfLinking=0
+while @<:@ ${D}1 @:>@; do
+ case ${D}1 in
+ -ord*)
+ EXPORT_BY_ORDINALS=1;
+ ;;
+ -o*)
+ shift
+ outFile=${D}1
+ ;;
+ -i*)
+ shift
+ outimpFile=${D}1
+ ;;
+ -name-mangler-script)
+ shift
+ renameScript=${D}1
+ ;;
+ -d*)
+ shift
+ description=${D}1
+ ;;
+ -f*)
+ shift
+ CFLAGS=${D}1
+ ;;
+ -c*)
+ shift
+ CC=${D}1
+ ;;
+ -h*)
+ PrintHelp
+ ;;
+ -ex*)
+ shift
+ exclude_symbols=${D}{exclude_symbols}${D}1" "
+ ;;
+ -libf*)
+ shift
+ library_flags=${D}{library_flags}${D}1" "
+ ;;
+ -nocrt*)
+ CFLAGS="-s"
+ ;;
+ -nolxl*)
+ flag_USE_LXLITE=0
+ ;;
+ -* | /*)
+ case ${D}1 in
+ -L* | -l*)
+ libsToLink=1
+ ;;
+ -Zomf)
+ omfLinking=1
+ ;;
+ *)
+ ;;
+ esac
+ EXTRA_CFLAGS=${D}{EXTRA_CFLAGS}" "${D}1
+ ;;
+ *.dll)
+ EXTRA_CFLAGS="${D}{EXTRA_CFLAGS} \`basnam ${D}1 .dll\`"
+ if @<:@ ${D}omfLinking -eq 1 @:>@; then
+ EXTRA_CFLAGS="${D}{EXTRA_CFLAGS}.lib"
+ else
+ EXTRA_CFLAGS="${D}{EXTRA_CFLAGS}.a"
+ fi
+ ;;
+ *)
+ found=0;
+ if @<:@ ${D}libsToLink -ne 0 @:>@; then
+ EXTRA_CFLAGS=${D}{EXTRA_CFLAGS}" "${D}1
+ else
+ for file in ${D}1 ; do
+ if @<:@ -f ${D}file @:>@; then
+ inputFiles="${D}{inputFiles} ${D}file"
+ found=1
+ fi
+ done
+ if @<:@ ${D}found -eq 0 @:>@; then
+ echo "ERROR: No file(s) found: "${D}1
+ exit 8
+ fi
+ fi
+ ;;
+ esac
+ shift
+done # iterate cmdline words
+
+#
+if @<:@ -z "${D}inputFiles" @:>@; then
+ echo "dllar: no input files"
+ PrintHelp
+fi
+
+# Now extract all .o files from .a files
+newInputFiles=""
+for file in ${D}inputFiles ; do
+ case ${D}file in
+ *.a | *.lib)
+ case ${D}file in
+ *.a)
+ suffix=".a"
+ AR="ar"
+ ;;
+ *.lib)
+ suffix=".lib"
+ AR="emxomfar"
+ EXTRA_CFLAGS="${D}EXTRA_CFLAGS -Zomf"
+ ;;
+ *)
+ ;;
+ esac
+ dirname=\`basnam ${D}file ${D}suffix\`"_%"
+ mkdir ${D}dirname
+ if @<:@ ${D}? -ne 0 @:>@; then
+ echo "Failed to create subdirectory ./${D}dirname"
+ CleanUp
+ exit 8;
+ fi
+ # Append '!' to indicate archive
+ newInputFiles="${D}newInputFiles ${D}{dirname}!"
+ doCommand "cd ${D}dirname; ${D}AR x ../${D}file"
+ cd ${D}curDir
+ found=0;
+ for subfile in ${D}dirname/*.o* ; do
+ if @<:@ -f ${D}subfile @:>@; then
+ found=1
+ if @<:@ -s ${D}subfile @:>@; then
+ # FIXME: This should be: is file size > 32 byte, _not_ > 0!
+ newInputFiles="${D}newInputFiles ${D}subfile"
+ fi
+ fi
+ done
+ if @<:@ ${D}found -eq 0 @:>@; then
+ echo "WARNING: there are no files in archive \\'${D}file\\'"
+ fi
+ ;;
+ *)
+ newInputFiles="${D}{newInputFiles} ${D}file"
+ ;;
+ esac
+done
+inputFiles="${D}newInputFiles"
+
+# Output filename(s).
+do_backup=0;
+if @<:@ -z ${D}outFile @:>@; then
+ do_backup=1;
+ set outFile ${D}inputFiles; outFile=${D}2
+fi
+
+# If it is an archive, remove the '!' and the '_%' suffixes
+case ${D}outFile in
+*_%!)
+ outFile=\`basnam ${D}outFile _%!\`
+ ;;
+*)
+ ;;
+esac
+case ${D}outFile in
+*.dll)
+ outFile=\`basnam ${D}outFile .dll\`
+ ;;
+*.DLL)
+ outFile=\`basnam ${D}outFile .DLL\`
+ ;;
+*.o)
+ outFile=\`basnam ${D}outFile .o\`
+ ;;
+*.obj)
+...
[truncated message content] |
|
From: <sag...@us...> - 2009-12-13 15:28:16
|
Revision: 441
http://modplug.svn.sourceforge.net/modplug/?rev=441&view=rev
Author: saga-games
Date: 2009-12-13 15:28:07 +0000 (Sun, 13 Dec 2009)
Log Message:
-----------
[Fix] IT Compatibility: Fixes from SchismTracker: VolSwing, PanSwing, PPS
[Fix] XM Compatibility: Slightly improved Rxy behaviour.
Modified Paths:
--------------
trunk/OpenMPT/soundlib/Snd_fx.cpp
trunk/OpenMPT/soundlib/Sndmix.cpp
Modified: trunk/OpenMPT/soundlib/Snd_fx.cpp
===================================================================
--- trunk/OpenMPT/soundlib/Snd_fx.cpp 2009-12-11 23:39:57 UTC (rev 440)
+++ trunk/OpenMPT/soundlib/Snd_fx.cpp 2009-12-13 15:28:07 UTC (rev 441)
@@ -768,7 +768,7 @@
if(!IsCompatibleMode(TRK_IMPULSETRACKER))
{
//IT compatibility 15. Retrigger will not be reset (Tremor doesn't store anything here, so we just don't reset this as well)
- pChn->nRetrigCount = 0;
+ if(!IsCompatibleMode(TRK_FASTTRACKER2)) pChn->nRetrigCount = 0;
pChn->nTremorCount = 0;
}
if (bResetEnv)
@@ -785,15 +785,29 @@
// Volume Swing
if (pIns->nVolSwing)
{
- int d = ((LONG)pIns->nVolSwing * (LONG)((rand() & 0xFF) - 0x7F)) / 128;
- pChn->nVolSwing = (signed short)((d * pChn->nVolume + 1)/128);
+ if(IsCompatibleMode(TRK_IMPULSETRACKER))
+ {
+ double d = 2 * (((double) rand()) / RAND_MAX) - 1;
+ pChn->nVolSwing = d * pIns->nVolSwing / 100.0 * pChn->nVolume;
+ } else
+ {
+ int d = ((LONG)pIns->nVolSwing * (LONG)((rand() & 0xFF) - 0x7F)) / 128;
+ pChn->nVolSwing = (signed short)((d * pChn->nVolume + 1)/128);
+ }
}
// Pan Swing
if (pIns->nPanSwing)
{
- int d = ((LONG)pIns->nPanSwing * (LONG)((rand() & 0xFF) - 0x7F)) / 128;
- pChn->nPanSwing = (signed short)d;
- pChn->nRestorePanOnNewNote = pChn->nPan+1;
+ if(IsCompatibleMode(TRK_IMPULSETRACKER))
+ {
+ double d = 2 * (((double) rand()) / RAND_MAX) - 1;
+ pChn->nPanSwing = d * pIns->nPanSwing * 4;
+ } else
+ {
+ int d = ((LONG)pIns->nPanSwing * (LONG)((rand() & 0xFF) - 0x7F)) / 128;
+ pChn->nPanSwing = (signed short)d;
+ pChn->nRestorePanOnNewNote = pChn->nPan + 1;
+ }
}
// Cutoff Swing
if (pIns->nCutSwing)
@@ -2500,7 +2514,7 @@
// E4x: Set Vibrato WaveForm
case 0x40: pChn->nVibratoType = param & 0x07; break;
// E5x: Set FineTune
- case 0x50: if (m_nTickCount) break;
+ case 0x50: if(!(m_dwSongFlags & SONG_FIRSTTICK)) break;
pChn->nC5Speed = S3MFineTuneTable[param];
if (m_nType & (MOD_TYPE_XM|MOD_TYPE_MT2))
pChn->nFineTune = param*2;
@@ -2536,7 +2550,11 @@
if((m_nType & MOD_TYPE_MOD) != 0) // MOD: Invert Loop
{
pChn->nEFxSpeed = param;
- if(m_dwSongFlags & SONG_FIRSTTICK) InvertLoop(pChn);
+ if(m_dwSongFlags & SONG_FIRSTTICK)
+ {
+ //if((pChn->nRowInstr != 0) && (m_nTickCount == 0)) pChn->nEFxOffset = 0; // reset offset (except when in pattern delay) TODO
+ InvertLoop(pChn);
+ }
}
else // XM: Set Active Midi Macro
{
@@ -2559,7 +2577,7 @@
// S1x: Set Glissando Control
case 0x10: pChn->dwFlags &= ~CHN_GLISSANDO; if (param) pChn->dwFlags |= CHN_GLISSANDO; break;
// S2x: Set FineTune
- case 0x20: if (m_nTickCount) break;
+ case 0x20: if(!(m_dwSongFlags & SONG_FIRSTTICK)) break;
pChn->nC5Speed = S3MFineTuneTable[param & 0x0F];
pChn->nFineTune = MOD2XMFineTune(param);
if (pChn->nPeriod) pChn->nPeriod = GetPeriodFromNote(pChn->nNote, pChn->nFineTune, pChn->nC5Speed);
@@ -2573,7 +2591,7 @@
// S6x: Pattern Delay for x frames
case 0x60: m_nFrameDelay = param; break;
// S7x: Envelope Control
- case 0x70: if (m_nTickCount) break;
+ case 0x70: if(!(m_dwSongFlags & SONG_FIRSTTICK)) break;
switch(param)
{
case 0:
@@ -3150,8 +3168,9 @@
if(m_dwSongFlags & SONG_FIRSTTICK)
{
- // FT2 bug: if a retrig (Rxy) occours together with a volume command, the first retrig interval is increased by one tick
- if(pChn->nRowVolCmd == VOLCMD_VOLUME) nRetrigCount = -1;
+ // here are some really stupid things FT2 does
+ if(pChn->nRowInstr > 0 && pChn->nRowNote == NOTE_NONE) nRetrigCount = 1;
+ if(pChn->nRowVolCmd == VOLCMD_VOLUME) nRetrigCount = -1; // not correct yet
if(pChn->nRowNote != NOTE_NONE && pChn->nRowNote <= GetModSpecifications().noteMax) nRetrigCount++;
}
if (nRetrigCount >= nRetrigSpeed)
@@ -3164,6 +3183,8 @@
}
} else
{
+ // old routines
+
if (m_nType & (MOD_TYPE_S3M|MOD_TYPE_IT|MOD_TYPE_MPT))
{
if (!nRetrigSpeed) nRetrigSpeed = 1;
Modified: trunk/OpenMPT/soundlib/Sndmix.cpp
===================================================================
--- trunk/OpenMPT/soundlib/Sndmix.cpp 2009-12-11 23:39:57 UTC (rev 440)
+++ trunk/OpenMPT/soundlib/Sndmix.cpp 2009-12-13 15:28:07 UTC (rev 441)
@@ -1153,7 +1153,9 @@
// Pitch/Pan separation
if ((pIns->nPPS) && (pChn->nRealPan) && (pChn->nNote))
{
- int pandelta = (int)pChn->nRealPan + (int)((int)(pChn->nNote - pIns->nPPC - 1) * (int)pIns->nPPS) / (int)8;
+ // PPS value is 1/512, i.e. PPS=1 will adjust by 8/512 = 1/64 for each 8 semitones
+ // with PPS = 32 / PPC = C-5, E-6 will pan hard right (and D#6 will not)
+ int pandelta = (int)pChn->nRealPan + (int)((int)(pChn->nNote - pIns->nPPC - 1) * (int)pIns->nPPS) / (int)(IsCompatibleMode(TRK_IMPULSETRACKER) ? 4 : 8);
pChn->nRealPan = CLAMP(pandelta, 0, 256);
}
} else
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <sag...@us...> - 2009-12-11 23:40:12
|
Revision: 440
http://modplug.svn.sourceforge.net/modplug/?rev=440&view=rev
Author: saga-games
Date: 2009-12-11 23:39:57 +0000 (Fri, 11 Dec 2009)
Log Message:
-----------
[Fix] XM Compatibility: A somewhat more compatible Rxy effect. Still needs more testing, as it's approximately the same algorithm as in Milky (which I know is not 100% correct).
[Fix] Comments tab: The lower part of the tab was receiving update messages that were not even meaningful to this tab (f.e. speed changes), so it was updating quite often modules that have alternating speed... Only letting in important update messages now.
[Fix] Wave Convert: The wave convert dialog had two default buttons, one of them (the "default default button") didn't make sense.
Modified Paths:
--------------
trunk/OpenMPT/mptrack/mptrack.rc
trunk/OpenMPT/mptrack/view_com.cpp
trunk/OpenMPT/soundlib/Snd_fx.cpp
trunk/OpenMPT/soundlib/Sndfile.h
Modified: trunk/OpenMPT/mptrack/mptrack.rc
===================================================================
--- trunk/OpenMPT/mptrack/mptrack.rc 2009-12-08 19:42:46 UTC (rev 439)
+++ trunk/OpenMPT/mptrack/mptrack.rc 2009-12-11 23:39:57 UTC (rev 440)
@@ -220,7 +220,7 @@
END
IDD_WAVECONVERT DIALOGEX 0, 0, 262, 197
-STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
+STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Wave Convert"
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
@@ -229,7 +229,7 @@
GROUPBOX "Render",IDC_STATIC,6,6,192,90
COMBOBOX IDC_COMBO1,18,18,54,82,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
COMBOBOX IDC_COMBO2,78,18,73,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
- DEFPUSHBUTTON "Change Player Options",IDC_PLAYEROPTIONS,18,36,81,14,BS_CENTER
+ PUSHBUTTON "Change Player Options",IDC_PLAYEROPTIONS,18,36,81,14,BS_CENTER
CONTROL "Channel mode (one file per channel)",IDC_CHECK4,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,18,54,168,8
CONTROL "Normalize Output",IDC_CHECK5,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,18,66,73,10
CONTROL "High quality resampling",IDC_CHECK3,"Button",BS_AUTOCHECKBOX | NOT WS_VISIBLE | WS_TABSTOP,102,66,84,10
Modified: trunk/OpenMPT/mptrack/view_com.cpp
===================================================================
--- trunk/OpenMPT/mptrack/view_com.cpp 2009-12-08 19:42:46 UTC (rev 439)
+++ trunk/OpenMPT/mptrack/view_com.cpp 2009-12-11 23:39:57 UTC (rev 440)
@@ -180,7 +180,10 @@
m_ToolBar.UpdateStyle();
lHint &= ~HINT_MPTOPTIONS;
}
- lHint &= ~(HINT_SAMPLEDATA|HINT_PATTERNDATA|HINT_ENVELOPE);
+ lHint &= (HINT_MODTYPE
+ |HINT_SMPNAMES|HINT_SAMPLEINFO
+ |HINT_INSNAMES|HINT_INSTRUMENT
+ /*|HINT_PATNAMES|HINT_PATTERNROW*/); // pattern stuff currently unused
if (!lHint) return;
m_ItemList.SetRedraw(FALSE);
// Add sample headers
Modified: trunk/OpenMPT/soundlib/Snd_fx.cpp
===================================================================
--- trunk/OpenMPT/soundlib/Snd_fx.cpp 2009-12-08 19:42:46 UTC (rev 439)
+++ trunk/OpenMPT/soundlib/Snd_fx.cpp 2009-12-11 23:39:57 UTC (rev 440)
@@ -3122,13 +3122,13 @@
}
//end rewbs.volOffset:
-void CSoundFile::RetrigNote(UINT nChn, UINT param, UINT offset) //rewbs.VolOffset: added offset param.
-//-------------------------------------------------------------
+void CSoundFile::RetrigNote(UINT nChn, int param, UINT offset) //rewbs.VolOffset: added offset param.
+//------------------------------------------------------------
{
// Retrig: bit 8 is set if it's the new XM retrig
MODCHANNEL *pChn = &Chn[nChn];
- UINT nRetrigSpeed = param & 0x0F;
- UINT nRetrigCount = pChn->nRetrigCount;
+ int nRetrigSpeed = param & 0x0F;
+ int nRetrigCount = pChn->nRetrigCount;
bool bDoRetrig = false;
if(IsCompatibleMode(TRK_IMPULSETRACKER))
@@ -3144,8 +3144,26 @@
bDoRetrig = true;
}
}
- else
+ else if(IsCompatibleMode(TRK_FASTTRACKER2) && (param & 0x100))
{
+ // buggy-like-hell FT2 Rxy retrig!
+
+ if(m_dwSongFlags & SONG_FIRSTTICK)
+ {
+ // FT2 bug: if a retrig (Rxy) occours together with a volume command, the first retrig interval is increased by one tick
+ if(pChn->nRowVolCmd == VOLCMD_VOLUME) nRetrigCount = -1;
+ if(pChn->nRowNote != NOTE_NONE && pChn->nRowNote <= GetModSpecifications().noteMax) nRetrigCount++;
+ }
+ if (nRetrigCount >= nRetrigSpeed)
+ {
+ if (!(m_dwSongFlags & SONG_FIRSTTICK) || (pChn->nRowNote == NOTE_NONE))
+ {
+ bDoRetrig = true;
+ nRetrigCount = 0;
+ }
+ }
+ } else
+ {
if (m_nType & (MOD_TYPE_S3M|MOD_TYPE_IT|MOD_TYPE_MPT))
{
if (!nRetrigSpeed) nRetrigSpeed = 1;
@@ -3153,9 +3171,10 @@
nRetrigCount++;
} else
{
- UINT realspeed = nRetrigSpeed;
+ int realspeed = nRetrigSpeed;
+ // FT2 bug: if a retrig (Rxy) occours together with a volume command, the first retrig interval is increased by one tick
if ((param & 0x100) && (pChn->nRowVolCmd == VOLCMD_VOLUME) && (pChn->nRowParam & 0xF0)) realspeed++;
- if ((m_nTickCount) || (param & 0x100))
+ if (!(m_dwSongFlags & SONG_FIRSTTICK) || (param & 0x100))
{
if (!realspeed) realspeed = 1;
if ((!(param & 0x100)) && (m_nMusicSpeed) && (!(m_nTickCount % realspeed))) bDoRetrig = true;
@@ -3213,6 +3232,10 @@
SampleOffset(nChn, offset, false);
}
}
+
+ // buggy-like-hell FT2 Rxy retrig!
+ if(IsCompatibleMode(TRK_FASTTRACKER2) && (param & 0x100)) nRetrigCount++;
+
if(!IsCompatibleMode(TRK_IMPULSETRACKER))
pChn->nRetrigCount = (BYTE)nRetrigCount;
}
Modified: trunk/OpenMPT/soundlib/Sndfile.h
===================================================================
--- trunk/OpenMPT/soundlib/Sndfile.h 2009-12-08 19:42:46 UTC (rev 439)
+++ trunk/OpenMPT/soundlib/Sndfile.h 2009-12-11 23:39:57 UTC (rev 440)
@@ -220,7 +220,7 @@
BYTE nOldCmdEx, nOldVolParam, nOldTempo;
BYTE nOldOffset, nOldHiOffset;
BYTE nCutOff, nResonance;
- BYTE nRetrigCount, nRetrigParam;
+ int nRetrigCount, nRetrigParam;
BYTE nTremorCount, nTremorParam;
BYTE nPatternLoop, nPatternLoopCount;
BYTE nRowNote, nRowInstr;
@@ -846,7 +846,7 @@
void FineVolumeDown(MODCHANNEL *pChn, UINT param);
void Tremolo(MODCHANNEL *pChn, UINT param);
void Panbrello(MODCHANNEL *pChn, UINT param);
- void RetrigNote(UINT nChn, UINT param, UINT offset=0); //rewbs.volOffset: added last param
+ void RetrigNote(UINT nChn, int param, UINT offset=0); //rewbs.volOffset: added last param
void SampleOffset(UINT nChn, UINT param, bool bPorta); //rewbs.volOffset: moved offset code to own method
void NoteCut(UINT nChn, UINT nTick);
int PatternLoop(MODCHANNEL *, UINT param);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <sag...@us...> - 2009-12-08 20:28:25
|
Revision: 439
http://modplug.svn.sourceforge.net/modplug/?rev=439&view=rev
Author: saga-games
Date: 2009-12-08 19:42:46 +0000 (Tue, 08 Dec 2009)
Log Message:
-----------
[Fix] Mainframe: Split keyboard settings menu entry was always locked.
[Imp] Mainframe: Extended paste mechanisms (mix, flood, push forward) have been moved into a sub menu
[Imp] Mainframe: Improved accelerator keys in the edit menu
[Imp] Treeview: If there's only one sequence, prepend "Sequence:" text if it has a custom name.
Modified Paths:
--------------
trunk/OpenMPT/mptrack/InputHandler.cpp
trunk/OpenMPT/mptrack/View_pat.cpp
trunk/OpenMPT/mptrack/View_tre.cpp
trunk/OpenMPT/mptrack/mptrack.rc
trunk/OpenMPT/mptrack/resource.h
Modified: trunk/OpenMPT/mptrack/InputHandler.cpp
===================================================================
--- trunk/OpenMPT/mptrack/InputHandler.cpp 2009-12-06 22:13:32 UTC (rev 438)
+++ trunk/OpenMPT/mptrack/InputHandler.cpp 2009-12-08 19:42:46 UTC (rev 439)
@@ -411,7 +411,7 @@
CString CInputHandler::GetMenuText(UINT id)
{
CString s;
- CommandID c;
+ CommandID c = kcNull;
switch(id)
{
@@ -439,14 +439,16 @@
case ID_EDIT_CUT: s="Cu&t\t"; c=kcEditCut; break;
case ID_EDIT_COPY: s="&Copy\t"; c=kcEditCopy; break;
case ID_EDIT_PASTE: s="&Paste\t"; c=kcEditPaste; break;
- case ID_EDIT_PASTE_SPECIAL: s="&Mix Paste\t"; c=kcEditMixPaste; break;
- case ID_EDIT_PASTEFLOOD: s="Paste Fl&ood\t"; c=kcEditPasteFlood; break;
- case ID_EDIT_PUSHFORWARDPASTE: s="Push For&ward Paste\t"; c=kcEditPushForwardPaste; break;
- case ID_EDIT_SELECT_ALL: s="&Select All\t"; c=kcEditSelectAll; break;
+ case ID_EDIT_SELECT_ALL: s="Select &All\t"; c=kcEditSelectAll; break;
+ case ID_EDIT_CLEANUP: s="C&leanup"; break;
case ID_EDIT_FIND: s="&Find\t"; c=kcEditFind; break;
case ID_EDIT_FINDNEXT: s="Find &Next\t"; c=kcEditFindNext; break;
case ID_EDIT_GOTO_MENU: s="&Goto\t"; c=kcPatternGoto; break;
case ID_EDIT_SPLITKEYBOARDSETTINGS: s="Split &Keyboard Settings\t"; c=kcShowSplitKeyboardSettings; break;
+ // "Paste Special" sub menu
+ case ID_EDIT_PASTE_SPECIAL: s="&Mix Paste\t"; c=kcEditMixPaste; break;
+ case ID_EDIT_PASTEFLOOD: s="Paste Fl&ood\t"; c=kcEditPasteFlood; break;
+ case ID_EDIT_PUSHFORWARDPASTE: s="&Push Forward Paste\t"; c=kcEditPushForwardPaste; break;
case ID_VIEW_GLOBALS: s="&General\t"; c=kcViewGeneral; break;
case ID_VIEW_SAMPLES: s="&Samples\t"; c=kcViewSamples; break;
Modified: trunk/OpenMPT/mptrack/View_pat.cpp
===================================================================
--- trunk/OpenMPT/mptrack/View_pat.cpp 2009-12-06 22:13:32 UTC (rev 438)
+++ trunk/OpenMPT/mptrack/View_pat.cpp 2009-12-08 19:42:46 UTC (rev 439)
@@ -68,6 +68,7 @@
// -> CODE#0012
// -> DESC="midi keyboard split"
ON_COMMAND(ID_EDIT_SPLITRECSELECT, OnSplitRecordSelect)
+ ON_COMMAND(ID_EDIT_SPLITKEYBOARDSETTINGS, SetSplitKeyboardSettings)
// -! NEW_FEATURE#0012
ON_COMMAND(ID_EDIT_UNDO, OnEditUndo)
ON_COMMAND(ID_PATTERN_CHNRESET, OnChannelReset)
Modified: trunk/OpenMPT/mptrack/View_tre.cpp
===================================================================
--- trunk/OpenMPT/mptrack/View_tre.cpp 2009-12-06 22:13:32 UTC (rev 438)
+++ trunk/OpenMPT/mptrack/View_tre.cpp 2009-12-08 19:42:46 UTC (rev 439)
@@ -746,7 +746,10 @@
if(((hintFlagPart == HINT_SEQNAMES) && pSndFile->Order.GetNumSequences() == 1) || adjustParentNode)
{
CString sSeqName = pSndFile->Order.GetSequence(0).m_sName;
- if(sSeqName.IsEmpty() || pSndFile->Order.GetNumSequences() > 1) sSeqName = "Sequence";
+ if(sSeqName.IsEmpty() || pSndFile->Order.GetNumSequences() > 1)
+ sSeqName = "Sequence";
+ else
+ sSeqName = "Sequence: " + sSeqName;
SetItem(pInfo->hOrders, TVIF_TEXT, sSeqName, 0, 0, 0, 0, 0);
}
Modified: trunk/OpenMPT/mptrack/mptrack.rc
===================================================================
--- trunk/OpenMPT/mptrack/mptrack.rc 2009-12-06 22:13:32 UTC (rev 438)
+++ trunk/OpenMPT/mptrack/mptrack.rc 2009-12-08 19:42:46 UTC (rev 439)
@@ -442,26 +442,26 @@
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD
FONT 8, "MS Shell Dlg", 0, 0, 0x1
BEGIN
- CONTROL "Follow Song",IDC_PATTERN_FOLLOWSONG,"Button",BS_AUTOCHECKBOX | BS_FLAT,312,32,55,8
- COMBOBOX IDC_COMBO_INSTRUMENT,18,30,102,137,CBS_DROPDOWNLIST | WS_VSCROLL
- CTEXT "Row Spacing",IDC_STATIC,168,32,42,8,SS_CENTERIMAGE
- EDITTEXT IDC_EDIT_SPACING,216,30,28,12,ES_AUTOHSCROLL | ES_NUMBER | NOT WS_TABSTOP
- CONTROL "Spin1",IDC_SPIN_SPACING,"msctls_updown32",UDS_WRAP | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_NOTHOUSANDS,236,30,11,11
+ CONTROL "Follow Song",IDC_PATTERN_FOLLOWSONG,"Button",BS_AUTOCHECKBOX | BS_FLAT,312,33,55,8
+ COMBOBOX IDC_COMBO_INSTRUMENT,18,31,102,137,CBS_DROPDOWNLIST | WS_VSCROLL
+ CTEXT "Row Spacing",IDC_STATIC,168,33,42,8,SS_CENTERIMAGE
+ EDITTEXT IDC_EDIT_SPACING,216,31,28,12,ES_AUTOHSCROLL | ES_NUMBER | NOT WS_TABSTOP
+ CONTROL "Spin1",IDC_SPIN_SPACING,"msctls_updown32",UDS_WRAP | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_NOTHOUSANDS,236,31,11,11
PUSHBUTTON "<<",IDC_BUTTON2,3,51,14,15,NOT WS_TABSTOP,WS_EX_STATICEDGE
PUSHBUTTON ">>",IDC_BUTTON1,15,51,14,15,NOT WS_TABSTOP,WS_EX_STATICEDGE
- LTEXT "Pattern Name",IDC_STATIC_PATTERNNAME,384,32,48,8,SS_CENTERIMAGE
- EDITTEXT IDC_EDIT_PATTERNNAME,439,30,108,12,ES_AUTOHSCROLL
+ LTEXT "Pattern Name",IDC_STATIC_PATTERNNAME,384,33,48,8,SS_CENTERIMAGE
+ EDITTEXT IDC_EDIT_PATTERNNAME,439,31,108,12,ES_AUTOHSCROLL
CONTROL "Toolbar1",IDC_TOOLBAR1,"ToolbarWindow32",WS_GROUP | 0x4d,2,4,370,18
- CONTROL "Spin1",IDC_SPIN_INSTRUMENT,"msctls_updown32",0x0,6,30,11,12
- PUSHBUTTON "Plugin",IDC_PATINSTROPLUGGUI,126,30,33,13,0,WS_EX_STATICEDGE
- GROUPBOX "",IDC_STATIC,3,22,369,24
- CONTROL "Loop Pattern",IDC_PATTERN_LOOP,"Button",BS_AUTOCHECKBOX | BS_FLAT | WS_TABSTOP,252,32,57,8
+ CONTROL "Spin1",IDC_SPIN_INSTRUMENT,"msctls_updown32",0x0,6,31,11,12
+ PUSHBUTTON "Plugin",IDC_PATINSTROPLUGGUI,126,31,33,13,0,WS_EX_STATICEDGE
+ GROUPBOX "",IDC_STATIC,3,23,369,24
+ CONTROL "Loop Pattern",IDC_PATTERN_LOOP,"Button",BS_AUTOCHECKBOX | BS_FLAT | WS_TABSTOP,252,33,57,8
EDITTEXT IDC_EDIT_ORDERLIST_MARGINS,3,65,28,12,ES_AUTOHSCROLL | ES_READONLY
CONTROL "",IDC_SPIN_ORDERLIST_MARGINS,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_NOTHOUSANDS,16,70,11,11
EDITTEXT IDC_EDIT_SEQUENCE_NAME,439,8,108,12,ES_AUTOHSCROLL
CTEXT "Sequence Name",IDC_STATIC_SEQUENCE_NAME,384,10,53,8,SS_CENTERIMAGE
GROUPBOX "",IDC_STATIC_SEQUENCE_NAME_FRAME,378,0,174,24
- GROUPBOX "",IDC_STATIC,378,22,174,24
+ GROUPBOX "",IDC_STATIC,378,23,174,24
END
IDD_CONTROL_SAMPLES DIALOGEX 0, 0, 544, 106
@@ -1835,17 +1835,20 @@
MENUITEM "Cu&t\tCtrl+X", ID_EDIT_CUT
MENUITEM "&Copy\tCtrl+C", ID_EDIT_COPY
MENUITEM "&Paste\tCtrl+V", ID_EDIT_PASTE
- MENUITEM "&Mix Paste\tCtrl+M", ID_EDIT_PASTE_SPECIAL
- MENUITEM "Paste Flood", ID_EDIT_PASTEFLOOD
- MENUITEM "Push Forward Paste", ID_EDIT_PUSHFORWARDPASTE
+ POPUP "Paste &Special"
+ BEGIN
+ MENUITEM "&Mix Paste\tCtrl+M", ID_EDIT_PASTE_SPECIAL
+ MENUITEM "Paste &Flood", ID_EDIT_PASTEFLOOD
+ MENUITEM "&Push Forward Paste", ID_EDIT_PUSHFORWARDPASTE
+ END
MENUITEM "Select &All\tCtrl+5", ID_EDIT_SELECT_ALL
MENUITEM SEPARATOR
MENUITEM "C&leanup...", ID_EDIT_CLEANUP
MENUITEM SEPARATOR
MENUITEM "&Find\tCtrl+F", ID_EDIT_FIND
- MENUITEM "Find Next\tF3", ID_EDIT_FINDNEXT
- MENUITEM "Go to...", ID_EDIT_GOTO_MENU
- MENUITEM "Split Keyboard Settings", ID_EDIT_SPLITKEYBOARDSETTINGS
+ MENUITEM "Find &Next\tF3", ID_EDIT_FINDNEXT
+ MENUITEM "&Goto", ID_EDIT_GOTO_MENU
+ MENUITEM "Split &Keyboard Settings", ID_EDIT_SPLITKEYBOARDSETTINGS
END
POPUP "&View"
BEGIN
Modified: trunk/OpenMPT/mptrack/resource.h
===================================================================
--- trunk/OpenMPT/mptrack/resource.h 2009-12-06 22:13:32 UTC (rev 438)
+++ trunk/OpenMPT/mptrack/resource.h 2009-12-08 19:42:46 UTC (rev 439)
@@ -1159,6 +1159,7 @@
#define ID_MODTREE_SWITCHTO 59238
#define ID_EDIT_PUSHFORWARDPASTE 59239
#define ID_EDIT_SPLITKEYBOARDSETTINGS 59240
+#define ID_EDIT_PASTESPECIAL 59241
// Next default values for new objects
//
@@ -1166,7 +1167,7 @@
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_3D_CONTROLS 1
#define _APS_NEXT_RESOURCE_VALUE 524
-#define _APS_NEXT_COMMAND_VALUE 59241
+#define _APS_NEXT_COMMAND_VALUE 59242
#define _APS_NEXT_CONTROL_VALUE 2413
#define _APS_NEXT_SYMED_VALUE 901
#endif
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <sag...@us...> - 2009-12-06 22:13:40
|
Revision: 438
http://modplug.svn.sourceforge.net/modplug/?rev=438&view=rev
Author: saga-games
Date: 2009-12-06 22:13:32 +0000 (Sun, 06 Dec 2009)
Log Message:
-----------
[Fix] Mod Creation: Filling the whole mod title field with null bytes on creation to avoid funky characters in other programs
[Fix] Pattern editor: PCNote handling was missing in OnClearSelection, so it was possible to delete the effect column only partly
[Imp] Pattern editor: When using the MPTM format, plugin param changes are written to the pattern as PC Notes
Modified Paths:
--------------
trunk/OpenMPT/mptrack/Moddoc.cpp
trunk/OpenMPT/mptrack/View_pat.cpp
Modified: trunk/OpenMPT/mptrack/Moddoc.cpp
===================================================================
--- trunk/OpenMPT/mptrack/Moddoc.cpp 2009-12-06 19:22:50 UTC (rev 437)
+++ trunk/OpenMPT/mptrack/Moddoc.cpp 2009-12-06 22:13:32 UTC (rev 438)
@@ -639,6 +639,7 @@
m_SndFile.Patterns.Insert(0, 64);
}
+ memset(m_SndFile.m_szNames, 0, sizeof(m_SndFile.m_szNames));
strcpy(m_SndFile.m_szNames[0], "untitled");
m_SndFile.m_nMusicTempo = m_SndFile.m_nDefaultTempo = 125;
@@ -3388,11 +3389,7 @@
void CModDoc::RecordParamChange(int plugSlot, long paramIndex)
//------------------------------------------------------
{
- CVstPlugin *pPlug = (CVstPlugin*)m_SndFile.m_MixPlugins[plugSlot].pMixPlugin;
- if (pPlug) {
- UINT value = pPlug->GetZxxParameter(paramIndex);
- SendMessageToActiveViews(WM_MOD_RECORDPARAM, paramIndex, value);
- }
+ SendMessageToActiveViews(WM_MOD_RECORDPARAM, plugSlot, paramIndex);
}
void CModDoc::LearnMacro(int macroToSet, long paramToUse)
Modified: trunk/OpenMPT/mptrack/View_pat.cpp
===================================================================
--- trunk/OpenMPT/mptrack/View_pat.cpp 2009-12-06 19:22:50 UTC (rev 437)
+++ trunk/OpenMPT/mptrack/View_pat.cpp 2009-12-06 22:13:32 UTC (rev 438)
@@ -7,6 +7,7 @@
#include "globals.h"
#include "view_pat.h"
#include "ctrl_pat.h"
+#include "vstplug.h" // for writing plug params to pattern
#include "EffectVis.h" //rewbs.fxvis
#include "OpenGLEditor.h" //rewbs.fxvis
@@ -915,6 +916,7 @@
case 3: // Clear Command
if (rm.command) {
m->command = 0;
+ if(m->note == NOTE_PC || m->note == NOTE_PCS) m->SetValueEffectCol(0);
}
break;
case 4: // Clear Command Param
@@ -2936,8 +2938,9 @@
}
-LRESULT CViewPattern::OnRecordPlugParamChange(WPARAM paramIndex, LPARAM value)
-//--------------------------------------------------------------------------
+// record plugin parameter changes into current pattern
+LRESULT CViewPattern::OnRecordPlugParamChange(WPARAM plugSlot, LPARAM paramIndex)
+//-------------------------------------------------------------------------------
{
CModDoc *pModDoc = GetDocument();
//if (!m_bRecord || !pModDoc) {
@@ -2964,35 +2967,52 @@
// TODO: Is the right plugin active? Move to a chan with the right plug
// Probably won't do this - finish fluctuator implementation instead.
- //Figure out which plug param (if any) is controllable using the active macro on this channel.
- long activePlugParam = -1;
- BYTE activeMacro = pSndFile->Chn[nChn].nActiveMacro;
- CString activeMacroString = &(pSndFile->m_MidiCfg.szMidiSFXExt[activeMacro*32]);
- if (pModDoc->GetMacroType(activeMacroString) == sfx_plug) {
- activePlugParam = pModDoc->MacroToPlugParam(activeMacroString);
- }
- //If the wrong macro is active, see if we can find the right one.
- //If we can, activate it for this chan by writing appropriate SFx command it.
- if (activePlugParam != paramIndex) {
- int foundMacro = pModDoc->FindMacroForParam(paramIndex);
- if (foundMacro >= 0) {
- pSndFile->Chn[nChn].nActiveMacro = foundMacro;
- if (pRow->command == 0 || pRow->command == CMD_SMOOTHMIDI || pRow->command == CMD_MIDI) { //we overwrite existing Zxx and \xx only.
- pRow->command = (pSndFile->m_nType & (MOD_TYPE_IT | MOD_TYPE_MPT))?CMD_S3MCMDEX:CMD_MODCMDEX;;
- pRow->param = 0xF0 + (foundMacro&0x0F);
- InvalidateRow();
- }
+ CVstPlugin *pPlug = (CVstPlugin*)pSndFile->m_MixPlugins[plugSlot].pMixPlugin;
+ if (pPlug == nullptr) return 0;
+ if(pSndFile->GetType() == MOD_TYPE_MPT)
+ {
+ // MPTM: Use PC Notes
+
+ // only overwrite existing PC Notes
+ if(pRow->IsEmpty() || pRow->note == NOTE_PC || pRow->note == NOTE_PCS)
+ {
+ pRow->Set(NOTE_PCS, plugSlot + 1, paramIndex, static_cast<uint16>(pPlug->GetParameter(paramIndex) * MODCOMMAND::maxColumnValue));
+ InvalidateRow();
}
- }
+ } else
+ {
+ // Other formats: Use MIDI macros
+ //Figure out which plug param (if any) is controllable using the active macro on this channel.
+ long activePlugParam = -1;
+ BYTE activeMacro = pSndFile->Chn[nChn].nActiveMacro;
+ CString activeMacroString = &(pSndFile->m_MidiCfg.szMidiSFXExt[activeMacro*32]);
+ if (pModDoc->GetMacroType(activeMacroString) == sfx_plug) {
+ activePlugParam = pModDoc->MacroToPlugParam(activeMacroString);
+ }
+ //If the wrong macro is active, see if we can find the right one.
+ //If we can, activate it for this chan by writing appropriate SFx command it.
+ if (activePlugParam != paramIndex) {
+ int foundMacro = pModDoc->FindMacroForParam(paramIndex);
+ if (foundMacro >= 0) {
+ pSndFile->Chn[nChn].nActiveMacro = foundMacro;
+ if (pRow->command == 0 || pRow->command == CMD_SMOOTHMIDI || pRow->command == CMD_MIDI) { //we overwrite existing Zxx and \xx only.
+ pRow->command = (pSndFile->m_nType & (MOD_TYPE_IT | MOD_TYPE_MPT))?CMD_S3MCMDEX:CMD_MODCMDEX;;
+ pRow->param = 0xF0 + (foundMacro&0x0F);
+ InvalidateRow();
+ }
+ }
+ }
- //Write the data, but we only overwrite if the command is a macro anyway.
- if (pRow->command == 0 || pRow->command == CMD_SMOOTHMIDI || pRow->command == CMD_MIDI) {
- pRow->command = CMD_SMOOTHMIDI;
- pRow->param = value;
- InvalidateRow();
+ //Write the data, but we only overwrite if the command is a macro anyway.
+ if (pRow->command == CMD_NONE || pRow->command == CMD_SMOOTHMIDI || pRow->command == CMD_MIDI) {
+ pRow->command = CMD_SMOOTHMIDI;
+ pRow->param = pPlug->GetZxxParameter(paramIndex);
+ InvalidateRow();
+ }
+
}
return 0;
@@ -4471,7 +4491,7 @@
default: p->Clear(); //If not specified, delete them all! :)
}
if((field == 3 || field == 4) && (p->note == NOTE_PC || p->note == NOTE_PCS))
- p->command = p->param = 0;
+ p->SetValueEffectCol(0);
if(IsEditingEnabled_bmsg())
{
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <sag...@us...> - 2009-12-06 19:22:58
|
Revision: 437
http://modplug.svn.sourceforge.net/modplug/?rev=437&view=rev
Author: saga-games
Date: 2009-12-06 19:22:50 +0000 (Sun, 06 Dec 2009)
Log Message:
-----------
[Fix] Pattern Editor: Amplify acted VERY weird when it was applied on an instrument that's not assigned to any sample. Should be a bit better now.
[Fix] Pattern Editor: Amplify doesn't use volume column in mod format anymore.
[Ref] Small changes to playback engine
Modified Paths:
--------------
trunk/OpenMPT/mptrack/View_pat.cpp
trunk/OpenMPT/soundlib/Snd_fx.cpp
Modified: trunk/OpenMPT/mptrack/View_pat.cpp
===================================================================
--- trunk/OpenMPT/mptrack/View_pat.cpp 2009-12-06 15:56:30 UTC (rev 436)
+++ trunk/OpenMPT/mptrack/View_pat.cpp 2009-12-06 19:22:50 UTC (rev 437)
@@ -2699,115 +2699,145 @@
if (pSndFile->Patterns[m_nPattern])
{
MODCOMMAND *p = pSndFile->Patterns[m_nPattern];
- for (UINT j=0; j<pSndFile->m_nChannels; j++)
+
+ CHANNELINDEX firstChannel = (m_dwBeginSel & 0xFFFF) >> 3, lastChannel = (m_dwEndSel & 0xFFFF) >> 3;
+ ROWINDEX firstRow = (m_dwBeginSel >> 16), lastRow = (m_dwEndSel >> 16);
+ firstChannel = CLAMP(firstChannel, 0, pSndFile->m_nChannels - 1);
+ lastChannel = CLAMP(lastChannel, 0, pSndFile->m_nChannels - 1);
+ firstRow = CLAMP(firstRow, 0, pSndFile->PatternSize[m_nPattern] - 1);
+ lastRow = CLAMP(lastRow, 0, pSndFile->PatternSize[m_nPattern] - 1);
+
+ for (CHANNELINDEX nChn = firstChannel; nChn <= lastChannel; nChn++)
{
- for (UINT i=0; i<pSndFile->PatternSize[m_nPattern]; i++)
+ for (ROWINDEX nRow = firstRow; nRow <= lastRow; nRow++)
{
- if ((i >= (m_dwBeginSel >> 16)) && (i <= (m_dwEndSel >> 16)))
+ MODCOMMAND *m = p + nRow * pSndFile->m_nChannels + nChn;
+ if ((m->command == CMD_VOLUME) && (m->param <= 64))
{
- MODCOMMAND *m = p + i*pSndFile->m_nChannels+j;
- if ((m->command == CMD_VOLUME) && (m->param <= 64))
+ chvol[nChn] = m->param;
+ break;
+ }
+ if (m->volcmd == VOLCMD_VOLUME)
+ {
+ chvol[nChn] = m->vol;
+ break;
+ }
+ if ((m->note) && (m->note <= NOTE_MAX) && (m->instr))
+ {
+ UINT nSmp = m->instr;
+ if (pSndFile->m_nInstruments)
{
- chvol[j] = m->param;
- break;
+ if ((nSmp <= pSndFile->m_nInstruments) && (pSndFile->Instruments[nSmp]))
+ {
+ nSmp = pSndFile->Instruments[nSmp]->Keyboard[m->note];
+ if(!nSmp) chvol[nChn] = 64; // hack for instruments without samples
+ } else
+ {
+ nSmp = 0;
+ }
}
- if (m->volcmd == VOLCMD_VOLUME)
+ if ((nSmp) && (nSmp <= pSndFile->m_nSamples))
{
- chvol[j] = m->vol;
+ chvol[nChn] = (BYTE)(pSndFile->Samples[nSmp].nVolume >> 2);
break;
}
- if ((m->note) && (m->note < 0x80) && (m->instr))
- {
- UINT nSmp = m->instr;
- if (pSndFile->m_nInstruments)
+ else
+ { //nonexistant sample and no volume present in patten? assume volume=64.
+ if(pSndFile->GetType() == MOD_TYPE_MOD)
{
- if ((nSmp <= pSndFile->m_nInstruments) && (pSndFile->Instruments[nSmp]))
- {
- nSmp = pSndFile->Instruments[nSmp]->Keyboard[m->note];
- } else
- {
- nSmp = 0;
- }
- }
- if ((nSmp) && (nSmp <= pSndFile->m_nSamples))
+ m->command = CMD_VOLUME;
+ m->param = 64;
+ } else
{
- chvol[j] = (BYTE)(pSndFile->Samples[nSmp].nVolume >> 2);
- break;
- }
- else
- { //nonexistant sample and no volume present in patten? assume volume=64.
m->volcmd = VOLCMD_VOLUME;
- chvol[j] = 64;
m->vol = 64;
- break;
}
+ chvol[nChn] = 64;
+ break;
}
}
}
}
- for (UINT y=0; y<pSndFile->PatternSize[m_nPattern]; y++)
+
+ // adjust min/max channel if they're only partly selected (i.e. volume column is not covered)
+ if(((firstChannel << 3) | 2) < (m_dwBeginSel & 0xFFFF)) firstChannel++;
+ if(((lastChannel << 3) | 2) > (m_dwEndSel & 0xFFFF)) lastChannel--;
+
+ for (ROWINDEX nRow = firstRow; nRow <= lastRow; nRow++)
{
- if ((y >= (m_dwBeginSel >> 16)) && (y <= (m_dwEndSel >> 16)))
+ p = pSndFile->Patterns[m_nPattern] + nRow * pSndFile->m_nChannels;
+ int cy = lastRow - firstRow + 1; // total rows (for fading)
+ for (CHANNELINDEX nChn = firstChannel; nChn <= lastChannel; nChn++)
{
- int cy = (m_dwEndSel>>16) - (m_dwBeginSel>>16) + 1;
- int y0 = (m_dwBeginSel>>16);
- for (UINT x=0; x<pSndFile->m_nChannels; x++)
+ if ((!p[nChn].volcmd) && (p[nChn].command != CMD_VOLUME)
+ && (p[nChn].note) && (p[nChn].note <= NOTE_MAX) && (p[nChn].instr))
{
- UINT col = (x<<3) | 2;
- if ((col >= (m_dwBeginSel & 0xFFFF)) && (col <= (m_dwEndSel & 0xFFFF)))
+ UINT nSmp = p[nChn].instr;
+ bool overrideSampleVol = false;
+ if (pSndFile->m_nInstruments)
{
- if ((!p[x].volcmd) && (p[x].command != CMD_VOLUME)
- && (p[x].note) && (p[x].note < 0x80) && (p[x].instr))
+ if ((nSmp <= pSndFile->m_nInstruments) && (pSndFile->Instruments[nSmp]))
{
- UINT nSmp = p[x].instr;
- if (pSndFile->m_nInstruments)
+ nSmp = pSndFile->Instruments[nSmp]->Keyboard[p[nChn].note];
+ // hack for instruments without samples
+ if(!nSmp)
{
- if ((nSmp <= pSndFile->m_nInstruments) && (pSndFile->Instruments[nSmp]))
- {
- nSmp = pSndFile->Instruments[nSmp]->Keyboard[p[x].note];
- } else
- {
- nSmp = 0;
- }
+ nSmp = 1;
+ overrideSampleVol = true;
}
- if ((nSmp) && (nSmp <= pSndFile->m_nSamples))
- {
- p[x].volcmd = VOLCMD_VOLUME;
- p[x].vol = pSndFile->Samples[nSmp].nVolume >> 2;
- }
- }
- if (p[x].volcmd == VOLCMD_VOLUME) chvol[x] = (BYTE)p[x].vol;
- if (((dlg.m_bFadeIn) || (dlg.m_bFadeOut)) && (p[x].command != CMD_VOLUME) && (!p[x].volcmd))
+ } else
{
- p[x].volcmd = VOLCMD_VOLUME;
- p[x].vol = chvol[x];
+ nSmp = 0;
}
- if (p[x].volcmd == VOLCMD_VOLUME)
- {
- int vol = p[x].vol * dlg.m_nFactor;
- if (dlg.m_bFadeIn) vol = (vol * (y+1-y0)) / cy;
- if (dlg.m_bFadeOut) vol = (vol * (cy+y0-y)) / cy;
- vol = (vol+50) / 100;
- if (vol > 64) vol = 64;
- p[x].vol = (BYTE)vol;
- }
}
- col = (x<<3) | 3;
- if ((col >= (m_dwBeginSel & 0xFFFF)) && (col <= (m_dwEndSel & 0xFFFF)))
+ if ((nSmp) && (nSmp <= pSndFile->m_nSamples))
{
- if ((p[x].command == CMD_VOLUME) && (p[x].param <= 64))
+ if(pSndFile->GetType() == MOD_TYPE_MOD)
{
- int vol = p[x].param * dlg.m_nFactor;
- if (dlg.m_bFadeIn) vol = (vol * (y+1-y0)) / cy;
- if (dlg.m_bFadeOut) vol = (vol * (cy+y0-y)) / cy;
- vol = (vol+50) / 100;
- if (vol > 64) vol = 64;
- p[x].param = (BYTE)vol;
+ p[nChn].command = CMD_VOLUME;
+ p[nChn].param = (overrideSampleVol) ? 64 : pSndFile->Samples[nSmp].nVolume >> 2;
+ } else
+ {
+ p[nChn].volcmd = VOLCMD_VOLUME;
+ p[nChn].vol = (overrideSampleVol) ? 64 : pSndFile->Samples[nSmp].nVolume >> 2;
}
}
}
+ if (p[nChn].volcmd == VOLCMD_VOLUME) chvol[nChn] = (BYTE)p[nChn].vol;
+ if (((dlg.m_bFadeIn) || (dlg.m_bFadeOut)) && (p[nChn].command != CMD_VOLUME) && (!p[nChn].volcmd))
+ {
+ if(pSndFile->GetType() == MOD_TYPE_MOD)
+ {
+ p[nChn].command = CMD_VOLUME;
+ p[nChn].param = chvol[nChn];
+ } else
+ {
+ p[nChn].volcmd = VOLCMD_VOLUME;
+ p[nChn].vol = chvol[nChn];
+ }
+ }
+ if (p[nChn].volcmd == VOLCMD_VOLUME)
+ {
+ int vol = p[nChn].vol * dlg.m_nFactor;
+ if (dlg.m_bFadeIn) vol = (vol * (nRow+1-firstRow)) / cy;
+ if (dlg.m_bFadeOut) vol = (vol * (cy+firstRow-nRow)) / cy;
+ vol = (vol+50) / 100;
+ if (vol > 64) vol = 64;
+ p[nChn].vol = (BYTE)vol;
+ }
+ if ((((nChn << 3) | 3) >= (m_dwBeginSel & 0xFFFF)) && (((nChn << 3) | 3) <= (m_dwEndSel & 0xFFFF)))
+ {
+ if ((p[nChn].command == CMD_VOLUME) && (p[nChn].param <= 64))
+ {
+ int vol = p[nChn].param * dlg.m_nFactor;
+ if (dlg.m_bFadeIn) vol = (vol * (nRow + 1 - firstRow)) / cy;
+ if (dlg.m_bFadeOut) vol = (vol * (cy + firstRow - nRow)) / cy;
+ vol = (vol + 50) / 100;
+ if (vol > 64) vol = 64;
+ p[nChn].param = (BYTE)vol;
+ }
+ }
}
- p += pSndFile->m_nChannels;
}
}
pModDoc->SetModified();
Modified: trunk/OpenMPT/soundlib/Snd_fx.cpp
===================================================================
--- trunk/OpenMPT/soundlib/Snd_fx.cpp 2009-12-06 15:56:30 UTC (rev 436)
+++ trunk/OpenMPT/soundlib/Snd_fx.cpp 2009-12-06 19:22:50 UTC (rev 437)
@@ -1849,7 +1849,7 @@
// Midi Controller
case CMD_MIDI:
- if (m_nTickCount) break;
+ if(!(m_dwSongFlags & SONG_FIRSTTICK)) break;
if (param < 0x80){
ProcessMidiMacro(nChn, &m_MidiCfg.szMidiSFXExt[pChn->nActiveMacro << 5], param);
} else {
@@ -3351,7 +3351,6 @@
void CSoundFile::SetSpeed(UINT param)
//-----------------------------------
{
- UINT max = (m_nType & (MOD_TYPE_IT|MOD_TYPE_MPT|MOD_TYPE_S3M)) ? 256 : 128;
// Modplug Tracker and Mod-Plugin don't do this check
#ifndef MODPLUG_TRACKER
#ifndef FASTSOUNDLIB
@@ -3366,7 +3365,7 @@
#endif // FASTSOUNDLIB
#endif // MODPLUG_TRACKER
//if ((m_nType & MOD_TYPE_S3M) && (param > 0x80)) param -= 0x80;
- if ((param) && (param <= max)) m_nMusicSpeed = param;
+ if ((param) && (param <= GetModSpecifications().speedMax)) m_nMusicSpeed = param;
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <sag...@us...> - 2009-12-06 15:56:40
|
Revision: 436
http://modplug.svn.sourceforge.net/modplug/?rev=436&view=rev
Author: saga-games
Date: 2009-12-06 15:56:30 +0000 (Sun, 06 Dec 2009)
Log Message:
-----------
[Fix] IT/MPTM Loader: "MPT extensions are making my life hard so they must be wrong" - Fixed again the combination of empty sample slots and the MPTX extension hack...
[Fix] IMF Loader: Slightly wrong instrument loader (this for once didn't break anything, though)
[Imp] Pattern editor: Grey out pattern name input field when in MOD/S3M mode
[Imp] Added "split keyboard settings" dialog to the "edit" menu and updated the shortcuts there (goto was missing)
Modified Paths:
--------------
trunk/OpenMPT/mptrack/Ctrl_pat.cpp
trunk/OpenMPT/mptrack/InputHandler.cpp
trunk/OpenMPT/mptrack/mptrack.rc
trunk/OpenMPT/mptrack/resource.h
trunk/OpenMPT/soundlib/Load_imf.cpp
trunk/OpenMPT/soundlib/Load_it.cpp
Modified: trunk/OpenMPT/mptrack/Ctrl_pat.cpp
===================================================================
--- trunk/OpenMPT/mptrack/Ctrl_pat.cpp 2009-12-05 19:44:47 UTC (rev 435)
+++ trunk/OpenMPT/mptrack/Ctrl_pat.cpp 2009-12-06 15:56:30 UTC (rev 436)
@@ -231,9 +231,13 @@
else
::EnableWindow(::GetDlgItem(m_hWnd, IDC_PATINSTROPLUGGUI), false);
- // Enable/disablemultisequence controls according the current modtype.
+ // Enable/disable multisequence controls according the current modtype.
GetDlgItem(IDC_STATIC_SEQUENCE_NAME)->EnableWindow( (m_pSndFile->GetType() == MOD_TYPE_MPT) ? SW_SHOW : SW_HIDE);
GetDlgItem(IDC_EDIT_SEQUENCE_NAME)->EnableWindow( (m_pSndFile->GetType() == MOD_TYPE_MPT) ? SW_SHOW : SW_HIDE);
+
+ // Enable/disable pattern names
+ GetDlgItem(IDC_STATIC_PATTERNNAME)->EnableWindow( (m_pSndFile->GetType() & (MOD_TYPE_MPT|MOD_TYPE_IT|MOD_TYPE_XM)) ? SW_SHOW : SW_HIDE);
+ GetDlgItem(IDC_EDIT_PATTERNNAME)->EnableWindow( (m_pSndFile->GetType() & (MOD_TYPE_MPT|MOD_TYPE_IT|MOD_TYPE_XM)) ? SW_SHOW : SW_HIDE);
}
//end rewbs.instroVST
if (dwHintMask & HINT_MPTOPTIONS)
Modified: trunk/OpenMPT/mptrack/InputHandler.cpp
===================================================================
--- trunk/OpenMPT/mptrack/InputHandler.cpp 2009-12-05 19:44:47 UTC (rev 435)
+++ trunk/OpenMPT/mptrack/InputHandler.cpp 2009-12-06 15:56:30 UTC (rev 436)
@@ -440,11 +440,13 @@
case ID_EDIT_COPY: s="&Copy\t"; c=kcEditCopy; break;
case ID_EDIT_PASTE: s="&Paste\t"; c=kcEditPaste; break;
case ID_EDIT_PASTE_SPECIAL: s="&Mix Paste\t"; c=kcEditMixPaste; break;
- case ID_EDIT_PASTEFLOOD: s="&Paste Flood\t"; c=kcEditPasteFlood; break;
- case ID_EDIT_PUSHFORWARDPASTE: s="&Push Forward Paste\t"; c=kcEditPushForwardPaste; break;
+ case ID_EDIT_PASTEFLOOD: s="Paste Fl&ood\t"; c=kcEditPasteFlood; break;
+ case ID_EDIT_PUSHFORWARDPASTE: s="Push For&ward Paste\t"; c=kcEditPushForwardPaste; break;
case ID_EDIT_SELECT_ALL: s="&Select All\t"; c=kcEditSelectAll; break;
case ID_EDIT_FIND: s="&Find\t"; c=kcEditFind; break;
case ID_EDIT_FINDNEXT: s="Find &Next\t"; c=kcEditFindNext; break;
+ case ID_EDIT_GOTO_MENU: s="&Goto\t"; c=kcPatternGoto; break;
+ case ID_EDIT_SPLITKEYBOARDSETTINGS: s="Split &Keyboard Settings\t"; c=kcShowSplitKeyboardSettings; break;
case ID_VIEW_GLOBALS: s="&General\t"; c=kcViewGeneral; break;
case ID_VIEW_SAMPLES: s="&Samples\t"; c=kcViewSamples; break;
@@ -461,7 +463,6 @@
case ID_VIEW_SONGPROPERTIES:s="Song P&roperties...\t"; c=kcViewSongProperties; break; //rewbs.graph
case ID_VIEW_MIDIMAPPING: s="&MIDI mapping...\t"; c = kcViewMIDImapping; break;
-
/*
case ID_WINDOW_NEW: s="&New Window\t"; c=kcWindowNew; break;
case ID_WINDOW_CASCADE: s="&Cascade\t"; c=kcWindowCascade; break;
@@ -512,6 +513,8 @@
pMenu->ModifyMenu(ID_EDIT_SELECT_ALL, MF_BYCOMMAND | MF_STRING, ID_EDIT_SELECT_ALL, GetMenuText(ID_EDIT_SELECT_ALL));
pMenu->ModifyMenu(ID_EDIT_FIND, MF_BYCOMMAND | MF_STRING, ID_EDIT_FIND, GetMenuText(ID_EDIT_FIND));
pMenu->ModifyMenu(ID_EDIT_FINDNEXT, MF_BYCOMMAND | MF_STRING, ID_EDIT_FINDNEXT, GetMenuText(ID_EDIT_FINDNEXT));
+ pMenu->ModifyMenu(ID_EDIT_GOTO_MENU, MF_BYCOMMAND | MF_STRING, ID_EDIT_GOTO_MENU, GetMenuText(ID_EDIT_GOTO_MENU));
+ pMenu->ModifyMenu(ID_EDIT_SPLITKEYBOARDSETTINGS, MF_BYCOMMAND | MF_STRING, ID_EDIT_SPLITKEYBOARDSETTINGS, GetMenuText(ID_EDIT_SPLITKEYBOARDSETTINGS));
pMenu->ModifyMenu(ID_VIEW_GLOBALS, MF_BYCOMMAND | MF_STRING, ID_VIEW_GLOBALS, GetMenuText(ID_VIEW_GLOBALS));
pMenu->ModifyMenu(ID_VIEW_SAMPLES, MF_BYCOMMAND | MF_STRING, ID_VIEW_SAMPLES, GetMenuText(ID_VIEW_SAMPLES));
Modified: trunk/OpenMPT/mptrack/mptrack.rc
===================================================================
--- trunk/OpenMPT/mptrack/mptrack.rc 2009-12-05 19:44:47 UTC (rev 435)
+++ trunk/OpenMPT/mptrack/mptrack.rc 2009-12-06 15:56:30 UTC (rev 436)
@@ -449,7 +449,7 @@
CONTROL "Spin1",IDC_SPIN_SPACING,"msctls_updown32",UDS_WRAP | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_NOTHOUSANDS,236,30,11,11
PUSHBUTTON "<<",IDC_BUTTON2,3,51,14,15,NOT WS_TABSTOP,WS_EX_STATICEDGE
PUSHBUTTON ">>",IDC_BUTTON1,15,51,14,15,NOT WS_TABSTOP,WS_EX_STATICEDGE
- LTEXT "Pattern Name",IDC_STATIC,384,32,48,8,SS_CENTERIMAGE
+ LTEXT "Pattern Name",IDC_STATIC_PATTERNNAME,384,32,48,8,SS_CENTERIMAGE
EDITTEXT IDC_EDIT_PATTERNNAME,439,30,108,12,ES_AUTOHSCROLL
CONTROL "Toolbar1",IDC_TOOLBAR1,"ToolbarWindow32",WS_GROUP | 0x4d,2,4,370,18
CONTROL "Spin1",IDC_SPIN_INSTRUMENT,"msctls_updown32",0x0,6,30,11,12
@@ -1845,6 +1845,7 @@
MENUITEM "&Find\tCtrl+F", ID_EDIT_FIND
MENUITEM "Find Next\tF3", ID_EDIT_FINDNEXT
MENUITEM "Go to...", ID_EDIT_GOTO_MENU
+ MENUITEM "Split Keyboard Settings", ID_EDIT_SPLITKEYBOARDSETTINGS
END
POPUP "&View"
BEGIN
Modified: trunk/OpenMPT/mptrack/resource.h
===================================================================
--- trunk/OpenMPT/mptrack/resource.h 2009-12-05 19:44:47 UTC (rev 435)
+++ trunk/OpenMPT/mptrack/resource.h 2009-12-06 15:56:30 UTC (rev 436)
@@ -912,6 +912,7 @@
#define IDC_CHECK_PT1X 2409
#define IDC_STATIC_CHANNEL_NAME 2410
#define IDC_EDIT_CHANNEL_NAME 2411
+#define IDC_STATIC_PATTERNNAME 2412
#define ID_FILE_NEWMOD 32771
#define ID_FILE_NEWXM 32772
#define ID_FILE_NEWS3M 32773
@@ -1157,6 +1158,7 @@
#define ID_MODTREE_INSERT 59237
#define ID_MODTREE_SWITCHTO 59238
#define ID_EDIT_PUSHFORWARDPASTE 59239
+#define ID_EDIT_SPLITKEYBOARDSETTINGS 59240
// Next default values for new objects
//
@@ -1164,8 +1166,8 @@
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_3D_CONTROLS 1
#define _APS_NEXT_RESOURCE_VALUE 524
-#define _APS_NEXT_COMMAND_VALUE 59240
-#define _APS_NEXT_CONTROL_VALUE 2412
+#define _APS_NEXT_COMMAND_VALUE 59241
+#define _APS_NEXT_CONTROL_VALUE 2413
#define _APS_NEXT_SYMED_VALUE 901
#endif
#endif
Modified: trunk/OpenMPT/soundlib/Load_imf.cpp
===================================================================
--- trunk/OpenMPT/soundlib/Load_imf.cpp 2009-12-05 19:44:47 UTC (rev 435)
+++ trunk/OpenMPT/soundlib/Load_imf.cpp 2009-12-06 15:56:30 UTC (rev 436)
@@ -476,7 +476,7 @@
}
pIns->nFadeOut = imfins.fadeout;
- pIns->nGlobalVol = 128;
+ pIns->nGlobalVol = 64;
load_imf_envelope(&pIns->VolEnv, &imfins, IMF_ENV_VOL);
load_imf_envelope(&pIns->PanEnv, &imfins, IMF_ENV_PAN);
Modified: trunk/OpenMPT/soundlib/Load_it.cpp
===================================================================
--- trunk/OpenMPT/soundlib/Load_it.cpp 2009-12-05 19:44:47 UTC (rev 435)
+++ trunk/OpenMPT/soundlib/Load_it.cpp 2009-12-06 15:56:30 UTC (rev 436)
@@ -1246,6 +1246,9 @@
pSmp->nVibRate = pis->vis;
pSmp->nVibDepth = pis->vid & 0x7F;
pSmp->nVibSweep = pis->vir; //(pis->vir + 3) / 4;
+
+ if(pis->samplepointer) lastSampleOffset = pis->samplepointer; // MPTX hack
+
if ((pis->samplepointer) && (pis->samplepointer < dwMemLength) && (pis->length))
{
pSmp->nLength = pis->length;
@@ -1268,8 +1271,7 @@
// -> CODE#0027
// -> DESC="per-instrument volume ramping setup (refered as attack)"
// ReadSample(&Ins[nsmp+1], flags, (LPSTR)(lpStream+pis->samplepointer), dwMemLength - pis->samplepointer);
- if(pis->samplepointer)
- lastSampleOffset = pis->samplepointer + ReadSample(&Samples[nsmp+1], flags, (LPSTR)(lpStream+pis->samplepointer), dwMemLength - pis->samplepointer);
+ lastSampleOffset = pis->samplepointer + ReadSample(&Samples[nsmp+1], flags, (LPSTR)(lpStream+pis->samplepointer), dwMemLength - pis->samplepointer);
// -! NEW_FEATURE#0027
}
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <sag...@us...> - 2009-12-05 19:44:57
|
Revision: 435
http://modplug.svn.sourceforge.net/modplug/?rev=435&view=rev
Author: saga-games
Date: 2009-12-05 19:44:47 +0000 (Sat, 05 Dec 2009)
Log Message:
-----------
[New] Pattern editor: New paste mode "push forward paste", which resembles the default paste behaviour of Impulse Tracker. Includes new shortcut.
[Fix] Changed default pattern control view height so it fits the new control
[Mod] Pattern editor: Instead of hiding the sequence name control, just disable it (looks better)
[Ref] Cleaned up paste code a bit.
Modified Paths:
--------------
trunk/OpenMPT/mptrack/CommandSet.cpp
trunk/OpenMPT/mptrack/CommandSet.h
trunk/OpenMPT/mptrack/Ctrl_pat.cpp
trunk/OpenMPT/mptrack/Globals.h
trunk/OpenMPT/mptrack/InputHandler.cpp
trunk/OpenMPT/mptrack/MainFrm.cpp
trunk/OpenMPT/mptrack/Moddoc.h
trunk/OpenMPT/mptrack/Modedit.cpp
trunk/OpenMPT/mptrack/View_pat.cpp
trunk/OpenMPT/mptrack/View_pat.h
trunk/OpenMPT/mptrack/mptrack.rc
trunk/OpenMPT/mptrack/resource.h
Modified: trunk/OpenMPT/mptrack/CommandSet.cpp
===================================================================
--- trunk/OpenMPT/mptrack/CommandSet.cpp 2009-12-05 13:19:54 UTC (rev 434)
+++ trunk/OpenMPT/mptrack/CommandSet.cpp 2009-12-05 19:44:47 UTC (rev 435)
@@ -2480,6 +2480,11 @@
commands[kcShowSplitKeyboardSettings].isDummy = false;
commands[kcShowSplitKeyboardSettings].Message = "Split Keyboard Settings dialog";
+ commands[kcEditPushForwardPaste].UID = 1820;
+ commands[kcEditPushForwardPaste].isHidden = false;
+ commands[kcEditPushForwardPaste].isDummy = false;
+ commands[kcEditPushForwardPaste].Message = "Push Forward Paste";
+
#ifdef _DEBUG
for (int i=0; i<kcNumCommands; i++) {
if (commands[i].UID != 0) { // ignore unset UIDs
Modified: trunk/OpenMPT/mptrack/CommandSet.h
===================================================================
--- trunk/OpenMPT/mptrack/CommandSet.h 2009-12-05 13:19:54 UTC (rev 434)
+++ trunk/OpenMPT/mptrack/CommandSet.h 2009-12-05 19:44:47 UTC (rev 435)
@@ -87,6 +87,7 @@
kcEditMixPaste,
kcEditMixPasteITStyle,
kcEditPasteFlood,
+ kcEditPushForwardPaste,
kcSwitchOverflowPaste,
kcEditSelectAll,
kcEditFind,
Modified: trunk/OpenMPT/mptrack/Ctrl_pat.cpp
===================================================================
--- trunk/OpenMPT/mptrack/Ctrl_pat.cpp 2009-12-05 13:19:54 UTC (rev 434)
+++ trunk/OpenMPT/mptrack/Ctrl_pat.cpp 2009-12-05 19:44:47 UTC (rev 435)
@@ -231,10 +231,9 @@
else
::EnableWindow(::GetDlgItem(m_hWnd, IDC_PATINSTROPLUGGUI), false);
- // Show/hide multisequence controls according the current modtype.
- GetDlgItem(IDC_STATIC_SEQUENCE_NAME_FRAME)->ShowWindow( (m_pSndFile->GetType() == MOD_TYPE_MPT) ? SW_SHOW : SW_HIDE);
- GetDlgItem(IDC_STATIC_SEQUENCE_NAME)->ShowWindow( (m_pSndFile->GetType() == MOD_TYPE_MPT) ? SW_SHOW : SW_HIDE);
- GetDlgItem(IDC_EDIT_SEQUENCE_NAME)->ShowWindow( (m_pSndFile->GetType() == MOD_TYPE_MPT) ? SW_SHOW : SW_HIDE);
+ // Enable/disablemultisequence controls according the current modtype.
+ GetDlgItem(IDC_STATIC_SEQUENCE_NAME)->EnableWindow( (m_pSndFile->GetType() == MOD_TYPE_MPT) ? SW_SHOW : SW_HIDE);
+ GetDlgItem(IDC_EDIT_SEQUENCE_NAME)->EnableWindow( (m_pSndFile->GetType() == MOD_TYPE_MPT) ? SW_SHOW : SW_HIDE);
}
//end rewbs.instroVST
if (dwHintMask & HINT_MPTOPTIONS)
Modified: trunk/OpenMPT/mptrack/Globals.h
===================================================================
--- trunk/OpenMPT/mptrack/Globals.h 2009-12-05 13:19:54 UTC (rev 434)
+++ trunk/OpenMPT/mptrack/Globals.h 2009-12-05 19:44:47 UTC (rev 435)
@@ -81,6 +81,8 @@
afx_msg void OnEditCopy() { if (m_hWndView) ::SendMessage(m_hWndView, WM_COMMAND, ID_EDIT_COPY, 0); } //rewbs.customKeys
afx_msg void OnEditPaste() { if (m_hWndView) ::SendMessage(m_hWndView, WM_COMMAND, ID_EDIT_PASTE, 0); } //rewbs.customKeys
afx_msg void OnEditMixPaste() { if (m_hWndView) ::SendMessage(m_hWndView, WM_COMMAND, ID_EDIT_PASTE_SPECIAL, 0); } //rewbs.mixPaste
+ afx_msg void OnEditPasteFlood() { if (m_hWndView) ::SendMessage(m_hWndView, WM_COMMAND, ID_EDIT_PASTEFLOOD, 0); }
+ afx_msg void OnEditPushForwardPaste() { if (m_hWndView) ::SendMessage(m_hWndView, WM_COMMAND, ID_EDIT_PUSHFORWARDPASTE, 0); }
afx_msg void OnEditFind() { if (m_hWndView) ::SendMessage(m_hWndView, WM_COMMAND, ID_EDIT_FIND, 0); } //rewbs.customKeys
afx_msg void OnEditFindNext() { if (m_hWndView) ::SendMessage(m_hWndView, WM_COMMAND, ID_EDIT_FINDNEXT, 0); } //rewbs.customKeys
afx_msg void OnSwitchToView() { if (m_hWndView) ::PostMessage(m_hWndView, WM_MOD_VIEWMSG, VIEWMSG_SETFOCUS, 0); } //rewbs.customKeys
Modified: trunk/OpenMPT/mptrack/InputHandler.cpp
===================================================================
--- trunk/OpenMPT/mptrack/InputHandler.cpp 2009-12-05 13:19:54 UTC (rev 434)
+++ trunk/OpenMPT/mptrack/InputHandler.cpp 2009-12-05 19:44:47 UTC (rev 435)
@@ -440,6 +440,8 @@
case ID_EDIT_COPY: s="&Copy\t"; c=kcEditCopy; break;
case ID_EDIT_PASTE: s="&Paste\t"; c=kcEditPaste; break;
case ID_EDIT_PASTE_SPECIAL: s="&Mix Paste\t"; c=kcEditMixPaste; break;
+ case ID_EDIT_PASTEFLOOD: s="&Paste Flood\t"; c=kcEditPasteFlood; break;
+ case ID_EDIT_PUSHFORWARDPASTE: s="&Push Forward Paste\t"; c=kcEditPushForwardPaste; break;
case ID_EDIT_SELECT_ALL: s="&Select All\t"; c=kcEditSelectAll; break;
case ID_EDIT_FIND: s="&Find\t"; c=kcEditFind; break;
case ID_EDIT_FINDNEXT: s="Find &Next\t"; c=kcEditFindNext; break;
@@ -505,6 +507,8 @@
pMenu->ModifyMenu(ID_EDIT_COPY, MF_BYCOMMAND | MF_STRING, ID_EDIT_COPY, GetMenuText(ID_EDIT_COPY));
pMenu->ModifyMenu(ID_EDIT_PASTE, MF_BYCOMMAND | MF_STRING, ID_EDIT_PASTE, GetMenuText(ID_EDIT_PASTE));
pMenu->ModifyMenu(ID_EDIT_PASTE_SPECIAL, MF_BYCOMMAND | MF_STRING, ID_EDIT_PASTE_SPECIAL, GetMenuText(ID_EDIT_PASTE_SPECIAL));
+ pMenu->ModifyMenu(ID_EDIT_PASTEFLOOD, MF_BYCOMMAND | MF_STRING, ID_EDIT_PASTEFLOOD, GetMenuText(ID_EDIT_PASTEFLOOD));
+ pMenu->ModifyMenu(ID_EDIT_PUSHFORWARDPASTE, MF_BYCOMMAND | MF_STRING, ID_EDIT_PUSHFORWARDPASTE, GetMenuText(ID_EDIT_PUSHFORWARDPASTE));
pMenu->ModifyMenu(ID_EDIT_SELECT_ALL, MF_BYCOMMAND | MF_STRING, ID_EDIT_SELECT_ALL, GetMenuText(ID_EDIT_SELECT_ALL));
pMenu->ModifyMenu(ID_EDIT_FIND, MF_BYCOMMAND | MF_STRING, ID_EDIT_FIND, GetMenuText(ID_EDIT_FIND));
pMenu->ModifyMenu(ID_EDIT_FINDNEXT, MF_BYCOMMAND | MF_STRING, ID_EDIT_FINDNEXT, GetMenuText(ID_EDIT_FINDNEXT));
Modified: trunk/OpenMPT/mptrack/MainFrm.cpp
===================================================================
--- trunk/OpenMPT/mptrack/MainFrm.cpp 2009-12-05 13:19:54 UTC (rev 434)
+++ trunk/OpenMPT/mptrack/MainFrm.cpp 2009-12-05 19:44:47 UTC (rev 435)
@@ -139,7 +139,7 @@
//rewbs.varWindowSize
LONG CMainFrame::glCtrlWindowHeight = 188; //obsolete, for backwards compat only
LONG CMainFrame::glGeneralWindowHeight = 178;
-LONG CMainFrame::glPatternWindowHeight = 232;
+LONG CMainFrame::glPatternWindowHeight = 152;
LONG CMainFrame::glSampleWindowHeight = 188;
LONG CMainFrame::glInstrumentWindowHeight = 300;
LONG CMainFrame::glCommentsWindowHeight = 288;
Modified: trunk/OpenMPT/mptrack/Moddoc.h
===================================================================
--- trunk/OpenMPT/mptrack/Moddoc.h 2009-12-05 13:19:54 UTC (rev 434)
+++ trunk/OpenMPT/mptrack/Moddoc.h 2009-12-05 19:44:47 UTC (rev 435)
@@ -103,6 +103,17 @@
};
+// pattern paste modes
+enum enmPatternPasteModes
+{
+ pm_overwrite = 0,
+ pm_mixpaste,
+ pm_mixpaste_it,
+ pm_pasteflood,
+ pm_pushforwardpaste,
+};
+
+
/////////////////////////////////////////////////////////////////////////
// Split Keyboard Settings (pattern editor)
@@ -255,7 +266,7 @@
// Copy&Paste
bool CopyPattern(PATTERNINDEX nPattern, DWORD dwBeginSel, DWORD dwEndSel);
- bool PastePattern(PATTERNINDEX nPattern, DWORD dwBeginSel, bool mix, bool ITStyleMix = false, bool PasteFlood = false);
+ bool PastePattern(PATTERNINDEX nPattern, DWORD dwBeginSel, enmPatternPasteModes pasteMode);
bool CopyEnvelope(UINT nIns, enmEnvelopeTypes nEnv);
bool PasteEnvelope(UINT nIns, enmEnvelopeTypes nEnv);
Modified: trunk/OpenMPT/mptrack/Modedit.cpp
===================================================================
--- trunk/OpenMPT/mptrack/Modedit.cpp 2009-12-05 13:19:54 UTC (rev 434)
+++ trunk/OpenMPT/mptrack/Modedit.cpp 2009-12-05 19:44:47 UTC (rev 435)
@@ -439,7 +439,7 @@
if (nNewChannels > maxChans) {
CString error;
- error.Format("Error: Max number of channels for this type is %d", maxChans);
+ error.Format("Error: Max number of channels for this file type is %d", maxChans);
::AfxMessageBox(error, MB_OK|MB_ICONEXCLAMATION);
return FALSE;
}
@@ -1156,9 +1156,8 @@
}
-//BOOL CModDoc::PastePattern(UINT nPattern, DWORD dwBeginSel)
-bool CModDoc::PastePattern(PATTERNINDEX nPattern, DWORD dwBeginSel, bool mix, bool ITStyleMix, bool PasteFlood)
-//-------------------------------------------------------------------------------------------------------------
+bool CModDoc::PastePattern(PATTERNINDEX nPattern, DWORD dwBeginSel, enmPatternPasteModes pasteMode)
+//-------------------------------------------------------------------------------------------------
{
CMainFrame *pMainFrm = CMainFrame::GetMainFrame();
if ((!pMainFrm) || (nPattern >= m_SndFile.Patterns.Size()) || (!m_SndFile.Patterns[nPattern])) return false;
@@ -1181,6 +1180,10 @@
UINT len = 0, startLen;
MODCOMMAND origModCmd;
+ bool doOverflowPaste = (CMainFrame::m_dwPatternSetup & PATTERN_OVERFLOWPASTE) && (pasteMode != pm_pasteflood) && (pasteMode != pm_pushforwardpaste);
+ bool doITStyleMix = (pasteMode == pm_mixpaste_it);
+ bool doMixPaste = ((pasteMode == pm_mixpaste) || doITStyleMix);
+
ORDERINDEX oCurrentOrder; //jojo.echopaste
ROWINDEX rTemp, startRow;
PATTERNINDEX pTemp;
@@ -1219,7 +1222,7 @@
{
if (len + 11 >= dwMemSize || !p[len])
{
- if((PasteFlood == true) && (nrow != startRow)) // prevent infinite loop with malformed clipboard data
+ if((pasteMode == pm_pasteflood) && (nrow != startRow)) // prevent infinite loop with malformed clipboard data
len = startLen; // paste from beginning
else
goto PasteDone;
@@ -1235,11 +1238,21 @@
origModCmd = m[col]; // ITSyle mixpaste requires that we keep a copy of the thing we are about to paste on
// so that we can refer back to check if there was anything in e.g. the note column before we pasted.
LPSTR s = p+len+1;
+
if (col < m_SndFile.m_nChannels)
{
+ // push channel data below paste point first.
+ if(pasteMode == pm_pushforwardpaste)
+ {
+ for(ROWINDEX nPushRow = m_SndFile.PatternSize[nPattern] - 1 - nrow; nPushRow > 0; nPushRow--)
+ {
+ m[col + nPushRow * m_SndFile.m_nChannels] = m[col + (nPushRow - 1) * m_SndFile.m_nChannels];
+ }
+ }
+
// Note
- if (s[0] > ' ' && (!mix || ((!ITStyleMix && origModCmd.note==0) ||
- (ITStyleMix && origModCmd.note==0 && origModCmd.instr==0 && origModCmd.volcmd==0))))
+ if (s[0] > ' ' && (!doMixPaste || ((!doITStyleMix && origModCmd.note==0) ||
+ (doITStyleMix && origModCmd.note==0 && origModCmd.instr==0 && origModCmd.volcmd==0))))
{
m[col].note = NOTE_NONE;
if (s[0] == '=') m[col].note = NOTE_KEYOFF; else
@@ -1263,8 +1276,8 @@
}
}
// Instrument
- if (s[3] > ' ' && (!mix || ( (!ITStyleMix && origModCmd.instr==0) ||
- (ITStyleMix && origModCmd.note==0 && origModCmd.instr==0 && origModCmd.volcmd==0) ) ))
+ if (s[3] > ' ' && (!doMixPaste || ( (!doITStyleMix && origModCmd.instr==0) ||
+ (doITStyleMix && origModCmd.note==0 && origModCmd.instr==0 && origModCmd.volcmd==0) ) ))
{
if ((s[3] >= '0') && (s[3] <= ('0'+(MAX_SAMPLES/10))))
@@ -1273,8 +1286,8 @@
} else m[col].instr = 0;
}
// Volume
- if (s[5] > ' ' && (!mix || ((!ITStyleMix && origModCmd.volcmd==0) ||
- (ITStyleMix && origModCmd.note==0 && origModCmd.instr==0 && origModCmd.volcmd==0))))
+ if (s[5] > ' ' && (!doMixPaste || ((!doITStyleMix && origModCmd.volcmd==0) ||
+ (doITStyleMix && origModCmd.note==0 && origModCmd.instr==0 && origModCmd.volcmd==0))))
{
if (s[5] != '.')
@@ -1314,8 +1327,8 @@
}
else
{
- if (s[8] > ' ' && (!mix || ((!ITStyleMix && origModCmd.command==0) ||
- (ITStyleMix && origModCmd.command==0 && origModCmd.param==0))))
+ if (s[8] > ' ' && (!doMixPaste || ((!doITStyleMix && origModCmd.command==0) ||
+ (doITStyleMix && origModCmd.command==0 && origModCmd.param==0))))
{
m[col].command = 0;
if (s[8] != '.')
@@ -1328,8 +1341,8 @@
}
}
// Effect value
- if (s[9] > ' ' && (!mix || ((!ITStyleMix && origModCmd.param==0) ||
- (ITStyleMix && origModCmd.command==0 && origModCmd.param==0))))
+ if (s[9] > ' ' && (!doMixPaste || ((!doITStyleMix && origModCmd.param==0) ||
+ (doITStyleMix && origModCmd.command==0 && origModCmd.param==0))))
{
m[col].param = 0;
if (s[9] != '.')
@@ -1380,7 +1393,7 @@
// Overflow paste. Continue pasting in next pattern if enabled.
// If Paste Flood is enabled, this won't be called due to obvious reasons.
- if((CMainFrame::m_dwPatternSetup & PATTERN_OVERFLOWPASTE) && !PasteFlood)
+ if(doOverflowPaste)
{
while(nrow >= m_SndFile.PatternSize[nPattern])
{
Modified: trunk/OpenMPT/mptrack/View_pat.cpp
===================================================================
--- trunk/OpenMPT/mptrack/View_pat.cpp 2009-12-05 13:19:54 UTC (rev 434)
+++ trunk/OpenMPT/mptrack/View_pat.cpp 2009-12-05 19:44:47 UTC (rev 435)
@@ -56,6 +56,7 @@
ON_COMMAND(ID_EDIT_PASTE, OnEditPaste)
ON_COMMAND(ID_EDIT_MIXPASTE, OnEditMixPaste)
ON_COMMAND(ID_EDIT_PASTEFLOOD, OnEditPasteFlood)
+ ON_COMMAND(ID_EDIT_PUSHFORWARDPASTE,OnEditPushForwardPaste)
ON_COMMAND(ID_EDIT_SELECT_ALL, OnEditSelectAll)
ON_COMMAND(ID_EDIT_SELECTCOLUMN,OnEditSelectColumn)
ON_COMMAND(ID_EDIT_SELECTCOLUMN2,OnSelectCurrentColumn)
@@ -966,64 +967,6 @@
}
-void CViewPattern::OnEditPaste()
-//------------------------------
-{
- CModDoc *pModDoc = GetDocument();
-
- if (pModDoc && IsEditingEnabled_bmsg())
- {
- pModDoc->PastePattern(m_nPattern, m_dwBeginSel, false);
- InvalidatePattern(FALSE);
- SetFocus();
- }
-}
-
-//rewbs.mixPaste
-void CViewPattern::OnEditMixPaste()
-//------------------------------
-{
- CModDoc *pModDoc = GetDocument();
-
- if (pModDoc && IsEditingEnabled_bmsg())
- {
- pModDoc->PastePattern(m_nPattern, m_dwBeginSel, true);
- InvalidatePattern(FALSE);
- SetFocus();
- }
-}
-
-void CViewPattern::OnEditMixPasteITStyle()
-//----------------------------------------
-{
- CModDoc *pModDoc = GetDocument();
-
- if (pModDoc && IsEditingEnabled_bmsg() )
- {
- pModDoc->PastePattern(m_nPattern, m_dwBeginSel, true, true);
- InvalidatePattern(FALSE);
- SetFocus();
- }
-}
-
-
-//end rewbs.mixPaste
-
-
-void CViewPattern::OnEditPasteFlood()
-//-----------------------------------
-{
- CModDoc *pModDoc = GetDocument();
-
- if (pModDoc && IsEditingEnabled_bmsg())
- {
- pModDoc->PastePattern(m_nPattern, m_dwBeginSel, false, false, true);
- InvalidatePattern(FALSE);
- SetFocus();
- }
-}
-
-
void CViewPattern::OnLButtonDown(UINT nFlags, CPoint point)
//--------------------------------------------------
{
@@ -3370,7 +3313,7 @@
case VIEWMSG_PASTEPATTERN:
{
CModDoc *pModDoc = GetDocument();
- if (pModDoc) pModDoc->PastePattern(m_nPattern, 0, false);
+ if (pModDoc) pModDoc->PastePattern(m_nPattern, 0, pm_overwrite);
}
break;
@@ -4838,6 +4781,7 @@
AppendMenu(hMenu, MF_STRING, ID_EDIT_PASTE, "Paste\t" + ih->GetKeyTextFromCommand(kcEditPaste));
AppendMenu(hMenu, MF_STRING, ID_EDIT_MIXPASTE, "Mix Paste\t" + ih->GetKeyTextFromCommand(kcEditMixPaste));
AppendMenu(hMenu, MF_STRING, ID_EDIT_PASTEFLOOD, "Paste Flood\t" + ih->GetKeyTextFromCommand(kcEditPasteFlood));
+ AppendMenu(hMenu, MF_STRING, ID_EDIT_PUSHFORWARDPASTE, "Push Forward Paste\t" + ih->GetKeyTextFromCommand(kcEditPushForwardPaste));
DWORD greyed = pModDoc->GetPatternUndo()->CanUndo()?FALSE:MF_GRAYED;
if (!greyed || !(CMainFrame::m_dwPatternSetup&PATTERN_OLDCTXMENUSTYLE)) {
@@ -5216,3 +5160,17 @@
CSplitKeyboadSettings dlg(CMainFrame::GetMainFrame(), pSndFile, pModDoc->GetSplitKeyboardSettings());
dlg.DoModal();
}
+
+
+void CViewPattern::ExecutePaste(enmPatternPasteModes pasteMode)
+//-------------------------------------------------------------
+{
+ CModDoc *pModDoc = GetDocument();
+
+ if (pModDoc && IsEditingEnabled_bmsg())
+ {
+ pModDoc->PastePattern(m_nPattern, m_dwBeginSel, pasteMode);
+ InvalidatePattern(FALSE);
+ SetFocus();
+ }
+}
Modified: trunk/OpenMPT/mptrack/View_pat.h
===================================================================
--- trunk/OpenMPT/mptrack/View_pat.h 2009-12-05 13:19:54 UTC (rev 434)
+++ trunk/OpenMPT/mptrack/View_pat.h 2009-12-05 19:44:47 UTC (rev 435)
@@ -199,6 +199,8 @@
void TogglePluginEditor(int chan); //rewbs.patPlugName
+ void ExecutePaste(enmPatternPasteModes pasteMode);
+
public:
//{{AFX_VIRTUAL(CViewPattern)
virtual void OnDraw(CDC *);
@@ -225,10 +227,13 @@
afx_msg void OnKillFocus(CWnd *pNewWnd);
afx_msg void OnEditCut();
afx_msg void OnEditCopy();
- afx_msg void OnEditPaste();
- afx_msg void OnEditMixPaste(); //rewbs.mixPaste
- afx_msg void OnEditMixPasteITStyle(); //rewbs.mixPaste
- afx_msg void OnEditPasteFlood();
+
+ afx_msg void OnEditPaste() {ExecutePaste(pm_overwrite);};
+ afx_msg void OnEditMixPaste() {ExecutePaste(pm_mixpaste);};
+ afx_msg void OnEditMixPasteITStyle() {ExecutePaste(pm_mixpaste_it);};
+ afx_msg void OnEditPasteFlood() {ExecutePaste(pm_pasteflood);};
+ afx_msg void OnEditPushForwardPaste() {ExecutePaste(pm_pushforwardpaste);};
+
afx_msg void OnClearSelection(bool ITStyle=false, RowMask sb = DefaultRowMask); //rewbs.customKeys
afx_msg void OnGrowSelection(); //rewbs.customKeys
afx_msg void OnShrinkSelection(); //rewbs.customKeys
Modified: trunk/OpenMPT/mptrack/mptrack.rc
===================================================================
--- trunk/OpenMPT/mptrack/mptrack.rc 2009-12-05 13:19:54 UTC (rev 434)
+++ trunk/OpenMPT/mptrack/mptrack.rc 2009-12-05 19:44:47 UTC (rev 435)
@@ -442,20 +442,20 @@
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD
FONT 8, "MS Shell Dlg", 0, 0, 0x1
BEGIN
- CONTROL "Follow Song",IDC_PATTERN_FOLLOWSONG,"Button",BS_AUTOCHECKBOX | BS_FLAT,312,31,55,10
- COMBOBOX IDC_COMBO_INSTRUMENT,18,30,96,137,CBS_DROPDOWNLIST | WS_VSCROLL
- CTEXT "Row Spacing",IDC_STATIC,162,32,42,8,SS_CENTERIMAGE
- EDITTEXT IDC_EDIT_SPACING,210,30,28,12,ES_AUTOHSCROLL | ES_NUMBER | NOT WS_TABSTOP
- CONTROL "Spin1",IDC_SPIN_SPACING,"msctls_updown32",UDS_WRAP | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_NOTHOUSANDS,230,30,11,11
+ CONTROL "Follow Song",IDC_PATTERN_FOLLOWSONG,"Button",BS_AUTOCHECKBOX | BS_FLAT,312,32,55,8
+ COMBOBOX IDC_COMBO_INSTRUMENT,18,30,102,137,CBS_DROPDOWNLIST | WS_VSCROLL
+ CTEXT "Row Spacing",IDC_STATIC,168,32,42,8,SS_CENTERIMAGE
+ EDITTEXT IDC_EDIT_SPACING,216,30,28,12,ES_AUTOHSCROLL | ES_NUMBER | NOT WS_TABSTOP
+ CONTROL "Spin1",IDC_SPIN_SPACING,"msctls_updown32",UDS_WRAP | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_NOTHOUSANDS,236,30,11,11
PUSHBUTTON "<<",IDC_BUTTON2,3,51,14,15,NOT WS_TABSTOP,WS_EX_STATICEDGE
PUSHBUTTON ">>",IDC_BUTTON1,15,51,14,15,NOT WS_TABSTOP,WS_EX_STATICEDGE
LTEXT "Pattern Name",IDC_STATIC,384,32,48,8,SS_CENTERIMAGE
- EDITTEXT IDC_EDIT_PATTERNNAME,439,29,108,12,ES_AUTOHSCROLL
+ EDITTEXT IDC_EDIT_PATTERNNAME,439,30,108,12,ES_AUTOHSCROLL
CONTROL "Toolbar1",IDC_TOOLBAR1,"ToolbarWindow32",WS_GROUP | 0x4d,2,4,370,18
CONTROL "Spin1",IDC_SPIN_INSTRUMENT,"msctls_updown32",0x0,6,30,11,12
- PUSHBUTTON "Plugin",IDC_PATINSTROPLUGGUI,120,30,33,13,0,WS_EX_STATICEDGE
+ PUSHBUTTON "Plugin",IDC_PATINSTROPLUGGUI,126,30,33,13,0,WS_EX_STATICEDGE
GROUPBOX "",IDC_STATIC,3,22,369,24
- CONTROL "Loop Pattern",IDC_PATTERN_LOOP,"Button",BS_AUTOCHECKBOX | BS_FLAT | WS_TABSTOP,252,31,57,10
+ CONTROL "Loop Pattern",IDC_PATTERN_LOOP,"Button",BS_AUTOCHECKBOX | BS_FLAT | WS_TABSTOP,252,32,57,8
EDITTEXT IDC_EDIT_ORDERLIST_MARGINS,3,65,28,12,ES_AUTOHSCROLL | ES_READONLY
CONTROL "",IDC_SPIN_ORDERLIST_MARGINS,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_NOTHOUSANDS,16,70,11,11
EDITTEXT IDC_EDIT_SEQUENCE_NAME,439,8,108,12,ES_AUTOHSCROLL
@@ -1836,6 +1836,8 @@
MENUITEM "&Copy\tCtrl+C", ID_EDIT_COPY
MENUITEM "&Paste\tCtrl+V", ID_EDIT_PASTE
MENUITEM "&Mix Paste\tCtrl+M", ID_EDIT_PASTE_SPECIAL
+ MENUITEM "Paste Flood", ID_EDIT_PASTEFLOOD
+ MENUITEM "Push Forward Paste", ID_EDIT_PUSHFORWARDPASTE
MENUITEM "Select &All\tCtrl+5", ID_EDIT_SELECT_ALL
MENUITEM SEPARATOR
MENUITEM "C&leanup...", ID_EDIT_CLEANUP
Modified: trunk/OpenMPT/mptrack/resource.h
===================================================================
--- trunk/OpenMPT/mptrack/resource.h 2009-12-05 13:19:54 UTC (rev 434)
+++ trunk/OpenMPT/mptrack/resource.h 2009-12-05 19:44:47 UTC (rev 435)
@@ -1156,6 +1156,7 @@
#define ID_MODTREE_DUPLICATE 59236
#define ID_MODTREE_INSERT 59237
#define ID_MODTREE_SWITCHTO 59238
+#define ID_EDIT_PUSHFORWARDPASTE 59239
// Next default values for new objects
//
@@ -1163,7 +1164,7 @@
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_3D_CONTROLS 1
#define _APS_NEXT_RESOURCE_VALUE 524
-#define _APS_NEXT_COMMAND_VALUE 59239
+#define _APS_NEXT_COMMAND_VALUE 59240
#define _APS_NEXT_CONTROL_VALUE 2412
#define _APS_NEXT_SYMED_VALUE 901
#endif
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <sag...@us...> - 2009-12-05 13:20:04
|
Revision: 434
http://modplug.svn.sourceforge.net/modplug/?rev=434&view=rev
Author: saga-games
Date: 2009-12-05 13:19:54 +0000 (Sat, 05 Dec 2009)
Log Message:
-----------
[Fix] Pattern editor: Split Keyboard Settings were not remembered when switching to a different tab.
Modified Paths:
--------------
trunk/OpenMPT/mptrack/Mainfrm.h
trunk/OpenMPT/mptrack/Moddoc.cpp
trunk/OpenMPT/mptrack/Moddoc.h
trunk/OpenMPT/mptrack/View_pat.cpp
trunk/OpenMPT/mptrack/View_pat.h
trunk/OpenMPT/mptrack/resource.h
Modified: trunk/OpenMPT/mptrack/Mainfrm.h
===================================================================
--- trunk/OpenMPT/mptrack/Mainfrm.h 2009-12-05 00:31:41 UTC (rev 433)
+++ trunk/OpenMPT/mptrack/Mainfrm.h 2009-12-05 13:19:54 UTC (rev 434)
@@ -341,18 +341,6 @@
/////////////////////////////////////////////////////////////////////////
-// Split Keyboard Settings (pattern editor)
-
-#define SPLIT_OCTAVE_RANGE 9
-struct SplitKeyboardSettings
-{
- UINT splitInstrument, splitNote, splitVolume;
- int octaveModifier; // determines by how many octaves the notes should be transposed up or down
- bool octaveLink; // apply octaveModifier
-};
-
-
-/////////////////////////////////////////////////////////////////////////
// Misc. Macros
Modified: trunk/OpenMPT/mptrack/Moddoc.cpp
===================================================================
--- trunk/OpenMPT/mptrack/Moddoc.cpp 2009-12-05 00:31:41 UTC (rev 433)
+++ trunk/OpenMPT/mptrack/Moddoc.cpp 2009-12-05 13:19:54 UTC (rev 434)
@@ -99,6 +99,12 @@
m_PatternUndo.SetParent(this);
m_SampleUndo.SetParent(this);
+ m_SplitKeyboardSettings.splitInstrument = 0;
+ m_SplitKeyboardSettings.splitNote = NOTE_MIDDLEC - 1;
+ m_SplitKeyboardSettings.splitVolume = 0;
+ m_SplitKeyboardSettings.octaveModifier = 0;
+ m_SplitKeyboardSettings.octaveLink = false;
+
#ifdef _DEBUG
MODCHANNEL *p = m_SndFile.Chn;
if (((DWORD)p) & 7) Log("MODCHANNEL is not aligned (0x%08X)\n", p);
Modified: trunk/OpenMPT/mptrack/Moddoc.h
===================================================================
--- trunk/OpenMPT/mptrack/Moddoc.h 2009-12-05 00:31:41 UTC (rev 433)
+++ trunk/OpenMPT/mptrack/Moddoc.h 2009-12-05 13:19:54 UTC (rev 434)
@@ -103,6 +103,18 @@
};
+/////////////////////////////////////////////////////////////////////////
+// Split Keyboard Settings (pattern editor)
+
+#define SPLIT_OCTAVE_RANGE 9
+struct SplitKeyboardSettings
+{
+ UINT splitInstrument, splitNote, splitVolume;
+ int octaveModifier; // determines by how many octaves the notes should be transposed up or down
+ bool octaveLink; // apply octaveModifier
+};
+
+
//=============================
class CModDoc: public CDocument
//=============================
@@ -127,6 +139,7 @@
CPatternUndo m_PatternUndo;
CSampleUndo m_SampleUndo;
+ SplitKeyboardSettings m_SplitKeyboardSettings; // this is maybe not the best place to keep them, but it should do the job
protected: // create from serialization only
CModDoc();
@@ -183,6 +196,7 @@
CPatternUndo *GetPatternUndo() { return &m_PatternUndo; }
CSampleUndo *GetSampleUndo() { return &m_SampleUndo; }
+ SplitKeyboardSettings *GetSplitKeyboardSettings() { return &m_SplitKeyboardSettings; }
// operations
public:
Modified: trunk/OpenMPT/mptrack/View_pat.cpp
===================================================================
--- trunk/OpenMPT/mptrack/View_pat.cpp 2009-12-05 00:31:41 UTC (rev 433)
+++ trunk/OpenMPT/mptrack/View_pat.cpp 2009-12-05 13:19:54 UTC (rev 434)
@@ -31,6 +31,7 @@
UINT CViewPattern::m_nFindMaxChn = 0;
signed char cInstrRelChange = 0;
+
IMPLEMENT_SERIAL(CViewPattern, CModScrollView, 0)
BEGIN_MESSAGE_MAP(CViewPattern, CModScrollView)
@@ -178,13 +179,6 @@
m_nFoundInstrument = 0;
m_nLastPlayedRow = 0;
m_nLastPlayedOrder = 0;
-
- // Set up keyboard split
- m_SplitKeyboardSettings.splitInstrument = 0;
- m_SplitKeyboardSettings.splitNote = NOTE_MIDDLEC - 1;
- m_SplitKeyboardSettings.splitVolume = 0;
- m_SplitKeyboardSettings.octaveModifier = 0;
- m_SplitKeyboardSettings.octaveLink = false;
}
@@ -3921,16 +3915,16 @@
const UINT nTick = pSndFile->m_nTickCount;
const PATTERNINDEX nPatPlayback = pSndFile->m_nPattern;
- const bool isSplit = (note <= m_SplitKeyboardSettings.splitNote);
+ const bool isSplit = (note <= pModDoc->GetSplitKeyboardSettings()->splitNote);
UINT ins = 0;
if (pModDoc)
{
if (isSplit)
{
- ins = m_SplitKeyboardSettings.splitInstrument;
- if (m_SplitKeyboardSettings.octaveLink) note += 12 * m_SplitKeyboardSettings.octaveModifier;
- if (note > NOTE_MAX && note < NOTE_NOTECUT) note = NOTE_MAX;
- if (note<0) note=1;
+ ins = pModDoc->GetSplitKeyboardSettings()->splitInstrument;
+ if (pModDoc->GetSplitKeyboardSettings()->octaveLink) note += 12 *pModDoc->GetSplitKeyboardSettings()->octaveModifier;
+ if (note > NOTE_MAX && note < NOTE_MIN_SPECIAL) note = NOTE_MAX;
+ if (note < 0) note = 1;
}
if (!ins) ins = GetCurrentInstrument();
if (!ins) ins = m_nFoundInstrument;
@@ -4184,17 +4178,24 @@
// -- write note and instrument data.
const bool isSplit = HandleSplit(p, note);
+ // Nice idea actually: Use lower section of the keyboard to play chords
+ /*if(isSplit)
+ {
+ TempEnterChord(note);
+ return;
+ }*/
+
// -- write vol data
- if (vol >= 0 && vol <= 64 && !(isSplit && m_SplitKeyboardSettings.splitVolume)) //write valid volume, as long as there's no split volume override.
+ if (vol >= 0 && vol <= 64 && !(isSplit && pModDoc->GetSplitKeyboardSettings()->splitVolume)) //write valid volume, as long as there's no split volume override.
{
p->volcmd=VOLCMD_VOLUME;
p->vol = vol;
- } else if (isSplit && m_SplitKeyboardSettings.splitVolume) //cater for split volume override.
+ } else if (isSplit && pModDoc->GetSplitKeyboardSettings()->splitVolume) //cater for split volume override.
{
- if (m_SplitKeyboardSettings.splitVolume > 0 && m_SplitKeyboardSettings.splitVolume <= 64)
+ if (pModDoc->GetSplitKeyboardSettings()->splitVolume > 0 && pModDoc->GetSplitKeyboardSettings()->splitVolume <= 64)
{
p->volcmd=VOLCMD_VOLUME;
- p->vol = m_SplitKeyboardSettings.splitVolume;
+ p->vol = pModDoc->GetSplitKeyboardSettings()->splitVolume;
}
}
@@ -4593,7 +4594,9 @@
bool CViewPattern::HandleSplit(MODCOMMAND* p, int note)
//-----------------------------------------------------
{
- if (note > m_SplitKeyboardSettings.splitNote)
+ CModDoc *pModDoc = GetDocument(); if (!pModDoc) return false;
+
+ if (note > pModDoc->GetSplitKeyboardSettings()->splitNote)
{
p->note = note;
UINT nins = GetCurrentInstrument();
@@ -4603,14 +4606,14 @@
}
else
{
- if (m_SplitKeyboardSettings.splitInstrument)
- p->instr = m_SplitKeyboardSettings.splitInstrument;
+ if (pModDoc->GetSplitKeyboardSettings()->splitInstrument)
+ p->instr = pModDoc->GetSplitKeyboardSettings()->splitInstrument;
else
if(GetCurrentInstrument()) p->instr = GetCurrentInstrument();
- if (m_SplitKeyboardSettings.octaveLink)
- note += 12 * m_SplitKeyboardSettings.octaveModifier;
- if (note > NOTE_MAX && note < NOTE_NOTECUT) note = NOTE_MAX;
- if (note<0) note=1;
+ if (pModDoc->GetSplitKeyboardSettings()->octaveLink)
+ note += 12 * pModDoc->GetSplitKeyboardSettings()->octaveModifier;
+ if (note > NOTE_MAX && note < NOTE_MIN_SPECIAL) note = NOTE_MAX;
+ if (note < 0) note = 1;
p->note = note;
return true;
@@ -5210,6 +5213,6 @@
CSoundFile *pSndFile = pModDoc->GetSoundFile();
if(pSndFile == nullptr) return;
- CSplitKeyboadSettings dlg(CMainFrame::GetMainFrame(), pSndFile, &m_SplitKeyboardSettings);
+ CSplitKeyboadSettings dlg(CMainFrame::GetMainFrame(), pSndFile, pModDoc->GetSplitKeyboardSettings());
dlg.DoModal();
}
Modified: trunk/OpenMPT/mptrack/View_pat.h
===================================================================
--- trunk/OpenMPT/mptrack/View_pat.h 2009-12-05 00:31:41 UTC (rev 433)
+++ trunk/OpenMPT/mptrack/View_pat.h 2009-12-05 13:19:54 UTC (rev 434)
@@ -85,8 +85,6 @@
SIZE m_szHeader, m_szCell;
UINT m_nPattern, m_nRow, m_nMidRow, m_nPlayPat, m_nPlayRow, m_nSpacing, m_nAccelChar, m_nLastPlayedRow, m_nLastPlayedOrder;
- SplitKeyboardSettings m_SplitKeyboardSettings;
-
int m_nXScroll, m_nYScroll;
DWORD m_nDragItem, m_nMenuParam, m_nDetailLevel;
BOOL m_bDragging, m_bInItemRect, m_bRecord, m_bContinueSearch, m_bWholePatternFitsOnScreen;
Modified: trunk/OpenMPT/mptrack/resource.h
===================================================================
--- trunk/OpenMPT/mptrack/resource.h 2009-12-05 00:31:41 UTC (rev 433)
+++ trunk/OpenMPT/mptrack/resource.h 2009-12-05 13:19:54 UTC (rev 434)
@@ -708,7 +708,6 @@
#define IDC_COMMAND_LIST 2129
#define IDC_STATIC8 2200
#define IDC_PATINSTROPLUGGUI 2201
-#define IDC_PATINSTROPLUGGUI2 2202
#define IDC_WFIRCUTOFF 2202
#define IDC_WFIRTYPE 2203
#define IDC_RAMPING 2204
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <sag...@us...> - 2009-12-05 00:31:53
|
Revision: 433
http://modplug.svn.sourceforge.net/modplug/?rev=433&view=rev
Author: saga-games
Date: 2009-12-05 00:31:41 +0000 (Sat, 05 Dec 2009)
Log Message:
-----------
[Imp] Pattern editor: Tidied up the upper panel. It fits perfectly on a 1024x768 screen with treeview enabled and also works on 800x600 with treeview disabled. With the new layout, about 8 more pattern rows can be seen.
[Mod] Pattern editor: Due to this cleanup, the "split keyboard" feature has been removed from the interface. The split keyboard settings dialog can now be accessed by using a shortcut, which should be even faster than the old method.
[Mod] Updated DE_jojo.mkb (Added shortcut for Split Keyboard Settings)
[Mod] Added VU Meter colours for the pattern colour presets
[Ref] Removed various constants, structs and stuff that was connected to the old keyboard "manager", as it has been obsolete for years.
Modified Paths:
--------------
trunk/OpenMPT/mptrack/CommandSet.cpp
trunk/OpenMPT/mptrack/CommandSet.h
trunk/OpenMPT/mptrack/Ctrl_pat.cpp
trunk/OpenMPT/mptrack/Ctrl_pat.h
trunk/OpenMPT/mptrack/Mainfrm.h
trunk/OpenMPT/mptrack/Moptions.cpp
trunk/OpenMPT/mptrack/View_pat.cpp
trunk/OpenMPT/mptrack/View_pat.h
trunk/OpenMPT/mptrack/dlg_misc.cpp
trunk/OpenMPT/mptrack/dlg_misc.h
trunk/OpenMPT/mptrack/mptrack.rc
trunk/OpenMPT/mptrack/resource.h
trunk/OpenMPT/packageTemplate/extraKeymaps/DE_jojo.mkb
Modified: trunk/OpenMPT/mptrack/CommandSet.cpp
===================================================================
--- trunk/OpenMPT/mptrack/CommandSet.cpp 2009-12-04 19:30:31 UTC (rev 432)
+++ trunk/OpenMPT/mptrack/CommandSet.cpp 2009-12-05 00:31:41 UTC (rev 433)
@@ -2475,6 +2475,11 @@
commands[kcOrderlistPatMinus].isDummy = false;
commands[kcOrderlistPatMinus].Message = "Decrease pattern index";
+ commands[kcShowSplitKeyboardSettings].UID = 1819;
+ commands[kcShowSplitKeyboardSettings].isHidden = false;
+ commands[kcShowSplitKeyboardSettings].isDummy = false;
+ commands[kcShowSplitKeyboardSettings].Message = "Split Keyboard Settings dialog";
+
#ifdef _DEBUG
for (int i=0; i<kcNumCommands; i++) {
if (commands[i].UID != 0) { // ignore unset UIDs
Modified: trunk/OpenMPT/mptrack/CommandSet.h
===================================================================
--- trunk/OpenMPT/mptrack/CommandSet.h 2009-12-04 19:30:31 UTC (rev 432)
+++ trunk/OpenMPT/mptrack/CommandSet.h 2009-12-05 00:31:41 UTC (rev 433)
@@ -224,6 +224,7 @@
kcShowNoteProperties,
kcShowPatternProperties,
kcShowMacroConfig,
+ kcShowSplitKeyboardSettings,
kcChangeLoopStatus,
kcShowEditMenu,
kcTimeAtRow,
Modified: trunk/OpenMPT/mptrack/Ctrl_pat.cpp
===================================================================
--- trunk/OpenMPT/mptrack/Ctrl_pat.cpp 2009-12-04 19:30:31 UTC (rev 432)
+++ trunk/OpenMPT/mptrack/Ctrl_pat.cpp 2009-12-05 00:31:41 UTC (rev 433)
@@ -53,16 +53,7 @@
ON_COMMAND(ID_PATTERNDETAIL_HI, OnDetailHi)
ON_COMMAND(ID_OVERFLOWPASTE, OnToggleOverflowPaste)
ON_CBN_SELCHANGE(IDC_COMBO_INSTRUMENT, OnInstrumentChanged)
-// -> CODE#0012
-// -> DESC="midi keyboard split"
- ON_CBN_SELCHANGE(IDC_COMBO_SPLITINSTRUMENT, OnSplitInstrumentChanged)
- ON_CBN_SELCHANGE(IDC_COMBO_SPLITNOTE, OnSplitNoteChanged)
- ON_CBN_SELCHANGE(IDC_COMBO_OCTAVEMODIFIER, OnOctaveModifierChanged)
- ON_COMMAND(IDC_PATTERN_OCTAVELINK, OnOctaveLink)
- ON_CBN_SELCHANGE(IDC_COMBO_SPLITVOLUME, OnSplitVolumeChanged)
-// -! NEW_FEATURE#0012
ON_COMMAND(IDC_PATINSTROPLUGGUI, TogglePluginEditor) //rewbs.instroVST
- ON_COMMAND(IDC_PATINSTROPLUGGUI2, ToggleSplitPluginEditor) //rewbs.instroVST
ON_EN_CHANGE(IDC_EDIT_SPACING, OnSpacingChanged)
ON_EN_CHANGE(IDC_EDIT_PATTERNNAME, OnPatternNameChanged)
ON_EN_CHANGE(IDC_EDIT_SEQUENCE_NAME, OnSequenceNameChanged)
@@ -81,12 +72,6 @@
DDX_Control(pDX, IDC_BUTTON1, m_BtnNext);
DDX_Control(pDX, IDC_BUTTON2, m_BtnPrev);
DDX_Control(pDX, IDC_COMBO_INSTRUMENT, m_CbnInstrument);
-// -> CODE#0012
-// -> DESC="midi keyboard split"
- DDX_Control(pDX, IDC_COMBO_SPLITINSTRUMENT, m_CbnSplitInstrument);
- DDX_Control(pDX, IDC_COMBO_SPLITNOTE, m_CbnSplitNote);
- DDX_Control(pDX, IDC_COMBO_OCTAVEMODIFIER, m_CbnOctaveModifier);
- DDX_Control(pDX, IDC_COMBO_SPLITVOLUME, m_CbnSplitVolume);
DDX_Control(pDX, IDC_EDIT_SPACING, m_EditSpacing);
DDX_Control(pDX, IDC_EDIT_ORDERLIST_MARGINS,m_EditOrderListMargins);
DDX_Control(pDX, IDC_EDIT_PATTERNNAME, m_EditPatName);
@@ -192,47 +177,6 @@
UpdateView(HINT_MODTYPE|HINT_PATNAMES, NULL);
RecalcLayout();
-
-
-// -> CODE#0012
-// -> DESC="midi keyboard split"
- //rewbs.merge: fix buffer overrun:
- //CHAR s[8];
- CHAR s[10];
-
- AppendNotesToControl(m_CbnSplitNote, 0, NOTE_MAX - 1);
-
- m_nSplitInstrument = 0;
- m_nSplitNote = 60;
- m_CbnSplitNote.SetCurSel(m_nSplitNote);
-
-
- for(int i = -9 ; i < 10 ; i++){
- wsprintf(s,i < 0 ? "Oct. - %d" : i > 0 ? "Oct. + %d" : "Oct. + 0", abs(i));
- int n = m_CbnOctaveModifier.AddString(s);
- m_CbnOctaveModifier.SetItemData(n, i);
- }
-
- m_nOctaveModifier = 9;
- m_CbnOctaveModifier.SetCurSel(m_nOctaveModifier);
- m_nOctaveLink = TRUE;
- CheckDlgButton(IDC_PATTERN_OCTAVELINK, m_nOctaveLink ? MF_CHECKED : MF_UNCHECKED);
-
- m_CbnSplitVolume.AddString("--");
- m_CbnSplitVolume.SetItemData(0, 0);
- for(int i = 1; i<65 ; i++){
- wsprintf(s,"%d",i);
- int n = m_CbnSplitVolume.AddString(s);
- m_CbnSplitVolume.SetItemData(n, i);
- }
-
- m_nSplitVolume = 0;
- m_CbnSplitVolume.SetCurSel(m_nSplitVolume);
-
-
-
-// -! NEW_FEATURE#0012
-
m_bInitialized = TRUE;
UnlockControls();
@@ -286,10 +230,6 @@
::EnableWindow(::GetDlgItem(m_hWnd, IDC_PATINSTROPLUGGUI), true);
else
::EnableWindow(::GetDlgItem(m_hWnd, IDC_PATINSTROPLUGGUI), false);
- if (HasValidPlug(m_nSplitInstrument))
- ::EnableWindow(::GetDlgItem(m_hWnd, IDC_PATINSTROPLUGGUI2), true);
- else
- ::EnableWindow(::GetDlgItem(m_hWnd, IDC_PATINSTROPLUGGUI2), false);
// Show/hide multisequence controls according the current modtype.
GetDlgItem(IDC_STATIC_SEQUENCE_NAME_FRAME)->ShowWindow( (m_pSndFile->GetType() == MOD_TYPE_MPT) ? SW_SHOW : SW_HIDE);
@@ -314,10 +254,7 @@
UINT nPos = 0;
m_CbnInstrument.SetRedraw(FALSE);
m_CbnInstrument.ResetContent();
- m_CbnInstrument.SetItemData(m_CbnInstrument.AddString(" None"), 0);
- m_CbnSplitInstrument.SetRedraw(FALSE);
- m_CbnSplitInstrument.ResetContent();
- m_CbnSplitInstrument.SetItemData(m_CbnSplitInstrument.AddString(" None"), 0);
+ m_CbnInstrument.SetItemData(m_CbnInstrument.AddString(" No Instrument"), 0);
if (m_pSndFile->m_nInstruments) {
for (UINT i=1; i<=m_pSndFile->m_nInstruments; i++) {
if (m_pSndFile->Instruments[i] == NULL) {
@@ -328,8 +265,6 @@
UINT n = m_CbnInstrument.AddString(displayName);
if (n == m_nInstrument) nPos = n;
m_CbnInstrument.SetItemData(n, i);
- m_CbnSplitInstrument.AddString(displayName);
- m_CbnSplitInstrument.SetItemData(n, i);
}
@@ -342,17 +277,10 @@
UINT n = m_CbnInstrument.AddString(s);
if (n == m_nInstrument) nPos = n;
m_CbnInstrument.SetItemData(n, i);
- m_CbnSplitInstrument.AddString(s);
- m_CbnSplitInstrument.SetItemData(n, i);
}
}
m_CbnInstrument.SetCurSel(nPos);
m_CbnInstrument.SetRedraw(TRUE);
-// -> CODE#0012
-// -> DESC="midi keyboard split"
- m_CbnSplitInstrument.SetCurSel(nPos);
- m_CbnSplitInstrument.SetRedraw(TRUE);
-// -! NEW_FEATURE#0012
}
if (dwHintMask & (HINT_MODTYPE|HINT_PATNAMES))
{
@@ -445,11 +373,6 @@
SendViewMessage(VIEWMSG_PATTERNLOOP, (SONG_PATTERNLOOP & m_pSndFile->m_dwSongFlags));
}
OnSpacingChanged();
- SendViewMessage(VIEWMSG_SETSPLITINSTRUMENT, m_nSplitInstrument);
- SendViewMessage(VIEWMSG_SETSPLITNOTE, m_nSplitNote);
- SendViewMessage(VIEWMSG_SETOCTAVEMODIFIER, m_nOctaveModifier);
- SendViewMessage(VIEWMSG_SETOCTAVELINK, m_nOctaveLink);
- SendViewMessage(VIEWMSG_SETSPLITVOLUME, m_nSplitVolume);
SendViewMessage(VIEWMSG_SETDETAIL, m_nDetailLevel);
SendViewMessage(VIEWMSG_SETRECORD, m_bRecord);
SendViewMessage(VIEWMSG_SETVUMETERS, m_bVUMeters);
@@ -765,59 +688,7 @@
}
}
-// -> CODE#0012
-// -> DESC="midi keyboard split"
-void CCtrlPatterns::OnSplitInstrumentChanged()
-//---------------------------------------
-{
- int n = m_CbnSplitInstrument.GetCurSel();
- if ((m_pSndFile) && (n >= 0))
- {
- n = m_CbnSplitInstrument.GetItemData(n);
- int nmax = (m_pSndFile->m_nInstruments) ? m_pSndFile->m_nInstruments : m_pSndFile->m_nSamples;
- if ((n >= 0) && (n <= nmax) && (n != (int)m_nSplitInstrument))
- {
- m_nSplitInstrument = n;
- }
- SendViewMessage(VIEWMSG_SETSPLITINSTRUMENT, m_nSplitInstrument);
- if (HasValidPlug(m_nSplitInstrument))
- ::EnableWindow(::GetDlgItem(m_hWnd, IDC_PATINSTROPLUGGUI2), true);
- else
- ::EnableWindow(::GetDlgItem(m_hWnd, IDC_PATINSTROPLUGGUI2), false);
- SwitchToView();
- }
-}
-void CCtrlPatterns::OnSplitNoteChanged()
-//--------------------------------------
-{
- m_nSplitNote = m_CbnSplitNote.GetCurSel();
- SendViewMessage(VIEWMSG_SETSPLITNOTE, m_nSplitNote);
- SwitchToView();
-}
-void CCtrlPatterns::OnOctaveModifierChanged()
-//-------------------------------------------
-{
- m_nOctaveModifier = m_CbnOctaveModifier.GetCurSel();
- SendViewMessage(VIEWMSG_SETOCTAVEMODIFIER, m_nOctaveModifier);
- SwitchToView();
-}
-void CCtrlPatterns::OnOctaveLink()
-//--------------------------------
-{
- m_nOctaveLink = IsDlgButtonChecked(IDC_PATTERN_OCTAVELINK);
- SendViewMessage(VIEWMSG_SETOCTAVELINK, m_nOctaveLink);
- SwitchToView();
-}
-void CCtrlPatterns::OnSplitVolumeChanged()
-//----------------------------------------
-{
- m_nSplitVolume = m_CbnSplitVolume.GetCurSel();
- SendViewMessage(VIEWMSG_SETSPLITVOLUME, m_nSplitVolume);
- SwitchToView();
-}
-// -! NEW_FEATURE#0012
-
void CCtrlPatterns::OnPrevInstrument()
//------------------------------------
{
@@ -1257,20 +1128,13 @@
SwitchToView();
}
-//rewbs.introVST
+
void CCtrlPatterns::TogglePluginEditor()
//--------------------------------------
{
- TogglePluginEditor(false);
-}
-
-
-void CCtrlPatterns::TogglePluginEditor(bool split)
-//------------------------------------------------
-{
if ((m_nInstrument) && (m_pModDoc))
{
- UINT nPlug = m_pSndFile->Instruments[(split?m_nSplitInstrument:m_nInstrument)]->nMixPlug;
+ UINT nPlug = m_pSndFile->Instruments[m_nInstrument]->nMixPlug;
if (nPlug) //if not no plugin
{
PSNDMIXPLUGIN pPlug = &(m_pSndFile->m_MixPlugins[nPlug-1]);
@@ -1282,11 +1146,6 @@
}
}
-void CCtrlPatterns::ToggleSplitPluginEditor()
-//-------------------------------------------
-{
- TogglePluginEditor(true);
-}
bool CCtrlPatterns::HasValidPlug(UINT instr)
//------------------------------------------
Modified: trunk/OpenMPT/mptrack/Ctrl_pat.h
===================================================================
--- trunk/OpenMPT/mptrack/Ctrl_pat.h 2009-12-04 19:30:31 UTC (rev 432)
+++ trunk/OpenMPT/mptrack/Ctrl_pat.h 2009-12-05 00:31:41 UTC (rev 433)
@@ -161,21 +161,12 @@
COrderList m_OrderList;
CButton m_BtnPrev, m_BtnNext;
CComboBox m_CbnInstrument;
-// -> CODE#0012
-// -> DESC="midi keyboard split"
- CComboBox m_CbnSplitInstrument,m_CbnSplitNote,m_CbnOctaveModifier,m_CbnSplitVolume;
-// -! NEW_FEATURE#0012
CPatEdit m_EditSpacing, m_EditPatName, m_EditOrderListMargins;
CSpinButtonCtrl m_SpinInstrument, m_SpinSpacing, m_SpinOrderListMargins;
CModControlBar m_ToolBar;
INSTRUMENTINDEX m_nInstrument;
UINT m_nDetailLevel;
BOOL m_bRecord, m_bVUMeters, m_bPluginNames;
-// -> CODE#0012
-// -> DESC="midi keyboard split"
- UINT m_nSplitInstrument,m_nSplitNote,m_nOctaveModifier,m_nSplitVolume;
- BOOL m_nOctaveLink;
-// -! NEW_FEATURE#0012
public:
CCtrlPatterns();
@@ -227,14 +218,6 @@
afx_msg void OnChangeLoopStatus();
afx_msg void OnSwitchToView();
afx_msg void OnInstrumentChanged();
-// -> CODE#0012
-// -> DESC="midi keyboard split"
- afx_msg void OnSplitInstrumentChanged();
- afx_msg void OnSplitNoteChanged();
- afx_msg void OnOctaveModifierChanged();
- afx_msg void OnOctaveLink();
- afx_msg void OnSplitVolumeChanged();
-// -! NEW_FEATURE#0012
afx_msg void OnPrevInstrument();
afx_msg void OnNextInstrument();
afx_msg void OnSpacingChanged();
@@ -249,14 +232,12 @@
afx_msg void OnEditUndo();
afx_msg void OnUpdateRecord(CCmdUI *pCmdUI);
afx_msg void TogglePluginEditor(); //rewbs.instroVST
- afx_msg void ToggleSplitPluginEditor(); //rewbs.instroVST
afx_msg void OnToggleOverflowPaste();
afx_msg LRESULT OnCustomKeyMsg(WPARAM, LPARAM);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
private:
- void TogglePluginEditor(bool); //rewbs.instroVST
bool HasValidPlug(UINT instr);
public:
afx_msg BOOL OnMouseWheel(UINT nFlags, short zDelta, CPoint pt);
Modified: trunk/OpenMPT/mptrack/Mainfrm.h
===================================================================
--- trunk/OpenMPT/mptrack/Mainfrm.h 2009-12-04 19:30:31 UTC (rev 432)
+++ trunk/OpenMPT/mptrack/Mainfrm.h 2009-12-05 00:31:41 UTC (rev 433)
@@ -103,15 +103,6 @@
VIEWMSG_SETCURRENTSAMPLE,
// Instrument-Specific
VIEWMSG_SETCURRENTINSTRUMENT,
-// -> CODE#0012
-// -> DESC="midi keyboard split"
-// rewbs.merge: swapped message direction
- VIEWMSG_SETSPLITINSTRUMENT,
- VIEWMSG_SETSPLITNOTE,
- VIEWMSG_SETOCTAVEMODIFIER,
- VIEWMSG_SETOCTAVELINK,
- VIEWMSG_SETSPLITVOLUME,
-// -! CODE#0012
VIEWMSG_DOSCROLL,
};
@@ -204,18 +195,6 @@
#define PATTERN_LIVEUPDATETREE 0x40000000 // update active sample / instr icons in treeview
-// Keyboard Setup
-enum {
- KEYBOARD_CUSTOM=0,
- KEYBOARD_FT2,
- KEYBOARD_IT,
- KEYBOARD_MPT,
- KEYBOARD_MED
-};
-
-#define KEYBOARD_MASK 0x0F
-#define KEYBOARD_FT2KEYS 0x10
-
// Midi Setup
#define MIDISETUP_RECORDVELOCITY 0x01
#define MIDISETUP_TRANSPOSEKEYBOARD 0x02
@@ -306,46 +285,7 @@
TIMAGE_PATTERN_OVERFLOWPASTE,
};
-//////////////////////////////////////////////////////////////////////////
-// MPT Hot Keys
-enum {
- MPTHOTKEY_TOGGLEEDIT=0,
- MPTHOTKEY_PLAYROW,
- MPTHOTKEY_CURSORCOPY,
- MPTHOTKEY_CURSORPASTE,
- MPTHOTKEY_MUTECHANNEL,
- MPTHOTKEY_SOLOCHANNEL,
- MPTHOTKEY_SELECTCOLUMN,
- MPTHOTKEY_TRANSPOSEUP,
- MPTHOTKEY_TRANSPOSEDOWN,
- MPTHOTKEY_TRANSPOSEOCTUP,
- MPTHOTKEY_TRANSPOSEOCTDOWN,
- MPTHOTKEY_PATTERNAMPLIFY,
- MPTHOTKEY_REPLACEINSTRUMENT,
- MPTHOTKEY_INTERPOLATEVOLUME,
- MPTHOTKEY_INTERPOLATEEFFECT,
- MPTHOTKEY_VISUALIZEEFFECT, //rewbs.fxvis
- MAX_MPTHOTKEYS
-};
-
-typedef struct MPTHOTKEY
-{
- UINT nID; // WM_COMMAND Id - description is also loaded from the string id
- DWORD nMPTHotKey; // Default hot key
- DWORD nFT2HotKey;
- DWORD nITHotKey;
- LPCSTR pszName;
-} MPTHOTKEY, *PMPTHOTKEY;
-
-#define MPTF_CTRL (HOTKEYF_CONTROL<<16)
-#define MPTF_ALT (HOTKEYF_ALT<<16)
-#define MPTF_SHIFT (HOTKEYF_SHIFT<<16)
-#define MPTF_EXT (HOTKEYF_EXT<<16)
-
-extern MPTHOTKEY gDefaultHotKeys[MAX_MPTHOTKEYS];
-
-
/////////////////////////////////////////////////////////////////////////
// Player position notification
@@ -400,7 +340,18 @@
};
+/////////////////////////////////////////////////////////////////////////
+// Split Keyboard Settings (pattern editor)
+#define SPLIT_OCTAVE_RANGE 9
+struct SplitKeyboardSettings
+{
+ UINT splitInstrument, splitNote, splitVolume;
+ int octaveModifier; // determines by how many octaves the notes should be transposed up or down
+ bool octaveLink; // apply octaveModifier
+};
+
+
/////////////////////////////////////////////////////////////////////////
// Misc. Macros
Modified: trunk/OpenMPT/mptrack/Moptions.cpp
===================================================================
--- trunk/OpenMPT/mptrack/Moptions.cpp 2009-12-04 19:30:31 UTC (rev 432)
+++ trunk/OpenMPT/mptrack/Moptions.cpp 2009-12-05 00:31:41 UTC (rev 433)
@@ -8,84 +8,7 @@
#pragma warning(disable:4244)
-/////////////////////////////////////////////////////////
-// CEditKey
-/*
-BEGIN_MESSAGE_MAP(CEditKey, CEdit)
- ON_WM_KEYDOWN()
-END_MESSAGE_MAP()
-
-void CEditKey::OnKeyDown(UINT nChar, UINT, UINT nFlags)
-//-----------------------------------------------------
-{
- CHAR s[16];
- if (!m_pParent) return;
- if (nChar == VK_TAB)
- {
- Default();
- } else
- if (nChar == VK_LEFT)
- {
- m_pParent->ActivateEdit((m_nId) ? m_nId-1 : 11);
- } else
- if (nChar == VK_RIGHT)
- {
- m_pParent->ActivateEdit((m_nId < 11) ? m_nId+1 : 0);
- } else
- {
- if (nFlags & 0x4000) return;
- if (m_pParent->SetKey(m_nId, nChar, nFlags))
- {
- s[0] = s[1] = 0;
- if (nChar != VK_SPACE) CMainFrame::GetKeyName(nFlags << 16, s, sizeof(s)-1);
- SetWindowText(s);
- m_pParent->ActivateEdit((m_nId+1)%12);
- }
- }
-}
-
-
-BOOL CEditKey::PreTranslateMessage(MSG *pMsg)
-//-------------------------------------------
-{
- if ((pMsg) && (pMsg->message == WM_KEYDOWN) && (pMsg->wParam == VK_RETURN)) return TRUE;
- return CEdit::PreTranslateMessage(pMsg);
-}
-
-const UINT wEditId[12+2] =
-{
- IDC_EDIT1, IDC_EDIT2, IDC_EDIT3, IDC_EDIT4,
- IDC_EDIT5, IDC_EDIT6, IDC_EDIT7, IDC_EDIT8,
- IDC_EDIT9, IDC_EDIT10, IDC_EDIT12, IDC_EDIT13,
- IDC_EDIT14, IDC_EDIT15
-};
-
-
-*/
-// Id, MPT, FT2, IT
-MPTHOTKEY gDefaultHotKeys[MAX_MPTHOTKEYS] =
-{
- {IDC_PATTERN_RECORD, VK_SPACE|MPTF_CTRL, VK_SPACE, VK_SPACE|MPTF_CTRL, "Toggle record mode"},
- {ID_PATTERN_PLAYROW, VK_RETURN|MPTF_CTRL,VK_RETURN|MPTF_CTRL,'8', "Play current row"},
- {ID_CURSORCOPY, VK_RETURN, VK_RETURN, VK_RETURN, "Quick cursor copy"},
- {ID_CURSORPASTE, VK_SPACE, VK_RETURN|MPTF_SHIFT,VK_SPACE, "Quick cursor paste"},
- {ID_PATTERN_MUTE, 0xffff, 0xffff, VK_F9|MPTF_ALT, "Mute current channel"},
- {ID_PATTERN_SOLO, 0xffff, 0xffff, VK_F10|MPTF_ALT, "Solo current channel"},
- {ID_EDIT_SELECTCOLUMN2, 'L'|MPTF_CTRL, 'L'|MPTF_CTRL, 'L'|MPTF_ALT, "Select current column"},
- {ID_TRANSPOSE_UP, 'Q'|MPTF_CTRL, 'Q'|MPTF_CTRL, 'Q'|MPTF_ALT, "Transpose +1"},
- {ID_TRANSPOSE_DOWN, 'A'|MPTF_CTRL, 'A'|MPTF_CTRL, 'A'|MPTF_ALT, "Transpose -1"},
- {ID_TRANSPOSE_OCTUP, 'Q'|MPTF_CTRL|MPTF_SHIFT, 'Q'|MPTF_CTRL|MPTF_SHIFT, 'Q'|MPTF_CTRL|MPTF_ALT, "Transpose +12"},
- {ID_TRANSPOSE_OCTDOWN, 'A'|MPTF_CTRL|MPTF_SHIFT, 'A'|MPTF_CTRL|MPTF_SHIFT, 'A'|MPTF_CTRL|MPTF_ALT, "Transpose -12"},
- {ID_PATTERN_AMPLIFY, 'M'|MPTF_CTRL, 'M'|MPTF_CTRL, 'J'|MPTF_ALT, "Amplify selection"},
- {ID_PATTERN_SETINSTRUMENT, 'I'|MPTF_CTRL, 'I'|MPTF_CTRL, 'S'|MPTF_ALT, "Replace instrument"},
- {ID_PATTERN_INTERPOLATE_VOLUME,'J'|MPTF_CTRL, 'J'|MPTF_CTRL, 'K'|MPTF_ALT, "Interpolate volume"},
- {ID_PATTERN_INTERPOLATE_EFFECT,'K'|MPTF_CTRL, 'K'|MPTF_CTRL, 'X'|MPTF_ALT, "Interpolate effect"},
- {ID_PATTERN_VISUALIZE_EFFECT,'B'|MPTF_CTRL, 'B'|MPTF_CTRL, 'B'|MPTF_ALT, "Visualize effect"}, //rewbs.fxvis
-};
-
-//rewbs.customKeys: moved COptionsKeyboard to a separate file.
-// removed CNotifyHotKey
//////////////////////////////////////////////////////////////
// COptionsColors
@@ -485,6 +408,9 @@
CustomColors[MODCOLOR_PANNING] = RGB(0x00, 0x80, 0x80);
CustomColors[MODCOLOR_PITCH] = RGB(0x80, 0x80, 0x00);
CustomColors[MODCOLOR_GLOBALS] = RGB(0x80, 0x00, 0x00);
+ CustomColors[MODCOLOR_VUMETER_LO] = RGB(0x00, 0xFF, 0x00);
+ CustomColors[MODCOLOR_VUMETER_MED] = RGB(0xFF, 0xFF, 0x00);
+ CustomColors[MODCOLOR_VUMETER_HI] = RGB(0xFF, 0x00, 0x00);
CustomColors[MODCOLOR_SEPSHADOW] = GetSysColor(COLOR_BTNSHADOW);
CustomColors[MODCOLOR_SEPFACE] = GetSysColor(COLOR_BTNFACE);
CustomColors[MODCOLOR_SEPHILITE] = GetSysColor(COLOR_BTNHIGHLIGHT);
@@ -513,6 +439,9 @@
CustomColors[MODCOLOR_GLOBALS] = RGB(0xFF, 0xFF, 0x82);
CustomColors[MODCOLOR_SAMPLE] = RGB(0xFF, 0xFF, 0x82);
CustomColors[MODCOLOR_ENVELOPES] = RGB(0xFF, 0xFF, 0x82);
+ CustomColors[MODCOLOR_VUMETER_LO] = RGB(0x4B, 0x7C, 0x89);
+ CustomColors[MODCOLOR_VUMETER_MED] = RGB(0x5F, 0x98, 0xA7);
+ CustomColors[MODCOLOR_VUMETER_HI] = RGB(0xEA, 0x1C, 0x78);
CustomColors[MODCOLOR_SEPSHADOW] = RGB(0x18, 0x28, 0x2C);
CustomColors[MODCOLOR_SEPFACE] = RGB(0x49, 0x75, 0x82);
CustomColors[MODCOLOR_SEPHILITE] = RGB(0x8A, 0xDB, 0xF3);
@@ -541,6 +470,9 @@
CustomColors[MODCOLOR_GLOBALS] = RGB(0x45, 0x9A, 0x49);
CustomColors[MODCOLOR_SAMPLE] = RGB(0x8E, 0x14, 0x55);
CustomColors[MODCOLOR_ENVELOPES] = RGB(0xA2, 0xA2, 0xA2);
+ CustomColors[MODCOLOR_VUMETER_LO] = RGB(0x25, 0x7D, 0x00);
+ CustomColors[MODCOLOR_VUMETER_MED] = RGB(0xEC, 0x99, 0x00);
+ CustomColors[MODCOLOR_VUMETER_HI] = RGB(0xE1, 0x00, 0x00);
CustomColors[MODCOLOR_SEPSHADOW] = RGB(0xB6, 0x96, 0x79);
CustomColors[MODCOLOR_SEPFACE] = RGB(0xB6, 0x96, 0x79);
CustomColors[MODCOLOR_SEPHILITE] = RGB(0xB6, 0x96, 0x79);
@@ -569,6 +501,9 @@
CustomColors[MODCOLOR_GLOBALS] = RGB(0x66, 0x00, 0x00);
CustomColors[MODCOLOR_SAMPLE] = RGB(0x00, 0xFF, 0x00);
CustomColors[MODCOLOR_ENVELOPES] = RGB(0xFF, 0x00, 0x00);
+ CustomColors[MODCOLOR_VUMETER_LO] = RGB(0x00, 0xC8, 0x00);
+ CustomColors[MODCOLOR_VUMETER_MED] = RGB(0xFF, 0xC8, 0x00);
+ CustomColors[MODCOLOR_VUMETER_HI] = RGB(0xE1, 0x00, 0x00);
CustomColors[MODCOLOR_SEPSHADOW] = RGB(0xAC, 0xA8, 0xA1);
CustomColors[MODCOLOR_SEPFACE] = RGB(0xD6, 0xD0, 0xC6);
CustomColors[MODCOLOR_SEPHILITE] = RGB(0xEC, 0xE8, 0xE1);
Modified: trunk/OpenMPT/mptrack/View_pat.cpp
===================================================================
--- trunk/OpenMPT/mptrack/View_pat.cpp 2009-12-04 19:30:31 UTC (rev 432)
+++ trunk/OpenMPT/mptrack/View_pat.cpp 2009-12-05 00:31:41 UTC (rev 433)
@@ -175,9 +175,16 @@
UpdateSizes();
UpdateScrollSize();
SetCurrentPattern(0);
- m_nFoundInstrument=0;
- m_nLastPlayedRow=0;
+ m_nFoundInstrument = 0;
+ m_nLastPlayedRow = 0;
m_nLastPlayedOrder = 0;
+
+ // Set up keyboard split
+ m_SplitKeyboardSettings.splitInstrument = 0;
+ m_SplitKeyboardSettings.splitNote = NOTE_MIDDLEC - 1;
+ m_SplitKeyboardSettings.splitVolume = 0;
+ m_SplitKeyboardSettings.octaveModifier = 0;
+ m_SplitKeyboardSettings.octaveLink = false;
}
@@ -3214,26 +3221,6 @@
switch(wParam)
{
-// -> CODE#0012
-// -> DESC="midi keyboard split"
-//rewbs.merge: inverted message direction.
- case VIEWMSG_SETSPLITINSTRUMENT:
- m_nSplitInstrument = lParam;
- break;
- case VIEWMSG_SETSPLITNOTE:
- m_nSplitNote = lParam;
- break;
- case VIEWMSG_SETOCTAVEMODIFIER:
- m_nOctaveModifier = lParam;
- break;
- case VIEWMSG_SETOCTAVELINK:
- m_bOctaveLink = lParam;
- break;
- case VIEWMSG_SETSPLITVOLUME:
- m_nSplitVolume = lParam;
- break;
-// -! NEW_FEATURE#0012
-
case VIEWMSG_SETCTRLWND:
m_hWndCtrl = (HWND)lParam;
SetCurrentPattern(SendCtrlMessage(CTRLMSG_GETCURRENTPATTERN));
@@ -3599,6 +3586,7 @@
case kcShowNoteProperties: ShowEditWindow(); return wParam;
case kcShowPatternProperties: OnPatternProperties(); return wParam;
case kcShowMacroConfig: SendCtrlMessage(CTRLMSG_SETUPMACROS); return wParam;
+ case kcShowSplitKeyboardSettings: SetSplitKeyboardSettings(); return wParam;
case kcShowEditMenu: {CPoint pt = GetPointFromPosition((m_nRow << 16) | m_dwCursor);
OnRButtonDown(0, pt); }
return wParam;
@@ -3933,14 +3921,14 @@
const UINT nTick = pSndFile->m_nTickCount;
const PATTERNINDEX nPatPlayback = pSndFile->m_nPattern;
- const bool isSplit = (note <= m_nSplitNote);
+ const bool isSplit = (note <= m_SplitKeyboardSettings.splitNote);
UINT ins = 0;
if (pModDoc)
{
if (isSplit)
{
- ins = m_nSplitInstrument;
- if (m_bOctaveLink) note += 12*(m_nOctaveModifier-9);
+ ins = m_SplitKeyboardSettings.splitInstrument;
+ if (m_SplitKeyboardSettings.octaveLink) note += 12 * m_SplitKeyboardSettings.octaveModifier;
if (note > NOTE_MAX && note < NOTE_NOTECUT) note = NOTE_MAX;
if (note<0) note=1;
}
@@ -4197,13 +4185,16 @@
const bool isSplit = HandleSplit(p, note);
// -- write vol data
- if (vol>=0 && vol<=64 && !(isSplit && m_nSplitVolume)) { //write valid volume, as long as there's no split volume override.
+ if (vol >= 0 && vol <= 64 && !(isSplit && m_SplitKeyboardSettings.splitVolume)) //write valid volume, as long as there's no split volume override.
+ {
p->volcmd=VOLCMD_VOLUME;
p->vol = vol;
- } else if (isSplit && m_nSplitVolume) { //cater for split volume override.
- if (m_nSplitVolume>0 && m_nSplitVolume<=64) {
+ } else if (isSplit && m_SplitKeyboardSettings.splitVolume) //cater for split volume override.
+ {
+ if (m_SplitKeyboardSettings.splitVolume > 0 && m_SplitKeyboardSettings.splitVolume <= 64)
+ {
p->volcmd=VOLCMD_VOLUME;
- p->vol = m_nSplitVolume;
+ p->vol = m_SplitKeyboardSettings.splitVolume;
}
}
@@ -4602,7 +4593,7 @@
bool CViewPattern::HandleSplit(MODCOMMAND* p, int note)
//-----------------------------------------------------
{
- if (note>m_nSplitNote)
+ if (note > m_SplitKeyboardSettings.splitNote)
{
p->note = note;
UINT nins = GetCurrentInstrument();
@@ -4612,12 +4603,12 @@
}
else
{
- if (m_nSplitInstrument)
- p->instr = m_nSplitInstrument;
+ if (m_SplitKeyboardSettings.splitInstrument)
+ p->instr = m_SplitKeyboardSettings.splitInstrument;
else
if(GetCurrentInstrument()) p->instr = GetCurrentInstrument();
- if (m_bOctaveLink)
- note += 12*(m_nOctaveModifier-9);
+ if (m_SplitKeyboardSettings.octaveLink)
+ note += 12 * m_SplitKeyboardSettings.octaveModifier;
if (note > NOTE_MAX && note < NOTE_NOTECUT) note = NOTE_MAX;
if (note<0) note=1;
@@ -5209,3 +5200,16 @@
strcpy(pSndFile->ChnSettings[nChn].szName, dlg.m_sName);
pModDoc->UpdateAllViews(NULL, HINT_MODCHANNELS);
}
+
+
+void CViewPattern::SetSplitKeyboardSettings()
+//-------------------------------------------
+{
+ CModDoc *pModDoc = GetDocument();
+ if(pModDoc == nullptr) return;
+ CSoundFile *pSndFile = pModDoc->GetSoundFile();
+ if(pSndFile == nullptr) return;
+
+ CSplitKeyboadSettings dlg(CMainFrame::GetMainFrame(), pSndFile, &m_SplitKeyboardSettings);
+ dlg.DoModal();
+}
Modified: trunk/OpenMPT/mptrack/View_pat.h
===================================================================
--- trunk/OpenMPT/mptrack/View_pat.h 2009-12-04 19:30:31 UTC (rev 432)
+++ trunk/OpenMPT/mptrack/View_pat.h 2009-12-05 00:31:41 UTC (rev 433)
@@ -84,9 +84,9 @@
CPatternGotoDialog *m_pGotoWnd;
SIZE m_szHeader, m_szCell;
UINT m_nPattern, m_nRow, m_nMidRow, m_nPlayPat, m_nPlayRow, m_nSpacing, m_nAccelChar, m_nLastPlayedRow, m_nLastPlayedOrder;
- UINT m_nSplitInstrument, m_nSplitNote, m_nOctaveModifier, m_nSplitVolume;
- BOOL m_bOctaveLink;
+ SplitKeyboardSettings m_SplitKeyboardSettings;
+
int m_nXScroll, m_nYScroll;
DWORD m_nDragItem, m_nMenuParam, m_nDetailLevel;
BOOL m_bDragging, m_bInItemRect, m_bRecord, m_bContinueSearch, m_bWholePatternFitsOnScreen;
@@ -308,6 +308,7 @@
afx_msg void OnInitMenu(CMenu* pMenu);
private:
+ void SetSplitKeyboardSettings();
bool HandleSplit(MODCOMMAND* p, int note);
bool BuildChannelControlCtxMenu(HMENU hMenu);
bool BuildPluginCtxMenu(HMENU hMenu, UINT nChn, CSoundFile* pSndFile);
Modified: trunk/OpenMPT/mptrack/dlg_misc.cpp
===================================================================
--- trunk/OpenMPT/mptrack/dlg_misc.cpp 2009-12-04 19:30:31 UTC (rev 432)
+++ trunk/OpenMPT/mptrack/dlg_misc.cpp 2009-12-05 00:31:41 UTC (rev 433)
@@ -2674,6 +2674,120 @@
}
+////////////////////////////////////////////////////////////////////////////////////////////
+// Keyboard Split Settings (pattern editor)
+
+BEGIN_MESSAGE_MAP(CSplitKeyboadSettings, CDialog)
+ ON_CBN_SELCHANGE(IDC_COMBO_OCTAVEMODIFIER, OnOctaveModifierChanged)
+END_MESSAGE_MAP()
+
+
+void CSplitKeyboadSettings::DoDataExchange(CDataExchange* pDX)
+//------------------------------------------------------------
+{
+ CDialog::DoDataExchange(pDX);
+ //{{AFX_DATA_MAP(CSplitKeyboadSettings)
+ DDX_Control(pDX, IDC_COMBO_SPLITINSTRUMENT, m_CbnSplitInstrument);
+ DDX_Control(pDX, IDC_COMBO_SPLITNOTE, m_CbnSplitNote);
+ DDX_Control(pDX, IDC_COMBO_OCTAVEMODIFIER, m_CbnOctaveModifier);
+ DDX_Control(pDX, IDC_COMBO_SPLITVOLUME, m_CbnSplitVolume);
+ //}}AFX_DATA_MAP
+}
+
+
+BOOL CSplitKeyboadSettings::OnInitDialog()
+//----------------------------------------
+{
+ if(!m_pSndFile) return FALSE;
+
+ CDialog::OnInitDialog();
+
+ CHAR s[64];
+
+ // Split Notes
+ AppendNotesToControl(m_CbnSplitNote, 0, NOTE_MAX - 1);
+ m_CbnSplitNote.SetCurSel(m_pOptions->splitNote);
+
+ // Octave modifier
+ for(int i = -SPLIT_OCTAVE_RANGE; i < SPLIT_OCTAVE_RANGE + 1; i++){
+ wsprintf(s,i < 0 ? "Octave -%d" : i > 0 ? "Octave +%d" : "No Change", abs(i));
+ int n = m_CbnOctaveModifier.AddString(s);
+ m_CbnOctaveModifier.SetItemData(n, i);
+ }
+
+ m_CbnOctaveModifier.SetCurSel(m_pOptions->octaveModifier + SPLIT_OCTAVE_RANGE);
+ CheckDlgButton(IDC_PATTERN_OCTAVELINK, (m_pOptions->octaveLink && m_pOptions->octaveModifier != 0) ? MF_CHECKED : MF_UNCHECKED);
+
+ // Volume
+ m_CbnSplitVolume.AddString("No Change");
+ m_CbnSplitVolume.SetItemData(0, 0);
+ for(int i = 1; i <= 64 ; i++){
+ wsprintf(s,"%d",i);
+ int n = m_CbnSplitVolume.AddString(s);
+ m_CbnSplitVolume.SetItemData(n, i);
+ }
+ m_CbnSplitVolume.SetCurSel(m_pOptions->splitVolume);
+
+ // Instruments
+ m_CbnSplitInstrument.ResetContent();
+ m_CbnSplitInstrument.SetItemData(m_CbnSplitInstrument.AddString("No Instrument"), 0);
+
+ if (m_pSndFile->m_nInstruments) {
+ for (INSTRUMENTINDEX nIns = 1; nIns <= m_pSndFile->m_nInstruments; nIns++)
+ {
+ if (m_pSndFile->Instruments[nIns] == nullptr) {
+ continue;
+ }
+
+ CString displayName = m_pSndFile->GetPatternViewInstrumentName(nIns);
+ int n = m_CbnSplitInstrument.AddString(displayName);
+ m_CbnSplitInstrument.SetItemData(n, nIns);
+ }
+ } else
+ {
+ for (SAMPLEINDEX nSmp = 1; nSmp <= m_pSndFile->m_nSamples; nSmp++)
+ {
+ if ((m_pSndFile->m_szNames[nSmp][0]) || (m_pSndFile->Samples[nSmp].pSample))
+ {
+ wsprintf(s, "%02d: %s", nSmp, m_pSndFile->m_szNames[nSmp]);
+ int n = m_CbnSplitInstrument.AddString(s);
+ m_CbnSplitInstrument.SetItemData(n, nSmp);
+ }
+ }
+ }
+ m_CbnSplitInstrument.SetCurSel(m_pOptions->splitInstrument);
+
+ return TRUE;
+}
+
+
+void CSplitKeyboadSettings::OnOK()
+//--------------------------------
+{
+ CDialog::OnOK();
+
+ m_pOptions->splitNote = m_CbnSplitNote.GetCurSel();
+ m_pOptions->octaveModifier = m_CbnOctaveModifier.GetCurSel() - SPLIT_OCTAVE_RANGE;
+ m_pOptions->octaveLink = (IsDlgButtonChecked(IDC_PATTERN_OCTAVELINK) == TRUE) ? true : false;
+ m_pOptions->splitVolume = m_CbnSplitVolume.GetCurSel();
+ m_pOptions->splitInstrument = m_CbnSplitInstrument.GetItemData(m_CbnSplitInstrument.GetCurSel());
+}
+
+
+void CSplitKeyboadSettings::OnCancel()
+//------------------------------------
+{
+ CDialog::OnCancel();
+}
+
+
+void CSplitKeyboadSettings::OnOctaveModifierChanged()
+//---------------------------------------------------
+{
+ CheckDlgButton(IDC_PATTERN_OCTAVELINK, (m_CbnOctaveModifier.GetCurSel() != 9) ? MF_CHECKED : MF_UNCHECKED);
+}
+
+
////////////////////////////////////////////////////////////////////////////////
//
// Sample Map
Modified: trunk/OpenMPT/mptrack/dlg_misc.h
===================================================================
--- trunk/OpenMPT/mptrack/dlg_misc.h 2009-12-04 19:30:31 UTC (rev 432)
+++ trunk/OpenMPT/mptrack/dlg_misc.h 2009-12-05 00:31:41 UTC (rev 433)
@@ -558,6 +558,38 @@
/////////////////////////////////////////////////////////////////////////
+// Keyboard Split Settings (pattern editor)
+
+//=========================================
+class CSplitKeyboadSettings: public CDialog
+//=========================================
+{
+protected:
+ CComboBox m_CbnSplitInstrument,m_CbnSplitNote,m_CbnOctaveModifier,m_CbnSplitVolume;
+ CSoundFile *m_pSndFile;
+
+public:
+ SplitKeyboardSettings *m_pOptions;
+
+ CSplitKeyboadSettings(CWnd *parent, CSoundFile *pSndFile, SplitKeyboardSettings *pOptions):CDialog(IDD_KEYBOARD_SPLIT, parent)
+ {
+ m_pSndFile = pSndFile;
+ m_pOptions = pOptions;
+ }
+
+protected:
+ virtual void DoDataExchange(CDataExchange* pDX);
+ virtual BOOL OnInitDialog();
+ virtual void OnOK();
+ virtual void OnCancel();
+
+ afx_msg void OnOctaveModifierChanged();
+
+ DECLARE_MESSAGE_MAP()
+};
+
+
+/////////////////////////////////////////////////////////////////////////
// Sample Map
//=================================
Modified: trunk/OpenMPT/mptrack/mptrack.rc
===================================================================
--- trunk/OpenMPT/mptrack/mptrack.rc 2009-12-04 19:30:31 UTC (rev 432)
+++ trunk/OpenMPT/mptrack/mptrack.rc 2009-12-05 00:31:41 UTC (rev 433)
@@ -81,7 +81,25 @@
PUSHBUTTON "Cancel",IDCANCEL,96,36,50,14
END
+IDD_KEYBOARD_SPLIT DIALOGEX 0, 0, 184, 137
+STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Keyboard Split Settings"
+FONT 8, "MS Shell Dlg", 400, 0, 0x1
+BEGIN
+ DEFPUSHBUTTON "OK",IDOK,72,114,50,14
+ PUSHBUTTON "Cancel",IDCANCEL,126,114,50,14
+ LTEXT "Split Note",IDC_STATIC,6,8,32,8
+ COMBOBOX IDC_COMBO_SPLITNOTE,60,6,54,137,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+ LTEXT "Instrument",IDC_STATIC,6,26,42,8
+ COMBOBOX IDC_COMBO_SPLITINSTRUMENT,60,24,114,125,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+ LTEXT "Volume",IDC_STATIC,6,44,24,8
+ COMBOBOX IDC_COMBO_SPLITVOLUME,60,42,54,146,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+ CONTROL "Transpose",IDC_PATTERN_OCTAVELINK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,61,49,10
+ COMBOBOX IDC_COMBO_OCTAVEMODIFIER,60,60,54,137,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+ LTEXT "Enabling instrument, volume or octave change will enable the keyboard split feature. These options are applied to the lower section of the keyboard.",IDC_STATIC,6,78,174,24
+END
+
/////////////////////////////////////////////////////////////////////////////
//
// DESIGNINFO
@@ -113,6 +131,14 @@
TOPMARGIN, 7
BOTTOMMARGIN, 51
END
+
+ IDD_KEYBOARD_SPLIT, DIALOG
+ BEGIN
+ LEFTMARGIN, 7
+ RIGHTMARGIN, 177
+ TOPMARGIN, 7
+ BOTTOMMARGIN, 130
+ END
END
#endif // APSTUDIO_INVOKED
@@ -412,41 +438,30 @@
LTEXT "Song Message:",IDC_STATIC,4,2,76,8
END
-IDD_CONTROL_PATTERNS DIALOGEX 0, 0, 585, 114
-STYLE DS_SETFONT | WS_CHILD
+IDD_CONTROL_PATTERNS DIALOGEX 0, 0, 560, 86
+STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD
FONT 8, "MS Shell Dlg", 0, 0, 0x1
BEGIN
- CONTROL "Follow Song",IDC_PATTERN_FOLLOWSONG,"Button",BS_AUTOCHECKBOX | BS_FLAT,321,31,55,10
- COMBOBOX IDC_COMBO_INSTRUMENT,19,61,96,137,CBS_DROPDOWNLIST | WS_VSCROLL
- CTEXT "Row spacing",IDC_STATIC,171,32,42,8,SS_CENTERIMAGE
- EDITTEXT IDC_EDIT_SPACING,219,30,28,12,ES_AUTOHSCROLL | ES_NUMBER | NOT WS_TABSTOP
- CONTROL "Spin1",IDC_SPIN_SPACING,"msctls_updown32",UDS_WRAP | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_NOTHOUSANDS,239,30,11,11
- PUSHBUTTON "<<",IDC_BUTTON2,3,84,14,15,NOT WS_TABSTOP,WS_EX_STATICEDGE
- PUSHBUTTON ">>",IDC_BUTTON1,15,84,14,15,NOT WS_TABSTOP,WS_EX_STATICEDGE
- CTEXT "Pattern name",IDC_STATIC,9,32,43,8,SS_CENTERIMAGE
- EDITTEXT IDC_EDIT_PATTERNNAME,57,30,107,12,ES_AUTOHSCROLL
- CONTROL "Toolbar1",IDC_TOOLBAR1,"ToolbarWindow32",WS_GROUP | 0x4d,2,4,372,18
- CONTROL "Spin1",IDC_SPIN_INSTRUMENT,"msctls_updown32",0x0,7,61,11,12
- COMBOBOX IDC_COMBO_SPLITINSTRUMENT,243,60,96,125,CBS_DROPDOWNLIST | WS_VSCROLL
- COMBOBOX IDC_COMBO_SPLITNOTE,189,60,32,137,CBS_DROPDOWNLIST | WS_VSCROLL
- LTEXT "Note",IDC_STATIC,171,62,16,8
- LTEXT "Instr.",IDC_STATIC,225,62,16,8
- CONTROL "Transpose",IDC_PATTERN_OCTAVELINK,"Button",BS_AUTOCHECKBOX | BS_FLAT,513,61,49,10
- COMBOBOX IDC_COMBO_OCTAVEMODIFIER,465,60,44,137,CBS_DROPDOWNLIST | WS_VSCROLL
- COMBOBOX IDC_COMBO_SPLITVOLUME,399,60,30,146,CBS_DROPDOWNLIST | WS_VSCROLL
- LTEXT "Vol.",IDC_STATIC,381,62,13,8
- PUSHBUTTON "Plugin",IDC_PATINSTROPLUGGUI,121,61,33,13,0,WS_EX_STATICEDGE
- PUSHBUTTON "Plugin",IDC_PATINSTROPLUGGUI2,345,60,30,13,0,WS_EX_STATICEDGE
- GROUPBOX "Main instrument",IDC_STATIC,3,48,154,30
- GROUPBOX "Keyboard Split",IDC_STATIC,165,48,402,30
- LTEXT "Oct. shift",IDC_STATIC,435,62,29,8
- GROUPBOX "",IDC_STATIC,3,22,376,24
- CONTROL "Loop Pattern",IDC_PATTERN_LOOP,"Button",BS_AUTOCHECKBOX | BS_FLAT | WS_TABSTOP,261,31,57,10
- EDITTEXT IDC_EDIT_ORDERLIST_MARGINS,3,98,28,12,ES_AUTOHSCROLL | ES_READONLY
- CONTROL "",IDC_SPIN_ORDERLIST_MARGINS,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_NOTHOUSANDS,16,103,11,11
- EDITTEXT IDC_EDIT_SEQUENCE_NAME,453,30,108,12,ES_AUTOHSCROLL
- CTEXT "Sequence name",IDC_STATIC_SEQUENCE_NAME,393,32,53,8,SS_CENTERIMAGE
- GROUPBOX "",IDC_STATIC_SEQUENCE_NAME_FRAME,387,22,180,24
+ CONTROL "Follow Song",IDC_PATTERN_FOLLOWSONG,"Button",BS_AUTOCHECKBOX | BS_FLAT,312,31,55,10
+ COMBOBOX IDC_COMBO_INSTRUMENT,18,30,96,137,CBS_DROPDOWNLIST | WS_VSCROLL
+ CTEXT "Row Spacing",IDC_STATIC,162,32,42,8,SS_CENTERIMAGE
+ EDITTEXT IDC_EDIT_SPACING,210,30,28,12,ES_AUTOHSCROLL | ES_NUMBER | NOT WS_TABSTOP
+ CONTROL "Spin1",IDC_SPIN_SPACING,"msctls_updown32",UDS_WRAP | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_NOTHOUSANDS,230,30,11,11
+ PUSHBUTTON "<<",IDC_BUTTON2,3,51,14,15,NOT WS_TABSTOP,WS_EX_STATICEDGE
+ PUSHBUTTON ">>",IDC_BUTTON1,15,51,14,15,NOT WS_TABSTOP,WS_EX_STATICEDGE
+ LTEXT "Pattern Name",IDC_STATIC,384,32,48,8,SS_CENTERIMAGE
+ EDITTEXT IDC_EDIT_PATTERNNAME,439,29,108,12,ES_AUTOHSCROLL
+ CONTROL "Toolbar1",IDC_TOOLBAR1,"ToolbarWindow32",WS_GROUP | 0x4d,2,4,370,18
+ CONTROL "Spin1",IDC_SPIN_INSTRUMENT,"msctls_updown32",0x0,6,30,11,12
+ PUSHBUTTON "Plugin",IDC_PATINSTROPLUGGUI,120,30,33,13,0,WS_EX_STATICEDGE
+ GROUPBOX "",IDC_STATIC,3,22,369,24
+ CONTROL "Loop Pattern",IDC_PATTERN_LOOP,"Button",BS_AUTOCHECKBOX | BS_FLAT | WS_TABSTOP,252,31,57,10
+ EDITTEXT IDC_EDIT_ORDERLIST_MARGINS,3,65,28,12,ES_AUTOHSCROLL | ES_READONLY
+ CONTROL "",IDC_SPIN_ORDERLIST_MARGINS,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_NOTHOUSANDS,16,70,11,11
+ EDITTEXT IDC_EDIT_SEQUENCE_NAME,439,8,108,12,ES_AUTOHSCROLL
+ CTEXT "Sequence Name",IDC_STATIC_SEQUENCE_NAME,384,10,53,8,SS_CENTERIMAGE
+ GROUPBOX "",IDC_STATIC_SEQUENCE_NAME_FRAME,378,0,174,24
+ GROUPBOX "",IDC_STATIC,378,22,174,24
END
IDD_CONTROL_SAMPLES DIALOGEX 0, 0, 544, 106
@@ -1484,14 +1499,13 @@
IDD_CONTROL_PATTERNS, DIALOG
BEGIN
- RIGHTMARGIN, 573
+ RIGHTMARGIN, 548
VERTGUIDE, 39
VERTGUIDE, 134
- BOTTOMMARGIN, 104
+ BOTTOMMARGIN, 76
HORZGUIDE, 37
HORZGUIDE, 61
HORZGUIDE, 73
- HORZGUIDE, 87
END
IDD_CONTROL_SAMPLES, DIALOG
Modified: trunk/OpenMPT/mptrack/resource.h
===================================================================
--- trunk/OpenMPT/mptrack/resource.h 2009-12-04 19:30:31 UTC (rev 432)
+++ trunk/OpenMPT/mptrack/resource.h 2009-12-05 00:31:41 UTC (rev 433)
@@ -116,6 +116,7 @@
#define IDR_BUILTIN_TUNINGS 520
#define IDD_CLEANUP_SONG 521
#define IDD_CHANNEL_NAME 522
+#define IDD_KEYBOARD_SPLIT 523
#define IDC_BUTTON1 1001
#define IDC_BUTTON2 1002
#define IDC_BUTTON3 1003
@@ -1151,18 +1152,18 @@
#define ID_ORDERLIST_EDIT_COPY 59231
#define ID_ORDERLIST_EDIT_CUT 59232
#define ID_ORDERLIST_EDIT_PASTE 59233
-#define ID_CHANNEL_RENAME 59234
-#define ID_EDIT_PASTEFLOOD 59235
+#define ID_CHANNEL_RENAME 59234
+#define ID_EDIT_PASTEFLOOD 59235
#define ID_MODTREE_DUPLICATE 59236
-#define ID_MODTREE_INSERT 59237
-#define ID_MODTREE_SWITCHTO 59238
+#define ID_MODTREE_INSERT 59237
+#define ID_MODTREE_SWITCHTO 59238
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_3D_CONTROLS 1
-#define _APS_NEXT_RESOURCE_VALUE 523
+#define _APS_NEXT_RESOURCE_VALUE 524
#define _APS_NEXT_COMMAND_VALUE 59239
#define _APS_NEXT_CONTROL_VALUE 2412
#define _APS_NEXT_SYMED_VALUE 901
Modified: trunk/OpenMPT/packageTemplate/extraKeymaps/DE_jojo.mkb
===================================================================
--- trunk/OpenMPT/packageTemplate/extraKeymaps/DE_jojo.mkb 2009-12-04 19:30:31 UTC (rev 432)
+++ trunk/OpenMPT/packageTemplate/extraKeymaps/DE_jojo.mkb 2009-12-05 00:31:41 UTC (rev 433)
@@ -78,6 +78,7 @@
2:1806:2:68:1 //Duplicate pattern: Ctrl+D (KeyDown)
2:1662:6:80:1 //Toggle channel's plugin editor: Ctrl+Alt+P (KeyDown)
2:1062:0:93:1 //Show note properties: ANWENDUNG (KeyDown)
+2:1819:2:69:1 //Split Keyboard Settings dialog: Ctrl+E (KeyDown)
2:1780:2:80:1 //Show playback time at current row: Ctrl+P (KeyDown)
2:1786:2:82:1 //Reset channel: Ctrl+R (KeyDown)
2:1007:2:81:5 //Transpose +1: Ctrl+Q (KeyDown|KeyHold)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <sag...@us...> - 2009-12-04 19:30:45
|
Revision: 432
http://modplug.svn.sourceforge.net/modplug/?rev=432&view=rev
Author: saga-games
Date: 2009-12-04 19:30:31 +0000 (Fri, 04 Dec 2009)
Log Message:
-----------
[New] Two new keymaps: French Laptop by Paul Legovitch, Norwegian MPT Classic by Rakib.
[Imp] Changed Buzz colour preset a bit more
[Imp] Treeview: Switching between sequences should be easier now. There's a context menu entry for it and double-clicking on an empty sequence will switch to it (as there are no orderlist item to click on).
[Ref] Rewrote the treeview GetModItem crap a bit, as it was a lot of redundant code which even differed from function to function (f.e. usage of HIWORD vs. >> 16 shift)
Modified Paths:
--------------
trunk/OpenMPT/mptrack/Moptions.cpp
trunk/OpenMPT/mptrack/View_tre.cpp
trunk/OpenMPT/mptrack/View_tre.h
trunk/OpenMPT/mptrack/resource.h
Added Paths:
-----------
trunk/OpenMPT/packageTemplate/extraKeymaps/FR_mpt_laptop_(legovitch).mkb
trunk/OpenMPT/packageTemplate/extraKeymaps/NO_mpt_classic_(rakib).mkb
Modified: trunk/OpenMPT/mptrack/Moptions.cpp
===================================================================
--- trunk/OpenMPT/mptrack/Moptions.cpp 2009-12-01 18:43:53 UTC (rev 431)
+++ trunk/OpenMPT/mptrack/Moptions.cpp 2009-12-04 19:30:31 UTC (rev 432)
@@ -569,9 +569,9 @@
CustomColors[MODCOLOR_GLOBALS] = RGB(0x66, 0x00, 0x00);
CustomColors[MODCOLOR_SAMPLE] = RGB(0x00, 0xFF, 0x00);
CustomColors[MODCOLOR_ENVELOPES] = RGB(0xFF, 0x00, 0x00);
- CustomColors[MODCOLOR_SEPSHADOW] = RGB(0x9A, 0x87, 0x63);
- CustomColors[MODCOLOR_SEPFACE] = RGB(0xE1, 0xDB, 0xD0);
- CustomColors[MODCOLOR_SEPHILITE] = RGB(0xFF, 0xFF, 0xFF);
+ CustomColors[MODCOLOR_SEPSHADOW] = RGB(0xAC, 0xA8, 0xA1);
+ CustomColors[MODCOLOR_SEPFACE] = RGB(0xD6, 0xD0, 0xC6);
+ CustomColors[MODCOLOR_SEPHILITE] = RGB(0xEC, 0xE8, 0xE1);
CustomColors[MODCOLOR_BLENDCOLOR] = RGB(0xE1, 0xDB, 0xD0);
OnPreviewChanged();
}
Modified: trunk/OpenMPT/mptrack/View_tre.cpp
===================================================================
--- trunk/OpenMPT/mptrack/View_tre.cpp 2009-12-01 18:43:53 UTC (rev 431)
+++ trunk/OpenMPT/mptrack/View_tre.cpp 2009-12-04 19:30:31 UTC (rev 432)
@@ -75,8 +75,9 @@
ON_COMMAND(ID_MODTREE_UNMUTEALL, OnUnmuteAllTreeItem)
ON_COMMAND(ID_MODTREE_DUPLICATE, OnDuplicateTreeItem)
ON_COMMAND(ID_MODTREE_INSERT, OnInsertTreeItem)
+ ON_COMMAND(ID_MODTREE_SWITCHTO, OnSwitchToTreeItem)
-// -> CODE#0023
+ // -> CODE#0023
// -> DESC="IT project files (.itp)"
ON_COMMAND(ID_MODTREE_SETPATH, OnSetItemPath)
ON_COMMAND(ID_MODTREE_SAVEITEM, OnSaveItem)
@@ -1149,11 +1150,12 @@
{
if (hItem)
{
- uint64 qwItemType = GetModItem(hItem);
- DWORD dwItem = (DWORD)(qwItemType >> 16);
+ const uint64 modItem = GetModItem(hItem);
+ const uint32 modItemType = GetModItemType(modItem);
+ uint32 modItemID = GetModItemID(modItem);
PMODTREEDOCINFO pInfo = DocInfo[m_nDocNdx];
CModDoc *pModDoc = (pInfo) ? pInfo->pModDoc : NULL;
- switch(qwItemType & 0xFFFF)
+ switch(modItemType)
{
case MODITEM_COMMENTS:
if (pModDoc) pModDoc->ActivateView(IDD_CONTROL_COMMENTS, 0);
@@ -1164,25 +1166,25 @@
return TRUE;*/
case MODITEM_ORDER:
- if (pModDoc) pModDoc->ActivateView(IDD_CONTROL_PATTERNS, dwItem | 0x8000);
+ if (pModDoc) pModDoc->ActivateView(IDD_CONTROL_PATTERNS, modItemID | 0x8000);
return TRUE;
case MODITEM_PATTERN:
- if (pModDoc) pModDoc->ActivateView(IDD_CONTROL_PATTERNS, dwItem);
+ if (pModDoc) pModDoc->ActivateView(IDD_CONTROL_PATTERNS, modItemID);
return TRUE;
case MODITEM_SAMPLE:
- if (pModDoc) pModDoc->ActivateView(IDD_CONTROL_SAMPLES, dwItem);
+ if (pModDoc) pModDoc->ActivateView(IDD_CONTROL_SAMPLES, modItemID);
return TRUE;
case MODITEM_INSTRUMENT:
- if (pModDoc) pModDoc->ActivateView(IDD_CONTROL_INSTRUMENTS, dwItem);
+ if (pModDoc) pModDoc->ActivateView(IDD_CONTROL_INSTRUMENTS, modItemID);
return TRUE;
case MODITEM_MIDIPERCUSSION:
- dwItem |= 0x80;
+ modItemID |= 0x80;
case MODITEM_MIDIINSTRUMENT:
- OpenMidiInstrument(dwItem);
+ OpenMidiInstrument(modItemID);
return TRUE;
case MODITEM_EFFECT:
@@ -1201,7 +1203,7 @@
return TRUE;
default:
- if (qwItemType & 0x8000)
+ if (modItemType & 0x8000)
{
PlayItem(hItem);
return TRUE;
@@ -1217,11 +1219,12 @@
{
if (hItem)
{
- uint64 qwItemType = GetModItem(hItem);
- DWORD dwItem = (DWORD)(qwItemType >> 16);
+ const uint64 modItem = GetModItem(hItem);
+ const uint32 modItemType = GetModItemType(modItem);
+ uint32 modItemID = GetModItemID(modItem);
PMODTREEDOCINFO pInfo = DocInfo[m_nDocNdx];
CModDoc *pModDoc = (pInfo) ? pInfo->pModDoc : NULL;
- switch(qwItemType & 0xFFFF)
+ switch(modItemType)
{
case MODITEM_SAMPLE:
if (pModDoc)
@@ -1233,7 +1236,7 @@
} else
{
pModDoc->NoteOff(0, TRUE); // cut previous playing samples
- pModDoc->PlayNote(nParam & 0x7F, 0, dwItem, FALSE);
+ pModDoc->PlayNote(nParam & 0x7F, 0, modItemID, FALSE);
}
}
return TRUE;
@@ -1248,13 +1251,13 @@
} else
{
pModDoc->NoteOff(0, TRUE);
- pModDoc->PlayNote(nParam, dwItem, 0, FALSE);
+ pModDoc->PlayNote(nParam, modItemID, 0, FALSE);
}
}
return TRUE;
case MODITEM_EFFECT:
- if ((pModDoc) && (dwItem < MAX_MIXPLUGINS))
+ if ((pModDoc) && (modItemID < MAX_MIXPLUGINS))
{/*
CSoundFile *pSndFile = pModDoc->GetSoundFile();
PSNDMIXPLUGIN pPlugin = &pSndFile->m_MixPlugins[dwItem];
@@ -1263,7 +1266,7 @@
CVstPlugin *pVstPlugin = (CVstPlugin *)pPlugin->pMixPlugin;
pVstPlugin->ToggleEditor();
}*/
- pModDoc->TogglePluginEditor(dwItem);
+ pModDoc->TogglePluginEditor(modItemID);
}
return TRUE;
@@ -1280,7 +1283,7 @@
CMainFrame *pMainFrm = CMainFrame::GetMainFrame();
if (pMainFrm)
{
- if ((qwItemType & 0xFFFF) == MODITEM_INSLIB_INSTRUMENT)
+ if (modItemType == MODITEM_INSLIB_INSTRUMENT)
{
pMainFrm->PlaySoundFile(&m_SongFile, n, 0, nParam);
} else
@@ -1298,34 +1301,34 @@
break;
case MODITEM_MIDIPERCUSSION:
- dwItem |= 0x80;
+ modItemID |= 0x80;
case MODITEM_MIDIINSTRUMENT:
{
LPMIDILIBSTRUCT lpMidiLib = CTrackApp::GetMidiLibrary();
- if ((lpMidiLib) && (dwItem < 256) && (lpMidiLib->MidiMap[dwItem]))
+ if ((lpMidiLib) && (modItemID < 256) && (lpMidiLib->MidiMap[modItemID]))
{
CMainFrame *pMainFrm = CMainFrame::GetMainFrame();
- if (pMainFrm) pMainFrm->PlaySoundFile(lpMidiLib->MidiMap[dwItem], nParam);
+ if (pMainFrm) pMainFrm->PlaySoundFile(lpMidiLib->MidiMap[modItemID], nParam);
}
}
break;
default:
- if (qwItemType & 0x8000)
+ if (modItemType & 0x8000)
{
CMainFrame *pMainFrm = CMainFrame::GetMainFrame();
- UINT bank = (qwItemType & 0x3F000000) >> 24;
+ UINT bank = (modItem & 0x3F000000) >> 24;
if ((bank < MAX_DLS_BANKS) && (CTrackApp::gpDLSBanks[bank]) && (pMainFrm))
{
CDLSBank *pDLSBank = CTrackApp::gpDLSBanks[bank];
- UINT rgn = 0, instr = (qwItemType & 0x00007FFF);
+ UINT rgn = 0, instr = (modItem & 0x00007FFF);
// Drum
- if (qwItemType & 0x80000000)
+ if (modItem & 0x80000000)
{
- rgn = (qwItemType & 0x007F0000) >> 16;
+ rgn = (modItem & 0x007F0000) >> 16;
} else
// Melodic
- if (qwItemType & 0x40000000)
+ if (modItem & 0x40000000)
{
if ((!nParam) || (nParam > NOTE_MAX)) nParam = NOTE_MIDDLEC;
rgn = pDLSBank->GetRegionFromKey(instr, nParam-1);
@@ -1379,63 +1382,65 @@
BOOL CModTree::DeleteTreeItem(HTREEITEM hItem)
//--------------------------------------------
{
- uint64 qwItemType = GetModItem(hItem);
- DWORD dwItem = (DWORD)(qwItemType >> 16);
+ const uint64 modItem = GetModItem(hItem);
+ const uint32 modItemType = GetModItemType(modItem);
+ const uint32 modItemID = GetModItemID(modItem);
+
PMODTREEDOCINFO pInfo = DocInfo[m_nDocNdx];
CModDoc *pModDoc = (pInfo) ? pInfo->pModDoc : nullptr;
CSoundFile *pSndFile = (pModDoc) ? pModDoc->GetSoundFile() : nullptr;
- switch(qwItemType & 0xFFFF)
+ switch(modItemType)
{
case MODITEM_SEQUENCE:
if (pModDoc && pSndFile)
{
- pSndFile->Order.RemoveSequence((SEQUENCEINDEX)(dwItem & 0xFFFF));
+ pSndFile->Order.RemoveSequence((SEQUENCEINDEX)(modItemID & 0xFFFF));
pModDoc->UpdateAllViews(NULL, HINT_MODSEQUENCE, NULL);
}
break;
case MODITEM_ORDER:
- if ((pModDoc) && (pModDoc->RemoveOrder((SEQUENCEINDEX)(dwItem >> 16), (ORDERINDEX)(dwItem & 0xFFFF))))
+ if ((pModDoc) && (pModDoc->RemoveOrder((SEQUENCEINDEX)(modItemID >> 16), (ORDERINDEX)(modItemID & 0xFFFF))))
{
pModDoc->UpdateAllViews(NULL, HINT_MODSEQUENCE, NULL);
}
break;
case MODITEM_PATTERN:
- if ((pModDoc) && (pModDoc->RemovePattern((PATTERNINDEX)dwItem)))
+ if ((pModDoc) && (pModDoc->RemovePattern((PATTERNINDEX)modItemID)))
{
//pModDoc->UpdateAllViews(NULL, (dwItem << 16)|HINT_PATTERNDATA|HINT_PATNAMES);
- pModDoc->UpdateAllViews(NULL, (UINT(dwItem) << HINT_SHIFT_PAT) | HINT_PATTERNDATA|HINT_PATNAMES);
+ pModDoc->UpdateAllViews(NULL, (UINT(modItemID) << HINT_SHIFT_PAT) | HINT_PATTERNDATA|HINT_PATNAMES);
}
break;
case MODITEM_SAMPLE:
- if ((pModDoc) && (pModDoc->RemoveSample((SAMPLEINDEX)dwItem)))
+ if ((pModDoc) && (pModDoc->RemoveSample((SAMPLEINDEX)modItemID)))
{
//pModDoc->UpdateAllViews(NULL, (dwItem << 16) | HINT_SMPNAMES|HINT_SAMPLEDATA|HINT_SAMPLEINFO);
- pModDoc->UpdateAllViews(NULL, (UINT(dwItem) << HINT_SHIFT_SMP) | HINT_SMPNAMES|HINT_SAMPLEDATA|HINT_SAMPLEINFO);
+ pModDoc->UpdateAllViews(NULL, (UINT(modItemID) << HINT_SHIFT_SMP) | HINT_SMPNAMES|HINT_SAMPLEDATA|HINT_SAMPLEINFO);
}
break;
case MODITEM_INSTRUMENT:
- if ((pModDoc) && (pModDoc->RemoveInstrument((INSTRUMENTINDEX)dwItem)))
+ if ((pModDoc) && (pModDoc->RemoveInstrument((INSTRUMENTINDEX)modItemID)))
{
//pModDoc->UpdateAllViews(NULL, (dwItem << 16)|HINT_MODTYPE|HINT_ENVELOPE|HINT_INSTRUMENT);
- pModDoc->UpdateAllViews(NULL, (UINT(dwItem) << HINT_SHIFT_INS) | HINT_MODTYPE|HINT_ENVELOPE|HINT_INSTRUMENT);
+ pModDoc->UpdateAllViews(NULL, (UINT(modItemID) << HINT_SHIFT_INS) | HINT_MODTYPE|HINT_ENVELOPE|HINT_INSTRUMENT);
}
break;
case MODITEM_MIDIINSTRUMENT:
- SetMidiInstrument(dwItem, "");
+ SetMidiInstrument(modItemID, "");
RefreshMidiLibrary();
break;
case MODITEM_MIDIPERCUSSION:
- SetMidiPercussion(dwItem, "");
+ SetMidiPercussion(modItemID, "");
RefreshMidiLibrary();
break;
case MODITEM_DLSBANK_FOLDER:
- CTrackApp::RemoveDLSBank(dwItem);
+ CTrackApp::RemoveDLSBank(modItemID);
RefreshDlsBanks();
break;
@@ -1463,12 +1468,11 @@
BOOL CModTree::OpenTreeItem(HTREEITEM hItem)
//------------------------------------------
{
- uint64 qwItemType = GetModItem(hItem);
- //DWORD dwItem = dwItemType >> 16;
- //PMODTREEDOCINFO pInfo = DocInfo[m_nDocNdx];
- //CModDoc *pModDoc = (pInfo) ? pInfo->pModDoc : NULL;
+ const uint64 modItem = GetModItem(hItem);
+ const uint32 modItemType = GetModItemType(modItem);
+ //const uint32 modItemID = GetModItemID(modItem);
- switch(qwItemType & 0xFFFF)
+ switch(modItemType)
{
case MODITEM_INSLIB_SONG:
{
@@ -1908,9 +1912,9 @@
PMODTREEDOCINFO pInfo = DocInfo[m_nDragDocNdx];
pdropinfo->pModDoc = (pInfo) ? pInfo->pModDoc : NULL;
pdropinfo->dwDropType = DRAGONDROP_NOTHING;
- pdropinfo->dwDropItem = (DWORD)(m_qwItemDrag >> 16);
+ pdropinfo->dwDropItem = GetModItemID(m_qwItemDrag);
pdropinfo->lDropParam = 0;
- switch(m_qwItemDrag & 0xFFFF)
+ switch(GetModItemType(m_qwItemDrag))
{
case MODITEM_ORDER:
pdropinfo->dwDropType = DRAGONDROP_ORDER;
@@ -1991,27 +1995,29 @@
BOOL CModTree::CanDrop(HTREEITEM hItem, BOOL bDoDrop)
//---------------------------------------------------
{
- uint64 qwItemDrop = GetModItem(hItem);
- DWORD dwItemDrag = (DWORD)(m_qwItemDrag >> 16);
- DWORD dwDragType = m_qwItemDrag & 0xFFFF;
- DWORD dwDropType = (DWORD)(qwItemDrop & 0xFFFF);
+ const uint64 modItemDrop = GetModItem(hItem);
+ const uint32 modItemDropType = GetModItemType(modItemDrop);
+ const uint32 modItemDropID = GetModItemID(modItemDrop);
+
+ const uint32 modItemDragType = GetModItemType(m_qwItemDrag);
+ const uint32 modItemDragID = GetModItemID(m_qwItemDrag);
+
PMODTREEDOCINFO pInfo = DocInfo[m_nDocNdx];
CModDoc *pModDoc = (pInfo) ? pInfo->pModDoc : NULL;
- qwItemDrop >>= 16;
- switch(dwDropType)
+ switch(modItemDropType)
{
case MODITEM_ORDER:
case MODITEM_SEQUENCE:
- if ((dwDragType == MODITEM_ORDER) && (pModDoc) && (m_nDocNdx == m_nDragDocNdx))
+ if ((modItemDragType == MODITEM_ORDER) && (pModDoc) && (m_nDocNdx == m_nDragDocNdx))
{
if (bDoDrop)
{
- SEQUENCEINDEX nSeqFrom = (SEQUENCEINDEX)(dwItemDrag >> 16), nSeqTo = (SEQUENCEINDEX)(qwItemDrop >> 16);
- ORDERINDEX nOrdFrom = (ORDERINDEX)(dwItemDrag & 0xFFFF), nOrdTo = (ORDERINDEX)(qwItemDrop & 0xFFFF);
- if(dwDropType == MODITEM_SEQUENCE)
+ SEQUENCEINDEX nSeqFrom = (SEQUENCEINDEX)(modItemDragID >> 16), nSeqTo = (SEQUENCEINDEX)(modItemDropID >> 16);
+ ORDERINDEX nOrdFrom = (ORDERINDEX)(modItemDragID & 0xFFFF), nOrdTo = (ORDERINDEX)(modItemDropID & 0xFFFF);
+ if(modItemDropType == MODITEM_SEQUENCE)
{
// drop on sequence -> attach
- nSeqTo = (SEQUENCEINDEX)(qwItemDrop & 0xFFFF);
+ nSeqTo = (SEQUENCEINDEX)(modItemDropID & 0xFFFF);
nOrdTo = pModDoc->GetSoundFile()->Order.GetSequence(nSeqTo).GetLengthTailTrimmed();
}
@@ -2033,16 +2039,16 @@
case MODITEM_MIDIINSTRUMENT:
case MODITEM_MIDIPERCUSSION:
- if ((dwDragType == MODITEM_INSLIB_SAMPLE) || (dwDragType == MODITEM_INSLIB_INSTRUMENT))
+ if ((modItemDragType == MODITEM_INSLIB_SAMPLE) || (modItemDragType == MODITEM_INSLIB_INSTRUMENT))
{
if (bDoDrop)
{
CHAR szFullPath[_MAX_PATH] = "";
InsLibGetFullPath(m_hItemDrag, szFullPath);
- if (dwDropType == MODITEM_MIDIINSTRUMENT)
- SetMidiInstrument((DWORD)qwItemDrop, szFullPath);
+ if (modItemDropType == MODITEM_MIDIINSTRUMENT)
+ SetMidiInstrument((DWORD)modItemDropID, szFullPath);
else
- SetMidiPercussion((DWORD)qwItemDrop, szFullPath);
+ SetMidiPercussion((DWORD)modItemDropID, szFullPath);
}
return TRUE;
}
@@ -2171,7 +2177,7 @@
}
m_qwItemDrag = GetModItem(m_hItemDrag);
m_nDragDocNdx = m_nDocNdx;
- switch(m_qwItemDrag & 0xFFFF)
+ switch(GetModItemType(m_qwItemDrag))
{
case MODITEM_ORDER:
case MODITEM_PATTERN:
@@ -2281,13 +2287,13 @@
{
UINT nDefault = 0;
BOOL bSep = FALSE;
- uint64 qwItemType;
- qwItemType = GetModItem(hItem);
- const DWORD dwItemNo = (DWORD)(qwItemType >> 16);
- qwItemType &= 0xFFFF;
+ const uint64 modItem = GetModItem(hItem);
+ const uint32 modItemType = GetModItemType(modItem);
+ const uint32 modItemID = GetModItemID(modItem);
+
SelectItem(hItem);
- switch(qwItemType)
+ switch(modItemType)
{
case MODITEM_COMMENTS:
nDefault = ID_MODTREE_EXECUTE;
@@ -2299,12 +2305,19 @@
nDefault = ID_MODTREE_EXECUTE;
AppendMenu(hMenu, MF_STRING, nDefault, "&Edit Pattern");
AppendMenu(hMenu, MF_STRING, ID_MODTREE_REMOVE,
- (qwItemType == MODITEM_ORDER) ? "&Delete from list" : "&Delete Pattern");
+ (modItemType == MODITEM_ORDER) ? "&Delete from list" : "&Delete Pattern");
break;
case MODITEM_SEQUENCE:
- //nDefault = ID_MODTREE_EXECUTE; // don't do it, double-clicking sequences shouldn't switch to the automatically!
- //AppendMenu(hMenu, MF_STRING, nDefault, "&Switch to Seqeuence");
+ {
+ CModDoc *pModDoc = GetDocumentFromItem(hItem);
+ CSoundFile *pSndFile = (pModDoc) ? pModDoc->GetSoundFile() : nullptr;
+ if(pModDoc && pSndFile && (pModDoc->GetModType() == MOD_TYPE_MPT) && pSndFile->Order.GetSequence((SEQUENCEINDEX)modItemID).GetLength() == 0)
+ {
+ nDefault = ID_MODTREE_SWITCHTO;
+ }
+ }
+ AppendMenu(hMenu, MF_STRING, ID_MODTREE_SWITCHTO, "&Switch to Seqeuence");
AppendMenu(hMenu, MF_STRING, ID_MODTREE_INSERT, "&Insert Sequence");
AppendMenu(hMenu, MF_STRING, ID_MODTREE_DUPLICATE, "D&uplicate Sequence");
AppendMenu(hMenu, MF_STRING, ID_MODTREE_REMOVE, "&Delete Sequence");
@@ -2334,7 +2347,7 @@
if ((pModDoc) && (!pModDoc->GetNumInstruments()))
{
AppendMenu(hMenu, MF_SEPARATOR, NULL, "");
- AppendMenu(hMenu, (pModDoc->IsSampleMuted((SAMPLEINDEX)dwItemNo) ? MF_CHECKED:0)|MF_STRING, ID_MODTREE_MUTE, "&Mute Sample");
+ AppendMenu(hMenu, (pModDoc->IsSampleMuted((SAMPLEINDEX)modItemID) ? MF_CHECKED:0)|MF_STRING, ID_MODTREE_MUTE, "&Mute Sample");
AppendMenu(hMenu, MF_STRING, ID_MODTREE_SOLO, "&Solo Sample");
AppendMenu(hMenu, MF_STRING, ID_MODTREE_UNMUTEALL, "&Unmute all");
}
@@ -2351,7 +2364,7 @@
if ((pModDoc) && (pModDoc->GetNumInstruments()))
{
AppendMenu(hMenu, MF_SEPARATOR, NULL, "");
- AppendMenu(hMenu, (pModDoc->IsInstrumentMuted((INSTRUMENTINDEX)dwItemNo) ? MF_CHECKED:0)|MF_STRING, ID_MODTREE_MUTE, "&Mute Instrument");
+ AppendMenu(hMenu, (pModDoc->IsInstrumentMuted((INSTRUMENTINDEX)modItemID) ? MF_CHECKED:0)|MF_STRING, ID_MODTREE_MUTE, "&Mute Instrument");
AppendMenu(hMenu, MF_STRING, ID_MODTREE_SOLO, "&Solo Instrument");
AppendMenu(hMenu, MF_STRING, ID_MODTREE_UNMUTEALL, "&Unmute all");
// -> CODE#0023
@@ -2372,7 +2385,7 @@
CModDoc *pModDoc = GetDocumentFromItem(hItem);
CSoundFile *pSndFile = pModDoc ? pModDoc->GetSoundFile() : NULL;
if (pSndFile) {
- PSNDMIXPLUGIN pPlugin = &pSndFile->m_MixPlugins[dwItemNo];
+ PSNDMIXPLUGIN pPlugin = &pSndFile->m_MixPlugins[modItemID];
if (pPlugin) {
bool bypassed = ((pPlugin->Info.dwInputRouting&MIXPLUG_INPUTF_BYPASS) != 0);
AppendMenu(hMenu, (bypassed?MF_CHECKED:0)|MF_STRING, ID_MODTREE_MUTE, "&Bypass");
@@ -2431,7 +2444,7 @@
break;
default:
- if (qwItemType & 0x8000)
+ if (modItemType & 0x8000)
{
nDefault = ID_MODTREE_PLAY;
AppendMenu(hMenu, MF_STRING, ID_MODTREE_PLAY, "&Play Instrument");
@@ -2439,9 +2452,9 @@
break;
}
if (nDefault) SetMenuDefaultItem(hMenu, nDefault, FALSE);
- if ((qwItemType == MODITEM_INSLIB_FOLDER)
- || (qwItemType == MODITEM_INSLIB_SONG)
- || (qwItemType == MODITEM_HDR_INSTRUMENTLIB))
+ if ((modItemType == MODITEM_INSLIB_FOLDER)
+ || (modItemType == MODITEM_INSLIB_SONG)
+ || (modItemType == MODITEM_HDR_INSTRUMENTLIB))
{
if ((bSep) || (nDefault)) AppendMenu(hMenu, MF_SEPARATOR, NULL, "");
AppendMenu(hMenu, (m_bShowAllFiles) ? (MF_STRING|MF_CHECKED) : MF_STRING, ID_MODTREE_SHOWALLFILES, "Show All Files");
@@ -2470,8 +2483,11 @@
HTREEITEM hItem = HitTest(pt, &flags);
if (hItem != NULL)
{
- uint64 qwItem = GetModItem(hItem);
- switch(qwItem & 0xFFFF)
+ const uint64 modItem = GetModItem(hItem);
+ const uint32 modItemType = GetModItemType(modItem);
+ const uint32 modItemID = GetModItemID(modItem);
+
+ switch(modItemType)
{
case MODITEM_INSLIB_FOLDER:
case MODITEM_INSLIB_SONG:
@@ -2486,8 +2502,8 @@
if (pFrame)
{
pFrame->SendMessage(WM_MOD_INSTRSELECTED,
- ((qwItem & 0xffff) == MODITEM_INSTRUMENT) ? TRUE : FALSE,
- (LPARAM)(qwItem >> 16));
+ (modItemType == MODITEM_INSTRUMENT) ? TRUE : FALSE,
+ (LPARAM)modItemID);
}
}
break;
@@ -2717,32 +2733,32 @@
//-----------------------------
{
HTREEITEM hItem = GetSelectedItem();
- uint64 qwItemType;
CModDoc *pModDoc;
- qwItemType = GetModItem(hItem);
- const DWORD dwItemNo = (DWORD)(qwItemType >> 16);
- qwItemType &= 0xFFFF;
+ const uint64 modItem = GetModItem(hItem);
+ const uint32 modItemType = GetModItemType(modItem);
+ const uint32 modItemID = GetModItemID(modItem);
+
pModDoc = GetDocumentFromItem(hItem);
if (pModDoc)
{
- if ((qwItemType == MODITEM_SAMPLE) && (!pModDoc->GetNumInstruments()))
+ if ((modItemType == MODITEM_SAMPLE) && (!pModDoc->GetNumInstruments()))
{
- pModDoc->MuteSample((SAMPLEINDEX)dwItemNo, (pModDoc->IsSampleMuted((SAMPLEINDEX)dwItemNo)) ? false : true);
+ pModDoc->MuteSample((SAMPLEINDEX)modItemID, (pModDoc->IsSampleMuted((SAMPLEINDEX)modItemID)) ? false : true);
UpdateView(GetDocumentIDFromModDoc(pModDoc), HINT_SMPNAMES | HINT_SAMPLEINFO);
} else
- if ((qwItemType == MODITEM_INSTRUMENT) && (pModDoc->GetNumInstruments()))
+ if ((modItemType == MODITEM_INSTRUMENT) && (pModDoc->GetNumInstruments()))
{
- pModDoc->MuteInstrument((INSTRUMENTINDEX)dwItemNo, (pModDoc->IsInstrumentMuted((INSTRUMENTINDEX)dwItemNo)) ? false : true);
+ pModDoc->MuteInstrument((INSTRUMENTINDEX)modItemID, (pModDoc->IsInstrumentMuted((INSTRUMENTINDEX)modItemID)) ? false : true);
UpdateView(GetDocumentIDFromModDoc(pModDoc), HINT_INSNAMES | HINT_INSTRUMENT);
}
- if ((qwItemType == MODITEM_EFFECT))
+ if ((modItemType == MODITEM_EFFECT))
{
CSoundFile *pSndFile = pModDoc ? pModDoc->GetSoundFile() : NULL;
if (pSndFile) {
- PSNDMIXPLUGIN pPlugin = &pSndFile->m_MixPlugins[dwItemNo];
+ PSNDMIXPLUGIN pPlugin = &pSndFile->m_MixPlugins[modItemID];
if (pPlugin) {
CVstPlugin *pVstPlugin = (CVstPlugin *)pPlugin->pMixPlugin;
if (pVstPlugin) pVstPlugin->Bypass();
@@ -2758,29 +2774,29 @@
//-----------------------------
{
HTREEITEM hItem = GetSelectedItem();
- uint64 qwItemType;
CModDoc *pModDoc;
- qwItemType = GetModItem(hItem);
- const DWORD dwItemNo = (DWORD)(qwItemType >> 16);
- qwItemType &= 0xFFFF;
+ const uint64 modItem = GetModItem(hItem);
+ const uint32 modItemType = GetModItemType(modItem);
+ const uint32 modItemID = GetModItemID(modItem);
+
pModDoc = GetDocumentFromItem(hItem);
if (pModDoc)
{
INSTRUMENTINDEX nInstruments = pModDoc->GetNumInstruments();
- if ((qwItemType == MODITEM_SAMPLE) && (!nInstruments))
+ if ((modItemType == MODITEM_SAMPLE) && (!nInstruments))
{
for (SAMPLEINDEX nSmp = 1; nSmp <= pModDoc->GetNumSamples(); nSmp++)
{
- pModDoc->MuteSample(nSmp, (nSmp == dwItemNo) ? false : true);
+ pModDoc->MuteSample(nSmp, (nSmp == modItemID) ? false : true);
UpdateView(GetDocumentIDFromModDoc(pModDoc), HINT_SMPNAMES | HINT_SAMPLEINFO);
}
} else
- if ((qwItemType == MODITEM_INSTRUMENT) && (nInstruments))
+ if ((modItemType == MODITEM_INSTRUMENT) && (nInstruments))
{
for (INSTRUMENTINDEX nIns = 1; nIns <= nInstruments; nIns++)
{
- pModDoc->MuteInstrument(nIns, (nIns == dwItemNo) ? false : true);
+ pModDoc->MuteInstrument(nIns, (nIns == modItemID) ? false : true);
UpdateView(GetDocumentIDFromModDoc(pModDoc), HINT_INSNAMES | HINT_INSTRUMENT);
}
}
@@ -2792,14 +2808,16 @@
//----------------------------------
{
HTREEITEM hItem = GetSelectedItem();
- uint64 qwItemType;
CModDoc *pModDoc;
- qwItemType = GetModItem(hItem) & 0xFFFF;
+ const uint64 modItem = GetModItem(hItem);
+ const uint32 modItemType = GetModItemType(modItem);
+ //const uint32 modItemID = GetModItemID(modItem);
+
pModDoc = GetDocumentFromItem(hItem);
if (pModDoc)
{
- if ((qwItemType == MODITEM_SAMPLE) || (qwItemType == MODITEM_INSTRUMENT))
+ if ((modItemType == MODITEM_SAMPLE) || (modItemType == MODITEM_INSTRUMENT))
{
for (SAMPLEINDEX nSmp = 1; nSmp <= pModDoc->GetNumSamples(); nSmp++)
{
@@ -2820,19 +2838,18 @@
//----------------------------------
{
HTREEITEM hItem = GetSelectedItem();
- uint64 qwItemType;
CModDoc *pModDoc;
- qwItemType = GetModItem(hItem);
- const DWORD dwItemNo = (DWORD)(qwItemType >> 16);
- qwItemType &= 0xFFFF;
+ const uint64 modItem = GetModItem(hItem);
+ const uint32 modItemType = GetModItemType(modItem);
+ const uint32 modItemID = GetModItemID(modItem);
pModDoc = GetDocumentFromItem(hItem);
CSoundFile *pSndFile = (pModDoc) ? pModDoc->GetSoundFile() : nullptr;
- if (pModDoc && pSndFile && ((qwItemType == MODITEM_SEQUENCE) || (qwItemType == MODITEM_HDR_ORDERS)))
+ if (pModDoc && pSndFile && ((modItemType == MODITEM_SEQUENCE) || (modItemType == MODITEM_HDR_ORDERS)))
{
- pSndFile->Order.SetSequence((SEQUENCEINDEX)dwItemNo);
+ pSndFile->Order.SetSequence((SEQUENCEINDEX)modItemID);
pSndFile->Order.AddSequence(true);
UpdateView(GetDocumentIDFromModDoc(pModDoc), HINT_SEQNAMES|HINT_MODSEQUENCE);
pModDoc->UpdateAllViews(NULL, HINT_SEQNAMES|HINT_MODSEQUENCE);
@@ -2844,15 +2861,16 @@
//-------------------------------
{
HTREEITEM hItem = GetSelectedItem();
- uint64 qwItemType;
CModDoc *pModDoc;
- qwItemType = GetModItem(hItem) & 0xFFFF;
+ const uint64 modItem = GetModItem(hItem);
+ const uint32 modItemType = GetModItemType(modItem);
+ //const uint32 modItemID = GetModItemID(modItem);
pModDoc = GetDocumentFromItem(hItem);
CSoundFile *pSndFile = (pModDoc) ? pModDoc->GetSoundFile() : nullptr;
- if (pModDoc && pSndFile && ((qwItemType == MODITEM_SEQUENCE) || (qwItemType == MODITEM_HDR_ORDERS)))
+ if (pModDoc && pSndFile && ((modItemType == MODITEM_SEQUENCE) || (modItemType == MODITEM_HDR_ORDERS)))
{
pSndFile->Order.AddSequence(false);
UpdateView(GetDocumentIDFromModDoc(pModDoc), HINT_SEQNAMES|HINT_MODSEQUENCE);
@@ -2860,21 +2878,39 @@
}
}
+void CModTree::OnSwitchToTreeItem()
+//---------------------------------
+{
+ HTREEITEM hItem = GetSelectedItem();
+ CModDoc *pModDoc;
+ const uint64 modItem = GetModItem(hItem);
+ const uint32 modItemType = GetModItemType(modItem);
+ const uint32 modItemID = GetModItemID(modItem);
+
+ pModDoc = GetDocumentFromItem(hItem);
+
+ if (pModDoc && (modItemType == MODITEM_SEQUENCE))
+ {
+ pModDoc->ActivateView(IDD_CONTROL_PATTERNS, (modItemID << 16) | 0x8000);
+ }
+}
+
// -> CODE#0023
// -> DESC="IT project files (.itp)"
void CModTree::OnSetItemPath()
//----------------------------
{
HTREEITEM hItem = GetSelectedItem();
- uint64 qwItemType = GetModItem(hItem);
- DWORD dwItem = (DWORD)(qwItemType >> 16);
- qwItemType &= 0xFFFF;
CModDoc *pModDoc = GetDocumentFromItem(hItem);
CSoundFile *pSndFile = pModDoc ? pModDoc->GetSoundFile() : NULL;
- if(pSndFile && dwItem){
+ const uint64 modItem = GetModItem(hItem);
+ //const uint32 modItemType = GetModItemType(modItem);
+ const uint32 modItemID = GetModItemID(modItem);
+ if(pSndFile && modItemID){
+
CHAR pszFileNames[_MAX_PATH];
CFileDialog dlg(TRUE, NULL, NULL,
OFN_FILEMUSTEXIST|OFN_PATHMUSTEXIST|OFN_FORCESHOWHIDDEN,
@@ -2887,7 +2923,7 @@
dlg.m_ofn.nMaxFile = _MAX_PATH;
if(dlg.DoModal() == IDOK){
- strcpy(pSndFile->m_szInstrumentPath[dwItem-1], pszFileNames);
+ strcpy(pSndFile->m_szInstrumentPath[modItemID - 1], pszFileNames);
OnRefreshTree();
}
@@ -2900,15 +2936,16 @@
//-------------------------
{
HTREEITEM hItem = GetSelectedItem();
- uint64 qwItemType = GetModItem(hItem);
- const DWORD dwItem = HIWORD(qwItemType);
- qwItemType &= 0xFFFF;
CModDoc *pModDoc = GetDocumentFromItem(hItem);
CSoundFile *pSndFile = pModDoc ? pModDoc->GetSoundFile() : NULL;
- if(pSndFile && dwItem){
+ const uint64 modItem = GetModItem(hItem);
+ //const uint32 modItemType = GetModItemType(modItem);
+ const uint32 modItemID = GetModItemID(modItem);
- if(pSndFile->m_szInstrumentPath[dwItem-1][0] == '\0'){
+ if(pSndFile && modItemID){
+
+ if(pSndFile->m_szInstrumentPath[modItemID - 1][0] == '\0'){
CHAR pszFileNames[_MAX_PATH];
CFileDialog dlg(FALSE, (pSndFile->m_nType & (MOD_TYPE_IT|MOD_TYPE_MPT)) ? "iti" : "xi", NULL,
@@ -2924,23 +2961,23 @@
dlg.m_ofn.lpstrFile = pszFileNames;
dlg.m_ofn.nMaxFile = _MAX_PATH;
- if(dlg.DoModal() == IDOK) strcpy(pSndFile->m_szInstrumentPath[dwItem - 1], pszFileNames);
+ if(dlg.DoModal() == IDOK) strcpy(pSndFile->m_szInstrumentPath[modItemID - 1], pszFileNames);
dlg.m_ofn.lpstrFile = NULL;
dlg.m_ofn.nMaxFile = 0;
}
- if(pSndFile->m_szInstrumentPath[dwItem - 1][0] != '\0'){
- int size = strlen(pSndFile->m_szInstrumentPath[dwItem - 1]);
- BOOL iti = _stricmp(&pSndFile->m_szInstrumentPath[dwItem - 1][size-3],"iti") == 0;
- BOOL xi = _stricmp(&pSndFile->m_szInstrumentPath[dwItem - 1][size-2],"xi") == 0;
+ if(pSndFile->m_szInstrumentPath[modItemID - 1][0] != '\0'){
+ int size = strlen(pSndFile->m_szInstrumentPath[modItemID - 1]);
+ BOOL iti = _stricmp(&pSndFile->m_szInstrumentPath[modItemID - 1][size-3],"iti") == 0;
+ BOOL xi = _stricmp(&pSndFile->m_szInstrumentPath[modItemID - 1][size-2],"xi") == 0;
if(iti || (!iti && !xi && pSndFile->m_nType & (MOD_TYPE_IT|MOD_TYPE_MPT)))
- pSndFile->SaveITIInstrument((INSTRUMENTINDEX)dwItem, pSndFile->m_szInstrumentPath[dwItem - 1]);
+ pSndFile->SaveITIInstrument((INSTRUMENTINDEX)modItemID, pSndFile->m_szInstrumentPath[modItemID - 1]);
if(xi || (!xi && !iti && pSndFile->m_nType == MOD_TYPE_XM))
- pSndFile->SaveXIInstrument((INSTRUMENTINDEX)dwItem, pSndFile->m_szInstrumentPath[dwItem - 1]);
+ pSndFile->SaveXIInstrument((INSTRUMENTINDEX)modItemID, pSndFile->m_szInstrumentPath[modItemID - 1]);
- pSndFile->instrumentModified[dwItem - 1] = FALSE;
+ pSndFile->instrumentModified[modItemID - 1] = FALSE;
}
if(pModDoc) pModDoc->UpdateAllViews(NULL, HINT_MODTYPE);
@@ -2999,8 +3036,12 @@
{
UINT flags;
HTREEITEM hItem = HitTest(point, &flags);
- uint64 qwItemType = GetModItem(hItem);
- switch(qwItemType & 0xFFFF)
+
+ const uint64 modItem = GetModItem(hItem);
+ const uint32 modItemType = GetModItemType(modItem);
+ //const uint32 modItemID = GetModItemID(modItem);
+
+ switch(modItemType)
{
case MODITEM_MIDIINSTRUMENT:
case MODITEM_MIDIPERCUSSION:
@@ -3010,7 +3051,7 @@
EnsureVisible(hItem);
}
m_hItemDrag = hItem;
- m_qwItemDrag = qwItemType;
+ m_qwItemDrag = modItem;
return DROPEFFECT_LINK;
// Folders:
case MODITEM_HDR_MIDILIB:
@@ -3118,10 +3159,14 @@
//------------------------------------
{
HTREEITEM hItem = GetSelectedItem();
- uint64 qwItemType = GetModItem(hItem);
- if ((qwItemType & 0xFFFF) == MODITEM_DLSBANK_FOLDER)
+
+ const uint64 modItem = GetModItem(hItem);
+ const uint32 modItemType = GetModItemType(modItem);
+ const uint32 modItemID = GetModItemID(modItem);
+
+ if ((modItemType & 0xFFFF) == MODITEM_DLSBANK_FOLDER)
{
- UINT nBank = (UINT)(qwItemType >> 16);
+ UINT nBank = modItemID;
if ((nBank < MAX_DLS_BANKS) && (CTrackApp::gpDLSBanks[nBank]))
{
CSoundBankProperties dlg(CTrackApp::gpDLSBanks[nBank], this);
Modified: trunk/OpenMPT/mptrack/View_tre.h
===================================================================
--- trunk/OpenMPT/mptrack/View_tre.h 2009-12-01 18:43:53 UTC (rev 431)
+++ trunk/OpenMPT/mptrack/View_tre.h 2009-12-04 19:30:31 UTC (rev 432)
@@ -142,6 +142,8 @@
VOID EmptyInstrumentLibrary();
VOID FillInstrumentLibrary();
uint64 GetModItem(HTREEITEM hItem);
+ inline uint32 GetModItemType(const uint64 modItem) {return static_cast<uint32>(modItem & 0xFFFF);}; // return "item type" part of mod item variable ( & 0xFFFF )
+ inline uint32 GetModItemID(const uint64 modItem) {return static_cast<uint32>(modItem >> 16);}; // return "item ID" part of mod item variable ( >> 16 )
BOOL SetMidiInstrument(UINT nIns, LPCSTR lpszFileName);
BOOL SetMidiPercussion(UINT nPerc, LPCSTR lpszFileName);
BOOL ExecuteItem(HTREEITEM hItem);
@@ -206,6 +208,7 @@
afx_msg void OnUnmuteAllTreeItem();
afx_msg void OnDuplicateTreeItem();
afx_msg void OnInsertTreeItem();
+ afx_msg void OnSwitchToTreeItem(); // hack for sequence items to avoid double-click action
// -> CODE#0023
// -> DESC="IT project files (.itp)"
Modified: trunk/OpenMPT/mptrack/resource.h
===================================================================
--- trunk/OpenMPT/mptrack/resource.h 2009-12-01 18:43:53 UTC (rev 431)
+++ trunk/OpenMPT/mptrack/resource.h 2009-12-04 19:30:31 UTC (rev 432)
@@ -1155,6 +1155,7 @@
#define ID_EDIT_PASTEFLOOD 59235
#define ID_MODTREE_DUPLICATE 59236
#define ID_MODTREE_INSERT 59237
+#define ID_MODTREE_SWITCHTO 59238
// Next default values for new objects
//
@@ -1162,7 +1163,7 @@
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_3D_CONTROLS 1
#define _APS_NEXT_RESOURCE_VALUE 523
-#define _APS_NEXT_COMMAND_VALUE 59238
+#define _APS_NEXT_COMMAND_VALUE 59239
#define _APS_NEXT_CONTROL_VALUE 2412
#define _APS_NEXT_SYMED_VALUE 901
#endif
Added: trunk/OpenMPT/packageTemplate/extraKeymaps/FR_mpt_laptop_(legovitch).mkb
===================================================================
--- trunk/OpenMPT/packageTemplate/extraKeymaps/FR_mpt_laptop_(legovitch).mkb (rev 0)
+++ trunk/OpenMPT/packageTemplate/extraKeymaps/FR_mpt_laptop_(legovitch).mkb 2009-12-04 19:30:31 UTC (rev 432)
@@ -0,0 +1,327 @@
+//-------- OpenMPT key binding definition file -------
+//-Format is: -
+//- Context:Command ID:Modifiers:Key:KeypressEventType //Comments -
+//----------------------------------------------------------------------
+version:1
+
+//----( Global Context (0) )------------
+0:1347:2:78:1 //File/New: Ctrl+N (KeyDown)
+0:1346:2:79:1 //File/Open: Ctrl+O (KeyDown)
+0:1348:2:87:1 //File/Close: Ctrl+W (KeyDown)
+0:1349:2:83:1 //File/Save: Ctrl+S (KeyDown)
+0:1350:3:83:1 //File/Save As: Shift+Ctrl+S (KeyDown)
+0:1693:6:37:1 //Previous Document: Ctrl+Alt+GAUCHE (KeyDown)
+0:1694:6:39:1 //Next Document: Ctrl+Alt+DROITE (KeyDown)
+0:1030:0:114:1 //Play song/Pause song: F3 (KeyDown)
+0:1375:0:27:1 //Stop Song: ECHAP (KeyDown)
+0:1026:0:115:1 //Play pattern from cursor: F4 (KeyDown)
+0:1359:2:90:1 //Undo: Ctrl+Z (KeyDown)
+0:1360:2:88:1 //Cut: Ctrl+X (KeyDown)
+0:1361:2:67:1 //Copy: Ctrl+C (KeyDown)
+0:1361:2:45:1 //Copy: Ctrl+INS (KeyDown)
+0:1362:2:86:1 //Paste: Ctrl+V (KeyDown)
+0:1362:1:45:1 //Paste: Shift+INS (KeyDown)
+0:1363:6:86:1 //Mix Paste: Ctrl+Alt+V (KeyDown)
+0:1793:7:86:1 //Paste Flood: Shift+Ctrl+Alt+V (KeyDown)
+0:1364:2:53:1 //SelectAll: Ctrl+( (KeyDown)
+0:1365:2:70:1 //Find: Ctrl+F (KeyDown)
+0:1366:6:70:1 //Find Next: Ctrl+Alt+F (KeyDown)
+0:1021:0:116:1 //View General: F5 (KeyDown)
+0:1022:0:117:1 //View Pattern: F6 (KeyDown)
+0:1023:0:118:1 //View Samples: F7 (KeyDown)
+0:1024:0:119:1 //View Instruments: F8 (KeyDown)
+0:1025:0:120:1 //View Comments: F9 (KeyDown)
+0:1769:1:121:1 //View Graph: Shift+F10 (KeyDown)
+0:1367:6:87:1 //Toggle Main View: Ctrl+Alt+W (KeyDown)
+0:1368:0:112:1 //Toggle Tree View: F1 (KeyDown)
+0:1369:2:112:1 //View Options: Ctrl+F1 (KeyDown)
+0:1670:2:116:1 //View Channel Manager: Ctrl+F5 (KeyDown)
+0:1669:2:117:1 //View Plugin Manager: Ctrl+F6 (KeyDown)
+0:1775:6:112:1 //Show song properties window: Ctrl+Alt+F1 (KeyDown)
+0:1032:2:38:1 //Previous instrument: Ctrl+HAUT (KeyDown)
+0:1033:2:40:1 //Next instrument: Ctrl+BAS (KeyDown)
+0:1036:0:122:1 //Previous octave: F11 (KeyDown)
+0:1037:0:123:1 //Next octave: F12 (KeyDown)
+0:1034:2:37:5 //Previous order: Ctrl+GAUCHE (KeyDown|KeyHold)
+0:1035:2:39:5 //Next order: Ctrl+DROITE (KeyDown|KeyHold)
+
+//----( General Context [bottom] (1) )------------
+
+//----( Pattern Context [bottom] (2) )------------
+2:1017:0:34:1 //Jump down by measure: PG.SUIV (KeyDown)
+2:1018:0:33:1 //Jump up by measure: PG.PREC (KeyDown)
+2:1338:4:34:1 //Jump down by beat: Alt+PG.SUIV (KeyDown)
+2:1339:4:33:1 //Jump up by beat: Alt+PG.PREC (KeyDown)
+2:1340:6:34:5 //Snap down to beat: Ctrl+Alt+PG.SUIV (KeyDown|KeyHold)
+2:1341:6:33:5 //Snap up to beat: Ctrl+Alt+PG.PREC (KeyDown|KeyHold)
+2:1038:0:40:5 //Navigate down by 1 row: BAS (KeyDown|KeyHold)
+2:1039:0:38:5 //Navigate up by 1 row: HAUT (KeyDown|KeyHold)
+2:1691:4:167:5 //Navigate down by spacing: Alt+ (KeyDown|KeyHold)
+2:1692:4:166:5 //Navigate up by spacing: Alt+ (KeyDown|KeyHold)
+2:1040:0:37:5 //Navigate left: GAUCHE (KeyDown|KeyHold)
+2:1041:0:39:5 //Navigate right: DROITE (KeyDown|KeyHold)
+2:1042:0:9:1 //Navigate to next channel: TAB (KeyDown)
+2:1042:0:167:1 //Navigate to next channel: (KeyDown)
+2:1043:1:9:1 //Navigate to previous channel: Shift+TAB (KeyDown)
+2:1043:0:166:1 //Navigate to previous channel: (KeyDown)
+2:1044:2:36:1 //Go to first channel: Ctrl+ORIGINE (KeyDown)
+2:1045:0:36:1 //Go to first row: ORIGINE (KeyDown)
+2:1046:6:36:1 //Go to first row of first channel: Ctrl+Alt+ORIGINE (KeyDown)
+2:1047:2:35:1 //Go to last channel: Ctrl+FIN (KeyDown)
+2:1048:0:35:1 //Go to last row: FIN (KeyDown)
+2:1049:6:35:1 //Go to last row of last channel: Ctrl+Alt+FIN (KeyDown)
+2:1050:1:16:1 //Selection key: Shift+MAJ (KeyDown)
+2:1011:2:76:1 //Select channel / Select all: Ctrl+L (KeyDown)
+2:1663:0:32:1 //Toggle follow song: ESPACE (KeyDown)
+2:1003:0:13:1 //Quick copy: ENTREE (KeyDown)
+2:1004:1:13:1 //Quick paste: Shift+ENTREE (KeyDown)
+2:1001:2:32:1 //Enable recording: Ctrl+ESPACE (KeyDown)
+2:1002:2:13:5 //Play row: Ctrl+ENTREE (KeyDown|KeyHold)
+2:1317:4:18:1 //Set row jump on note entry: Alt (KeyDown)
+2:1685:2:9:1 //Switch to order list: Ctrl+TAB (KeyDown)
+2:1806:2:68:1 //Duplicate pattern: Ctrl+D (KeyDown)
+2:1662:6:80:1 //Toggle channel's plugin editor: Ctrl+Alt+P (KeyDown)
+2:1062:0:255:1 //Show note properties: (KeyDown)
+2:1776:4:32:1 //Toggle loop pattern: Alt+ESPACE (KeyDown)
+2:1006:0:113:1 //Solo current channel: F2 (KeyDown)
+2:1778:2:113:1 //Unmute all channels on pattern transition: Ctrl+F2 (KeyDown)
+2:1779:1:113:1 //Solo channel on pattern transition: Shift+F2 (KeyDown)
+2:1007:2:65:5 //Transpose +1: Ctrl+A (KeyDown|KeyHold)
+2:1008:2:81:1 //Transpose -1: Ctrl+Q (KeyDown)
+2:1009:6:65:5 //Transpose +12: Ctrl+Alt+A (KeyDown|KeyHold)
+2:1010:6:81:5 //Transpose -12: Ctrl+Alt+Q (KeyDown|KeyHold)
+2:1012:2:77:1 //Amplify selection: Ctrl+M (KeyDown)
+2:1014:2:74:1 //Interpolate volume: Ctrl+J (KeyDown)
+2:1015:2:75:1 //Interpolate effect: Ctrl+K (KeyDown)
+2:1016:4:66:1 //Open effect visualizer: Alt+B (KeyDown)
+2:1013:2:73:1 //Apply current instrument: Ctrl+I (KeyDown)
+2:1660:4:69:5 //Grow selection: Alt+E (KeyDown|KeyHold)
+2:1661:4:68:5 //Shrink selection: Alt+D (KeyDown|KeyHold)
+2:1057:2:46:1 //Clear row: Ctrl+SUPPR (KeyDown)
+2:1058:1:46:1 //Clear field: Shift+SUPPR (KeyDown)
+2:1664:0:46:1 //Clear field (IT Style): SUPPR (KeyDown)
+2:1059:3:46:1 //Clear row and step: Shift+Ctrl+SUPPR (KeyDown)
+2:1061:0:8:1 //Delete rows: RET.ARR (KeyDown)
+2:1377:4:8:5 //Delete all rows: Alt+RET.ARR (KeyDown|KeyHold)
+2:1378:0:45:1 //Insert Row: INS (KeyDown)
+2:1379:4:45:1 //Insert All Rows: Alt+INS (KeyDown)
+2:1055:2:166:5 //Previous pattern: Ctrl+ (KeyDown|KeyHold)
+2:1054:2:167:5 //Next pattern: Ctrl+ (KeyDown|KeyHold)
+
+//----( Pattern Context [bottom] - Note Col (3) )------------
+3:1064:0:65:1 //Base octave C: A (KeyDown)
+3:1065:0:90:1 //Base octave C#: Z (KeyDown)
+3:1066:0:69:1 //Base octave D: E (KeyDown)
+3:1067:0:82:1 //Base octave D#: R (KeyDown)
+3:1068:0:84:1 //Base octave E: T (KeyDown)
+3:1069:0:89:1 //Base octave F: Y (KeyDown)
+3:1070:0:85:1 //Base octave F#: U (KeyDown)
+3:1071:0:73:1 //Base octave G: I (KeyDown)
+3:1072:0:79:1 //Base octave G#: O (KeyDown)
+3:1073:0:80:1 //Base octave A: P (KeyDown)
+3:1074:0:221:1 //Base octave A#: ACCENT CIRCONFLEXE (KeyDown)
+3:1075:0:186:1 //Base octave B: $ (KeyDown)
+3:1076:0:81:1 //Base octave +1 C: Q (KeyDown)
+3:1077:0:83:1 //Base octave +1 C#: S (KeyDown)
+3:1078:0:68:1 //Base octave +1 D: D (KeyDown)
+3:1079:0:70:1 //Base octave +1 D#: F (KeyDown)
+3:1080:0:71:1 //Base octave +1 E: G (KeyDown)
+3:1081:0:72:1 //Base octave +1 F: H (KeyDown)
+3:1082:0:74:1 //Base octave +1 F#: J (KeyDown)
+3:1083:0:75:1 //Base octave +1 G: K (KeyDown)
+3:1084:0:76:1 //Base octave +1 G#: L (KeyDown)
+3:1085:0:77:1 //Base octave +1 A: M (KeyDown)
+3:1086:0:192:1 //Base octave +1 A#: \xF9 (KeyDown)
+3:1087:0:220:1 //Base octave +1 B: * (KeyDown)
+3:1088:0:87:1 //Base octave +2 C: W (KeyDown)
+3:1089:0:88:1 //Base octave +2 C#: X (KeyDown)
+3:1090:0:67:1 //Base octave +2 D: C (KeyDown)
+3:1091:0:86:1 //Base octave +2 D#: V (KeyDown)
+3:1092:0:66:1 //Base octave +2 E: B (KeyDown)
+3:1093:0:78:1 //Base octave +2 F: N (KeyDown)
+3:1094:0:188:1 //Base octave +2 F#: , (KeyDown)
+3:1095:0:190:1 //Base octave +2 G: ; (KeyDown)
+3:1096:0:191:1 //Base octave +2 G#: : (KeyDown)
+3:1097:0:223:1 //Base octave +2 A: ! (KeyDown)
+3:1212:0:48:1 //Set octave 0: \xE0 (KeyDown)
+3:1212:0:96:1 //Set octave 0: 0 (PAVE NUM.) (KeyDown)
+3:1213:0:49:1 //Set octave 1: & (KeyDown)
+3:1214:0:50:1 //Set octave 2: \xE9 (KeyDown)
+3:1215:0:51:1 //Set octave 3: " (KeyDown)
+3:1216:0:52:1 //Set octave 4: ' (KeyDown)
+3:1217:0:53:1 //Set octave 5: ( (KeyDown)
+3:1218:0:54:1 //Set octave 6: - (KeyDown)
+3:1219:0:55:1 //Set octave 7: \xE8 (KeyDown)
+3:1220:0:56:1 //Set octave 8: _ (KeyDown)
+3:1221:0:57:1 //Set octave 9: \xE7 (KeyDown)
+3:1316:1:16:1 //Chord Modifier: Shift+MAJ (KeyDown)
+3:1200:1:219:1 //Note Cut: Shift+) (KeyDown)
+3:1201:1:187:1 //Note Off: Shift+= (KeyDown)
+3:1791:3:219:1 //Note Fade: Shift+Ctrl+) (KeyDown)
+3:1667:0:219:1 //Note Cut (don't remember instrument): ) (KeyDown)
+3:1668:0:187:1 //Note Off (don't remember instrument): = (KeyDown)
+3:1792:2:219:1 //Note Fade (don't remember instrument): Ctrl+) (KeyDown)
+3:1788:0:222:1 //Parameter control(MPTm only): \xB2 (KeyDown)
+3:1789:1:222:1 //Parameter control(smooth)(MPTm only): Shift+\xB2 (KeyDown)
+
+//----( Pattern Context [bottom] - Ins Col (4) )------------
+4:1202:0:96:1 //Set instrument digit 0: 0 (PAVE NUM.) (KeyDown)
+4:1202:0:48:1 //Set instrument digit 0: \xE0 (KeyDown)
+4:1203:0:97:1 //Set instrument digit 1: 1 (PAVE NUM.) (KeyDown)
+4:1203:0:49:1 //Set instrument digit 1: & (KeyDown)
+4:1204:0:98:1 //Set instrument digit 2: 2 (PAVE NUM.) (KeyDown)
+4:1204:0:50:1 //Set instrument digit 2: \xE9 (KeyDown)
+4:1205:0:99:1 //Set instrument digit 3: 3 (PAVE NUM.) (KeyDown)
+4:1205:0:51:1 //Set instrument digit 3: " (KeyDown)
+4:1206:0:100:1 //Set instrument digit 4: 4 (PAVE NUM.) (KeyDown)
+4:1206:0:52:1 //Set instrument digit 4: ' (KeyDown)
+4:1207:0:101:1 //Set instrument digit 5: 5 (PAVE NUM.) (KeyDown)
+4:1207:0:53:1 //Set instrument digit 5: ( (KeyDown)
+4:1208:0:102:1 //Set instrument digit 6: 6 (PAVE NUM.) (KeyDown)
+4:1208:0:54:1 //Set instrument digit 6: - (KeyDown)
+4:1209:0:103:1 //Set instrument digit 7: 7 (PAVE NUM.) (KeyDown)
+4:1209:0:55:1 //Set instrument digit 7: \xE8 (KeyDown)
+4:1210:0:104:1 //Set instrument digit 8: 8 (PAVE NUM.) (KeyDown)
+4:1211:0:105:1 //Set instrument digit 9: 9 (PAVE NUM.) (KeyDown)
+4:1211:0:57:1 //Set instrument digit 9: \xE7 (KeyDown)
+
+//----( Pattern Context [bottom] - Vol Col (5) )------------
+5:1222:0:48:1 //Set volume digit 0: \xE0 (KeyDown)
+5:1222:0:96:1 //Set volume digit 0: 0 (PAVE NUM.) (KeyDown)
+5:1223:0:49:1 //Set volume digit 1: & (KeyDown)
+5:1223:0:97:1 //Set volume digit 1: 1 (PAVE NUM.) (KeyDown)
+5:1224:0:50:1 //Set volume digit 2: \xE9 (KeyDown)
+5:1224:0:98:1 //Set volume digit 2: 2 (PAVE NUM.) (KeyDown)
+5:1225:0:51:1 //Set volume digit 3: " (KeyDown)
+5:1225:0:99:1 //Set volume digit 3: 3 (PAVE NUM.) (KeyDown)
+5:1226:0:52:1 //Set volume digit 4: ' (KeyDown)
+5:1226:0:100:1 //Set volume digit 4: 4 (PAVE NUM.) (KeyDown)
+5:1227:0:53:1 //Set volume digit 5: ( (KeyDown)
+5:1227:0:101:1 //Set volume digit 5: 5 (PAVE NUM.) (KeyDown)
+5:1228:0:54:1 //Set volume digit 6: - (KeyDown)
+5:1228:0:102:1 //Set volume digit 6: 6 (PAVE NUM.) (KeyDown)
+5:1229:0:55:1 //Set volume digit 7: \xE8 (KeyDown)
+5:1229:0:103:1 //Set volume digit 7: 7 (PAVE NUM.) (KeyDown)
+5:1230:0:56:1 //Set volume digit 8: _ (KeyDown)
+5:1231:0:57:1 //Set volume digit 9: \xE7 (KeyDown)
+5:1231:0:105:1 //Set volume digit 9: 9 (PAVE NUM.) (KeyDown)
+5:1232:0:86:1 //Vol command - volume: V (KeyDown)
+5:1233:0:80:1 //Vol command - pan: P (KeyDown)
+5:1234:0:67:1 //Vol command - vol slide up: C (KeyDown)
+5:1235:0:68:1 //Vol command - vol slide down: D (KeyDown)
+5:1236:0:65:1 //Vol command - vol fine slide up: A (KeyDown)
+5:1237:0:66:1 //Vol command - vol fine slide down: B (KeyDown)
+5:1238:0:85:1 //Vol command - vibrato speed: U (KeyDown)
+5:1239:0:72:1 //Vol command - vibrato: H (KeyDown)
+5:1240:0:76:1 //Vol command - XM pan left: L (KeyDown)
+5:1241:0:82:1 //Vol command - XM pan right: R (KeyDown)
+5:1242:0:71:1 //Vol command - Portamento: G (KeyDown)
+5:1243:0:70:1 //Vol command - Portamento Up: F (KeyDown)
+5:1244:0:69:1 //Vol command - Portamento Down: E (KeyDown)
+5:1245:1:186:1 //Vol command - Velocity: Shift+$ (KeyDown)
+5:1246:0:79:1 //Vol command - Offset: O (KeyDown)
+
+//----( Pattern Context [bottom] - FX Col (6) )------------
+6:1294:0:220:1 //FX midi macro slide: * (KeyDown)
+6:1295:1:186:1 //FX pseudo-velocity (experimental): Shift+$ (KeyDown)
+6:1666:6:51:1 //FX parameter extension command: Ctrl+Alt+" (KeyDown)
+
+//----( Pattern Context [bottom] - Param Col (7) )------------
+7:1247:0:48:1 //FX Param digit 0: \xE0 (KeyDown)
+7:1247:0:96:1 //FX Param digit 0: 0 (PAVE NUM.) (KeyDown)
+7:1248:0:49:1 //FX Param digit 1: & (KeyDown)
+7:1248:0:97:1 //FX Param digit 1: 1 (PAVE NUM.) (KeyDown)
+7:1249:0:50:1 //FX Param digit 2: \xE9 (KeyDown)
+7:1249:0:98:1 //FX Param digit 2: 2 (PAVE NUM.) (KeyDown)
+7:1250:0:51:1 //FX Param digit 3: " (KeyDown)
+7:1250:0:99:1 //FX Param digit 3: 3 (PAVE NUM.) (KeyDown)
+7:1251:0:52:1 //FX Param digit 4: ' (KeyDown)
+7:1251:0:100:1 //FX Param digit 4: 4 (PAVE NUM.) (KeyDown)
+7:1252:0:53:1 //FX Param digit 5: ( (KeyDown)
+7:1252:0:101:1 //FX Param digit 5: 5 (PAVE NUM.) (KeyDown)
+7:1253:0:54:1 //FX Param digit 6: - (KeyDown)
+7:1253:0:102:1 //FX Param digit 6: 6 (PAVE NUM.) (KeyDown)
+7:1254:0:55:1 //FX Param digit 7: \xE8 (KeyDown)
+7:1254:0:103:1 //FX Param digit 7: 7 (PAVE NUM.) (KeyDown)
+7:1255:0:56:1 //FX Param digit 8: _ (KeyDown)
+7:1255:0:104:1 //FX Param digit 8: 8 (PAVE NUM.) (KeyDown)
+7:1256:0:57:1 //FX Param digit 9: \xE7 (KeyDown)
+7:1256:0:105:1 //FX Param digit 9: 9 (PAVE NUM.) (KeyDown)
+7:1257:0:65:1 //FX Param digit A: A (KeyDown)
+7:1258:0:66:1 //FX Param digit B: B (KeyDown)
+7:1259:0:67:1 //FX Param digit C: C (KeyDown)
+7:1260:0:68:1 //FX Param digit D: D (KeyDown)
+7:1261:0:69:1 //FX Param digit E: E (KeyDown)
+7:1262:0:70:1 //FX Param digit F: F (KeyDown)
+
+//----( Sample Context [bottom] (8) )------------
+8:1673:4:79:1 //Load a Sample: Alt+O (KeyDown)
+8:1674:4:83:1 //Save Sample: Alt+S (KeyDown)
+8:1675:4:78:1 //New Sample: Alt+N (KeyDown)
+8:1380:2:84:1 //Trim sample around loop points: Ctrl+T (KeyDown)
+8:1383:0:8:1 //Silence sample selection: RET.ARR (KeyDown)
+8:1385:3:65:1 //Amplify Sample: Shift+Ctrl+A (KeyDown)
+8:1381:3:82:1 //Reverse sample: Shift+Ctrl+R (KeyDown)
+8:1382:0:46:1 //Delete sample selection: SUPPR (KeyDown)
+8:1386:0:33:1 //Zoom Out: PG.PREC (KeyDown)
+8:1387:0:34:1 //Zoom In: PG.SUIV (KeyDown)
+8:1790:6:68:1 //Remove DC Offset: Ctrl+Alt+D (KeyDown)
+
+//----( Instrument Context [bottom] (9) )------------
+
+//----( Comments Context [bottom] (10) )------------
+
+//----( Unknown Context (11) )------------
+
+//----( Unknown Context (12) )------------
+
+//----( Plugin GUI Context (13) )------------
+13:1763:0:166:1 //Previous plugin preset: (KeyDown)
+13:1764:0:167:1 //Next plugin preset: (KeyDown)
+13:1782:2:166:1 //Plugin preset backward jump: Ctrl+ (KeyDown)
+13:1783:2:167:1 //Plugin preset forward jump: Ctrl+ (KeyDown)
+13:1765:6:82:1 //Randomize plugin parameters: Ctrl+Alt+R (KeyDown)
+
+//----( General Context [top] (14) )------------
+
+//----( Pattern Context [top] (15) )------------
+
+//----( Sample Context [top] (16) )------------
+
+//----( Instrument Context [top] (17) )------------
+
+//----( Comments Context [top] (18) )------------
+
+//----( Orderlist (19) )------------
+19:1802:0:46:5 //Delete Order: SUPPR (KeyDown|KeyHold)
+19:1803:0:45:5 //Insert Order: INS (KeyDown|KeyHold)
+19:1804:0:13:5 //Edit Pattern: ENTREE (KeyDown|KeyHold)
+19:1805:0:9:5 //Switch to pattern editor: TAB (KeyDown|KeyHold)
+19:1794:0:37:5 //Previous Order: GAUCHE (KeyDown|KeyHold)
+19:1795:0:39:5 //Next Order: DROITE (KeyDown|KeyHold)
+19:1796:0:36:5 //First Order: ORIGINE (KeyDown|KeyHold)
+19:1797:0:35:5 //Last Order: FIN (KeyDown|KeyHold)
+19:1807:0:48:5 //Pattern index digit 0: \xE0 (KeyDown|KeyHold)
+19:1807:0:96:5 //Pattern index digit 0: 0 (PAVE NUM.) (KeyDown|KeyHold)
+19:1808:0:49:5 //Pattern index digit 1: & (KeyDown|KeyHold)
+19:1808:0:97:5 //Pattern index digit 1: 1 (PAVE NUM.) (KeyDown|KeyHold)
+19:1809:0:50:5 //Pattern index digit 2: \xE9 (KeyDown|KeyHold)
+19:1809:0:98:5 //Pattern index digit 2: 2 (PAVE NUM.) (KeyDown|KeyHold)
+19:1810:0:51:5 //Pattern index digit 3: " (KeyDown|KeyHold)
+19:1810:0:99:5 //Pattern index digit 3: 3 (PAVE NUM.) (KeyDown|KeyHold)
+19:1811:0:52:5 //Pattern index digit 4: ' (KeyDown|KeyHold)
+19:1811:0:100:5 //Pattern index digit 4: 4 (PAVE NUM.) (KeyDown|KeyHold)
+19:1812:0:53:5 //Pattern index digit 5: ( (KeyDown|KeyHold)
+19:1812:0:101:5 //Pattern index digit 5: 5 (PAVE NUM.) (KeyDown|KeyHold)
+19:1813:0:54:5 //Pattern index digit 6: - (KeyDown|KeyHold)
+19:1813:0:102:5 //Pattern index digit 6: 6 (PAVE NUM.) (KeyDown|KeyHold)
+19:1814:0:55:5 //Pattern index digit 7: \xE8 (KeyDown|KeyHold)
+19:1814:0:103:5 //Pattern index digit 7: 7 (PAVE NUM.) (KeyDown|KeyHold)
+19:1815:0:56:5 //Pattern index digit 8: _ (KeyDown|KeyHold)
+19:1815:0:104:5 //Pattern index digit 8: 8 (PAVE NUM.) (KeyDown|KeyHold)
+19:1816:0:57:5 //Pattern index digit 9: \xE7 (KeyDown|KeyHold)
+19:1816:0:105:5 //Pattern index digit 9: 9 (PAVE NUM.) (KeyDown|KeyHold)
+19:1817:0:38:5 //Increase pattern index : HAUT (KeyDown|KeyHold)
+19:1817:0:187:5 //Increase pattern index : = (KeyDown|KeyHold)
+19:1818:0:40:5 //Decrease pattern index: BAS (KeyDown|KeyHold)
+19:1818:0:189:5 //Decrease pattern index: (KeyDown|KeyHold)
Added: trunk/OpenMPT/packageTemplate/extraKeymaps/NO_mpt_classic_(rakib).mkb
===================================================================
--- trunk/OpenMPT/packageTemplate/extraKeymaps/NO_mpt_classic_(rakib).mkb (rev 0)
+++ trunk/OpenMPT/packageTemplate/extraKeymaps/NO_mpt_classic_(rakib).mkb 2009-12-04 19:30:31 UTC (rev 432)
@@ -0,0 +1,325 @@
+//-------- OpenMPT key binding definition file -------
+//-Format is: -
+//- Context:Command ID:Modifiers:Key:KeypressEventType //Comments -
+//----------------------------------------------------------------------
+version:1
+
+//----( Global Context (0) )------------
+0:1347:2:78:1 //File/New: Ctrl+N (KeyDown)
+0:1346:2:79:1 //File/Open: Ctrl+O (KeyDown)
+0:1349:2:83:1 //File/Save: Ctrl+S (KeyDown)
+0:1350:3:83:1 //File/Save As: Shift+Ctrl+S (KeyDown)
+0:1351:3:87:1 //File/Save as Wave: Shift+Ctrl+W (KeyDown)
+0:1693:3:9:1 //Previous Document: Shift+Ctrl+TAB (KeyDown)
+0:1030:0:116:1 //Play song/Pause song: F5 (KeyDown)
+0:1031:0:119:1 //Pause song: F8 (KeyDown)
+0:1375:0:27:1 //Stop Song: ESC (KeyDown)
+0:1029:0:117:1 //Play song from start: F6 (KeyDown)
+0:1027:0:118:5 //Play pattern from start: F7 (KeyDown|KeyHold)
+0:1026:2:118:5 //Play pattern from cursor: Ctrl+F7 (KeyDown|KeyHold)
+0:1374:3:84:1 //Estimate Song Length: Shift+Ctrl+T (KeyDown)
+0:1376:0:120:1 //Toggle Midi Record: F9 (KeyDown)
+0:1359:2:90:1 //Undo: Ctrl+Z (KeyDown)
+0:1360:2:88:1 //Cut: Ctrl+X (KeyDown)
+0:1361:2:67:1 //Copy: Ctrl+C (KeyDown)
+0:1362:2:86:1 //Paste: Ctrl+V (KeyDown)
+0:1362:1:45:1 //Paste: Shift+INS (KeyDown)
+0:1364:2:53:1 //SelectAll: Ctrl+5 (KeyDown)
+0:1365:2:70:1 //Find: Ctrl+F (KeyDown)
+0:1366:0:114:1 //Find Next: F3 (KeyDown)
+0:1021:4:71:1 //View General: Alt+G (KeyDown)
+0:1022:4:80:1 //View Pattern: Alt+P (KeyDown)
+0:1023:4:83:1 //View Samples: Alt+S (KeyDown)
+0:1024:4:78:1 //View Instruments: Alt+N (KeyDown)
+0:1025:1:120:1 //View Comments: Shift+F9 (KeyDown)
+0:1368:2:113:1 //Toggle Tree View: Ctrl+F2 (KeyDown)
+0:1369:2:112:1 //View Options: Ctrl+F1 (KeyDown)
+0:1370:0:112:1 //Help (to do): F1 (KeyDown)
+0:1032:2:111:5 //Previous instrument: Ctrl+NUM/ (KeyDown|KeyHold)
+0:1032:2:38:5 //Previous instrument: Ctrl+PIL OPP (KeyDown|KeyHold)
+0:1033:2:106:5 //Next instrument: Ctrl+NUM* (KeyDown|KeyHold)
+0:1033:2:40:5 //Next instrument: Ctrl+PIL NED (KeyDown|KeyHold)
+0:1036:0:111:1 //Previous octave: NUM/ (KeyDown)
+0:1037:0:106:1 //Next octave: NUM* (KeyDown)
+0:1034:2:37:5 //Previous order: Ctrl+PIL VENSTRE (KeyDown|KeyHold)
+0:1035:2:39:5 //Next order: Ctrl+PIL H\xD8YRE (KeyDown|KeyHold)
+
+//----( General Context [bottom] (1) )------------
+
+//----( Pattern Context [bottom] (2) )------------
+2:1017:0:34:5 //Jump down by measure: PGDN (KeyDown|KeyHold)
+2:1018:0:33:5 //Jump up by measure: PGUP (KeyDown|KeyHold)
+2:1338:4:34:5 //Jump down by beat: Alt+PGDN (KeyDown|KeyHold)
+2:1339:4:33:5 //Jump up by beat: Alt+PGUP (KeyDown|KeyHold)
+2:1340:6:34:5 //Snap down to beat: Ctrl+Alt+PGDN (KeyDown|KeyHold)
+2:1341:6:33:5 //Snap up to beat: Ctrl+Alt+PGUP (KeyDown|KeyHold)
+2:1038:0:40:5 //Navigate down by 1 row: PIL NED (KeyDown|KeyHold)
+2:1039:0:38:5 //Navigate up by 1 row: PIL OPP (KeyDown|KeyHold)
+2:1691:4:40:5 //Navigate down by spacing: Alt+PIL NED (KeyDown|KeyHold)
+2:1692:4:38:5 //Navigate up by spacing: Alt+PIL OPP (KeyDown|KeyHold)
+2:1040:0:37:5 //Navigate left: PIL VENSTRE (KeyDown|KeyHold)
+2:1041:0:39:5 //Navigate right: PIL H\xD8YRE (KeyDown|KeyHold)
+2:1042:0:9:5 //Navigate to next channel: TAB (KeyDown|KeyHold)
+2:1043:1:9:5 //Navigate to previous channel: Shift+TAB (KeyDown|KeyHold)
+2:1044:0:36:1 //Go to first channel: HOME (KeyDown)
+2:1045:2:36:1 //Go to first row: Ctrl+HOME (KeyDown)
+2:1046:6:36:1 //Go to first row of first channel: Ctrl+Alt+HOME (KeyDown)
+2:1047:0:35:1 //Go to last channel: END (KeyDown)
+2:1048:2:35:1 //Go to last row: Ctrl+END (KeyDown)
+2:1049:6:35:1 //Go to last row of last channel: Ctrl+Alt+END (KeyDown)
+2:1050:1:16:1 //Selection key: Shift+SKIFT (KeyDown)
+2:1051:2:17:1 //Copy select key: Ctrl (KeyDown)
+2:1011:2:65:1 //Select channel / Select all: Ctrl+A (KeyDown)
+2:1663:0:122:1 //Toggle follow song: F11 (KeyDown)
+2:1003:0:13:5 //Quick copy: ENTER (KeyDown|KeyHold)
+2:1004:0:32:5 //Quick paste: MELLOMROM (KeyDown|KeyHold)
+2:1001:2:32:1 //Enable recording: Ctrl+MELLOMROM (KeyDown)
+2:1002:2:13:5 //Play row: Ctrl+ENTER (KeyDown|KeyHold)
+2:1317:4:18:1 //Set row jump on note entry: Alt (KeyDown)
+2:1685:2:9:1 //Switch to order list: Ctrl+TAB (KeyDown)
+2:1806:2:68:1 //Duplicate pattern: Ctrl+D (KeyDown)
+2:1662:6:80:1 //Toggle channel's plugin editor: Ctrl+Alt+P (KeyDown)
+2:1062:0:93:1 //Show note properties: Program (KeyDown)
+2:1005:0:121:5 //Mute current channel: F10 (KeyDown|KeyHold)
+2:1006:2:121:5 //Solo current channel: Ctrl+F10 (KeyDown|KeyHold)
+2:1007:2:81:5 //Transpose +1: Ctrl+Q (KeyDown|KeyHold)
+2:1009:3:81:5 //Transpose +12: Shift+Ctrl+Q (KeyDown|KeyHold)
+2:1010:3:65:5 //Transpose -12: Shift+Ctrl+A (KeyDown|KeyHold)
+2:1012:2:77:1 //Amplify selection: Ctrl+M (KeyDown)
+2:1014:2:74:1 //Interpolate volume: Ctrl+J (KeyDown)
+2:1015:2:75:1 //Interpolate effect: Ctrl+K (KeyDown)
+2:1016:4:66:1 //Open effect visualizer: Alt+B (KeyDown)
+2:1766:2:71:1 //Go to row/channel/...: Ctrl+G (KeyDown)
+2:1013:2:73:1 //Apply current instrument: Ctrl+I (KeyDown)
+2:1660:4:69:5 //Grow selection: Alt+E (KeyDown|KeyHold)
+2:1661:4:68:5 //Shrink selection: Alt+D (KeyDown|KeyHold)
+2:1058:0:46:1 //Clear field: DEL (KeyDown)
+2:1664:1:190:1 //Clear field (IT Style): Shift+. (KeyDown)
+2:1059:2:46:1 //Clear row and step: Ctrl+DEL (KeyDown)
+2:1665:1:46:5 //Clear field and step (IT Style): Shift+DEL (KeyDown|KeyHold)
+2:1061:0:8:5 //Delete rows: TILBAKE (KeyDown|KeyHold)
+2:1377:2:8:5 //Delete all rows: Ctrl+TILBAKE (KeyDown|KeyHold)
+2:1378:0:45:1 //Insert Row: INS (KeyDown)
+2:1379:2:45:1 //Insert All Rows: Ctrl+INS (KeyDown)
+2:1055:0:109:5 //Previous pattern: NUM MINUS (KeyDown|KeyHold)
+2:1054:0:107:5 //Next pattern: NUM PLUSS (KeyDown|KeyHold)
+
+//----( Pattern Context [bottom] - Note Col (3) )------------
+3:1064:0:81:1 //Base octave C: Q (KeyDown)
+3:1065:0:87:1 //Base octave C#: W (KeyDown)
+3:1066:0:69:1 //Base octave D: E (KeyDown)
+3:1067:0:82:1 //Base octave D#: R (KeyDown)
+3:1068:0:84:1 //Base octave E: T (KeyDown)
+3:1069:0:89:1 //Base octave F: Y (KeyDown)
+3:1070:0:85:1 //Base octave F#: U (KeyDown)
+3:1071:0:73:1 //Base octave G: I (KeyDown)
+3:1072:0:79:1 //Base octave G#: O (KeyDown)
+3:1074:0:221:1 //Base octave A#: \xE5 (KeyDown)
+3:1075:0:186:1 //Base octave B: T\xD8DLER (KeyDown)
+3:1076:0:65:1 //Base octave +1 C: A (KeyDown)
+3:1077:0:83:1 //Base octave +1 C#: S (KeyDown)
+3:1078:0:68:1 //Base octave +1 D: D (KeyDown)
+3:1079:0:70:1 //Base octave +1 D#: F (KeyDown)
+3:1080:0:71:1 //Base octave +1 E: G (KeyDown)
+3:1081:0:72:1 //Base octave +1 F: H (KeyDown)
+3:1082:0:74:1 //Base octave +1 F#: J (KeyDown)
+3:1083:0:75:1 //Base octave +1 G: K (KeyDown)
+3:1084:0:76:1 //Base octave +1 G#: L (KeyDown)
+3:1085:0:192:1 //Base octave +1 A: \xF8 (KeyDown)
+3:1086:0:222:1 //Base octave +1 A#: \xE6 (KeyDown)
+3:1087:0:191:1 //Base octave +1 B: ' (KeyDown)
+3:1088:0:90:1 //Base octave +2 C: Z (KeyDown)
+3:1089:0:88:1 //Base octave +2 C#: X (KeyDown)
+3:1090:0:67:1 //Base octave +2 D: C (KeyDown)
+3:1091:0:86:1 //Base octave +2 D#: V (KeyDown)
+3:1092:0:66:1 //Base octave +2 E: B (KeyDown)
+3:1093:0:78:1 //Base octave +2 F: N (KeyDown)
+3:1094:0:77:1 //Base octave +2 F#: M (KeyDown)
+3:1095:0:188:1 //Base octave +2 G: , (KeyDown)
+3:1096:0:190:1 //Base octave +2 G#: . (KeyDown)
+3:1212:0:48:1 //Set octave 0: 0 (KeyDown)
+3:1212:0:96:1 //Set octave 0: NUM 0 (KeyDown)
+3:1213:0:49:1 //Set octave 1: 1 (KeyDown)
+3:1213:0:97:1 //Set octave 1: NUM 1 (KeyDown)
+3:1214:0:50:1 //Set octave 2: 2 (KeyDown)
+3:1214:0:98:1 //Set octave 2: NUM 2 (KeyDown)
+3:1215:0:51:1 //Set octave 3: 3 (KeyDown)
+3:1215:0:99:1 //Set octave 3: NUM 3 (KeyDown)
+3:1216:0:52:1 //Set octave 4: 4 (KeyDown)
+3:1216:0:100:1 //Set octave 4: NUM 4 (KeyDown)
+3:1217:0:53:1 //Set octave 5: 5 (KeyDown)
+3:1217:0:101:1 //Set octave 5: NUM 5 (KeyDown)
+3:1218:0:54:1 //Set octave 6: 6 (KeyDown)
+3:1218:0:102:1 //Set octave 6: NUM 6 (KeyDown)
+3:1219:0:55:1 //Set octave 7: 7 (KeyDown)
+3:1219:0:103:1 //Set octave 7: NUM 7 (KeyDown)
+3:1220:0:56:1 //Set octave 8: 8 (KeyDown)
+3:1220:0:104:1 //Set octave 8: NUM 8 (KeyDown)
+3:1221:0:57:1 //Set octave 9: 9 (KeyDown)
+3:1221:0:105:1 //Set octave 9: NUM 9 (KeyDown)
+3:1316:1:16:1 //Chord Modifier: Shift+SKIFT (KeyDown)
+3:1667:0:219:1 //Note Cut (don't remember instrument): \ (KeyDown)
+3:1668:0:187:1 //Note Off (don't remember instrument): + (KeyDown)
+3:1792:0:226:1 //Note Fade (don't remember instrument): < (KeyDown)
+
+//----( Pattern Context [bottom] - Ins Col (4) )------------
+4:1202:0:96:1 //Set instrument digit 0: NUM 0 (KeyDown)
+4:1202:0:48:1 //Set instrument digit 0: 0 (KeyDown)
+4:1203:0:97:1 //Set instrument digit 1: NUM 1 (KeyDown)
+4:1203:0:49:1 //Set instrument digit 1: 1 (KeyDown)
+4:1204:0:98:1 //Set instrument digit 2: NUM 2 (KeyDown)
+4:1204:0:50:1 //Set instrument digit 2: 2 (KeyDown)
+4:1205:0:99:1 //Set instrument digit 3: NUM 3 (KeyDown)
+4:1205:0:51:1 //Set instrument digit 3: 3 (KeyDown)
+4:1206:0:100:1 //Set instrument digit 4: NUM 4 (KeyDown)
+4:1206:0:52:1 //Set instrument digit 4: 4 (KeyDown)
+4:1207:0:101:1 //Set instrument digit 5: NUM 5 (KeyDown)
+4:1207:0:53:1 //Set instrument digit 5: 5 (KeyDown)
+4:1208:0:102:1 //Set instrument digit 6: NUM 6 (KeyDown)
+4:1208:0:54:1 //Set instrument digit 6: 6 (KeyDown)
+4:1209:0:103:1 //Set instrument digit 7: NUM 7 (KeyDown)
+4:1209:0:55:1 //Set instrument digit 7: 7 (KeyDown)
+4:1210:0:56:1 //Set instrument digit 8: 8 (KeyDown)
+4:1211:0:105:1 //Set instrument digit 9: NUM 9 (KeyDown)
+4:1211:0:57:1 //Set instrument digit 9: 9 (KeyDown)
+
+//----( Pattern Context [bottom] - Vol Col (5) )------------
+5:1222:0:48:1 //Set volume digit 0: 0 (KeyDown)
+5:1222:0:96:1 //Set volume digit 0: NUM 0 (KeyDown)
+5:1223:0:49:1 //Set volume digit 1: 1 (KeyDown)
+5:1223:0:97:1 //Set volume digit 1: NUM 1 (KeyDown)
+5:1224:0:50:1 //Set volume digit 2: 2 (KeyDown)
+5:1224:0:98:1 //Set volume digit 2: NUM 2 (KeyDown)
+5:1225:0:51:1 //Set volume digit 3: 3 (KeyDown)
+5:1225:0:99:1 //Set volume digit 3: NUM 3 (KeyDown)
+5:1226:0:52:1 //Set volume digit 4: 4 (KeyDown)
+5:1226:0:100:1 //Set volume digit 4: NUM 4 (KeyDown)
+5:1227:0:53:1 //Set volume digit 5: 5 (KeyDown...
[truncated message content] |
|
From: <sag...@us...> - 2009-12-01 18:44:03
|
Revision: 431
http://modplug.svn.sourceforge.net/modplug/?rev=431&view=rev
Author: saga-games
Date: 2009-12-01 18:43:53 +0000 (Tue, 01 Dec 2009)
Log Message:
-----------
[Fix] IT/MPTM Loader: I'm stupid. Maybe it will work this time.
Modified Paths:
--------------
trunk/OpenMPT/soundlib/Load_it.cpp
Modified: trunk/OpenMPT/soundlib/Load_it.cpp
===================================================================
--- trunk/OpenMPT/soundlib/Load_it.cpp 2009-11-30 22:11:46 UTC (rev 430)
+++ trunk/OpenMPT/soundlib/Load_it.cpp 2009-12-01 18:43:53 UTC (rev 431)
@@ -1209,7 +1209,7 @@
// In order to properly compute the position, in file, of eventual extended settings
// such as "attack" we need to keep the "real" size of the last sample as those extra
// setting will follow this sample in the file
- UINT lastSampleOffset = 0;
+ UINT lastSampleOffset = smppos[pifh->smpnum - 1] + sizeof(ITSAMPLESTRUCT);
// -! NEW_FEATURE#0027
// Reading Samples
@@ -1217,7 +1217,6 @@
for (UINT nsmp=0; nsmp<pifh->smpnum; nsmp++) if ((smppos[nsmp]) && (smppos[nsmp] <= dwMemLength - sizeof(ITSAMPLESTRUCT)))
{
ITSAMPLESTRUCT *pis = (ITSAMPLESTRUCT *)(lpStream+smppos[nsmp]);
- lastSampleOffset = smppos[nsmp] + sizeof(ITSAMPLESTRUCT);
if (pis->id == 0x53504D49)
{
MODSAMPLE *pSmp = &Samples[nsmp+1];
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <sag...@us...> - 2009-11-30 22:12:04
|
Revision: 430
http://modplug.svn.sourceforge.net/modplug/?rev=430&view=rev
Author: saga-games
Date: 2009-11-30 22:11:46 +0000 (Mon, 30 Nov 2009)
Log Message:
-----------
[Fix] IT/MPTM Loader: The MPT extensions should now also be loaded again if a file only contains empty sample slots. It still does not work with no sample slots in theory, but modplug created at least one slot when saving so everything should be fine for now.
[Mod] Using MS Shell Dlg font instead of MS Sans Serif in resource file
Modified Paths:
--------------
trunk/OpenMPT/mptrack/mptrack.rc
trunk/OpenMPT/soundlib/Load_it.cpp
Modified: trunk/OpenMPT/mptrack/mptrack.rc
===================================================================
--- trunk/OpenMPT/mptrack/mptrack.rc 2009-11-28 20:25:33 UTC (rev 429)
+++ trunk/OpenMPT/mptrack/mptrack.rc 2009-11-30 22:11:46 UTC (rev 430)
@@ -137,7 +137,7 @@
IDD_ABOUTBOX DIALOGEX 0, 0, 267, 254
STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "About ModPlug Tracker"
-FONT 8, "MS Sans Serif", 0, 0, 0x1
+FONT 8, "MS Shell Dlg", 0, 0, 0x1
BEGIN
CONTROL "",IDC_BITMAP1,"Static",SS_BLACKRECT | SS_NOTIFY | SS_CENTERIMAGE,5,3,256,81,WS_EX_CLIENTEDGE
CTEXT "",IDC_CREDITS,5,116,256,72,0,WS_EX_STATICEDGE
@@ -150,7 +150,7 @@
IDD_OPTIONS_PLAYER DIALOGEX 0, 0, 272, 279
STYLE DS_SETFONT | DS_3DLOOK | WS_CHILD | WS_DISABLED | WS_CAPTION
CAPTION "Player"
-FONT 8, "MS Sans Serif", 0, 0, 0x0
+FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
GROUPBOX "Control",IDC_STATIC,6,6,257,150
CONTROL "Automatic Gain Control",IDC_CHECK2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,20,97,10
@@ -196,7 +196,7 @@
IDD_WAVECONVERT DIALOGEX 0, 0, 262, 197
STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Wave Convert"
-FONT 8, "MS Sans Serif", 0, 0, 0x0
+FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
DEFPUSHBUTTON "OK",IDOK,204,12,50,14
PUSHBUTTON "Cancel",IDCANCEL,204,30,50,14
@@ -225,7 +225,7 @@
IDD_PROGRESS DIALOG 0, 0, 186, 55
STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Saving Wave File"
-FONT 8, "MS Sans Serif"
+FONT 8, "MS Shell Dlg"
BEGIN
PUSHBUTTON "Stop",IDCANCEL,68,34,50,14
CONTROL "Progress1",IDC_PROGRESS1,"msctls_progress32",WS_BORDER,4,19,178,12
@@ -235,7 +235,7 @@
IDD_OPTIONS_KEYBOARD DIALOGEX 0, 0, 272, 279
STYLE DS_SETFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
CAPTION "Keyboard"
-FONT 8, "MS Sans Serif", 0, 0, 0x0
+FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
COMBOBOX IDC_KEYCATEGORY,5,16,130,204,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
LISTBOX IDC_COMMAND_LIST,5,32,130,242,LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP
@@ -274,7 +274,7 @@
IDD_OPTIONS_COLORS DIALOGEX 0, 0, 272, 281
STYLE DS_SETFONT | DS_3DLOOK | WS_CHILD | WS_DISABLED | WS_CAPTION
CAPTION "Colours"
-FONT 8, "MS Sans Serif", 0, 0, 0x0
+FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
COMBOBOX IDC_COMBO1,15,25,134,109,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
CONTROL "Primary highlight",IDC_CHECK1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,30,91,74,10
@@ -308,7 +308,7 @@
IDD_OPTIONS_MIDI DIALOGEX 0, 0, 272, 281
STYLE DS_SETFONT | DS_3DLOOK | WS_CHILD | WS_DISABLED | WS_CAPTION
CAPTION "MIDI"
-FONT 8, "MS Sans Serif", 0, 0, 0x0
+FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
GROUPBOX "MIDI Recording",IDC_STATIC,5,5,260,200
LTEXT "MIDI Input Device:",IDC_STATIC,15,20,67,8
@@ -342,7 +342,7 @@
IDD_LOADRAWSAMPLE DIALOGEX 0, 0, 178, 89
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Unknown file type"
-FONT 8, "MS Sans Serif", 0, 0, 0x0
+FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
DEFPUSHBUTTON "OK",IDOK,66,66,50,14
PUSHBUTTON "Cancel",IDCANCEL,120,66,50,14
@@ -360,7 +360,7 @@
IDD_CONTROL_GLOBALS DIALOGEX 0, 0, 561, 94
STYLE DS_SETFONT | WS_CHILD
-FONT 8, "MS Sans Serif", 0, 0, 0x1
+FONT 8, "MS Shell Dlg", 0, 0, 0x1
BEGIN
EDITTEXT IDC_EDIT_SONGTITLE,2,3,167,12,ES_AUTOHSCROLL
CTEXT "Type EXT, ## channels",IDC_EDIT_MODTYPE,173,3,149,12,SS_CENTERIMAGE,WS_EX_STATICEDGE
@@ -406,7 +406,7 @@
IDD_CONTROL_COMMENTS DIALOGEX 0, 0, 435, 119
STYLE DS_SETFONT | WS_CHILD
-FONT 8, "MS Sans Serif", 0, 0, 0x1
+FONT 8, "MS Shell Dlg", 0, 0, 0x1
BEGIN
EDITTEXT IDC_EDIT_COMMENTS,4,11,426,104,ES_MULTILINE | ES_WANTRETURN | NOT WS_BORDER | WS_VSCROLL | NOT WS_TABSTOP,WS_EX_STATICEDGE
LTEXT "Song Message:",IDC_STATIC,4,2,76,8
@@ -414,7 +414,7 @@
IDD_CONTROL_PATTERNS DIALOGEX 0, 0, 585, 114
STYLE DS_SETFONT | WS_CHILD
-FONT 8, "MS Sans Serif", 0, 0, 0x1
+FONT 8, "MS Shell Dlg", 0, 0, 0x1
BEGIN
CONTROL "Follow Song",IDC_PATTERN_FOLLOWSONG,"Button",BS_AUTOCHECKBOX | BS_FLAT,321,31,55,10
COMBOBOX IDC_COMBO_INSTRUMENT,19,61,96,137,CBS_DROPDOWNLIST | WS_VSCROLL
@@ -451,7 +451,7 @@
IDD_CONTROL_SAMPLES DIALOGEX 0, 0, 544, 106
STYLE DS_SETFONT | WS_CHILD
-FONT 8, "MS Sans Serif", 0, 0, 0x1
+FONT 8, "MS Shell Dlg", 0, 0, 0x1
BEGIN
CONTROL "Toolbar1",IDC_TOOLBAR1,"ToolbarWindow32",WS_GROUP | 0x4d,4,4,55,17
EDITTEXT IDC_EDIT_SAMPLE,90,6,35,12,ES_AUTOHSCROLL | ES_NUMBER
@@ -527,7 +527,7 @@
IDD_CONTROL_INSTRUMENTS DIALOGEX 0, 0, 558, 173
STYLE DS_SETFONT | WS_CHILD
-FONT 8, "MS Sans Serif", 0, 0, 0x0
+FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
EDITTEXT IDC_EDIT_INSTRUMENT,87,7,29,12,ES_AUTOHSCROLL | ES_NUMBER
CONTROL "Spin1",IDC_SPIN_INSTRUMENT,"msctls_updown32",UDS_WRAP | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_NOTHOUSANDS | WS_TABSTOP,111,8,11,11
@@ -611,7 +611,7 @@
IDD_MODDOC_MODTYPE DIALOGEX 0, 0, 262, 317
STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Song Properties"
-FONT 8, "MS Sans Serif", 0, 0, 0x0
+FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
DEFPUSHBUTTON "OK",IDOK,204,6,50,14
PUSHBUTTON "Cancel",IDCANCEL,204,24,50,14
@@ -649,7 +649,7 @@
IDD_SHOWLOG DIALOG 0, 0, 300, 106
STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | DS_CONTEXTHELP | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Information"
-FONT 8, "MS Sans Serif"
+FONT 8, "MS Shell Dlg"
BEGIN
DEFPUSHBUTTON "OK",IDOK,246,7,50,14
PUSHBUTTON "Cancel",IDCANCEL,246,24,50,14
@@ -659,7 +659,7 @@
IDD_REMOVECHANNELS DIALOGEX 0, 0, 171, 220
STYLE DS_SETFONT | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
CAPTION "Remove Channels"
-FONT 8, "MS Sans Serif", 0, 0, 0x0
+FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
DEFPUSHBUTTON "OK",IDOK,54,198,50,14
PUSHBUTTON "Cancel",IDCANCEL,114,198,50,14
@@ -670,7 +670,7 @@
IDD_VIEW_GLOBALS DIALOGEX 0, 0, 471, 337
STYLE DS_SETFONT | DS_3DLOOK | WS_CHILD
-FONT 8, "MS Sans Serif", 0, 0, 0x1
+FONT 8, "MS Shell Dlg", 0, 0, 0x1
BEGIN
GROUPBOX "Channel 1",IDC_TEXT1,5,18,99,157
EDITTEXT IDC_EDIT9,10,30,89,12,ES_AUTOHSCROLL
@@ -770,7 +770,7 @@
IDD_EDIT_FIND DIALOGEX 0, 0, 182, 145
STYLE DS_SETFONT | WS_CHILD | WS_CAPTION
CAPTION "Find"
-FONT 8, "MS Sans Serif", 0, 0, 0x0
+FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
GROUPBOX "Search for:",IDC_STATIC,4,4,174,107
CONTROL "Note",IDC_CHECK1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,17,31,10
@@ -796,7 +796,7 @@
IDD_EDIT_REPLACE DIALOGEX 0, 0, 182, 145
STYLE DS_SETFONT | WS_CHILD | WS_CAPTION
CAPTION "Replace"
-FONT 8, "MS Sans Serif", 0, 0, 0x0
+FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
GROUPBOX "",IDC_STATIC,4,4,174,137
CONTROL "Replace By:",IDC_CHECK7,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,15,63,10
@@ -819,7 +819,7 @@
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
EXSTYLE WS_EX_TOOLWINDOW
CAPTION "Pattern properties"
-FONT 8, "MS Sans Serif", 0, 0, 0x1
+FONT 8, "MS Shell Dlg", 0, 0, 0x1
BEGIN
LTEXT "Rows:",IDC_STATIC,10,10,21,8
COMBOBOX IDC_COMBO1,12,19,48,93,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP
@@ -834,14 +834,14 @@
STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
EXSTYLE WS_EX_TOOLWINDOW
CAPTION "Note Properties"
-FONT 8, "MS Sans Serif", 0, 0, 0x1
+FONT 8, "MS Shell Dlg", 0, 0, 0x1
BEGIN
END
IDD_PAGEEDITNOTE DIALOG 0, 0, 220, 34
STYLE DS_SETFONT | DS_CONTROL | WS_CHILD | WS_VISIBLE | WS_CAPTION
CAPTION "Note"
-FONT 8, "MS Sans Serif"
+FONT 8, "MS Shell Dlg"
BEGIN
LTEXT "Note:",IDC_STATIC,4,4,18,8
LTEXT "Instrument:",IDC_STATIC,74,5,91,8
@@ -852,7 +852,7 @@
IDD_PAGEEDITVOLUME DIALOG 0, 0, 220, 34
STYLE DS_SETFONT | DS_SETFOREGROUND | WS_CHILD | WS_VISIBLE | WS_CAPTION
CAPTION "Volume"
-FONT 8, "MS Sans Serif"
+FONT 8, "MS Shell Dlg"
BEGIN
LTEXT "Volume Command:",IDC_STATIC,4,4,71,8
LTEXT "Value:",IDC_STATIC,114,4,91,8
@@ -863,7 +863,7 @@
IDD_PAGEEDITEFFECT DIALOGEX 0, 0, 220, 35
STYLE DS_SETFONT | WS_CHILD | WS_CAPTION
CAPTION "Effect"
-FONT 8, "MS Sans Serif", 0, 0, 0x0
+FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
COMBOBOX IDC_COMBO1,0,15,102,83,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
CONTROL "Slider1",IDC_SLIDER1,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,104,15,114,12
@@ -878,7 +878,7 @@
IDD_SAMPLE_AMPLIFY DIALOGEX 0, 0, 175, 71
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Amplify"
-FONT 8, "MS Sans Serif", 0, 0, 0x0
+FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
LTEXT "Amplify by",IDC_STATIC,13,19,37,8
EDITTEXT IDC_EDIT1,54,16,40,14,ES_AUTOHSCROLL
@@ -894,7 +894,7 @@
IDD_SETUP_EQ DIALOGEX 0, 0, 240, 202
STYLE DS_SETFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
CAPTION "Equalizer"
-FONT 8, "MS Sans Serif", 0, 0, 0x0
+FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
GROUPBOX "",IDC_STATIC,4,3,232,150
LTEXT "+12dB",IDC_STATIC,9,28,22,8
@@ -931,7 +931,7 @@
IDD_OPTIONS_AUTHOR DIALOGEX 0, 0, 214, 151
STYLE DS_SETFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
CAPTION "Identification"
-FONT 8, "MS Sans Serif", 0, 0, 0x0
+FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
GROUPBOX "Author Information",IDC_STATIC,6,6,202,66
LTEXT "Name:",IDC_STATIC,12,20,25,8
@@ -952,7 +952,7 @@
IDD_SOUNDBANK_INFO DIALOGEX 0, 0, 271, 167
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Sound Bank Information"
-FONT 8, "MS Sans Serif", 0, 0, 0x1
+FONT 8, "MS Shell Dlg", 0, 0, 0x1
BEGIN
DEFPUSHBUTTON "Close",IDOK,109,149,50,14
EDITTEXT IDC_EDIT1,7,7,257,138,ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_STATICEDGE
@@ -961,7 +961,7 @@
IDD_OPTIONS_GENERAL DIALOGEX 0, 0, 272, 279
STYLE DS_SETFONT | DS_3DLOOK | WS_CHILD | WS_DISABLED | WS_CAPTION
CAPTION "General"
-FONT 8, "MS Sans Serif", 0, 0, 0x0
+FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
GROUPBOX "Default Directories",IDC_STATIC,6,6,261,102
RTEXT "Songs:",IDC_STATIC_MODDIR,12,18,48,12,SS_CENTERIMAGE
@@ -987,7 +987,7 @@
IDD_OPTIONS_SOUNDCARD DIALOGEX 0, 0, 272, 276
STYLE DS_SETFONT | DS_3DLOOK | WS_CHILD | WS_DISABLED | WS_CAPTION
CAPTION "Sound Card"
-FONT 8, "MS Sans Serif", 0, 0, 0x0
+FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
LTEXT "Sound Device:",IDC_STATIC,11,14,79,8
CONTROL "",IDC_COMBO1,"ComboBoxEx32",CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP,11,25,219,96
@@ -1017,7 +1017,7 @@
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
EXSTYLE WS_EX_TOOLWINDOW
CAPTION "Zxx Macros Configuration"
-FONT 8, "MS Sans Serif", 0, 0, 0x0
+FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
DEFPUSHBUTTON "OK",IDOK,300,6,50,14
PUSHBUTTON "Cancel",IDCANCEL,300,24,50,14
@@ -1050,7 +1050,7 @@
IDD_CHORDEDIT DIALOGEX 0, 0, 245, 148
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Chord Editor"
-FONT 8, "MS Sans Serif", 0, 0, 0x1
+FONT 8, "MS Shell Dlg", 0, 0, 0x1
BEGIN
DEFPUSHBUTTON "Close",IDOK,191,10,50,14
CONTROL "",IDC_KEYBOARD1,"Static",SS_WHITERECT | SS_NOTIFY,4,76,237,56,WS_EX_CLIENTEDGE
@@ -1071,7 +1071,7 @@
IDD_LAYER3CONVERT DIALOGEX 0, 0, 280, 202
STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "MPEG Layer3 Convert"
-FONT 8, "MS Sans Serif", 0, 0, 0x0
+FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
GROUPBOX "",IDC_STATIC,6,6,210,84
DEFPUSHBUTTON "OK",IDOK,222,12,50,14
@@ -1100,14 +1100,14 @@
IDD_SPLASHSCREEN DIALOG 0, 0, 188, 95
STYLE DS_SETFONT | DS_SETFOREGROUND | DS_CENTER | WS_POPUP
-FONT 8, "MS Sans Serif"
+FONT 8, "MS Shell Dlg"
BEGIN
CONTROL "",IDC_SPLASH,"Static",SS_WHITERECT,0,0,187,94
END
IDD_TREEVIEW DIALOG 0, 0, 85, 266
STYLE DS_SETFONT | WS_CHILD
-FONT 8, "MS Sans Serif"
+FONT 8, "MS Shell Dlg"
BEGIN
CONTROL "Tree1",IDC_TREEVIEW,"SysTreeView32",TVS_HASBUTTONS | TVS_HASLINES | WS_BORDER,0,0,85,131
CONTROL "Tree1",IDC_TREEDATA,"SysTreeView32",TVS_HASBUTTONS | TVS_HASLINES | WS_BORDER,0,135,85,131
@@ -1116,7 +1116,7 @@
IDD_MOD2MIDI DIALOGEX 0, 0, 256, 101
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "MIDI Conversion Setup"
-FONT 8, "MS Sans Serif", 0, 0, 0x0
+FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
DEFPUSHBUTTON "OK",IDOK,198,6,50,14
PUSHBUTTON "Cancel",IDCANCEL,198,24,50,14
@@ -1134,7 +1134,7 @@
IDD_SAVEPRESET DIALOGEX 0, 0, 154, 58
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Save EQ Preset"
-FONT 8, "MS Sans Serif", 0, 0, 0x0
+FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
LTEXT "Save As:",IDC_STATIC,6,6,51,8
EDITTEXT IDC_EDIT1,6,18,69,12,ES_AUTOHSCROLL
@@ -1147,7 +1147,7 @@
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
EXSTYLE WS_EX_TOOLWINDOW
CAPTION "Sample Map"
-FONT 8, "MS Sans Serif", 0, 0, 0x1
+FONT 8, "MS Shell Dlg", 0, 0, 0x1
BEGIN
DEFPUSHBUTTON "OK",IDOK,232,4,50,14
PUSHBUTTON "Cancel",IDCANCEL,232,22,50,14
@@ -1163,7 +1163,7 @@
IDD_SELECTMIXPLUGIN DIALOGEX 0, 0, 243, 220
STYLE DS_SETFONT | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
CAPTION "Mix Plugins"
-FONT 8, "MS Sans Serif", 0, 0, 0x1
+FONT 8, "MS Shell Dlg", 0, 0, 0x1
BEGIN
LTEXT "Filter:",IDC_STATIC_VSTNAMEFILTER,8,9,18,8
EDITTEXT IDC_NAMEFILTER,28,7,152,14,ES_AUTOHSCROLL
@@ -1180,14 +1180,14 @@
EXSTYLE WS_EX_TOOLWINDOW | WS_EX_CLIENTEDGE
CAPTION "Editor"
MENU IDR_PLUGINMENU
-FONT 8, "MS Sans Serif", 0, 0, 0x1
+FONT 8, "MS Shell Dlg", 0, 0, 0x1
BEGIN
END
IDD_SETUP_REVERB DIALOG 0, 0, 240, 156
STYLE DS_SETFONT | WS_CHILD | WS_CAPTION
CAPTION "Reverb"
-FONT 8, "MS Sans Serif"
+FONT 8, "MS Shell Dlg"
BEGIN
GROUPBOX "",IDC_STATIC,4,3,232,59
GROUPBOX "Early reflections",IDC_STATIC,4,68,78,71
@@ -1222,7 +1222,7 @@
STYLE DS_SETFONT | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
EXSTYLE WS_EX_TOOLWINDOW | WS_EX_CLIENTEDGE
CAPTION "Param Editor"
-FONT 8, "MS Sans Serif", 0, 0, 0x1
+FONT 8, "MS Shell Dlg", 0, 0, 0x1
BEGIN
EDITTEXT IDC_VISSTATUS,4,91,162,12,ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_STATICEDGE
CONTROL "Fill blanks with:",IDC_VISFILLBLANKS,"Button",BS_AUTOCHECKBOX | NOT WS_VISIBLE | WS_TABSTOP,188,92,63,10
@@ -1234,7 +1234,7 @@
IDD_SOUNDBANK_INFO1 DIALOGEX 0, 0, 271, 167
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Sound Bank Information"
-FONT 8, "MS Sans Serif", 0, 0, 0x1
+FONT 8, "MS Shell Dlg", 0, 0, 0x1
BEGIN
DEFPUSHBUTTON "Close",IDOK,109,149,50,14
EDITTEXT IDC_EDIT1,7,7,257,138,ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_STATICEDGE
@@ -1243,7 +1243,7 @@
IDD_PITCHSHIFT DIALOGEX 0, 0, 181, 124
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Time-Stretch Ratio Calculator"
-FONT 8, "MS Sans Serif", 0, 0, 0x0
+FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
DEFPUSHBUTTON "OK",IDOK,127,106,50,14
EDITTEXT IDC_SAMPLE_LENGTH_NEW,42,32,40,14,ES_AUTOHSCROLL | ES_NUMBER
@@ -1273,7 +1273,7 @@
IDD_OPTIONS_AUTOSAVE DIALOGEX 0, 0, 272, 279
STYLE DS_SETFONT | DS_3DLOOK | WS_CHILD | WS_DISABLED | WS_CAPTION
CAPTION "Auto Save"
-FONT 8, "MS Sans Serif", 0, 0, 0x0
+FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
CONTROL "Enable Autosave",IDC_AUTOSAVE_ENABLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,15,70,10
EDITTEXT IDC_AUTOSAVE_INTERVAL,59,29,24,12,ES_AUTOHSCROLL | ES_NUMBER
@@ -1298,7 +1298,7 @@
STYLE DS_SETFONT | WS_POPUP | WS_CAPTION | WS_SYSMENU
EXSTYLE WS_EX_TOOLWINDOW
CAPTION "Go to..."
-FONT 8, "MS Sans Serif", 0, 0, 0x0
+FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
RTEXT "Row:",IDC_STATIC,6,9,33,8
EDITTEXT IDC_GOTO_ROW,42,6,40,14,ES_AUTOHSCROLL | ES_NUMBER
@@ -1315,7 +1315,7 @@
STYLE DS_SETFONT | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
EXSTYLE WS_EX_TOOLWINDOW | WS_EX_APPWINDOW
CAPTION "Pattern Randomizer - NOT YET FUNCTIONAL"
-FONT 8, "MS Sans Serif", 0, 0, 0x1
+FONT 8, "MS Shell Dlg", 0, 0, 0x1
BEGIN
PUSHBUTTON "Load",IDC_BUTTON1,112,13,30,14
PUSHBUTTON "Save",IDC_BUTTON2,143,13,30,14
@@ -1329,7 +1329,7 @@
IDD_PATTERNRANDOMIZER_NOTE DIALOGEX 0, 0, 235, 172
STYLE DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD
EXSTYLE WS_EX_CONTROLPARENT
-FONT 8, "MS Sans Serif", 0, 0, 0x0
+FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
GROUPBOX "",IDC_STATIC,5,5,224,164
CONTROL "Randomize Notes",IDC_RANDOMIZE_NOTE_ENABLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,4,72,10
@@ -1352,7 +1352,7 @@
IDD_PATTERNRANDOMIZER_INSTRUMENT DIALOGEX 0, 0, 236, 172
STYLE DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD
-FONT 8, "MS Sans Serif", 0, 0, 0x0
+FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
GROUPBOX "",-1,5,5,225,164
CONTROL "Randomize Instruments",IDC_RANDOMIZE_NOTE_ENABLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,4,89,10
@@ -1362,7 +1362,7 @@
IDD_PATTERNRANDOMIZER_VOLCMD DIALOGEX 0, 0, 235, 172
STYLE DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD
-FONT 8, "MS Sans Serif", 0, 0, 0x0
+FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
GROUPBOX "",IDC_STATIC,5,5,224,164
CONTROL "Use existing commands.",IDC_RADIO2,"Button",BS_AUTORADIOBUTTON,14,27,92,10
@@ -1402,7 +1402,7 @@
IDD_PATTERNRANDOMIZER_EFFECT DIALOGEX 0, 0, 235, 172
STYLE DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD
-FONT 8, "MS Sans Serif", 0, 0, 0x0
+FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
GROUPBOX "",IDC_STATIC,5,5,224,164
CONTROL "Use existing effects.",IDC_RADIO2,"Button",BS_AUTORADIOBUTTON,14,27,79,10
Modified: trunk/OpenMPT/soundlib/Load_it.cpp
===================================================================
--- trunk/OpenMPT/soundlib/Load_it.cpp 2009-11-28 20:25:33 UTC (rev 429)
+++ trunk/OpenMPT/soundlib/Load_it.cpp 2009-11-30 22:11:46 UTC (rev 430)
@@ -1217,6 +1217,7 @@
for (UINT nsmp=0; nsmp<pifh->smpnum; nsmp++) if ((smppos[nsmp]) && (smppos[nsmp] <= dwMemLength - sizeof(ITSAMPLESTRUCT)))
{
ITSAMPLESTRUCT *pis = (ITSAMPLESTRUCT *)(lpStream+smppos[nsmp]);
+ lastSampleOffset = smppos[nsmp] + sizeof(ITSAMPLESTRUCT);
if (pis->id == 0x53504D49)
{
MODSAMPLE *pSmp = &Samples[nsmp+1];
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <sag...@us...> - 2009-11-28 20:25:43
|
Revision: 429
http://modplug.svn.sourceforge.net/modplug/?rev=429&view=rev
Author: saga-games
Date: 2009-11-28 20:25:33 +0000 (Sat, 28 Nov 2009)
Log Message:
-----------
[Imp] Sample editor: When creating a new sample using "resize", sample loop is activated automatically
[Fix] ST3 compatibility: Only allow waveforms 0 to 3 for S3x / S4x / S5x.
[Imp] Pattern editor: Hopefully correct limitation and explanation of "Set * waveform" parameters...
[Imp] Mod Conversion: Better conversion of MOD/XM E4x / E7x command
[Imp] Mod Conversion: Better conversion of note off commands when converting to .mod
Modified Paths:
--------------
trunk/OpenMPT/mptrack/Moddoc.cpp
trunk/OpenMPT/soundlib/Snd_fx.cpp
trunk/OpenMPT/soundlib/Sndfile.cpp
trunk/OpenMPT/soundlib/modsmp_ctrl.cpp
Modified: trunk/OpenMPT/mptrack/Moddoc.cpp
===================================================================
--- trunk/OpenMPT/mptrack/Moddoc.cpp 2009-11-28 18:11:44 UTC (rev 428)
+++ trunk/OpenMPT/mptrack/Moddoc.cpp 2009-11-28 20:25:33 UTC (rev 429)
@@ -2304,6 +2304,15 @@
case CMD_GLOBALVOLUME:
nmax = (nType & MOD_TYPE_IT | MOD_TYPE_MPT) ? 128 : 64;
break;
+
+ case CMD_MODCMDEX:
+ // adjust waveform types for XM/MOD
+ if(gFXInfo[ndx].dwParamValue == 0x40 || gFXInfo[ndx].dwParamValue == 0x70) nmax = gFXInfo[ndx].dwParamValue | 0x07;
+ break;
+ case CMD_S3MCMDEX:
+ // adjust waveform types for IT/S3M
+ if(gFXInfo[ndx].dwParamValue >= 0x30 && gFXInfo[ndx].dwParamValue <= 0x50) nmax = gFXInfo[ndx].dwParamValue | (m_SndFile.IsCompatibleMode(TRK_IMPULSETRACKER | TRK_SCREAMTRACKER) ? 0x03 : 0x07);
+ break;
}
*prangeMin = nmin;
*prangeMax = nmax;
@@ -2659,17 +2668,22 @@
case 0x30: // vibrato waveform
case 0x40: // tremolo waveform
case 0x50: // panbrello waveform
- if(((param & 0x0F) > 0x03) && m_SndFile.IsCompatibleMode(TRK_IMPULSETRACKER))
+ if(((param & 0x0F) > 0x03) && m_SndFile.IsCompatibleMode(TRK_IMPULSETRACKER | TRK_SCREAMTRACKER))
{
strcpy(s, "ignore");
break;
}
switch(param & 0x0F)
{
- case 0x00: case 0x04: case 0x08: case 0x0C: strcpy(s, "sine wave"); break;
- case 0x01: case 0x05: case 0x09: case 0x0D: strcpy(s, "ramp down"); break;
- case 0x02: case 0x06: case 0x0A: case 0x0E: strcpy(s, "square wave"); break;
- case 0x03: case 0x07: case 0x0B: case 0x0F: strcpy(s, "random"); break;
+ case 0x00: strcpy(s, "sine wave"); break;
+ case 0x01: strcpy(s, "ramp down"); break;
+ case 0x02: strcpy(s, "square wave"); break;
+ case 0x03: strcpy(s, "random"); break;
+ case 0x04: strcpy(s, "sine wave (continue)"); break;
+ case 0x05: strcpy(s, "ramp down (continue)"); break;
+ case 0x06: strcpy(s, "square wave (continue)"); break;
+ case 0x07: strcpy(s, "random (continue)"); break;
+ default: strcpy(s, "ignore"); break;
}
break;
@@ -2717,12 +2731,17 @@
break;
case 0x40: // vibrato waveform
case 0x70: // tremolo waveform
- //todo: find proper values for XM/MOD (it's not as trivial as described here, i think)
switch(param & 0x0F)
{
- case 0x00: case 0x03: case 0x06: case 0x0A: case 0x0D: strcpy(s, "sine wave"); break;
- case 0x01: case 0x04: case 0x07: case 0x0B: case 0x0E: strcpy(s, "ramp down"); break;
- case 0x02: case 0x05: case 0x08: case 0x0C: case 0x0F: strcpy(s, "square wave"); break;
+ case 0x00: case 0x08: strcpy(s, "sine wave"); break;
+ case 0x01: case 0x09: strcpy(s, "ramp down"); break;
+ case 0x02: case 0x0A: strcpy(s, "square wave"); break;
+ case 0x03: case 0x0B: strcpy(s, "square wave"); break;
+
+ case 0x04: case 0x0C: strcpy(s, "sine wave (continue)"); break;
+ case 0x05: case 0x0D: strcpy(s, "ramp down (continue)"); break;
+ case 0x06: case 0x0E: strcpy(s, "square wave (continue)"); break;
+ case 0x07: case 0x0F: strcpy(s, "square wave (continue)"); break;
}
break;
case 0x60: // pattern loop
Modified: trunk/OpenMPT/soundlib/Snd_fx.cpp
===================================================================
--- trunk/OpenMPT/soundlib/Snd_fx.cpp 2009-11-28 18:11:44 UTC (rev 428)
+++ trunk/OpenMPT/soundlib/Snd_fx.cpp 2009-11-28 20:25:33 UTC (rev 429)
@@ -727,8 +727,9 @@
}
pChn->nPos = 0;
pChn->nPosLo = 0;
- if (pChn->nVibratoType < 4) pChn->nVibratoPos = ((!IsCompatibleMode(TRK_IMPULSETRACKER)) && (m_nType & (MOD_TYPE_IT|MOD_TYPE_MPT)) && (!(m_dwSongFlags & SONG_ITOLDEFFECTS))) ? 0x10 : 0;
- if(!IsCompatibleMode(TRK_IMPULSETRACKER) && pChn->nTremoloType < 4) pChn->nTremoloPos = 0;
+ // Handle "retrigger" waveform type
+ if (pChn->nVibratoType < 4) pChn->nVibratoPos = ((!IsCompatibleMode(TRK_IMPULSETRACKER | TRK_SCREAMTRACKER)) && (m_nType & (MOD_TYPE_IT|MOD_TYPE_MPT)) && (!(m_dwSongFlags & SONG_ITOLDEFFECTS))) ? 0x10 : 0;
+ if(!IsCompatibleMode(TRK_IMPULSETRACKER | TRK_SCREAMTRACKER) && pChn->nTremoloType < 4) pChn->nTremoloPos = 0;
}
if (pChn->nPos >= pChn->nLength) pChn->nPos = pChn->nLoopStart;
}
Modified: trunk/OpenMPT/soundlib/Sndfile.cpp
===================================================================
--- trunk/OpenMPT/soundlib/Sndfile.cpp 2009-11-28 18:11:44 UTC (rev 428)
+++ trunk/OpenMPT/soundlib/Sndfile.cpp 2009-11-28 20:25:33 UTC (rev 429)
@@ -3236,10 +3236,10 @@
case 0x10: m->command = CMD_PORTAMENTOUP; m->param |= 0xF0; break;
case 0x20: m->command = CMD_PORTAMENTODOWN; m->param |= 0xF0; break;
case 0x30: m->param = (m->param & 0x0F) | 0x10; break;
- case 0x40: m->param = (m->param & 0x0F) | 0x30; break;
+ case 0x40: m->param = (m->param & 0x03) | 0x30; break;
case 0x50: m->param = (m->param & 0x0F) | 0x20; break;
case 0x60: m->param = (m->param & 0x0F) | 0xB0; break;
- case 0x70: m->param = (m->param & 0x0F) | 0x40; break;
+ case 0x70: m->param = (m->param & 0x03) | 0x40; break;
case 0x90: m->command = CMD_RETRIG; m->param = 0x80 | (m->param & 0x0F); break;
case 0xA0: if (m->param & 0x0F) { m->command = CMD_VOLUMESLIDE; m->param = (m->param << 4) | 0x0F; } else m->command = 0; break;
case 0xB0: if (m->param & 0x0F) { m->command = CMD_VOLUMESLIDE; m->param |= 0xF0; } else m->command = 0; break;
@@ -3389,6 +3389,7 @@
// Convert S3M / IT / MPTM to MOD / XM
else if(oldTypeIsS3M_IT_MPT && newTypeIsMOD_XM)
{
+ // convert note cut/off/fade
if(m->note == NOTE_NOTECUT || m->note == NOTE_FADE)
m->note = NOTE_KEYOFF;
@@ -3522,6 +3523,22 @@
// Convert anything to MOD - remove volume column, remove Set Macro
if (newTypeIsMOD)
{
+ // convert note off events
+ if(m->note >= NOTE_MIN_SPECIAL)
+ {
+ m->note = NOTE_NONE;
+ // no effect present, so just convert note off to volume 0
+ if(m->command == CMD_NONE)
+ {
+ m->command = CMD_VOLUME;
+ m->param = 0;
+ // EDx effect present, so convert it to ECx
+ } else if((m->command == CMD_MODCMDEX) && ((m->param & 0xF0) == 0xD0))
+ {
+ m->param = 0xC0 | (m->param & 0x0F);
+ }
+ }
+
if(m->command) switch(m->command)
{
case CMD_RETRIG: // MOD only has E9x
Modified: trunk/OpenMPT/soundlib/modsmp_ctrl.cpp
===================================================================
--- trunk/OpenMPT/soundlib/modsmp_ctrl.cpp 2009-11-28 18:11:44 UTC (rev 428)
+++ trunk/OpenMPT/soundlib/modsmp_ctrl.cpp 2009-11-28 20:25:33 UTC (rev 429)
@@ -73,8 +73,17 @@
AfxMessageBox(TEXT("Unsupported start position in InsertSilence."));
}
- if(smp.nLoopStart >= nStartFrom) smp.nLoopStart += nSilenceLength;
- if(smp.nLoopEnd >= nStartFrom) smp.nLoopEnd += nSilenceLength;
+ // Set loop points automatically
+ if(nOldBytes == 0)
+ {
+ smp.nLoopStart = 0;
+ smp.nLoopEnd = nNewLength;
+ smp.uFlags |= CHN_LOOP;
+ } else
+ {
+ if(smp.nLoopStart >= nStartFrom) smp.nLoopStart += nSilenceLength;
+ if(smp.nLoopEnd >= nStartFrom) smp.nLoopEnd += nSilenceLength;
+ }
ReplaceSample(smp, pNewSmp, nNewLength, pSndFile);
AdjustEndOfSample(smp, pSndFile);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <sag...@us...> - 2009-11-28 18:11:56
|
Revision: 428
http://modplug.svn.sourceforge.net/modplug/?rev=428&view=rev
Author: saga-games
Date: 2009-11-28 18:11:44 +0000 (Sat, 28 Nov 2009)
Log Message:
-----------
[Fix] Revision 421 broke reading MPT instrument / songs extension for IT / MPTM files which had an empty sample slot.
Revision Links:
--------------
http://modplug.svn.sourceforge.net/modplug/?rev=421&view=rev
Modified Paths:
--------------
trunk/OpenMPT/soundlib/Load_it.cpp
Modified: trunk/OpenMPT/soundlib/Load_it.cpp
===================================================================
--- trunk/OpenMPT/soundlib/Load_it.cpp 2009-11-28 16:12:21 UTC (rev 427)
+++ trunk/OpenMPT/soundlib/Load_it.cpp 2009-11-28 18:11:44 UTC (rev 428)
@@ -1209,14 +1209,13 @@
// In order to properly compute the position, in file, of eventual extended settings
// such as "attack" we need to keep the "real" size of the last sample as those extra
// setting will follow this sample in the file
- UINT lastSampleSize = 0;
+ UINT lastSampleOffset = 0;
// -! NEW_FEATURE#0027
// Reading Samples
m_nSamples = CLAMP(pifh->smpnum, 1, MAX_SAMPLES - 1);
for (UINT nsmp=0; nsmp<pifh->smpnum; nsmp++) if ((smppos[nsmp]) && (smppos[nsmp] <= dwMemLength - sizeof(ITSAMPLESTRUCT)))
{
- lastSampleSize = 0; //ensure lastsamplesize = 0 if last sample is empty, else we'll skip the MPTX stuff.
ITSAMPLESTRUCT *pis = (ITSAMPLESTRUCT *)(lpStream+smppos[nsmp]);
if (pis->id == 0x53504D49)
{
@@ -1269,7 +1268,8 @@
// -> CODE#0027
// -> DESC="per-instrument volume ramping setup (refered as attack)"
// ReadSample(&Ins[nsmp+1], flags, (LPSTR)(lpStream+pis->samplepointer), dwMemLength - pis->samplepointer);
- lastSampleSize = ReadSample(&Samples[nsmp+1], flags, (LPSTR)(lpStream+pis->samplepointer), dwMemLength - pis->samplepointer);
+ if(pis->samplepointer)
+ lastSampleOffset = pis->samplepointer + ReadSample(&Samples[nsmp+1], flags, (LPSTR)(lpStream+pis->samplepointer), dwMemLength - pis->samplepointer);
// -! NEW_FEATURE#0027
}
}
@@ -1284,11 +1284,7 @@
// -> DESC="per-instrument volume ramping setup (refered as attack)"
// Compute extra instruments settings position
- if(pifh->smpnum)
- {
- ITSAMPLESTRUCT *pis = (ITSAMPLESTRUCT *)(lpStream+smppos[pifh->smpnum-1]);
- dwMemPos = pis->samplepointer + lastSampleSize;
- }
+ if(lastSampleOffset > 0) dwMemPos = lastSampleOffset;
// Load instrument and song extensions.
if(mptStartPos >= dwMemPos)
@@ -2339,10 +2335,9 @@
flags = (psmp->uFlags & CHN_STEREO) ? RS_STPCM16S : RS_PCM16S;
}
}
- if ((psmp->pSample) && (psmp->nLength))
- itss.samplepointer = dwPos;
- else
- itss.samplepointer = itss.flags = 0;
+ itss.samplepointer = dwPos;
+ if (!(psmp->pSample) || !(psmp->nLength))
+ itss.flags = 0;
fseek(f, smppos[nsmp-1], SEEK_SET);
fwrite(&itss, 1, sizeof(ITSAMPLESTRUCT), f);
fseek(f, dwPos, SEEK_SET);
@@ -2918,10 +2913,9 @@
itss.flags |= 0x02;
flags = RS_PCM16S;
}
- if ((psmp->pSample) && (psmp->nLength))
- itss.samplepointer = dwPos;
- else
- itss.samplepointer = itss.flags = 0;
+ itss.samplepointer = dwPos;
+ if (!(psmp->pSample) || !(psmp->nLength))
+ itss.flags = 0;
fseek(f, smppos[nsmp-1], SEEK_SET);
fwrite(&itss, 1, sizeof(ITSAMPLESTRUCT), f);
fseek(f, dwPos, SEEK_SET);
@@ -3374,7 +3368,7 @@
void CSoundFile::SaveExtendedInstrumentProperties(MODINSTRUMENT *instruments[], UINT nInstruments, FILE* f)
//------------------------------------------------------------------------------------------------------------
-// Used only when saving IT and XM.
+// Used only when saving IT, XM and MPTM.
// ITI, ITP saves using Ericus' macros etc...
// The reason is that ITs and XMs save [code][size][ins1.Value][ins2.Value]...
// whereas ITP saves [code][size][ins1.Value][code][size][ins2.Value]...
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <sag...@us...> - 2009-11-28 16:12:31
|
Revision: 427
http://modplug.svn.sourceforge.net/modplug/?rev=427&view=rev
Author: saga-games
Date: 2009-11-28 16:12:21 +0000 (Sat, 28 Nov 2009)
Log Message:
-----------
[Fix] Treeview: Double-clicking a sequence to open the sequence's folder also set this sequence as the active sequence, which was not intended.
[Mod] Changed the "Buzz" colour scheme a bit (channel separator colours)
[Mod] Updated DE_jojo.mkb (Added Duplicate pattern shortcut)
Modified Paths:
--------------
trunk/OpenMPT/mptrack/Moptions.cpp
trunk/OpenMPT/mptrack/View_tre.cpp
trunk/OpenMPT/packageTemplate/extraKeymaps/DE_jojo.mkb
Modified: trunk/OpenMPT/mptrack/Moptions.cpp
===================================================================
--- trunk/OpenMPT/mptrack/Moptions.cpp 2009-11-28 14:44:48 UTC (rev 426)
+++ trunk/OpenMPT/mptrack/Moptions.cpp 2009-11-28 16:12:21 UTC (rev 427)
@@ -552,27 +552,27 @@
void COptionsColors::OnPresetBuzz()
//---------------------------------
{
- CustomColors[MODCOLOR_BACKNORMAL] = 0x00d0dbe1;
- CustomColors[MODCOLOR_TEXTNORMAL] = 0x0027343a;
- CustomColors[MODCOLOR_BACKCURROW] = 0x009eb4c0;
- CustomColors[MODCOLOR_TEXTCURROW] = 0x00000000;
- CustomColors[MODCOLOR_BACKSELECTED] = 0x00000000;
- CustomColors[MODCOLOR_TEXTSELECTED] = 0x00ccd7dd;
- CustomColors[MODCOLOR_BACKPLAYCURSOR] = 0x007a99a9;
- CustomColors[MODCOLOR_TEXTPLAYCURSOR] = 0x00000000;
- CustomColors[MODCOLOR_BACKHILIGHT] = 0x00b5c5ce;
- CustomColors[MODCOLOR_NOTE] = 0x005b0000;
- CustomColors[MODCOLOR_INSTRUMENT] = 0x00555500;
- CustomColors[MODCOLOR_VOLUME] = 0x00005e00;
- CustomColors[MODCOLOR_PANNING] = 0x00686800;
- CustomColors[MODCOLOR_PITCH] = 0x00006262;
- CustomColors[MODCOLOR_GLOBALS] = 0x00000066;
- CustomColors[MODCOLOR_SAMPLE] = 0x0000ff00;
- CustomColors[MODCOLOR_ENVELOPES] = 0x000000ff;
- CustomColors[MODCOLOR_SEPSHADOW] = RGB(0x80, 0x80, 0x80);
- CustomColors[MODCOLOR_SEPFACE] = RGB(0xD4, 0xD0, 0xC8);
+ CustomColors[MODCOLOR_BACKNORMAL] = RGB(0xE1, 0xDB, 0xD0);
+ CustomColors[MODCOLOR_TEXTNORMAL] = RGB(0x3A, 0x34, 0x27);
+ CustomColors[MODCOLOR_BACKCURROW] = RGB(0xC0, 0xB4, 0x9E);
+ CustomColors[MODCOLOR_TEXTCURROW] = RGB(0x00, 0x00, 0x00);
+ CustomColors[MODCOLOR_BACKSELECTED] = RGB(0x00, 0x00, 0x00);
+ CustomColors[MODCOLOR_TEXTSELECTED] = RGB(0xDD, 0xD7, 0xCC);
+ CustomColors[MODCOLOR_BACKPLAYCURSOR] = RGB(0xA9, 0x99, 0x7A);
+ CustomColors[MODCOLOR_TEXTPLAYCURSOR] = RGB(0x00, 0x00, 0x00);
+ CustomColors[MODCOLOR_BACKHILIGHT] = RGB(0xCE, 0xC5, 0xB5);
+ CustomColors[MODCOLOR_NOTE] = RGB(0x00, 0x00, 0x5B);
+ CustomColors[MODCOLOR_INSTRUMENT] = RGB(0x00, 0x55, 0x55);
+ CustomColors[MODCOLOR_VOLUME] = RGB(0x00, 0x5E, 0x00);
+ CustomColors[MODCOLOR_PANNING] = RGB(0x00, 0x68, 0x68);
+ CustomColors[MODCOLOR_PITCH] = RGB(0x62, 0x62, 0x00);
+ CustomColors[MODCOLOR_GLOBALS] = RGB(0x66, 0x00, 0x00);
+ CustomColors[MODCOLOR_SAMPLE] = RGB(0x00, 0xFF, 0x00);
+ CustomColors[MODCOLOR_ENVELOPES] = RGB(0xFF, 0x00, 0x00);
+ CustomColors[MODCOLOR_SEPSHADOW] = RGB(0x9A, 0x87, 0x63);
+ CustomColors[MODCOLOR_SEPFACE] = RGB(0xE1, 0xDB, 0xD0);
CustomColors[MODCOLOR_SEPHILITE] = RGB(0xFF, 0xFF, 0xFF);
- CustomColors[MODCOLOR_BLENDCOLOR] = 0x00d0dbe1;
+ CustomColors[MODCOLOR_BLENDCOLOR] = RGB(0xE1, 0xDB, 0xD0);
OnPreviewChanged();
}
Modified: trunk/OpenMPT/mptrack/View_tre.cpp
===================================================================
--- trunk/OpenMPT/mptrack/View_tre.cpp 2009-11-28 14:44:48 UTC (rev 426)
+++ trunk/OpenMPT/mptrack/View_tre.cpp 2009-11-28 16:12:21 UTC (rev 427)
@@ -1159,9 +1159,9 @@
if (pModDoc) pModDoc->ActivateView(IDD_CONTROL_COMMENTS, 0);
return TRUE;
- case MODITEM_SEQUENCE:
+ /*case MODITEM_SEQUENCE:
if (pModDoc) pModDoc->ActivateView(IDD_CONTROL_PATTERNS, (dwItem << 16) | 0x8000);
- return TRUE;
+ return TRUE;*/
case MODITEM_ORDER:
if (pModDoc) pModDoc->ActivateView(IDD_CONTROL_PATTERNS, dwItem | 0x8000);
Modified: trunk/OpenMPT/packageTemplate/extraKeymaps/DE_jojo.mkb
===================================================================
--- trunk/OpenMPT/packageTemplate/extraKeymaps/DE_jojo.mkb 2009-11-28 14:44:48 UTC (rev 426)
+++ trunk/OpenMPT/packageTemplate/extraKeymaps/DE_jojo.mkb 2009-11-28 16:12:21 UTC (rev 427)
@@ -75,6 +75,7 @@
2:1002:2:13:5 //Play row: Ctrl+EINGABE (KeyDown|KeyHold)
2:1317:4:18:1 //Set row jump on note entry: Alt (KeyDown)
2:1685:2:9:1 //Switch to order list: Ctrl+TABULATOR (KeyDown)
+2:1806:2:68:1 //Duplicate pattern: Ctrl+D (KeyDown)
2:1662:6:80:1 //Toggle channel's plugin editor: Ctrl+Alt+P (KeyDown)
2:1062:0:93:1 //Show note properties: ANWENDUNG (KeyDown)
2:1780:2:80:1 //Show playback time at current row: Ctrl+P (KeyDown)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|