From: <sag...@us...> - 2011-01-03 14:49:29
|
Revision: 781 http://modplug.svn.sourceforge.net/modplug/?rev=781&view=rev Author: saga-games Date: 2011-01-03 14:49:21 +0000 (Mon, 03 Jan 2011) Log Message: ----------- [Fix] High notes were broken in XM files since rev.764 (http://bugs.openmpt.org/view.php?id=55) [Mod] When using the ACM MP3 codec, 320kbit/s bitrate should now theoretically be available. [Mod] Updated copyright year [Mod] Updated history.txt [Mod] OpenMPT: Version is now 1.19.00.18 [Ref] Minor refactoring in ctrl_smp.cpp, vstplug.cpp Modified Paths: -------------- trunk/OpenMPT/mptrack/Ctrl_smp.cpp trunk/OpenMPT/mptrack/Mptrack.cpp trunk/OpenMPT/mptrack/Vstplug.cpp trunk/OpenMPT/mptrack/Vstplug.h trunk/OpenMPT/mptrack/version.h trunk/OpenMPT/packageTemplate/History.txt trunk/OpenMPT/soundlib/Snd_fx.cpp Modified: trunk/OpenMPT/mptrack/Ctrl_smp.cpp =================================================================== --- trunk/OpenMPT/mptrack/Ctrl_smp.cpp 2011-01-02 16:10:49 UTC (rev 780) +++ trunk/OpenMPT/mptrack/Ctrl_smp.cpp 2011-01-03 14:49:21 UTC (rev 781) @@ -45,8 +45,9 @@ // Deduce exponent from equation : v = 2^exponent int PowerOf2Exponent(const unsigned int v) { - float v2f = (float)v; - return ( (*(int *)&v2f >> 23) & 0xff ) - 127; + return (int)_logb((double)v); + //float v2f = (float)v; + //return ( (*(int *)&v2f >> 23) & 0xff ) - 127; } // -! TEST#0029 @@ -1075,7 +1076,7 @@ { if ((m_pModDoc) && (m_pSndFile)) { - // Fix (bug report 1366). + // Commented out line to fix http://forum.openmpt.org/index.php?topic=1366.0 // if ((m_pSndFile->IsPaused()) && (m_pModDoc->IsNotePlaying(0, m_nSample, 0))) if (m_pModDoc->IsNotePlaying(0, m_nSample, 0)) { @@ -1378,9 +1379,8 @@ dwEnd = pSmp->nLength; } - smplsize = (pSmp->uFlags & CHN_16BIT) ? 2 : 1; - if (pSmp->uFlags & CHN_STEREO) smplsize *= 2; - newsmplsize = (pSmp->uFlags & CHN_STEREO) ? 4 : 2; + smplsize = pSmp->GetBytesPerSample(); + newsmplsize = pSmp->GetNumChannels() * 2; // new sample is always 16-Bit pOriginal = pSmp->pSample; dwNewLen = pSmp->nLength + (dwEnd-dwStart); pNewSample = NULL; @@ -1389,7 +1389,7 @@ { m_pModDoc->GetSampleUndo()->PrepareUndo(m_nSample, sundo_replace); - UINT nCh = (pSmp->uFlags & CHN_STEREO) ? 2 : 1; + const UINT nCh = pSmp->GetNumChannels(); for (UINT iCh=0; iCh<nCh; iCh++) { int len = dwEnd-dwStart; @@ -1526,8 +1526,7 @@ dwStart = 0; dwEnd = pSmp->nLength; } - smplsize = (pSmp->uFlags & CHN_16BIT) ? 2 : 1; - if (pSmp->uFlags & CHN_STEREO) smplsize *= 2; + smplsize = pSmp->GetSampleSizeInBytes(); pOriginal = pSmp->pSample; dwRemove = (dwEnd-dwStart+1)>>1; dwNewLen = pSmp->nLength - dwRemove; @@ -1539,7 +1538,7 @@ m_pModDoc->GetSampleUndo()->PrepareUndo(m_nSample, sundo_replace); - UINT nCh = (pSmp->uFlags & CHN_STEREO) ? 2 : 1; + const UINT nCh = pSmp->GetNumChannels(); for (UINT iCh=0; iCh<nCh; iCh++) { int len = dwRemove; @@ -2599,7 +2598,7 @@ if(pSmp->uFlags & CHN_LOOP) { /* only update sample buffer if the loop is actually enabled - (resets sound without any reason otherwise) - bug report 1874 */ + (resets sound without any reason otherwise) - http://forum.openmpt.org/index.php?topic=1874.0 */ m_pModDoc->AdjustEndOfSample(m_nSample); } m_pModDoc->UpdateAllViews(NULL, (m_nSample << HINT_SHIFT_SMP) | HINT_SAMPLEDATA, this); @@ -2620,7 +2619,7 @@ if(pSmp->uFlags & CHN_LOOP) { /* only update sample buffer if the loop is actually enabled - (resets sound without any reason otherwise) - bug report 1874 */ + (resets sound without any reason otherwise) - http://forum.openmpt.org/index.php?topic=1874.0 */ m_pModDoc->AdjustEndOfSample(m_nSample); } m_pModDoc->UpdateAllViews(NULL, (m_nSample << HINT_SHIFT_SMP) | HINT_SAMPLEDATA, this); Modified: trunk/OpenMPT/mptrack/Mptrack.cpp =================================================================== --- trunk/OpenMPT/mptrack/Mptrack.cpp 2011-01-02 16:10:49 UTC (rev 780) +++ trunk/OpenMPT/mptrack/Mptrack.cpp 2011-01-03 14:49:21 UTC (rev 781) @@ -802,13 +802,6 @@ // Initialize OLE MFC support AfxOleInit(); // Standard initialization -/* -#ifdef _AFXDLL - Enable3dControls(); // Call this when using MFC in a shared DLL -#else - Enable3dControlsStatic(); // Call this when linking to MFC statically -#endif -*/ // Change the registry key under which our settings are stored. //SetRegistryKey(_T("Olivier Lapicque")); @@ -1793,12 +1786,12 @@ const char* const pArrCredit = { "OpenMPT / ModPlug Tracker|" - "Copyright \xA9 2004-2010 Contributors|" + "Copyright \xA9 2004-2011 Contributors|" "Copyright \xA9 1997-2003 Olivier Lapicque (ol...@mo...)|" "|" "Contributors:|" - "Ahti Lepp\xE4nen (2005-2010)|" - "Johannes Schultz (2008-2010)|" + "Ahti Lepp\xE4nen (2005-2011)|" + "Johannes Schultz (2008-2011)|" "Robin Fernandes (2004-2007)|" "Sergiy Pylypenko (2007)|" "Eric Chavanon (2004-2005)|" @@ -2708,6 +2701,7 @@ } switch(iFmt & 7) { + case 5: wfx.wfx.nAvgBytesPerSec = 320/8; break; case 4: wfx.wfx.nAvgBytesPerSec = 64/8; break; case 3: wfx.wfx.nAvgBytesPerSec = 96/8; break; case 2: wfx.wfx.nAvgBytesPerSec = 128/8; break; Modified: trunk/OpenMPT/mptrack/Vstplug.cpp =================================================================== --- trunk/OpenMPT/mptrack/Vstplug.cpp 2011-01-02 16:10:49 UTC (rev 780) +++ trunk/OpenMPT/mptrack/Vstplug.cpp 2011-01-03 14:49:21 UTC (rev 781) @@ -671,7 +671,8 @@ if(pModDoc->GetSoundFile() && pModDoc->GetSoundFile()->GetModSpecifications().supportsPlugins) CMainFrame::GetMainFrame()->ThreadSafeSetModified(pModDoc); } - //Could be used to update general tab in real time, but causes flickers in treeview + // Could be used to update general tab in real time, but causes flickers in treeview + // Better idea: add an update hint just for plugin params? //pModDoc->UpdateAllViews(NULL, HINT_MIXPLUGINS, NULL); } @@ -789,7 +790,7 @@ timeInfo.timeSigDenominator = 4; //gcd(pSndFile->m_nCurrentRowsPerMeasure, pSndFile->m_nCurrentRowsPerBeat); } } - return (VstIntPtr)&timeInfo; + return ToVstPtr(&timeInfo); } // VstEvents* in <ptr> // We don't support plugs that send VSTEvents to the host @@ -891,7 +892,7 @@ // Not entirely sure what this means. We can write automation TO the plug. // Is that "read" in this context? //Log("VST plugin to host: Get Automation State\n"); - return 2; + return kVstAutomationRead; case audioMasterOfflineStart: Log("VST plugin to host: Offlinestart\n"); @@ -972,8 +973,8 @@ break; // get plug directory, FSSpec on MAC, else char* case audioMasterGetDirectory: - Log("VST plugin to host: Get Directory\n"); - break; + //Log("VST plugin to host: Get Directory\n"); + return ToVstPtr(CMainFrame::GetDefaultDirectory(DIR_PLUGINS)); // something has changed, update 'multi-fx' display case audioMasterUpdateDisplay: if (effect && effect->resvd1) @@ -1064,13 +1065,13 @@ VstFileType *pType = &(pFileSel->fileTypes[i]); extensions += pType->name; extensions += "|"; -#if (defined(WIN32) || defined(WINDOWS)) +#if (defined(WIN32) || (defined(WINDOWS) && WINDOWS == 1)) extensions += "*."; extensions += pType->dosType; -#elif defined(MAC) +#elif defined(MAC) && MAC == 1 extensions += "*"; extensions += pType->macType; -#elif defined(UNIX) +#elif defined(UNIX) && UNIX == 1 extensions += "*."; extensions += pType->unixType; #else @@ -1315,7 +1316,7 @@ } _PROBLEMATIC_PLUG, *PPROBLEMATIC_PLUG; //TODO: Check whether the list is still valid. -#define NUM_PROBLEMPLUGS 3 +#define NUM_PROBLEMPLUGS 2 static _PROBLEMATIC_PLUG gProblemPlugs[NUM_PROBLEMPLUGS] = { {kEffectMagic, CCONST('N', 'i', '4', 'S'), 1, "Native Instruments B4", "* v1.1.1 hangs on playback. Do not proceed unless you have v1.1.5. *"}, @@ -1762,7 +1763,7 @@ //rewbs.VSTcompliance //Store a pointer so we can get the CVstPlugin object from the basic VST effect object. //Assuming 32bit address space... - m_pEffect->resvd1=(VstIntPtr)this; + m_pEffect->resvd1=ToVstPtr(this); //rewbs.plugDocAware m_pSndFile = pSndFile; m_pModDoc = pSndFile->GetpModDoc(); @@ -1770,7 +1771,8 @@ //end rewbs.plugDocAware Dispatch(effOpen, 0, 0, NULL, 0); - m_bIsVst2 = (CVstPlugin::Dispatch(effGetVstVersion, 0,0, NULL, 0) >= 2) ? TRUE : FALSE; + // VST 2.0 plugins return 2 here, VST 2.4 plugins return 2400... Great! + m_bIsVst2 = (CVstPlugin::Dispatch(effGetVstVersion, 0,0, NULL, 0) >= 2) ? true : false; if (m_bIsVst2) { // Set VST speaker in/out setup to Stereo. Required for some plugins (possibly all VST 2.4+ plugins?) @@ -1802,7 +1804,7 @@ } } // For now, input setup = output setup. - Dispatch(effSetSpeakerArrangement, 0, (VstIntPtr)(&sa), &sa, 0.0f); + Dispatch(effSetSpeakerArrangement, 0, ToVstPtr(&sa), &sa, 0.0f); // Dummy pin properties collection. // We don't use them but some plugs might do inits in here. @@ -2302,18 +2304,20 @@ } void CVstPlugin::Suspend() +//------------------------ { try { Dispatch(effStopProcess, 0, 0, NULL, 0.0f); Dispatch(effMainsChanged, 0, 0, NULL, 0.0f); // calls plugin's suspend m_bPlugResumed=false; } catch (...) { - CVstPluginManager::ReportPlugException("Exception in Resume() (Plugin=%s)\n", m_pFactory->szLibraryName); + CVstPluginManager::ReportPlugException("Exception in Suspend() (Plugin=%s)\n", m_pFactory->szLibraryName); } } void CVstPlugin::ProcessVSTEvents() +//--------------------------------- { // Process VST events if ((m_pEffect) && (m_pEffect->dispatcher) && (m_pEvList) && (m_pEvList->numEvents > 0)) @@ -2351,8 +2355,9 @@ } -void CVstPlugin::SetDryRatio(UINT param) { -//---------------------------------------- +void CVstPlugin::SetDryRatio(UINT param) +//-------------------------------------- +{ param = min(param, 127); m_pMixStruct->fDryRatio = 1.0-(static_cast<float>(param)/127.0f); } Modified: trunk/OpenMPT/mptrack/Vstplug.h =================================================================== --- trunk/OpenMPT/mptrack/Vstplug.h 2011-01-02 16:10:49 UTC (rev 780) +++ trunk/OpenMPT/mptrack/Vstplug.h 2011-01-03 14:49:21 UTC (rev 781) @@ -71,7 +71,7 @@ void (*m_pProcessFP)(AEffect*, float**, float**, VstInt32); //Function pointer to AEffect processReplacing if supported, else process. CAbstractVstEditor *m_pEditor; //rewbs.defaultPlugGUI UINT m_nSampleRate; - BOOL m_bIsVst2; + bool m_bIsVst2; SNDMIXPLUGINSTATE m_MixState; UINT m_nInputs, m_nOutputs; VstEvents *m_pEvList; Modified: trunk/OpenMPT/mptrack/version.h =================================================================== --- trunk/OpenMPT/mptrack/version.h 2011-01-02 16:10:49 UTC (rev 780) +++ trunk/OpenMPT/mptrack/version.h 2011-01-03 14:49:21 UTC (rev 781) @@ -15,7 +15,7 @@ #define VER_MAJORMAJOR 1 #define VER_MAJOR 19 #define VER_MINOR 00 -#define VER_MINORMINOR 17 +#define VER_MINORMINOR 18 //Creates version number from version parts that appears in version string. //For example MAKE_VERSION_NUMERIC(1,17,02,28) gives version number of Modified: trunk/OpenMPT/packageTemplate/History.txt =================================================================== --- trunk/OpenMPT/packageTemplate/History.txt 2011-01-02 16:10:49 UTC (rev 780) +++ trunk/OpenMPT/packageTemplate/History.txt 2011-01-03 14:49:21 UTC (rev 781) @@ -10,22 +10,35 @@ (tx XYZ): thanks to XYZ for telling us about the bug -v1.19.01.00 (October 2010, revision 757) +v1.19.01.00 (January 2011, revision 781) ---------------------------------------- Pattern tab + [New] <Jojo> Clicking and dragging the row numbers selects the whole row now (Excel / Calc style) - see http://bugs.openmpt.org/view.php?id=45 [New] <Jojo> Experimental feature: Play the whole pattern row when entering notes and chords into the pattern editor. This can be enabled from the setup screen. [Mod] <Jojo> Using the Goto Dialog should now update channel parameters and set the elapsed time. (http://bugs.openmpt.org/view.php?id=28) + [Mod] <Jojo> Undo steps have been increased from 100 to 1000. [Fix] <Jojo> Cursor paste was possible even when editing was disabled. + [Fix] <Jojo> Using Right-Click -> Change Plugin on PC notes did not work for plugin numbers that were higher than the highest instrument number. [Fix] <Jojo> When entering chords into the pattern editor, the module was only marked as modified if the base note of the chord was changed. [Fix] <Jojo> When jumping to an order which is normally not played, the song variables are now reset (previously, if the main song had f.e. a global volume fade out at the end, this was retained when switching to an unplayed order, effectively muting all sub songs). + [Fix] <Jojo> OpenMPT should not crash anymore when applying the Amplify command on a pattern selection that just covers the note / instrument column of the first channel. [Reg] <Jojo> The "Position aware timer" option is gone. The position aware timer is now automatically used. It was optional in the first place because of some buggy code, which is now fixed. Pattern tab::Note properties [Fix] <Jojo> The meaning of Q0x was displayed wrong for S3M / IT. + [Fix] <Jojo> Changing a value didn't create an undo point. (http://bugs.openmpt.org/view.php?id=56) +Pattern tab::Find/replace + [New] <Jojo> Added Find / Replace mode: Find in current pattern selection. + [Imp] <Jojo> When changing the content of a combobox, the corresponding checkbox is now automatically checked. Likewise, the "Replace By" checkbox is checked if a checkbox or combobox on the "Replace" tab is enabled. + [Mod] <Jojo> "Replace All" just creates one undo point now. + Sample tab + [New] <Jojo> The new "sample grid" feature can create equally-sized sample selections, so it is f.e. easy to split a sample into four equally-sized samples. [Imp] <re> Ctrl + Mouse Wheel can now be used for zooming into the sample data. + [Mod] <Jojo> Undo steps have been increased from 100 to 1000. [Fix] <Jojo> When cutting samples with a loop, the loop end point was not always moved correctly if the cut start was in the loop. + [Fix] <re> Changing zoom level should now preserve the view position better. Instrument tab [Imp] <re> Ctrl + Mouse Wheel can now be used for zooming into the envelopes. @@ -37,14 +50,14 @@ [Imp] <Jojo> Sample sustain loops are now converted to normal loops if needed and possible. [Imp] <Jojo> Bidi loops are disabled when converting to MOD / S3M now. [Imp] <Jojo> More warnings are shown, old warning messages were improved. + [Imp] <Jojo> Volume command priority when converting from XM to IT / S3M has been changed - Cxx overrides vxx in XM, so this is now taken into account. [Fix] <Jojo> Q0y means "no volume change" in S3M / IT, but R0y means "continue volume change" in FT2, and converting from IT / S3M to XM didn't consider this. Q0y is now converted to R8y, and E9y is now converted to Q0y (instead of Q8y). Playback - [New] <Jojo> New mix mode: Compatible. This is used for MOD / S3M / XM / IT by default and has more appropriate mixing levels for those formats (same levels as Schism Tracker) than mix mode RC3. Please use compatible mixing levels when working with legacy formats from now on. + [New] <Jojo> New mix mode: Compatible. This is used for MOD / S3M / XM / IT by default and has more appropriate mixing levels for those formats (same levels as Schism Tracker) than mix mode RC3, and it forces soft panning to be *disabled*. Please use compatible mixing levels when working with legacy formats from now on. [Imp] <Jojo> Improved the algorithm for finding a free channel for note playback in the editor (does not affect normal module playback). [Fix] <Jojo> Pattern jumps to the same row + pattern as the jump command are not ignored anymore. (http://forum.openmpt.org/index.php?topic=1810.0) - IT [New] <Jojo> Edit history information can now be read from IT files and saved to IT / MPTM files. This is based on an undocumented feature in Impulse Tracker. Use View -> Edit History for viewing or deleting this information. [Imp] <Jojo> ITs made with Modplug Tracker 1.00a5 are now also detected as such. @@ -79,11 +92,14 @@ [Mod] <Jojo> Changed some code in the S3M loader that should only affect really broken S3M files which every player handles different anyway (at least my broken version of aa-polym.s3m sounds better now) [Fix] <Jojo> Octave 8 was allowed in S3M files while it shouldn't (it wasn't even saved in the file) [Fix] <Jojo> Removed the X param (#) effect from the supported effect list. - [Fix] <Jojo> Speed and tempo values are now adjusted to what Screamtracker actually expects (speed 1 - 254, tempo 32 - 255) - anything out of this range is ignored by Screamtracker, so it is now also ignored by OpenMPT. + [Fix] <Jojo> Speed and tempo values are now adjusted to what Scream Tracker actually expects (speed 1 - 254, tempo 32 - 255) - anything out of this range is ignored by Scream Tracker, so it is now also ignored by OpenMPT. VST + [New] <Jojo> Plugins can now request common file dialogs (file and directory selection). [Mod] <Jojo> When automatically inserting a new instrument from the VST editor, the bank and patch values are now not filled in anymore, so it is easier to change to another patch while editing. - [Fix] <Jojo> VST: The time signature sent to VST plugins should be correct now. + [Mod] <Jojo> Various small improvements to support VST 2.4 plugins better. + [Fix] <Jojo> Speaker arrangement is now sent to the plugins upon initialization. This fixes Voxengo SPAN 2 (a VST 2.4 plugin). Does this break other multichannel plugins? + [Fix] <Jojo> The time signature sent to VST plugins should be correct now. Other modules [Imp] <Jojo> Garbage characters in sample / instrument / song names should be gone now.. This should f.e. avoid sample names like " ntitled" turning up in modules after deleting sample names. @@ -101,7 +117,10 @@ [Mod] <Jojo> On first run, the default ASIO driver is now chosen instead of DirectSound (if there is one). [Mod] <Jojo> The "Original" mix mode now also has a version number (1.16) to reflect what the "original" thing is. [Mod] <Jojo> Updated genre list in the MP3 export dialog. + [Mod] <Jojo> When using the ACM MP3 codec, 320kbit/s bitrate should now theoretically be available. + [Mod] <Jojo> The MMX acceleration label in the Soundcard setup dialog is now updated according to the multimedia extensions that are supported by the CPU (3DNow! / SSE) [Fix] <Jojo> Mod Cleanup: Rearrange patterns was broken when using more than one sequence in the MPTM format. (tx Skaven) + [Fix] <Jojo> Mod Cleanup: Various sample / instrument rearranging functions broke PC Notes. [Fix] <Jojo> The text length was calculated wrong in the message reader, leading to a possible buffer overflow when reading song messages with mixed line endings where CR or LF line endings where expected. [Fix] <Jojo> When there was no INI file, the size of the upper pattern view was defaulting to a wrong value. [Fix] <Jojo> The ID3v2 "comments" field was not formatted properly when exporting to MP3. @@ -122,7 +141,7 @@ Pattern tab::pattern editing [Imp] <Jojo> Just like in MPT 1.16, it is now possible again to interpolate between an effect and "nothing". In that case, the same value as the already existing one is repeated between the two rows. - [Fix] <Jojo> When the first column of a pattern selection (larger than one selection field) was the parameter column, PCNote values in this column were not reset properly. + [Fix] <Jojo> When the first column of a pattern selection (larger than one selection field) was the parameter column, PC Note values in this column were not reset properly. [Fix] <Jojo> Pattern Editor: Transposing notes up/down doesn't allow notes which are actually supported by the current module format (f.e. notes below C-1 in XMs) anymore. [Fix] <Jojo> Keyboard shortcut for toggling record state didn't save the change, so it was reset with every new module. @@ -218,12 +237,12 @@ Pattern tab::pattern editing [New] <Jojo> Extended context menu for PC Notes - [New] <Jojo> Key shortcut + context menu entry for toggling the plugin editor of the PC note that's under the cursor. + [New] <Jojo> Key shortcut + context menu entry for toggling the plugin editor of the PC Note that's under the cursor. [Imp] <Jojo> Overflow paste now only uses one undo step. [Imp] <Jojo> Instead of simply ignoring note off/cut/fade when working with .MOD files, it is converted to C00. - [Fix] <rewbs> Effect visualizer is now aware of PC notes (http://forum.openmpt.org/index.php?topic=3836.0). + [Fix] <rewbs> Effect visualizer is now aware of PC Notes (http://forum.openmpt.org/index.php?topic=3836.0). [Fix] <Jojo> When using MIDI record or split keyboard settings, volume data was written into the volume column in MOD format. - [Fix] <Jojo> When converting PC Notes to MIDI Macros, the instrument index is now also cleaned as well. Noticeable for example when pasting PC notes into an IT module. + [Fix] <Jojo> When converting PC Notes to MIDI Macros, the instrument index is now also cleaned as well. Noticeable for example when pasting PC Notes into an IT module. [Fix] <Jojo> Now, plugin slot 100 can also be automated using PC Notes. [Fix] <Jojo> When pasting pattern data that exactly reached the pattern end with overflow paste enabled, a redundant undo point was created. [Fix] <Jojo> Entered (volume) effects are now properly validated (makes a difference f.e. in MOD format where it was previously possible to enter effects like Hxx) @@ -233,7 +252,7 @@ Pattern tab::GUI [New] <Jojo> When the PT1x mode or the S3M "Amiga" flag are enabled, dodgy notes (i.e lower than C-4 or higher than B-6) are marked red. - [Imp] <Jojo> The status bar shows plugin and parameter names for PC notes now as well. + [Imp] <Jojo> The status bar shows plugin and parameter names for PC Notes now as well. [Imp] <Jojo> Effect vis: Make use of song's own row highlighting variables instead of fixed global ones. [Fix] <Jojo> The status bar ("Position x of y") only the showed order length for the first sub tune if sub tunes were separated by an "---" order item. [Fix] <Jojo> Changing a channel plugin in MOD/S3M files doesn't mark them as modified anymore. @@ -421,14 +440,14 @@ [Fix] <Jojo> Pattern c&p: invalid commands are not pasted anymore. [Imp] <Jojo> If "record note off" is enabled and Note Off commands are not supported by the current format, try Note Cut and volume commands. [Mod] <Jojo> It is impossible to enter something into the volume column in MOD format now. - [Mod] <Jojo> When interpolating PC notes, the plugin number and note type won't get overridden if the note type is already PC or PCs. + [Mod] <Jojo> When interpolating PC Notes, the plugin number and note type won't get overridden if the note type is already PC or PCs. [Fix] <re> Pattern c&p: Mix paste should behave better with parameter control notes. [Fix] <Jojo> 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] <Jojo> Amplify doesn't use volume column in MOD format anymore. [Fix] <Jojo> When recording live from the keyboard, SDx shouldn't exceed the song speed anymore. [Fix] <Jojo> Got rid of possible redundant undo points. - [Fix] <Jojo> PC notes are now deleted properly (last column). - [Fix] <Jojo> Copying only the param column of PC notes overwrote the value column when pasting them. + [Fix] <Jojo> PC Notes are now deleted properly (last column). + [Fix] <Jojo> Copying only the param column of PC Notes overwrote the value column when pasting them. [Fix] <Jojo> Entering Note Fade notes didn't work the "old style" way. Pattern tab::GUI @@ -721,7 +740,7 @@ [Fix] <Jojo> Don't ignore value of pattern break commands on last pattern anymore. MPTM - [New] <re> New experimental parameter controls (PC notes) for controlling plug params. + [New] <re> New experimental parameter controls (PC Notes) for controlling plug params. [New] <re> Can now have multiple sequences in a module (access from orderlist context menu). [New] <Jojo> Allow up to 240 envelope points. [New] <Jojo> IT "Note Fade" command: This existed in IT's player routines already, but there was no way to actually use it in the editor. Triggering an invalid note would cause a note fade, so this is a new note type. Modified: trunk/OpenMPT/soundlib/Snd_fx.cpp =================================================================== --- trunk/OpenMPT/soundlib/Snd_fx.cpp 2011-01-02 16:10:49 UTC (rev 780) +++ trunk/OpenMPT/soundlib/Snd_fx.cpp 2011-01-03 14:49:21 UTC (rev 781) @@ -777,8 +777,14 @@ return; } - if (m_nType & (MOD_TYPE_XM|MOD_TYPE_MT2|MOD_TYPE_MED)) note += pChn->nTranspose; - note = CLAMP(note, NOTE_MIN, NOTE_MAX); + if (m_nType & (MOD_TYPE_XM|MOD_TYPE_MT2|MOD_TYPE_MED)) + { + note += pChn->nTranspose; + note = CLAMP(note, NOTE_MIN, 131); // why 131? 120+11, how does this make sense? + } else + { + note = CLAMP(note, NOTE_MIN, NOTE_MAX); + } pChn->nNote = note; pChn->m_CalculateFreq = true; @@ -3000,6 +3006,7 @@ // TRASH IT!!! (Yes, the sample!) pModSample->pSample[pModSample->nLoopStart + pChn->nEFxOffset] = ~pModSample->pSample[pModSample->nLoopStart + pChn->nEFxOffset]; + //AdjustSampleLoop(pModSample); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |