From: <sag...@us...> - 2013-03-12 19:43:32
|
Revision: 1567 http://sourceforge.net/p/modplug/code/1567 Author: saga-games Date: 2013-03-12 19:43:19 +0000 (Tue, 12 Mar 2013) Log Message: ----------- [Fix] Loading soundfont instruments was broken since... sometime after the 1.21.01.00 release. [Imp] Treeview: Can now also preview soundfont notes other than middle-C. Modified Paths: -------------- trunk/OpenMPT/mptrack/MainFrm.cpp trunk/OpenMPT/mptrack/Mainfrm.h trunk/OpenMPT/mptrack/View_tre.cpp trunk/OpenMPT/soundlib/Dlsbank.cpp Modified: trunk/OpenMPT/mptrack/MainFrm.cpp =================================================================== --- trunk/OpenMPT/mptrack/MainFrm.cpp 2013-03-12 18:49:28 UTC (rev 1566) +++ trunk/OpenMPT/mptrack/MainFrm.cpp 2013-03-12 19:43:19 UTC (rev 1567) @@ -1455,15 +1455,15 @@ } -BOOL CMainFrame::PlayDLSInstrument(UINT nDLSBank, UINT nIns, UINT nRgn) -//--------------------------------------------------------------------- +BOOL CMainFrame::PlayDLSInstrument(UINT nDLSBank, UINT nIns, UINT nRgn, ModCommand::NOTE note) +//-------------------------------------------------------------------------------------------- { if(nDLSBank >= CTrackApp::gpDLSBanks.size() || !CTrackApp::gpDLSBanks[nDLSBank]) return FALSE; BeginWaitCursor(); InitPreview(); - if (CTrackApp::gpDLSBanks[nDLSBank]->ExtractInstrument(&m_WaveFile, 1, nIns, nRgn)) + if(CTrackApp::gpDLSBanks[nDLSBank]->ExtractInstrument(&m_WaveFile, 1, nIns, nRgn)) { - PreparePreview(NOTE_MIDDLEC); + PreparePreview(note); PlaySoundFile(&m_WaveFile); } EndWaitCursor(); @@ -1562,7 +1562,7 @@ m_WaveFile.m_pConfig->setGlobalVolumeAppliesToMaster(false); m_WaveFile.m_nDefaultGlobalVolume = m_WaveFile.m_nGlobalVolume = MAX_GLOBAL_VOLUME; m_WaveFile.m_nDefaultTempo = 125; - m_WaveFile.m_nDefaultSpeed = 4; + m_WaveFile.m_nDefaultSpeed = 6; m_WaveFile.m_nType = MOD_TYPE_IT; m_WaveFile.m_nChannels = 4; m_WaveFile.m_nInstruments = 1; Modified: trunk/OpenMPT/mptrack/Mainfrm.h =================================================================== --- trunk/OpenMPT/mptrack/Mainfrm.h 2013-03-12 18:49:28 UTC (rev 1566) +++ trunk/OpenMPT/mptrack/Mainfrm.h 2013-03-12 19:43:19 UTC (rev 1567) @@ -455,9 +455,9 @@ BOOL StopMod(CModDoc *pDoc=NULL); BOOL PauseMod(CModDoc *pDoc=NULL); BOOL PlaySoundFile(CSoundFile *); - BOOL PlaySoundFile(LPCSTR lpszFileName, ModCommand::NOTE note = NOTE_MIDDLEC); - BOOL PlaySoundFile(CSoundFile *pSong, INSTRUMENTINDEX nInstrument, SAMPLEINDEX nSample, ModCommand::NOTE note = NOTE_MIDDLEC); - BOOL PlayDLSInstrument(UINT nDLSBank, UINT nIns, UINT nRgn); + BOOL PlaySoundFile(LPCSTR lpszFileName, ModCommand::NOTE note); + BOOL PlaySoundFile(CSoundFile *pSong, INSTRUMENTINDEX nInstrument, SAMPLEINDEX nSample, ModCommand::NOTE note); + BOOL PlayDLSInstrument(UINT nDLSBank, UINT nIns, UINT nRgn, ModCommand::NOTE note); BOOL StopSoundFile(CSoundFile *); void InitPreview(); void PreparePreview(ModCommand::NOTE note); Modified: trunk/OpenMPT/mptrack/View_tre.cpp =================================================================== --- trunk/OpenMPT/mptrack/View_tre.cpp 2013-03-12 18:49:28 UTC (rev 1566) +++ trunk/OpenMPT/mptrack/View_tre.cpp 2013-03-12 19:43:19 UTC (rev 1567) @@ -1320,7 +1320,7 @@ CHAR szFullPath[_MAX_PATH] = ""; InsLibGetFullPath(hItem, szFullPath); CMainFrame *pMainFrm = CMainFrame::GetMainFrame(); - if (pMainFrm) pMainFrm->PlaySoundFile(szFullPath, nParam); + if (pMainFrm) pMainFrm->PlaySoundFile(szFullPath, static_cast<ModCommand::NOTE>(nParam)); } break; @@ -1332,7 +1332,7 @@ if ((lpMidiLib) && (modItemID < 256) && (lpMidiLib->MidiMap[modItemID])) { CMainFrame *pMainFrm = CMainFrame::GetMainFrame(); - if (pMainFrm) pMainFrm->PlaySoundFile(lpMidiLib->MidiMap[modItemID], nParam); + if (pMainFrm) pMainFrm->PlaySoundFile(lpMidiLib->MidiMap[modItemID], static_cast<ModCommand::NOTE>(nParam)); } } break; @@ -1355,9 +1355,9 @@ if (modItem & 0x40000000) { if ((!nParam) || (nParam > NOTE_MAX)) nParam = NOTE_MIDDLEC; - rgn = pDLSBank->GetRegionFromKey(instr, nParam-1); + rgn = pDLSBank->GetRegionFromKey(instr, nParam - NOTE_MIN); } - pMainFrm->PlayDLSInstrument(bank, instr, rgn); + pMainFrm->PlayDLSInstrument(bank, instr, rgn, static_cast<ModCommand::NOTE>(nParam)); } } } Modified: trunk/OpenMPT/soundlib/Dlsbank.cpp =================================================================== --- trunk/OpenMPT/soundlib/Dlsbank.cpp 2013-03-12 18:49:28 UTC (rev 1566) +++ trunk/OpenMPT/soundlib/Dlsbank.cpp 2013-03-12 19:43:19 UTC (rev 1567) @@ -1691,18 +1691,20 @@ StringFixer::SetNullTerminator(pIns->name); } int nTranspose = 0; - for (UINT iNoteMap=0; iNoteMap<NOTE_MAX; iNoteMap++) + if (pDlsIns->ulBank & F_INSTRUMENT_DRUMS) { - if (pDlsIns->ulBank & F_INSTRUMENT_DRUMS) + for (UINT iNoteMap=0; iNoteMap<NOTE_MAX; iNoteMap++) { if (pSndFile->GetType() & (MOD_TYPE_IT|MOD_TYPE_MID|MOD_TYPE_MPT)) { if (iNoteMap < pDlsIns->Regions[nDrumRgn].uKeyMin) pIns->NoteMap[iNoteMap] = (BYTE)(pDlsIns->Regions[nDrumRgn].uKeyMin + 1); if (iNoteMap > pDlsIns->Regions[nDrumRgn].uKeyMax) pIns->NoteMap[iNoteMap] = (BYTE)(pDlsIns->Regions[nDrumRgn].uKeyMax + 1); } else - if (iNoteMap == pDlsIns->Regions[nDrumRgn].uKeyMin) { - nTranspose = pDlsIns->Regions[nDrumRgn].uKeyMin - 60; + if (iNoteMap == pDlsIns->Regions[nDrumRgn].uKeyMin) + { + nTranspose = pDlsIns->Regions[nDrumRgn].uKeyMin - 60; + } } } } @@ -1749,7 +1751,7 @@ nSmp = RgnToSmp[nRgn-1]; } else { - nSample = pSndFile->GetNextFreeSample(nInstr); + nSample = pSndFile->GetNextFreeSample(nInstr, nSample + 1); if (nSample == SAMPLEINDEX_INVALID) break; if (nSample > pSndFile->GetNumSamples()) pSndFile->m_nSamples = nSample; nSmp = nSample; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |