From: <sag...@us...> - 2010-03-20 12:32:24
|
Revision: 537 http://modplug.svn.sourceforge.net/modplug/?rev=537&view=rev Author: saga-games Date: 2010-03-20 12:32:15 +0000 (Sat, 20 Mar 2010) Log Message: ----------- [Fix] S3M/IT compatibility: Note Cut really cuts notes and does not just mute them (so that following volume commands could restore the sample) [Imp] Cleanup Dialog: Made it look a bit nicer. Modified Paths: -------------- trunk/OpenMPT/mptrack/mptrack.rc trunk/OpenMPT/soundlib/Snd_fx.cpp Modified: trunk/OpenMPT/mptrack/mptrack.rc =================================================================== --- trunk/OpenMPT/mptrack/mptrack.rc 2010-03-19 19:38:33 UTC (rev 536) +++ trunk/OpenMPT/mptrack/mptrack.rc 2010-03-20 12:32:15 UTC (rev 537) @@ -36,38 +36,44 @@ LTEXT "The following problems have been encountered when loading this module:",IDC_STATIC,6,6,237,8 END -IDD_CLEANUP_SONG DIALOGEX 0, 0, 370, 281 +IDD_CLEANUP_SONG DIALOGEX 0, 0, 394, 154 STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Cleanup" FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN - DEFPUSHBUTTON "OK",IDOK,306,6,60,14 - PUSHBUTTON "Cancel",IDCANCEL,306,24,60,14 - CONTROL "Remove unused",IDC_CHK_CLEANUP_PATTERNS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,18,90,10 - CONTROL "Remove all",IDC_CHK_REMOVE_PATTERNS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,108,18,90,10 - CONTROL "Rearrange",IDC_CHK_REARRANGE_PATTERNS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,204,18,90,10 - CONTROL "Merge sequences",IDC_CHK_MERGE_SEQUENCES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,54,90,10 - CONTROL "Remove all orders",IDC_CHK_REMOVE_ORDERS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,108,54,90,10 - CONTROL "Remove unused",IDC_CHK_CLEANUP_SAMPLES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,90,90,10 - CONTROL "Remove all",IDC_CHK_REMOVE_SAMPLES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,108,90,90,10 - CONTROL "Rearrange",IDC_CHK_REARRANGE_SAMPLES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,204,90,90,10 + DEFPUSHBUTTON "OK",IDOK,330,6,60,14 + PUSHBUTTON "Cancel",IDCANCEL,330,24,60,14 + CONTROL "Remove unused",IDC_CHK_CLEANUP_PATTERNS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,108,6,90,10 + CONTROL "Remove all",IDC_CHK_REMOVE_PATTERNS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,204,6,90,10 + CONTROL "Rearrange",IDC_CHK_REARRANGE_PATTERNS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,108,18,90,10 + CONTROL "Merge sequences",IDC_CHK_MERGE_SEQUENCES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,108,36,90,10 + CONTROL "Remove all orders",IDC_CHK_REMOVE_ORDERS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,204,36,90,10 + CONTROL "Remove unused",IDC_CHK_CLEANUP_SAMPLES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,108,54,90,10 + CONTROL "Remove all",IDC_CHK_REMOVE_SAMPLES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,204,54,90,10 + CONTROL "Rearrange",IDC_CHK_REARRANGE_SAMPLES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,108,66,90,10 CONTROL "Remove data after loop end",IDC_CHK_OPTIMIZE_SAMPLES, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,102,108,10 - CONTROL "Remove unused",IDC_CHK_CLEANUP_INSTRUMENTS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,138,90,10 + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,204,66,108,10 + CONTROL "Remove unused",IDC_CHK_CLEANUP_INSTRUMENTS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,108,84,90,10 CONTROL "Remove all (convert to samples)",IDC_CHK_REMOVE_INSTRUMENTS, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,108,138,120,10 - CONTROL "Remove unused",IDC_CHK_CLEANUP_PLUGINS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,174,90,10 - CONTROL "Remove all",IDC_CHK_REMOVE_PLUGINS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,108,174,90,10 - CONTROL "Reset all variables",IDC_CHK_RESET_VARIABLES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,210,90,10 - PUSHBUTTON "Remove all unused stuff",IDC_BTN_CLEANUP_SONG,18,246,90,18 - PUSHBUTTON "Compo cleanup",IDC_BTN_COMPO_CLEANUP,120,246,90,18 - GROUPBOX "Patterns",IDC_STATIC,6,6,294,30 - GROUPBOX "Orders / Sequences",IDC_STATIC,6,42,294,30 - GROUPBOX "Samples",IDC_STATIC,6,78,294,42 - GROUPBOX "Instruments",IDC_STATIC,6,126,294,30 - GROUPBOX "Plugins",IDC_STATIC,6,162,294,30 - GROUPBOX "Miscellaneous",IDC_STATIC,6,198,294,30 - GROUPBOX "Presets",IDC_STATIC,6,234,294,36 + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,204,84,120,10 + CONTROL "Remove unused",IDC_CHK_CLEANUP_PLUGINS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,108,102,90,10 + CONTROL "Remove all",IDC_CHK_REMOVE_PLUGINS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,204,102,90,10 + CONTROL "Reset all variables",IDC_CHK_RESET_VARIABLES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,108,120,90,10 + PUSHBUTTON "Remove all unused stuff",IDC_BTN_CLEANUP_SONG,108,138,90,12 + PUSHBUTTON "Create samplepack",IDC_BTN_COMPO_CLEANUP,204,138,90,12 + LTEXT "Patterns:",IDC_STATIC,6,6,84,12 + LTEXT "Orders / Sequences:",IDC_STATIC,6,36,84,12 + CONTROL "",IDC_STATIC,"Static",SS_ETCHEDHORZ,6,30,312,1 + LTEXT "Samples:",IDC_STATIC,6,53,84,12 + CONTROL "",IDC_STATIC,"Static",SS_ETCHEDHORZ,6,48,312,1 + LTEXT "Instruments:",IDC_STATIC,6,82,84,12 + CONTROL "",IDC_STATIC,"Static",SS_ETCHEDHORZ,6,78,312,1 + LTEXT "Plugins:",IDC_STATIC,6,101,84,12 + CONTROL "",IDC_STATIC,"Static",SS_ETCHEDHORZ,6,96,312,1 + LTEXT "Miscellaneous:",IDC_STATIC,6,119,84,12 + CONTROL "",IDC_STATIC,"Static",SS_ETCHEDHORZ,6,114,312,1 + LTEXT "Presets:",IDC_STATIC,6,137,84,12 + CONTROL "",IDC_STATIC,"Static",SS_ETCHEDHORZ,6,132,312,1 END IDD_CHANNEL_NAME DIALOGEX 0, 0, 154, 58 @@ -162,9 +168,9 @@ IDD_CLEANUP_SONG, DIALOG BEGIN LEFTMARGIN, 7 - RIGHTMARGIN, 363 + RIGHTMARGIN, 387 TOPMARGIN, 7 - BOTTOMMARGIN, 274 + BOTTOMMARGIN, 147 END IDD_CHANNEL_NAME, DIALOG Modified: trunk/OpenMPT/soundlib/Snd_fx.cpp =================================================================== --- trunk/OpenMPT/soundlib/Snd_fx.cpp 2010-03-19 19:38:33 UTC (rev 536) +++ trunk/OpenMPT/soundlib/Snd_fx.cpp 2010-03-20 12:32:15 UTC (rev 537) @@ -353,7 +353,7 @@ break; // Global Volume case CMD_GLOBALVOLUME: - if (!(m_nType & (MOD_TYPE_IT | MOD_TYPE_MPT))) param <<= 1; + if (!(GetType() & (MOD_TYPE_IT | MOD_TYPE_MPT))) param <<= 1; if(IsCompatibleMode(TRK_IMPULSETRACKER | TRK_FASTTRACKER2)) { //IT compatibility 16. Both FT2 and IT ignore out-of-range values @@ -381,13 +381,13 @@ if (((param & 0x0F) == 0x0F) && (param & 0xF0)) { param >>= 4; - if (!(m_nType & (MOD_TYPE_IT|MOD_TYPE_MPT))) param <<= 1; + if (!(GetType() & (MOD_TYPE_IT|MOD_TYPE_MPT))) param <<= 1; nGlbVol += param << 1; } else if (((param & 0xF0) == 0xF0) && (param & 0x0F)) { param = (param & 0x0F) << 1; - if (!(m_nType & (MOD_TYPE_IT|MOD_TYPE_MPT))) param <<= 1; + if (!(GetType() & (MOD_TYPE_IT|MOD_TYPE_MPT))) param <<= 1; nGlbVol -= param; } else if (param & 0xF0) @@ -3466,7 +3466,7 @@ if(IsCompatibleMode(TRK_IMPULSETRACKER)) nTick = 1; // ST3 doesn't cut notes with SC0 - else if(m_nType == MOD_TYPE_S3M) + else if(GetType() == MOD_TYPE_S3M) return; } @@ -3475,14 +3475,23 @@ MODCHANNEL *pChn = &Chn[nChn]; // if (m_nInstruments) KeyOff(pChn); ? pChn->nVolume = 0; + // S3M/IT compatibility: Note Cut really cuts notes and does not just mute them (so that following volume commands could restore the sample) + if(IsCompatibleMode(TRK_IMPULSETRACKER|TRK_SCREAMTRACKER)) + { + pChn->nPeriod = 0; + } pChn->dwFlags |= CHN_FASTVOLRAMP; MODINSTRUMENT *pHeader = pChn->pModInstrument; - if (pHeader && pHeader->nMidiChannel>0 && pHeader->nMidiChannel<17) { // instro sends to a midi chan + // instro sends to a midi chan + if (pHeader && pHeader->nMidiChannel>0 && pHeader->nMidiChannel<17) + { UINT nPlug = pHeader->nMixPlug; - if ((nPlug) && (nPlug <= MAX_MIXPLUGINS)) { + if ((nPlug) && (nPlug <= MAX_MIXPLUGINS)) + { IMixPlugin *pPlug = (IMixPlugin*)m_MixPlugins[nPlug-1].pMixPlugin; - if (pPlug) { + if (pPlug) + { pPlug->MidiCommand(pHeader->nMidiChannel, pHeader->nMidiProgram, pHeader->wMidiBank, /*pChn->nNote+*/NOTE_KEYOFF, 0, nChn); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |