From: <sag...@us...> - 2012-01-28 14:22:49
|
Revision: 1168 http://modplug.svn.sourceforge.net/modplug/?rev=1168&view=rev Author: saga-games Date: 2012-01-28 14:22:41 +0000 (Sat, 28 Jan 2012) Log Message: ----------- [Imp] General Tab: Global volume display is now limited to 0...64 (instead of 0...128) for XM / S3M (http://forum.openmpt.org/index.php?topic=4658.0) [Fix] MIDI Export: Exporting is no longer limited to the first 64 channels. [Imp] MIDI Import: MIDI files with any number of tracks can now be imported (previous limit was 64 tracks). [Fix] MOD Loader: Loading of MODs with a xxCH or xxCN signature broke in previous revision. [Ref] Refactored some more instrument loading / saving code. [Mod] OpenMPT: Version is now 1.20.00.65 Modified Paths: -------------- trunk/OpenMPT/mptrack/Ctrl_gen.cpp trunk/OpenMPT/mptrack/Ctrl_gen.h trunk/OpenMPT/mptrack/MPTHacks.cpp trunk/OpenMPT/mptrack/mod2midi.cpp trunk/OpenMPT/mptrack/version.h trunk/OpenMPT/soundlib/Load_mid.cpp trunk/OpenMPT/soundlib/Load_mod.cpp trunk/OpenMPT/soundlib/Sampleio.cpp Modified: trunk/OpenMPT/mptrack/Ctrl_gen.cpp =================================================================== --- trunk/OpenMPT/mptrack/Ctrl_gen.cpp 2012-01-22 16:59:37 UTC (rev 1167) +++ trunk/OpenMPT/mptrack/Ctrl_gen.cpp 2012-01-28 14:22:41 UTC (rev 1168) @@ -104,7 +104,8 @@ m_SpinTempo.SetRange((short)specs.tempoMin, (short)specs.tempoMax); // -! BEHAVIOUR_CHANGE#0016 - m_SpinGlobalVol.SetRange(0, 128); + + m_SpinGlobalVol.SetRange(0, (short)(256 / GetGlobalVolumeFactor())); m_SpinSamplePA.SetRange(0, 2000); m_SpinVSTiVol.SetRange(0, 2000); m_SpinRestartPos.SetRange(0, 255); @@ -183,13 +184,14 @@ } if (dwHint & HINT_MODGENERAL) { - if (!m_bEditsLocked) { + if (!m_bEditsLocked) + { m_EditTitle.SetWindowText(m_pSndFile->m_szNames[0]); wsprintf(s, "%d", m_pSndFile->m_nDefaultTempo); m_EditTempo.SetWindowText(s); wsprintf(s, "%d", m_pSndFile->m_nDefaultSpeed); m_EditSpeed.SetWindowText(s); - wsprintf(s, "%d", m_pSndFile->m_nDefaultGlobalVolume / 2); + wsprintf(s, "%d", m_pSndFile->m_nDefaultGlobalVolume / GetGlobalVolumeFactor()); m_EditGlobalVol.SetWindowText(s); wsprintf(s, "%d", m_pSndFile->m_nRestartPos); m_EditRestartPos.SetWindowText(s); @@ -282,11 +284,13 @@ { CSliderCtrl* pSlider = (CSliderCtrl*) pscroll; - if (pSlider==&m_SliderTempo) { + if (pSlider==&m_SliderTempo) + { int min, max; m_SpinTempo.GetRange(min, max); const UINT tempo = max - m_SliderTempo.GetPos(); - if ((tempo >= m_pSndFile->GetModSpecifications().tempoMin) && (tempo <= m_pSndFile->GetModSpecifications().tempoMax) && (tempo != m_pSndFile->m_nDefaultTempo)) { + if ((tempo >= m_pSndFile->GetModSpecifications().tempoMin) && (tempo <= m_pSndFile->GetModSpecifications().tempoMax) && (tempo != m_pSndFile->m_nDefaultTempo)) + { m_pSndFile->m_nDefaultTempo = tempo; m_pSndFile->m_nMusicTempo = tempo; m_pModDoc->SetModified(); @@ -295,9 +299,11 @@ } } - else if (pSlider==&m_SliderGlobalVol) { + else if (pSlider==&m_SliderGlobalVol) + { const UINT gv = MAX_SLIDER_GLOBAL_VOL - m_SliderGlobalVol.GetPos(); - if ((gv >= 0) && (gv <= MAX_SLIDER_GLOBAL_VOL) && (gv != m_pSndFile->m_nDefaultGlobalVolume)) { + if ((gv >= 0) && (gv <= MAX_SLIDER_GLOBAL_VOL) && (gv != m_pSndFile->m_nDefaultGlobalVolume)) + { m_pSndFile->m_nGlobalVolume = gv; m_pSndFile->m_nDefaultGlobalVolume = gv; m_pModDoc->SetModified(); @@ -306,9 +312,11 @@ } } - else if (pSlider==&m_SliderSamplePreAmp) { + else if (pSlider==&m_SliderSamplePreAmp) + { const UINT spa = MAX_SLIDER_SAMPLE_VOL - m_SliderSamplePreAmp.GetPos(); - if ((spa >= 0) && (spa <= MAX_SLIDER_SAMPLE_VOL) && (spa != m_pSndFile->m_nSamplePreAmp)) { + if ((spa >= 0) && (spa <= MAX_SLIDER_SAMPLE_VOL) && (spa != m_pSndFile->m_nSamplePreAmp)) + { m_pSndFile->m_nSamplePreAmp = spa; if(m_pSndFile->GetType() != MOD_TYPE_MOD) m_pModDoc->SetModified(); @@ -318,7 +326,8 @@ else if (pSlider==&m_SliderVSTiVol) { const UINT vv = MAX_SLIDER_VSTI_VOL - m_SliderVSTiVol.GetPos(); - if ((vv >= 0) && (vv <= MAX_SLIDER_VSTI_VOL) && (vv != m_pSndFile->m_nVSTiVolume)) { + if ((vv >= 0) && (vv <= MAX_SLIDER_VSTI_VOL) && (vv != m_pSndFile->m_nVSTiVolume)) + { m_pSndFile->m_nVSTiVolume = vv; m_pSndFile->RecalculateGainForAllPlugs(); m_pModDoc->SetModified(); @@ -459,13 +468,13 @@ if (s[0]) { UINT n = atoi(s); - Limit(n, 0u, 128u); + Limit(n, 0u, 256u / GetGlobalVolumeFactor()); if (n != (m_pSndFile->m_nDefaultGlobalVolume >> 1)) { m_bEditsLocked=true; m_EditGlobalVol.SetModify(FALSE); - m_pSndFile->m_nDefaultGlobalVolume = n << 1; - m_pSndFile->m_nGlobalVolume = n << 1; + m_pSndFile->m_nDefaultGlobalVolume = n * GetGlobalVolumeFactor(); + m_pSndFile->m_nGlobalVolume = n * GetGlobalVolumeFactor(); m_pModDoc->SetModified(); m_pModDoc->UpdateAllViews(NULL, HINT_MODGENERAL, this); UpdateView(HINT_MODGENERAL, NULL); Modified: trunk/OpenMPT/mptrack/Ctrl_gen.h =================================================================== --- trunk/OpenMPT/mptrack/Ctrl_gen.h 2012-01-22 16:59:37 UTC (rev 1167) +++ trunk/OpenMPT/mptrack/Ctrl_gen.h 2012-01-28 14:22:41 UTC (rev 1168) @@ -38,6 +38,13 @@ private: void setAsDecibels(LPSTR stringToSet, double value, double valueAtZeroDB); + // Determine how the global volume slider should be scaled to actual global volume. + // Display range for XM / S3M should be 0...64, for other formats it's 0...256. + UINT GetGlobalVolumeFactor() + { + return (m_pSndFile->GetType() & (MOD_TYPE_XM | MOD_TYPE_S3M)) ? UINT(MAX_SLIDER_GLOBAL_VOL / 64) : UINT(MAX_SLIDER_GLOBAL_VOL / 128); + } + public: bool m_bEditsLocked; //{{AFX_DATA(CCtrlGeneral) Modified: trunk/OpenMPT/mptrack/MPTHacks.cpp =================================================================== --- trunk/OpenMPT/mptrack/MPTHacks.cpp 2012-01-22 16:59:37 UTC (rev 1167) +++ trunk/OpenMPT/mptrack/MPTHacks.cpp 2012-01-28 14:22:41 UTC (rev 1168) @@ -12,8 +12,6 @@ /* TODO: out-of range sample pre-amp -song flags and properties (just look at the song properties window) -+++/--- orders in XM/MOD sequence comments in XM files AUTOFIX actions! Modified: trunk/OpenMPT/mptrack/mod2midi.cpp =================================================================== --- trunk/OpenMPT/mptrack/mod2midi.cpp 2012-01-22 16:59:37 UTC (rev 1167) +++ trunk/OpenMPT/mptrack/mod2midi.cpp 2012-01-28 14:22:41 UTC (rev 1168) @@ -88,7 +88,9 @@ static int LinearToDLSMidiVolume(int nVolume) //------------------------------------------- { - const float kLin2Mid = 127.0f*127.0f/65536.0f; + const float kLin2Mid = 127.0f * 127.0f / 65536.0f; + //return static_cast<int>(sqrtf(static_cast<float>(nVolume) * kLin2Mid)); + int result; _asm { @@ -339,7 +341,7 @@ RMIDDATACHUNK rmid; MTHDCHUNK mthd; MTRKCHUNK mtrk; - DYNMIDITRACK Tracks[64]; + vector<DYNMIDITRACK> Tracks(m_pSndFile->GetNumChannels()); UINT nMidiChCurPrg[16]; BYTE tmp[256]; CHAR s[256]; @@ -347,15 +349,11 @@ UINT nSpeed; CFile f; - const CHANNELINDEX chnCount = min(64, m_pSndFile->GetNumChannels()); - if(chnCount < m_pSndFile->GetNumChannels()) - Reporting::Information("Note: Only 64 channels will be exported."); - if (!f.Open(m_szFileName, CFile::modeCreate | CFile::modeWrite)) { return FALSE; } - MemsetZero(Tracks); + if (!m_pSndFile->m_nDefaultTempo) m_pSndFile->m_nDefaultTempo = 125; nTickMultiplier = MOD2MIDI_TEMPOFACTOR; const uint16 wPPQN = static_cast<uint16>((m_pSndFile->m_nDefaultTempo*nTickMultiplier) / 5); @@ -367,14 +365,12 @@ mthd.id = 0x6468544d; // "MThd" mthd.len = BigEndian(sizeof(mthd)-8); mthd.wFmt = BigEndianW(1); - mthd.wTrks = static_cast<uint16>(chnCount); // 1 track/channel + mthd.wTrks = static_cast<uint16>(Tracks.size()); // 1 track/channel mthd.wTrks = BigEndianW(mthd.wTrks); //Convert to big endian value. mthd.wDivision = BigEndianW(wPPQN); if (m_bRmi) f.Write(&rmid, sizeof(rmid)); f.Write(&mthd, sizeof(mthd)); - - // Add Song Name on track 0 const CHAR *modTitle = m_pSndFile->GetTitle(); if (modTitle[0]) @@ -384,6 +380,7 @@ Tracks[0].WriteLen(strlen(modTitle)); Tracks[0].Write(modTitle, strlen(modTitle)); } + // Add Song comments on track 0 if ((m_pSndFile->m_lpszSongComments) && (m_pSndFile->m_lpszSongComments[0])) { @@ -392,20 +389,21 @@ Tracks[0].WriteLen(strlen(m_pSndFile->m_lpszSongComments)); Tracks[0].Write(m_pSndFile->m_lpszSongComments, strlen(m_pSndFile->m_lpszSongComments)); } + // Add channel names - for (UINT iInit=0; iInit<chnCount; iInit++) + for (CHANNELINDEX iInit = 0; iInit < m_pSndFile->GetNumChannels(); iInit++) { - PDYNMIDITRACK pTrk = &Tracks[iInit]; + DYNMIDITRACK &track = Tracks[iInit]; lstrcpyn(s, m_pSndFile->ChnSettings[iInit].szName, MAX_CHANNELNAME); - pTrk->nMidiChannel = iInit & 7; + track.nMidiChannel = iInit & 7; if (s[0]) { tmp[0] = 0x00; tmp[1] = 0xff; tmp[2] = 0x03; - pTrk->Write(tmp, 3); - pTrk->WriteLen(strlen(s)); - pTrk->Write(s, strlen(s)); + track.Write(tmp, 3); + track.WriteLen(strlen(s)); + track.Write(s, strlen(s)); } } for (UINT iMidiCh=0; iMidiCh<16; iMidiCh++) @@ -428,7 +426,7 @@ continue; } PatternRow patternRow = m_pSndFile->Patterns[nPat].GetRow(nRow); - for (UINT nChn=0; nChn<chnCount; nChn++) + for (CHANNELINDEX nChn = 0; nChn < m_pSndFile->GetNumChannels(); nChn++) { PDYNMIDITRACK pTrk = &Tracks[nChn]; //MODCOMMAND *m = m_pSndFile->Patterns[nPat].GetpModCommand(nRow, nChn); @@ -534,7 +532,7 @@ } } // Write midi tracks - for (UINT iTrk=0; iTrk<chnCount; iTrk++) + for (UINT iTrk = 0; iTrk < Tracks.size(); iTrk++) { tmp[0] = 0x00; tmp[1] = 0xff; Modified: trunk/OpenMPT/mptrack/version.h =================================================================== --- trunk/OpenMPT/mptrack/version.h 2012-01-22 16:59:37 UTC (rev 1167) +++ trunk/OpenMPT/mptrack/version.h 2012-01-28 14:22:41 UTC (rev 1168) @@ -15,7 +15,7 @@ #define VER_MAJORMAJOR 1 #define VER_MAJOR 20 #define VER_MINOR 00 -#define VER_MINORMINOR 64 +#define VER_MINORMINOR 65 //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/soundlib/Load_mid.cpp =================================================================== --- trunk/OpenMPT/soundlib/Load_mid.cpp 2012-01-22 16:59:37 UTC (rev 1167) +++ trunk/OpenMPT/soundlib/Load_mid.cpp 2012-01-28 14:22:41 UTC (rev 1168) @@ -28,7 +28,6 @@ #endif #define MIDI_DRUMCHANNEL 10 -#define MIDI_MAXTRACKS 64 //UINT gnMidiImportSpeed = 3; //UINT gnMidiPatternLen = 128; @@ -496,7 +495,7 @@ const MIDITRACKHEADER *pmth; MODCHANNELSTATE chnstate[MAX_BASECHANNELS]; MIDICHANNELSTATE midichstate[16]; - MIDITRACK miditracks[MIDI_MAXTRACKS]; + vector<MIDITRACK> miditracks; DWORD dwMemPos, dwGlobalFlags, tracks, tempo; UINT row, pat, midimastervol; short int division; @@ -545,7 +544,8 @@ pmth = (MIDITRACKHEADER *)(lpStream+dwMemPos); tracks = BigEndianW(pmfh->wTrks); if ((pmth->id != 0x6B72544D) || (!tracks)) return false; - if (tracks > MIDI_MAXTRACKS) tracks = MIDI_MAXTRACKS; + miditracks.resize(tracks); + // Reading File... m_nType = MOD_TYPE_MID; m_nChannels = 32; @@ -553,6 +553,7 @@ m_nInstruments = 0; m_dwSongFlags |= SONG_LINEARSLIDES; m_szNames[0][0] = 0; + // MIDI->MOD Tempo Conversion division = BigEndianW(pmfh->wDivision); if (division < 0) @@ -577,9 +578,8 @@ #endif // Initializing Order.resize(MAX_ORDERS, Order.GetInvalidPatIndex()); - memset(chnstate, 0, sizeof(chnstate)); - memset(miditracks, 0, sizeof(miditracks)); - memset(midichstate, 0, sizeof(midichstate)); + MemsetZero(chnstate); + MemsetZero(midichstate); // Initializing Patterns Order[0] = 0; // Initializing Channels @@ -610,7 +610,7 @@ // Initializing midi tracks miditracks[itrk].ptracks = lpStream+dwMemPos+8; miditracks[itrk].ptrmax = miditracks[itrk].ptracks + len; - miditracks[itrk].nexteventtime = getmidilong(miditracks[itrk].ptracks, miditracks[itrk].ptrmax); + miditracks[itrk].ptracks += ConvertMIDI2Int(miditracks[itrk].nexteventtime, (uint8 *)miditracks[itrk].ptracks, len); #ifdef MIDI_DETAILED_LOG Log(" init time=%d\n", miditracks[itrk].nexteventtime); #endif @@ -673,7 +673,8 @@ case 0xF0: case 0xF7: { - LONG len = getmidilong(ptrk->ptracks, ptrk->ptrmax); + LONG len; + ptrk->ptracks += ConvertMIDI2Int(len, (uint8 *)ptrk->ptracks, (size_t)(ptrk->ptrmax - ptrk->ptracks)); if ((len > 1) && (ptrk->ptracks + len <ptrk->ptrmax) && (ptrk->ptracks[len-1] == 0xF7)) { DWORD dwSysEx1 = 0, dwSysEx2 = 0; @@ -725,7 +726,8 @@ case 0xFF: { UINT i = *(ptrk->ptracks++); - LONG len = getmidilong(ptrk->ptracks, ptrk->ptrmax); + LONG len; + ptrk->ptracks += ConvertMIDI2Int(len, (uint8 *)ptrk->ptracks, (size_t)(ptrk->ptrmax - ptrk->ptracks)); if (ptrk->ptracks+len > ptrk->ptrmax) { // EOF @@ -1106,7 +1108,9 @@ // Process to next event if (ptrk->ptracks) { - ptrk->nexteventtime += getmidilong(ptrk->ptracks, ptrk->ptrmax); + LONG inc; + ptrk->ptracks += ConvertMIDI2Int(inc, (uint8 *)ptrk->ptracks, (size_t)(ptrk->ptrmax - ptrk->ptracks)); + ptrk->nexteventtime += inc; } if (ptrk->ptracks >= ptrk->ptrmax) ptrk->ptracks = NULL; } Modified: trunk/OpenMPT/soundlib/Load_mod.cpp =================================================================== --- trunk/OpenMPT/soundlib/Load_mod.cpp 2012-01-22 16:59:37 UTC (rev 1167) +++ trunk/OpenMPT/soundlib/Load_mod.cpp 2012-01-28 14:22:41 UTC (rev 1168) @@ -282,7 +282,7 @@ else if (!memcmp(s, "FLT", 3) && s[3] >= '4' && s[3] <= '9') m_nChannels = s[3] - '0'; else if (s[0] >= '1' && s[0] <= '9' && !memcmp(s + 1, "CHN", 3)) m_nChannels = s[0] - '0'; - else if (s[0] >= '1' && s[0] <= '9' && s[1]>='0' && s[1] <= '9' && (!memcmp(s + 2, "CH", 2) || !memcmp(s + 2, "CN", 2))) m_nChannels = s[0] * 10 + s[1] - '0'; + else if (s[0] >= '1' && s[0] <= '9' && s[1]>='0' && s[1] <= '9' && (!memcmp(s + 2, "CH", 2) || !memcmp(s + 2, "CN", 2))) m_nChannels = (s[0] - '0') * 10 + s[1] - '0'; else if (!memcmp(s, "TDZ", 3) && s[3] >= '4' && s[3] <= '9') m_nChannels = s[3] - '0'; else m_nSamples = 15; // Ultimate SoundTracker MODs @@ -502,26 +502,18 @@ } // Reading samples - bool bSamplesPresent = false; for (UINT ismp = 1; ismp <= m_nSamples; ismp++) if (Samples[ismp].nLength) { - LPSTR p = (LPSTR)(lpStream + dwMemPos); - UINT flags = 0; + UINT flags = RS_PCM8S; if (dwMemPos + 5 <= dwMemLength) { - if (!_strnicmp(p, "ADPCM", 5)) + if (!_strnicmp((LPSTR)(lpStream + dwMemPos), "ADPCM", 5)) { - flags = 3; - p += 5; + flags = RS_ADPCM4; dwMemPos += 5; } } - DWORD dwSize = ReadSample(&Samples[ismp], flags, p, dwMemLength - dwMemPos); - if (dwSize) - { - dwMemPos += dwSize; - bSamplesPresent = true; - } + dwMemPos += ReadSample(&Samples[ismp], flags, (LPSTR)(lpStream + dwMemPos), dwMemLength - dwMemPos); } // Fix VBlank MODs. Arbitrary threshold: 10 minutes. @@ -542,11 +534,7 @@ Patterns.ForEachModCommand(FixMODPatterns(bVBlank, b7BitPanning)); } -#ifdef MODPLUG_TRACKER return true; -#else - return bSamplesPresent; -#endif // MODPLUG_TRACKER } @@ -675,14 +663,19 @@ p[3] = param; } fwrite(s, m_nChannels, 4, f); - } else { //if row does not exist - memset(s, 0, m_nChannels*4); //invent blank row + } else + { + // if row does not exist, invent blank row + memset(s, 0, m_nChannels * 4); fwrite(s, m_nChannels, 4, f); } } //end for all rows - } else { - memset(s, 0, m_nChannels*4); //if pattern does not exist - for (UINT i=0; i<64; i++) { //invent blank pattern + } else + { + // if pattern does not exist, invent blank pattern + memset(s, 0, m_nChannels * 4); + for(size_t i = 0; i < 64; i++) + { fwrite(s, m_nChannels, 4, f); } } @@ -692,7 +685,7 @@ #ifdef MODPLUG_TRACKER if(GetpModDoc() != nullptr) { - for(UINT ipat = nbp; ipat < MAX_PATTERNS; ipat++) + for(UINT ipat = nbp; ipat < Patterns.Size(); ipat++) { if(Patterns[ipat]) { Modified: trunk/OpenMPT/soundlib/Sampleio.cpp =================================================================== --- trunk/OpenMPT/soundlib/Sampleio.cpp 2012-01-22 16:59:37 UTC (rev 1167) +++ trunk/OpenMPT/soundlib/Sampleio.cpp 2012-01-28 14:22:41 UTC (rev 1168) @@ -1808,15 +1808,14 @@ ITSAMPLESTRUCT itss; MODINSTRUMENT *pIns = Instruments[nInstr]; vector<bool> smpcount(GetNumSamples(), false); - UINT smptable[MAX_SAMPLES], smpmap[MAX_SAMPLES]; + vector<SAMPLEINDEX> smptable; + vector<SAMPLEINDEX> smpmap(GetNumSamples() + 1, 0); DWORD dwPos; FILE *f; if ((!pIns) || (!lpszFileName)) return false; if ((f = fopen(lpszFileName, "wb")) == NULL) return false; MemsetZero(buffer); - MemsetZero(smptable); - MemsetZero(smpmap); iti->id = LittleEndian(IT_IMPI); // "IMPI" memcpy(iti->filename, pIns->filename, 12); StringFixer::FixNullString(iti->filename); @@ -1843,20 +1842,15 @@ iti->nos = 0; for (UINT i=0; i<NOTE_MAX; i++) if (pIns->Keyboard[i] < MAX_SAMPLES) { - const UINT smp = pIns->Keyboard[i]; + const SAMPLEINDEX smp = pIns->Keyboard[i]; if (smp && smp <= GetNumSamples() && !smpcount[smp - 1]) { smpcount[smp - 1] = true; - smptable[iti->nos] = smp; - smpmap[smp] = iti->nos; - iti->nos++; + smptable.push_back(smp); + smpmap[smp] = iti->nos++; } - iti->keyboard[i*2] = pIns->NoteMap[i] - 1; -// -> CODE#0019 -// -> DESC="correctly load ITI & XI instruments sample note map" -// iti->keyboard[i*2+1] = smpmap[smp] + 1; - iti->keyboard[i*2+1] = smp ? smpmap[smp] + 1 : 0; -// -! BUG_FIX#0019 + iti->keyboard[i * 2] = pIns->NoteMap[i] - 1; + iti->keyboard[i * 2 + 1] = smp ? smpmap[smp] + 1 : 0; } // Writing Volume envelope if (pIns->VolEnv.dwFlags & ENV_ENABLED) iti->volenv.flags |= 0x01; @@ -1890,7 +1884,7 @@ iti->pitchenv.slb = (BYTE)pIns->PitchEnv.nSustainStart; iti->pitchenv.sle = (BYTE)pIns->PitchEnv.nSustainEnd; // Writing Envelopes data - for (UINT ev=0; ev<25; ev++) + for (UINT ev = 0; ev < 25; ev++) { iti->volenv.data[ev*3] = pIns->VolEnv.Values[ev]; iti->volenv.data[ev*3+1] = pIns->VolEnv.Ticks[ev] & 0xFF; @@ -1972,19 +1966,12 @@ WORD sampleType=0; if (itss.flags | 0x02) sampleType=RS_PCM16S; else sampleType=RS_PCM8S; //8 or 16 bit signed if (itss.flags | 0x04) sampleType |= RSF_STEREO; //mono or stereo - for (UINT k=0; k<iti->nos; k++) + for (UINT k = 0; k < iti->nos; k++) { -//rewbs.enableStereoITI - using eric's code as it is better here. -// -> CODE#0001 -// -> DESC="enable saving stereo ITI" - //UINT nsmp = smptable[k]; - //MODINSTRUMENT *psmp = &Ins[nsmp]; - //WriteSample(f, psmp, (psmp->uFlags & CHN_16BIT) ? RS_PCM16S : RS_PCM8S); const MODSAMPLE *pSmp = &Samples[smptable[k]]; UINT smpflags = (pSmp->uFlags & CHN_16BIT) ? RS_PCM16S : RS_PCM8S; if (pSmp->uFlags & CHN_STEREO) smpflags = (pSmp->uFlags & CHN_16BIT) ? RS_STPCM16S : RS_STPCM8S; WriteSample(f, pSmp, smpflags); -// -! BUG_FIX#0001 } int32 code = 'MPTX'; @@ -2008,7 +1995,7 @@ void ReadInstrumentExtensionField(MODINSTRUMENT* pIns, LPCBYTE& ptr, const int32 code, const int16 size) -//------------------------------------------------------------------------------------------------------------ +//------------------------------------------------------------------------------------------------------ { // get field's address in instrument's header BYTE* fadr = GetInstrumentHeaderFieldPointer(pIns, code, size); @@ -2023,7 +2010,7 @@ void ReadExtendedInstrumentProperty(MODINSTRUMENT* pIns, const int32 code, LPCBYTE& pData, const LPCBYTE pEnd) -//--------------------------------------------------------------------------------------------------------------- +//------------------------------------------------------------------------------------------------------------ { if(pEnd < pData || uintptr_t(pEnd - pData) < 2) return; @@ -2040,7 +2027,7 @@ void ReadExtendedInstrumentProperties(MODINSTRUMENT* pIns, const LPCBYTE pDataStart, const size_t nMemLength) -//-------------------------------------------------------------------------------------------------------------- +//----------------------------------------------------------------------------------------------------------- { if(pIns == 0 || pDataStart == 0 || nMemLength < 4) return; @@ -2332,7 +2319,7 @@ if(pIns->nMidiChannel == MidiMappedChannel) { - pIns->nMidiChannel == 1; + pIns->nMidiChannel = 1; } pIns->nGlobalVol = 64; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |