From: <rel...@us...> - 2009-03-07 21:25:00
|
Revision: 251 http://modplug.svn.sourceforge.net/modplug/?rev=251&view=rev Author: relabsoluness Date: 2009-03-07 21:24:44 +0000 (Sat, 07 Mar 2009) Log Message: ----------- (Patch from Jojo, merged slightly modified) + Added descriptions of SBx, S3x, S4x and S5x command parameters to note properties dialog. Modified Paths: -------------- trunk/OpenMPT/mptrack/Moddoc.cpp Modified: trunk/OpenMPT/mptrack/Moddoc.cpp =================================================================== --- trunk/OpenMPT/mptrack/Moddoc.cpp 2009-02-14 19:45:18 UTC (rev 250) +++ trunk/OpenMPT/mptrack/Moddoc.cpp 2009-03-07 21:24:44 UTC (rev 251) @@ -2420,28 +2420,28 @@ if (param) wsprintf(s, "note+%d note+%d", param >> 4, param & 0x0F); else - wsprintf(s, "continue"); + strcpy(s, "continue"); break; case CMD_PORTAMENTOUP: if (param) wsprintf(s, "+%d", param); else - wsprintf(s, "continue"); + strcpy(s, "continue"); break; case CMD_PORTAMENTODOWN: if (param) wsprintf(s, "-%d", param); else - wsprintf(s, "continue"); + strcpy(s, "continue"); break; case CMD_TONEPORTAMENTO: if (param) wsprintf(s, "speed %d", param); else - wsprintf(s, "continue"); + strcpy(s, "continue"); break; case CMD_VIBRATO: @@ -2614,7 +2614,30 @@ { switch(param & 0xF0) { + case 0x30: + case 0x40: + case 0x50: + if(gFXInfo[ndx].dwEffect == CMD_S3MCMDEX) + { + 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; + } + } + break; case 0x60: if (gFXInfo[ndx].dwEffect == CMD_MODCMDEX) break; + case 0xB0: + if (gFXInfo[ndx].dwEffect == CMD_S3MCMDEX) + { + if((param & 0x0F) == 0x00) + strcpy(s, "loop start"); + else + strcat(s, " times"); + } + break; case 0xC0: case 0xD0: strcat(s, " frames"); break; case 0xE0: strcat(s, " rows"); break; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sag...@us...> - 2009-07-06 22:12:42
|
Revision: 284 http://modplug.svn.sourceforge.net/modplug/?rev=284&view=rev Author: saga-games Date: 2009-07-06 22:12:39 +0000 (Mon, 06 Jul 2009) Log Message: ----------- [Imp] Note properties: Completed descriptions for extended MOD/XM, fixed display of several effects. Modified Paths: -------------- trunk/OpenMPT/mptrack/Moddoc.cpp Modified: trunk/OpenMPT/mptrack/Moddoc.cpp =================================================================== --- trunk/OpenMPT/mptrack/Moddoc.cpp 2009-07-06 21:48:54 UTC (rev 283) +++ trunk/OpenMPT/mptrack/Moddoc.cpp 2009-07-06 22:12:39 UTC (rev 284) @@ -2634,49 +2634,95 @@ } else { wsprintf(s, "%d", param & 0x0F); - if ((gFXInfo[ndx].dwEffect == CMD_S3MCMDEX) || (gFXInfo[ndx].dwEffect == CMD_MODCMDEX)) + if(gFXInfo[ndx].dwEffect == CMD_S3MCMDEX) { switch(param & 0xF0) { - case 0x10: + case 0x10: // glissando control if((param & 0x0F) == 0) strcpy(s, "smooth"); else strcpy(s, "semitones"); break; - case 0x30: - case 0x40: - case 0x50: - if(gFXInfo[ndx].dwEffect == CMD_S3MCMDEX) + case 0x30: // vibrato waveform + case 0x40: // tremolo waveform + case 0x50: // panbrello waveform + switch(param & 0x0F) { - 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: 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; } break; - case 0x60: if (gFXInfo[ndx].dwEffect == CMD_MODCMDEX) break; - case 0xA0: + case 0x60: // fine pattern delay (ticks) + strcat(s, " rows"); + break; + + case 0xA0: // high offset wsprintf(s, "+ %u samples", 0x10000 * (param & 0x0F)); break; - case 0xB0: - if (gFXInfo[ndx].dwEffect == CMD_S3MCMDEX) + case 0xB0: // pattern loop + if((param & 0x0F) == 0x00) + strcpy(s, "loop start"); + else + strcat(s, " times"); + break; + case 0xC0: // note cut + case 0xD0: // note delay + strcat(s, " frames"); + break; + case 0xE0: // pattern delay (rows) + strcat(s, " rows"); + break; + case 0xF0: // macro + wsprintf(s, "SF%X", param & 0x0F); break; + default: + break; + } + } + if(gFXInfo[ndx].dwEffect == CMD_MODCMDEX) + { + switch(param & 0xF0) + { + case 0x30: // glissando control + if((param & 0x0F) == 0) + strcpy(s, "smooth"); + else + strcpy(s, "semitones"); + 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) { - if((param & 0x0F) == 0x00) - strcpy(s, "loop start"); - else - strcat(s, " times"); + 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; } break; - case 0xC0: - case 0xD0: strcat(s, " frames"); break; - case 0xE0: strcat(s, " rows"); break; - case 0xF0: wsprintf(s, "SF%X", param & 0x0F); break; + case 0x60: // pattern loop + if((param & 0x0F) == 0x00) + strcpy(s, "loop start"); + else + strcat(s, " times"); + break; + case 0x90: // retrigger + wsprintf(s, "speed %d", param & 0x0F); + break; + case 0xC0: // note cut + case 0xD0: // note delay + strcat(s, " frames"); + break; + case 0xE0: // pattern delay (rows) + strcat(s, " rows"); + break; + case 0xF0: // macro + wsprintf(s, "SF%X", param & 0x0F); break; + default: + break; } } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sag...@us...> - 2010-02-09 20:21:49
|
Revision: 489 http://modplug.svn.sourceforge.net/modplug/?rev=489&view=rev Author: saga-games Date: 2010-02-09 20:21:38 +0000 (Tue, 09 Feb 2010) Log Message: ----------- [Fix] Pattern Editor: In Note Properties, the waveform display for S[345]x (and equivalent MOD/XM effeects) was not always fully visible ("continue" addition was cut off) Modified Paths: -------------- trunk/OpenMPT/mptrack/Moddoc.cpp Modified: trunk/OpenMPT/mptrack/Moddoc.cpp =================================================================== --- trunk/OpenMPT/mptrack/Moddoc.cpp 2010-02-08 21:41:59 UTC (rev 488) +++ trunk/OpenMPT/mptrack/Moddoc.cpp 2010-02-09 20:21:38 UTC (rev 489) @@ -2678,10 +2678,10 @@ 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; + case 0x04: strcpy(s, "sine wave (cont.)"); break; + case 0x05: strcpy(s, "ramp down (cont.)"); break; + case 0x06: strcpy(s, "square wave (cont.)"); break; + case 0x07: strcpy(s, "random (cont.)"); break; default: strcpy(s, "ignore"); break; } break; @@ -2737,10 +2737,10 @@ 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; + case 0x04: case 0x0C: strcpy(s, "sine wave (cont.)"); break; + case 0x05: case 0x0D: strcpy(s, "ramp down (cont.)"); break; + case 0x06: case 0x0E: strcpy(s, "square wave (cont.)"); break; + case 0x07: case 0x0F: strcpy(s, "square wave (cont.)"); break; } break; case 0x60: // pattern loop @@ -3516,4 +3516,3 @@ } return displayName; } - This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sag...@us...> - 2013-03-27 22:45:10
|
Revision: 1700 http://sourceforge.net/p/modplug/code/1700 Author: saga-games Date: 2013-03-27 22:45:04 +0000 (Wed, 27 Mar 2013) Log Message: ----------- [Fix] Setting channel panning from Quick Channel Settings dialog didn't reset the surround flag. Modified Paths: -------------- trunk/OpenMPT/mptrack/Moddoc.cpp Modified: trunk/OpenMPT/mptrack/Moddoc.cpp =================================================================== --- trunk/OpenMPT/mptrack/Moddoc.cpp 2013-03-26 19:26:09 UTC (rev 1699) +++ trunk/OpenMPT/mptrack/Moddoc.cpp 2013-03-27 22:45:04 UTC (rev 1700) @@ -1355,40 +1355,41 @@ bool CModDoc::SetChannelGlobalVolume(CHANNELINDEX nChn, uint16 nVolume) //--------------------------------------------------------------------- { - bool bOk = false; - if ((nChn >= m_SndFile.GetNumChannels()) || (nVolume > 64)) return false; - if (m_SndFile.ChnSettings[nChn].nVolume != nVolume) + bool ok = false; + if(nChn >= m_SndFile.GetNumChannels() || nVolume > 64) return false; + if(m_SndFile.ChnSettings[nChn].nVolume != nVolume) { m_SndFile.ChnSettings[nChn].nVolume = nVolume; - if (m_SndFile.GetType() & (MOD_TYPE_IT | MOD_TYPE_MPT)) SetModified(); - bOk = true; + if(m_SndFile.GetType() & (MOD_TYPE_IT | MOD_TYPE_MPT)) SetModified(); + ok = true; } m_SndFile.Chn[nChn].nGlobalVol = nVolume; - return bOk; + return ok; } bool CModDoc::SetChannelDefaultPan(CHANNELINDEX nChn, uint16 nPan) //---------------------------------------------------------------- { - bool bOk = false; - if ((nChn >= m_SndFile.GetNumChannels()) || (nPan > 256)) return false; - if (m_SndFile.ChnSettings[nChn].nPan != nPan) + bool ok = false; + if(nChn >= m_SndFile.GetNumChannels() || nPan > 256) return false; + if(m_SndFile.ChnSettings[nChn].nPan != nPan || m_SndFile.ChnSettings[nChn].dwFlags[CHN_SURROUND]) { m_SndFile.ChnSettings[nChn].nPan = nPan; m_SndFile.ChnSettings[nChn].dwFlags.reset(CHN_SURROUND); - if (m_SndFile.GetType() & (MOD_TYPE_S3M | MOD_TYPE_IT | MOD_TYPE_MPT)) SetModified(); - bOk = true; + if(m_SndFile.GetType() & (MOD_TYPE_S3M | MOD_TYPE_IT | MOD_TYPE_MPT)) SetModified(); + ok = true; } m_SndFile.Chn[nChn].nPan = nPan; - return bOk; + m_SndFile.Chn[nChn].dwFlags.reset(CHN_SURROUND); + return ok; } bool CModDoc::IsChannelMuted(CHANNELINDEX nChn) const //--------------------------------------------------- { - if (nChn >= m_SndFile.GetNumChannels()) return true; + if(nChn >= m_SndFile.GetNumChannels()) return true; return m_SndFile.ChnSettings[nChn].dwFlags[CHN_MUTE]; } @@ -1396,15 +1397,15 @@ bool CModDoc::IsSampleMuted(SAMPLEINDEX nSample) const //---------------------------------------------------- { - if ((!nSample) || (nSample > m_SndFile.GetNumSamples())) return false; - return (m_SndFile.GetSample(nSample).uFlags & CHN_MUTE) != 0; + if(!nSample || nSample > m_SndFile.GetNumSamples()) return false; + return m_SndFile.GetSample(nSample).uFlags[CHN_MUTE]; } bool CModDoc::IsInstrumentMuted(INSTRUMENTINDEX nInstr) const //----------------------------------------------------------- { - if ((!nInstr) || (nInstr > m_SndFile.GetNumInstruments()) || (!m_SndFile.Instruments[nInstr])) return false; + if(!nInstr || nInstr > m_SndFile.GetNumInstruments() || !m_SndFile.Instruments[nInstr]) return false; return m_SndFile.Instruments[nInstr]->dwFlags[INS_MUTE]; } @@ -1412,7 +1413,7 @@ UINT CModDoc::GetPatternSize(PATTERNINDEX nPat) const //--------------------------------------------------- { - if ((nPat < m_SndFile.Patterns.Size()) && (m_SndFile.Patterns[nPat])) return m_SndFile.Patterns[nPat].GetNumRows(); + if(nPat < m_SndFile.Patterns.Size() && m_SndFile.Patterns[nPat]) return m_SndFile.Patterns[nPat].GetNumRows(); return 0; } @@ -1423,7 +1424,7 @@ CMainFrame *pMainFrm = CMainFrame::GetMainFrame(); m_hWndFollow = hwnd; m_dwNotifyType = dwType; - if (pMainFrm) pMainFrm->SetFollowSong(this, m_hWndFollow, TRUE, m_dwNotifyType); + if(pMainFrm) pMainFrm->SetFollowSong(this, m_hWndFollow, TRUE, m_dwNotifyType); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <man...@us...> - 2013-04-17 04:44:46
|
Revision: 1899 http://sourceforge.net/p/modplug/code/1899 Author: manxorist Date: 2013-04-17 04:44:37 +0000 (Wed, 17 Apr 2013) Log Message: ----------- [Fix] Opening a module which would cause some information being displayed to the user would crash since r1834. Revision Links: -------------- http://sourceforge.net/p/modplug/code/1834 Modified Paths: -------------- trunk/OpenMPT/mptrack/Moddoc.cpp Modified: trunk/OpenMPT/mptrack/Moddoc.cpp =================================================================== --- trunk/OpenMPT/mptrack/Moddoc.cpp 2013-04-16 23:35:49 UTC (rev 1898) +++ trunk/OpenMPT/mptrack/Moddoc.cpp 2013-04-17 04:44:37 UTC (rev 1899) @@ -224,7 +224,7 @@ if (GetLog().size() > 0) { CString sTemp; - sTemp.Format("File: %s\nLast saved with: %s, your version is %s\n\n%s", lpszPathName, (LPCTSTR)MptVersion::ToStr(m_SndFile.m_dwLastSavedWithVersion), MptVersion::str, GetLogString()); + sTemp.Format("File: %s\nLast saved with: %s, your version is %s\n\n%s", lpszPathName, (LPCTSTR)MptVersion::ToStr(m_SndFile.m_dwLastSavedWithVersion), MptVersion::str, GetLogString().c_str()); Reporting::Information(sTemp); ClearLog(); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sag...@us...> - 2010-05-22 13:45:23
|
Revision: 603 http://modplug.svn.sourceforge.net/modplug/?rev=603&view=rev Author: saga-games Date: 2010-05-22 13:45:17 +0000 (Sat, 22 May 2010) Log Message: ----------- [Fix] Wave Conversion: Sample / instrument mute state was not always updated properly when using the "render by instrument" mode. Modified Paths: -------------- trunk/OpenMPT/mptrack/Moddoc.cpp Modified: trunk/OpenMPT/mptrack/Moddoc.cpp =================================================================== --- trunk/OpenMPT/mptrack/Moddoc.cpp 2010-05-22 13:36:09 UTC (rev 602) +++ trunk/OpenMPT/mptrack/Moddoc.cpp 2010-05-22 13:45:17 UTC (rev 603) @@ -1469,7 +1469,6 @@ // Instrument mode: Same as channel mode, but renders per instrument (or sample) if(wsdlg.m_bInstrumentMode) { - // render by instrument (or sample) if(m_SndFile.GetNumInstruments() == 0) { nRenderPasses = m_SndFile.GetNumSamples(); @@ -1507,13 +1506,14 @@ // Channel mode if(wsdlg.m_bChannelMode) { + // Re-mute previously processed channel + if(i > 0) m_SndFile.ChnSettings[i - 1].dwFlags |= CHN_MUTE; + // Add channel number & name (if available) to path string if(strlen(m_SndFile.ChnSettings[i].szName) > 0) wsprintf(sFilenameAdd, "-%03d_%s.wav", i + 1, m_SndFile.ChnSettings[i].szName); else wsprintf(sFilenameAdd, "-%03d.wav", i + 1); - // Re-mute previously processed channel - if(i > 0) m_SndFile.ChnSettings[i - 1].dwFlags |= CHN_MUTE; // Unmute channel to process m_SndFile.ChnSettings[i].dwFlags &= ~CHN_MUTE; } @@ -1522,6 +1522,9 @@ { if(m_SndFile.GetNumInstruments() == 0) { + // Re-mute previously processed sample + if(i > 0) MuteSample((SAMPLEINDEX)i, true); + if(m_SndFile.Samples[i + 1].pSample == nullptr || !m_SndFile.IsSampleUsed((SAMPLEINDEX)(i + 1))) continue; // Add sample number & name (if available) to path string @@ -1529,20 +1532,19 @@ wsprintf(sFilenameAdd, "-%03d_%s.wav", i + 1, m_SndFile.m_szNames[i + 1]); else wsprintf(sFilenameAdd, "-%03d.wav", i + 1); - // Re-mute previously processed sample - if(i > 0) MuteSample((SAMPLEINDEX)i, true); // Unmute sample to process MuteSample((SAMPLEINDEX)(i + 1), false); } else { + // Re-mute previously processed instrument + if(i > 0) MuteInstrument((INSTRUMENTINDEX)i, true); + if(m_SndFile.Instruments[i + 1] == nullptr || !m_SndFile.IsInstrumentUsed((INSTRUMENTINDEX)(i + 1))) continue; if(strlen(m_SndFile.Instruments[i + 1]->name) > 0) wsprintf(sFilenameAdd, "-%03d_%s.wav", i + 1, m_SndFile.Instruments[i + 1]->name); else wsprintf(sFilenameAdd, "-%03d.wav", i + 1); - // Re-mute previously processed instrument - if(i > 0) MuteInstrument((INSTRUMENTINDEX)i, true); // Unmute instrument to process MuteInstrument((INSTRUMENTINDEX)(i + 1), false); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sag...@us...> - 2011-05-27 18:11:39
|
Revision: 885 http://modplug.svn.sourceforge.net/modplug/?rev=885&view=rev Author: saga-games Date: 2011-05-27 18:11:33 +0000 (Fri, 27 May 2011) Log Message: ----------- [Fix] When using the pattern play controls (f.e. "Replay Pattern") on a pattern that isn't played in the normal play sequence, tempo and global volume commands on the first played row are not ignored anymore. Modified Paths: -------------- trunk/OpenMPT/mptrack/Moddoc.cpp Modified: trunk/OpenMPT/mptrack/Moddoc.cpp =================================================================== --- trunk/OpenMPT/mptrack/Moddoc.cpp 2011-05-26 23:22:39 UTC (rev 884) +++ trunk/OpenMPT/mptrack/Moddoc.cpp 2011-05-27 18:11:33 UTC (rev 885) @@ -3391,6 +3391,9 @@ BEGIN_CRITICAL(); + // set playback timer in the status bar (and update channel status) + SetElapsedTime(nOrd, 0); + // Cut instruments/samples for (UINT i=0; i<MAX_CHANNELS; i++) { @@ -3413,9 +3416,6 @@ //end rewbs.vstCompliance END_CRITICAL(); - // set playback timer in the status bar - SetElapsedTime(nOrd, 0); - if (pModPlaying != this) { pMainFrm->PlayMod(this, followSonghWnd, m_dwNotifyType|MPTNOTIFY_POSITION|MPTNOTIFY_VUMETERS); //rewbs.fix2977 @@ -3450,6 +3450,10 @@ CModDoc *pModPlaying = pMainFrm->GetModPlaying(); BEGIN_CRITICAL(); + + // set playback timer in the status bar (and update channel status) + SetElapsedTime(nOrd, nRow); + // Cut instruments/samples for (UINT i=pSndFile->m_nChannels; i<MAX_CHANNELS; i++) { @@ -3468,9 +3472,6 @@ //end rewbs.VSTCompliance END_CRITICAL(); - // set playback timer in the status bar - SetElapsedTime(nOrd, nRow); - if (pModPlaying != this) { pMainFrm->PlayMod(this, followSonghWnd, m_dwNotifyType|MPTNOTIFY_POSITION|MPTNOTIFY_VUMETERS); //rewbs.fix2977 } @@ -3505,6 +3506,10 @@ CModDoc *pModPlaying = pMainFrm->GetModPlaying(); BEGIN_CRITICAL(); + + // set playback timer in the status bar (and update channel status) + SetElapsedTime(nOrd, nRow); + // Cut instruments/samples for (UINT i=pSndFile->m_nChannels; i<MAX_CHANNELS; i++) { @@ -3526,9 +3531,6 @@ //rewbs.VSTCompliance END_CRITICAL(); - // set playback timer in the status bar - SetElapsedTime(nOrd, nRow); - if (pModPlaying != this) { pMainFrm->PlayMod(this, followSonghWnd, m_dwNotifyType|MPTNOTIFY_POSITION|MPTNOTIFY_VUMETERS); //rewbs.fix2977 @@ -3751,7 +3753,7 @@ bShowLog = true; } - UINT nNewChannels = CLAMP(dlg.m_nChannels, m_SndFile.GetModSpecifications().channelsMin, m_SndFile.GetModSpecifications().channelsMax); + CHANNELINDEX nNewChannels = CLAMP(dlg.m_nChannels, m_SndFile.GetModSpecifications().channelsMin, m_SndFile.GetModSpecifications().channelsMax); if (nNewChannels != GetSoundFile()->GetNumChannels()) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sag...@us...> - 2012-09-18 19:52:36
|
Revision: 1351 http://modplug.svn.sourceforge.net/modplug/?rev=1351&view=rev Author: saga-games Date: 2012-09-18 19:52:29 +0000 (Tue, 18 Sep 2012) Log Message: ----------- [Fix] A known file extension shouldn't create wrong file extension in the wav/mp3 export dialog anymore (http://bugs.openmpt.org/view.php?id=298) Modified Paths: -------------- trunk/OpenMPT/mptrack/Moddoc.cpp Modified: trunk/OpenMPT/mptrack/Moddoc.cpp =================================================================== --- trunk/OpenMPT/mptrack/Moddoc.cpp 2012-09-11 15:08:58 UTC (rev 1350) +++ trunk/OpenMPT/mptrack/Moddoc.cpp 2012-09-18 19:52:29 UTC (rev 1351) @@ -1530,6 +1530,7 @@ if ((!pMainFrm) || (!m_SndFile.GetType())) return; _splitpath(GetPathName(), NULL, NULL, fname, NULL); + strcat_s(fname, CountOf(fname), ".wav"); CWaveConvert wsdlg(pMainFrm, nMinOrder, nMaxOrder); if (wsdlg.DoModal() != IDOK) return; @@ -1724,6 +1725,7 @@ if ((!pMainFrm) || (!m_SndFile.GetType())) return; _splitpath(GetPathName(), NULL, NULL, sFName, NULL); + strcat_s(sFName, CountOf(sFName), ".mp3"); FileDlgResult files = CTrackApp::ShowOpenSaveFileDialog(false, "mp3", sFName, "MPEG Layer III Files (*.mp3)|*.mp3|Layer3 Wave Files (*.wav)|*.wav||", This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sag...@us...> - 2013-06-21 10:08:06
|
Revision: 2392 http://sourceforge.net/p/modplug/code/2392 Author: saga-games Date: 2013-06-21 10:07:58 +0000 (Fri, 21 Jun 2013) Log Message: ----------- [Fix] Estimated song length was a bit off due to rounding. Modified Paths: -------------- trunk/OpenMPT/mptrack/Moddoc.cpp Modified: trunk/OpenMPT/mptrack/Moddoc.cpp =================================================================== --- trunk/OpenMPT/mptrack/Moddoc.cpp 2013-06-17 22:46:04 UTC (rev 2391) +++ trunk/OpenMPT/mptrack/Moddoc.cpp 2013-06-21 10:07:58 UTC (rev 2392) @@ -2268,7 +2268,7 @@ if(songLength != std::numeric_limits<double>::infinity()) { songLength = Util::Round(songLength); - s.Format("Approximate song length: %.0fmn%02.0fs", songLength / 60.0, fmod(songLength, 60.0)); + s.Format("Approximate song length: %.0fmn%02.0fs", std::floor(songLength / 60.0), fmod(songLength, 60.0)); } else { s = "Song too long!"; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <man...@us...> - 2013-06-30 13:34:28
|
Revision: 2441 http://sourceforge.net/p/modplug/code/2441 Author: manxorist Date: 2013-06-30 13:34:18 +0000 (Sun, 30 Jun 2013) Log Message: ----------- [Ref] Silence type conversion warning. Modified Paths: -------------- trunk/OpenMPT/mptrack/Moddoc.cpp Modified: trunk/OpenMPT/mptrack/Moddoc.cpp =================================================================== --- trunk/OpenMPT/mptrack/Moddoc.cpp 2013-06-30 13:31:22 UTC (rev 2440) +++ trunk/OpenMPT/mptrack/Moddoc.cpp 2013-06-30 13:34:18 UTC (rev 2441) @@ -1180,7 +1180,7 @@ CriticalSection cs; //rewbs.vstiLive - if(ins != INSTRUMENTINDEX_INVALID && ins <= m_SndFile.GetNumInstruments() && ModCommand::IsNote(note)) + if(ins != INSTRUMENTINDEX_INVALID && ins <= m_SndFile.GetNumInstruments() && ModCommand::IsNote(ModCommand::NOTE(note))) { ModInstrument *pIns = m_SndFile.Instruments[ins]; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <man...@us...> - 2013-10-04 19:49:12
|
Revision: 2820 http://sourceforge.net/p/modplug/code/2820 Author: manxorist Date: 2013-10-04 19:49:06 +0000 (Fri, 04 Oct 2013) Log Message: ----------- [Fix] Set mixer settings in CModDoc contructor so that VST plugins get the correct samplerate on initialization. This helps broken VST plugins that do not support changing samplerate afterwards. Modified Paths: -------------- trunk/OpenMPT/mptrack/Moddoc.cpp Modified: trunk/OpenMPT/mptrack/Moddoc.cpp =================================================================== --- trunk/OpenMPT/mptrack/Moddoc.cpp 2013-10-03 21:30:29 UTC (rev 2819) +++ trunk/OpenMPT/mptrack/Moddoc.cpp 2013-10-04 19:49:06 UTC (rev 2820) @@ -154,6 +154,8 @@ ReinitRecordState(); // -! NEW_FEATURE#0015 m_ShowSavedialog = false; + + CMainFrame::UpdateAudioParameters(m_SndFile, true); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <man...@us...> - 2014-10-06 16:42:36
|
Revision: 4398 http://sourceforge.net/p/modplug/code/4398 Author: manxorist Date: 2014-10-06 16:42:26 +0000 (Mon, 06 Oct 2014) Log Message: ----------- [Ref] Invert NO_FILEREADER_STD_ISTREAM to MPT_FILEREADER_STD_ISTREAM for better code readability. Modified Paths: -------------- trunk/OpenMPT/mptrack/Moddoc.cpp Modified: trunk/OpenMPT/mptrack/Moddoc.cpp =================================================================== --- trunk/OpenMPT/mptrack/Moddoc.cpp 2014-10-06 16:40:16 UTC (rev 4397) +++ trunk/OpenMPT/mptrack/Moddoc.cpp 2014-10-06 16:42:26 UTC (rev 4398) @@ -29,10 +29,10 @@ #include "modsmp_ctrl.h" #include "CleanupSong.h" #include "../common/StringFixer.h" -#ifdef NO_FILEREADER_STD_ISTREAM +#if defined(MPT_FILEREADER_STD_ISTREAM) +#include "../common/mptFstream.h" +#else #include "MemoryMappedFile.h" -#else -#include "../common/mptFstream.h" #endif #include "soundlib/FileReader.h" #include <shlwapi.h> @@ -219,7 +219,7 @@ if(filename.empty()) return OnNewDocument(); BeginWaitCursor(); - #ifndef NO_FILEREADER_STD_ISTREAM + #if defined(MPT_FILEREADER_STD_ISTREAM) mpt::ifstream f(filename, std::ios_base::binary); m_SndFile.Create(FileReader(&f), CSoundFile::loadCompleteModule, this); #else This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sag...@us...> - 2014-10-11 13:50:15
|
Revision: 4420 http://sourceforge.net/p/modplug/code/4420 Author: saga-games Date: 2014-10-11 13:50:02 +0000 (Sat, 11 Oct 2014) Log Message: ----------- [Imp] When previewing instruments with a fadeout value of 0, instantly stop them on key-up instead of letting them play forever. Modified Paths: -------------- trunk/OpenMPT/mptrack/Moddoc.cpp Modified: trunk/OpenMPT/mptrack/Moddoc.cpp =================================================================== --- trunk/OpenMPT/mptrack/Moddoc.cpp 2014-10-11 13:48:29 UTC (rev 4419) +++ trunk/OpenMPT/mptrack/Moddoc.cpp 2014-10-11 13:50:02 UTC (rev 4420) @@ -583,7 +583,7 @@ std::string defaultExtension = m_SndFile.GetModSpecifications().fileExtension; - switch(m_SndFile.GetType()) + switch(m_SndFile.GetBestSaveFormat()) { case MOD_TYPE_MOD: MsgBoxHidable(ModSaveHint); @@ -1231,16 +1231,17 @@ const ChannelFlags mask = (fade ? CHN_NOTEFADE : (CHN_NOTEFADE | CHN_KEYOFF)); ModChannel *pChn = &m_SndFile.m_PlayState.Chn[stopChn != CHANNELINDEX_INVALID ? stopChn : m_SndFile.m_nChannels]; - for(CHANNELINDEX i = m_SndFile.GetNumChannels(); i < MAX_CHANNELS; i++, pChn++) if (!pChn->nMasterChn) + for(CHANNELINDEX i = m_SndFile.GetNumChannels(); i < MAX_CHANNELS; i++, pChn++) { - - // Fade all channels > m_nChannels which are playing this note. - // Could conflict with NNAs. - if(!pChn->dwFlags[mask] && pChn->nLength && (note == pChn->nNewNote || !note)) + // Fade all channels > m_nChannels which are playing this note and aren't NNA channels. + if(!pChn->nMasterChn && !pChn->dwFlags[mask] && pChn->nLength && (note == pChn->nNewNote || !note)) { m_SndFile.KeyOff(pChn); if (!m_SndFile.m_nInstruments) pChn->dwFlags.reset(CHN_LOOP); // FIXME: If a sample with pingpong loop is playing backwards, stuff before the loop is played again! if (fade) pChn->dwFlags.set(CHN_NOTEFADE); + // Instantly stop samples that would otherwise play forever + if (pChn->pModInstrument && !pChn->pModInstrument->nFadeOut) + pChn->nFadeOutVol = 0; if (note) break; } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <man...@us...> - 2014-11-03 18:23:14
|
Revision: 4544 http://sourceforge.net/p/modplug/code/4544 Author: manxorist Date: 2014-11-03 18:23:01 +0000 (Mon, 03 Nov 2014) Log Message: ----------- [Fix] In r4516, building with MPT_USTRING_MODE_UTF8 broke. Revision Links: -------------- http://sourceforge.net/p/modplug/code/4516 Modified Paths: -------------- trunk/OpenMPT/mptrack/Moddoc.cpp Modified: trunk/OpenMPT/mptrack/Moddoc.cpp =================================================================== --- trunk/OpenMPT/mptrack/Moddoc.cpp 2014-11-03 18:03:46 UTC (rev 4543) +++ trunk/OpenMPT/mptrack/Moddoc.cpp 2014-11-03 18:23:01 UTC (rev 4544) @@ -918,7 +918,7 @@ if(!parent) parent = CMainFrame::GetMainFrame(); if(GetLog().size() > 0) { - std::wstring text = preamble + GetLogString(); + std::wstring text = preamble + mpt::ToWide(GetLogString()); std::wstring actualTitle = (title.length() == 0) ? MAINFRAME_TITLEW : title; switch(GetMaxLogLevel()) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sag...@us...> - 2014-12-15 00:56:19
|
Revision: 4652 http://sourceforge.net/p/modplug/code/4652 Author: saga-games Date: 2014-12-15 00:56:12 +0000 (Mon, 15 Dec 2014) Log Message: ----------- [Imp] Support relative paths in SongProperties.ini Modified Paths: -------------- trunk/OpenMPT/mptrack/Moddoc.cpp Modified: trunk/OpenMPT/mptrack/Moddoc.cpp =================================================================== --- trunk/OpenMPT/mptrack/Moddoc.cpp 2014-12-15 00:26:30 UTC (rev 4651) +++ trunk/OpenMPT/mptrack/Moddoc.cpp 2014-12-15 00:56:12 UTC (rev 4652) @@ -2969,7 +2969,7 @@ void CModDoc::SerializeViews() const //---------------------------------- { - const mpt::PathString pathName = GetPathNameMpt(); + const mpt::PathString pathName = theApp.IsPortableMode() ? GetPathNameMpt().AbsolutePathToRelative(theApp.GetAppDirPath()) : GetPathNameMpt(); if(pathName.empty()) { return; @@ -3035,17 +3035,23 @@ void CModDoc::DeserializeViews() //------------------------------ { - const mpt::PathString pathName = GetPathNameMpt(); + mpt::PathString pathName = GetPathNameMpt(); if(pathName.empty()) return; SettingsContainer &settings = theApp.GetSongSettings(); mpt::ustring s = settings.Read<mpt::ustring>("WindowSettings", pathName.ToWide()); if(s.size() < 2) { - // Try searching for filename instead of full path name - const std::wstring altName = settings.Read<std::wstring>("WindowSettings", pathName.GetFullFileName().ToWide()); - s = settings.Read<mpt::ustring>("WindowSettings", altName); - if(s.size() < 2) return; + // Try relative path + pathName = pathName.RelativePathToAbsolute(theApp.GetAppDirPath()); + s = settings.Read<mpt::ustring>("WindowSettings", pathName.ToWide()); + if(s.size() < 2) + { + // Try searching for filename instead of full path name + const std::wstring altName = settings.Read<std::wstring>("WindowSettings", pathName.GetFullFileName().ToWide()); + s = settings.Read<mpt::ustring>("WindowSettings", altName); + if(s.size() < 2) return; + } } std::vector<char> data = Util::HexToBin(s); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sag...@us...> - 2015-04-19 17:28:21
|
Revision: 4956 http://sourceforge.net/p/modplug/code/4956 Author: saga-games Date: 2015-04-19 17:28:15 +0000 (Sun, 19 Apr 2015) Log Message: ----------- [Fix] When saving an external sample fails while closing the module containing the sample, the module remains open so that the user can investigate the problem. Modified Paths: -------------- trunk/OpenMPT/mptrack/Moddoc.cpp Modified: trunk/OpenMPT/mptrack/Moddoc.cpp =================================================================== --- trunk/OpenMPT/mptrack/Moddoc.cpp 2015-04-19 16:55:55 UTC (rev 4955) +++ trunk/OpenMPT/mptrack/Moddoc.cpp 2015-04-19 17:28:15 UTC (rev 4956) @@ -9,12 +9,12 @@ #include "stdafx.h" -#include "mptrack.h" -#include "mainfrm.h" +#include "Mptrack.h" +#include "Mainfrm.h" #include "InputHandler.h" -#include "moddoc.h" -#include "childfrm.h" -#include "mpdlgs.h" +#include "Moddoc.h" +#include "Childfrm.h" +#include "Mpdlgs.h" #include "dlg_misc.h" #include "Dlsbank.h" #include "mod2wave.h" @@ -24,14 +24,13 @@ #include "StreamEncoderVorbis.h" #include "StreamEncoderWAV.h" #include "mod2midi.h" -#include "vstplug.h" +#include "Vstplug.h" #include "../common/version.h" #include "modsmp_ctrl.h" #include "CleanupSong.h" #include "../common/StringFixer.h" #include "../common/mptFileIO.h" #include "../common/FileReader.h" -#include <shlwapi.h> #include "FileDialog.h" #include "ExternalSamples.h" #include "Globals.h" @@ -480,20 +479,24 @@ } ConfirmAnswer ans = cnfYes; + bool success = true; if(modified && (ans = Reporting::Confirm(prompt + L"Do you want to save them?", L"External Samples", true)) == cnfYes) { for(SAMPLEINDEX i = 1; i <= m_SndFile.GetNumSamples(); i++) { if(m_SndFile.GetSample(i).uFlags.test_all(SMP_KEEPONDISK | SMP_MODIFIED)) { - SaveSample(i); + if(!SaveSample(i)) + { + success = false; + } } } } else if(ans == cnfCancel) { return false; } - return true; + return success; } @@ -3078,25 +3081,25 @@ } if(pChildFrm != nullptr) { - WINDOWPLACEMENT wnd; - wnd.length = sizeof(wnd); - pChildFrm->GetWindowPlacement(&wnd); - wnd.showCmd = SW_SHOWNOACTIVATE; - if(windowState == 1 || anyMaximized) - { - // Once a window has been maximized, all following windows have to be marked as maximized as well. - wnd.showCmd = SW_MAXIMIZE; - anyMaximized = true; - } else if(windowState == 2) - { - wnd.showCmd = SW_MINIMIZE; - } - if(rect.left < width && rect.right > 0 && rect.top < height && rect.bottom > 0) - { - wnd.rcNormalPosition = CRect(rect.left, rect.top, rect.right, rect.bottom); - } if(!mdiRect.IsRectEmpty()) { + WINDOWPLACEMENT wnd; + wnd.length = sizeof(wnd); + pChildFrm->GetWindowPlacement(&wnd); + wnd.showCmd = SW_SHOWNOACTIVATE; + if(windowState == 1 || anyMaximized) + { + // Once a window has been maximized, all following windows have to be marked as maximized as well. + wnd.showCmd = SW_MAXIMIZE; + anyMaximized = true; + } else if(windowState == 2) + { + wnd.showCmd = SW_MINIMIZE; + } + if(rect.left < width && rect.right > 0 && rect.top < height && rect.bottom > 0) + { + wnd.rcNormalPosition = CRect(rect.left, rect.top, rect.right, rect.bottom); + } pChildFrm->SetWindowPlacement(&wnd); } pChildFrm->DeserializeView(data); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <man...@us...> - 2015-04-26 09:10:41
|
Revision: 5005 http://sourceforge.net/p/modplug/code/5005 Author: manxorist Date: 2015-04-26 09:10:29 +0000 (Sun, 26 Apr 2015) Log Message: ----------- [Ref] Tiny cleanup. Modified Paths: -------------- trunk/OpenMPT/mptrack/Moddoc.cpp Modified: trunk/OpenMPT/mptrack/Moddoc.cpp =================================================================== --- trunk/OpenMPT/mptrack/Moddoc.cpp 2015-04-25 17:31:46 UTC (rev 5004) +++ trunk/OpenMPT/mptrack/Moddoc.cpp 2015-04-26 09:10:29 UTC (rev 5005) @@ -882,14 +882,7 @@ m_Log.push_back(LogEntry(level, text)); } else { - switch(level) - { - case LogError: Reporting::Error(text); break; - case LogWarning: Reporting::Warning(text); break; - case LogInformation: Reporting::Information(text); break; - case LogNotification: Reporting::Notification(text); break; - default: Reporting::Information(text); break; - } + Reporting::Message(level, text); } } @@ -941,14 +934,7 @@ { std::wstring text = preamble + mpt::ToWide(GetLogString()); std::wstring actualTitle = (title.length() == 0) ? MAINFRAME_TITLEW : title; - switch(GetMaxLogLevel()) - { - case LogError: Reporting::Error(text, actualTitle, parent); break; - case LogWarning: Reporting::Warning(text, actualTitle, parent); break; - case LogInformation: Reporting::Information(text, actualTitle, parent); break; - case LogNotification: Reporting::Notification(text, actualTitle, parent); break; - default: Reporting::Information(text, actualTitle, parent); break; - } + Reporting::Message(GetMaxLogLevel(), text, actualTitle, parent); return IDOK; } return IDCANCEL; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sag...@us...> - 2015-06-12 15:16:59
|
Revision: 5294 http://sourceforge.net/p/modplug/code/5294 Author: saga-games Date: 2015-06-12 15:16:53 +0000 (Fri, 12 Jun 2015) Log Message: ----------- [Fix] Really always clean up after ourselves when rendering to sample slot. Modified Paths: -------------- trunk/OpenMPT/mptrack/Moddoc.cpp Modified: trunk/OpenMPT/mptrack/Moddoc.cpp =================================================================== --- trunk/OpenMPT/mptrack/Moddoc.cpp 2015-06-12 15:15:05 UTC (rev 5293) +++ trunk/OpenMPT/mptrack/Moddoc.cpp 2015-06-12 15:16:53 UTC (rev 5294) @@ -1835,9 +1835,9 @@ if(smp == SAMPLEINDEX_INVALID) { Reporting::Error(_T("Too many samples!")); - break; + cancel = true; } - if(m_SndFile.ReadSampleFromFile(smp, file, false)) + if(!cancel && m_SndFile.ReadSampleFromFile(smp, file, false)) { UpdateAllViews(nullptr, SampleHint().Info().Data().Names()); if(m_SndFile.GetNumInstruments()) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sag...@us...> - 2015-06-27 00:06:25
|
Revision: 5363 http://sourceforge.net/p/modplug/code/5363 Author: saga-games Date: 2015-06-27 00:06:19 +0000 (Sat, 27 Jun 2015) Log Message: ----------- [Fix] Playing patterns not present in the order list was broken since OpenMPT 1.24.03.00 (http://forum.openmpt.org/index.php?topic=5495.0) Modified Paths: -------------- trunk/OpenMPT/mptrack/Moddoc.cpp Modified: trunk/OpenMPT/mptrack/Moddoc.cpp =================================================================== --- trunk/OpenMPT/mptrack/Moddoc.cpp 2015-06-26 22:37:08 UTC (rev 5362) +++ trunk/OpenMPT/mptrack/Moddoc.cpp 2015-06-27 00:06:19 UTC (rev 5363) @@ -2369,6 +2369,8 @@ return nullptr; } + +// Get the currently edited pattern position. Note that ord might be ORDERINDEX_INVALID when editing a pattern that is not present in the order list. HWND CModDoc::GetEditPosition(ROWINDEX &row, PATTERNINDEX &pat, ORDERINDEX &ord) //------------------------------------------------------------------------------ { @@ -2412,11 +2414,7 @@ //ensure order correlates with pattern. if(m_SndFile.Order[ord] != pat) { - ORDERINDEX tentativeOrder = m_SndFile.Order.FindOrder(pat); - if (tentativeOrder != ORDERINDEX_INVALID) //ensure a valid order exists. - { - ord = tentativeOrder; - } + ord = m_SndFile.Order.FindOrder(pat); } return followSonghWnd; @@ -2819,12 +2817,12 @@ void CModDoc::SetElapsedTime(ORDERINDEX nOrd, ROWINDEX nRow, bool setSamplePos) //----------------------------------------------------------------------------- { + if(nOrd == ORDERINDEX_INVALID) return; + double t = m_SndFile.GetPlaybackTimeAt(nOrd, nRow, true, setSamplePos && (TrackerSettings::Instance().m_dwPatternSetup & PATTERN_SYNCSAMPLEPOS) != 0); + CMainFrame *pMainFrm = CMainFrame::GetMainFrame(); - if(pMainFrm != nullptr) - { - pMainFrm->SetElapsedTime(std::max(0.0, t)); - } + if(pMainFrm != nullptr) pMainFrm->SetElapsedTime(std::max(0.0, t)); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sag...@us...> - 2015-07-01 22:23:09
|
Revision: 5388 http://sourceforge.net/p/modplug/code/5388 Author: saga-games Date: 2015-07-01 22:23:03 +0000 (Wed, 01 Jul 2015) Log Message: ----------- [Fix] Approx real BPM didn't show the correct mod tempo. Modified Paths: -------------- trunk/OpenMPT/mptrack/Moddoc.cpp Modified: trunk/OpenMPT/mptrack/Moddoc.cpp =================================================================== --- trunk/OpenMPT/mptrack/Moddoc.cpp 2015-07-01 19:41:03 UTC (rev 5387) +++ trunk/OpenMPT/mptrack/Moddoc.cpp 2015-07-01 22:23:03 UTC (rev 5388) @@ -2325,12 +2325,11 @@ CString Message; double bpm = CMainFrame::GetMainFrame()->GetApproxBPM(); - switch(m_SndFile.m_nTempoMode) { case tempoModeAlternative: - Message.Format("Using alternative tempo interpretation.\n\nAssuming:\n. %d ticks per second\n. %d ticks per row\n. %d rows per beat\nthe tempo is approximately: %.8g BPM", - m_SndFile.m_PlayState.m_nMusicTempo, m_SndFile.m_PlayState.m_nMusicSpeed, m_SndFile.m_PlayState.m_nCurrentRowsPerBeat, bpm); + Message.Format("Using alternative tempo interpretation.\n\nAssuming:\n. %.8g ticks per second\n. %d ticks per row\n. %d rows per beat\nthe tempo is approximately: %.8g BPM", + m_SndFile.m_PlayState.m_nMusicTempo.ToDouble(), m_SndFile.m_PlayState.m_nMusicSpeed, m_SndFile.m_PlayState.m_nCurrentRowsPerBeat, bpm); break; case tempoModeModern: @@ -2339,8 +2338,8 @@ case tempoModeClassic: default: - Message.Format("Using standard tempo interpretation.\n\nAssuming:\n. A mod tempo (tick duration factor) of %d\n. %d ticks per row\n. %d rows per beat\nthe tempo is approximately: %.8g BPM", - m_SndFile.m_PlayState.m_nMusicTempo, m_SndFile.m_PlayState.m_nMusicSpeed, m_SndFile.m_PlayState.m_nCurrentRowsPerBeat, bpm); + Message.Format("Using standard tempo interpretation.\n\nAssuming:\n. A mod tempo (tick duration factor) of %.8g\n. %d ticks per row\n. %d rows per beat\nthe tempo is approximately: %.8g BPM", + m_SndFile.m_PlayState.m_nMusicTempo.ToDouble(), m_SndFile.m_PlayState.m_nMusicSpeed, m_SndFile.m_PlayState.m_nCurrentRowsPerBeat, bpm); break; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |