commit 3bd99f6e086a1c876d8b9b85061ed4452c850dde Author: 00christian00 <00christian00@users.noreply.github.com> Date: Fri Apr 1 09:27:22 2016 +0200 fixed DLS import diff --git a/soundlib/Dlsbank.cpp b/soundlib/Dlsbank.cpp index 7cf0140..f82ee45 100644 --- a/soundlib/Dlsbank.cpp +++ b/soundlib/Dlsbank.cpp @@ -1583,6 +1583,7 @@ bool CDLSBank::ExtractSample(CSoundFile &sndFile, SAMPLEINDEX nSample, uint32 nI sample.nC5Speed = p->dwSampleRate; sample.RelativeTone = p->byOriginalPitch; sample.nFineTune = p->chPitchCorrection; + if (p->szName[0]) memcpy(sndFile.m_szNames[nSample], p->szName, MAX_SAMPLENAME - 1); @@ -1632,6 +1633,7 @@ bool CDLSBank::ExtractSample(CSoundFile &sndFile, SAMPLEINDEX nSample, uint32 nI int sFineTune = pRgn->sFineTune; int lVolume = pRgn->usVolume; + WSMPCHUNK wsmp; if(!(pRgn->fuOptions & DLSREGION_OVERRIDEWSMP) && wsmpChunk.ReadStructPartial(wsmp)) { @@ -1651,10 +1653,10 @@ bool CDLSBank::ExtractSample(CSoundFile &sndFile, SAMPLEINDEX nSample, uint32 nI sample.nLoopEnd = loop.ulLoopStart + loop.ulLoopLength; } } - } else + } if (m_nType & SOUNDBANK_TYPE_SF2) { - usUnityNote = (usUnityNote < 0x80) ? usUnityNote : sample.RelativeTone; + usUnityNote = sample.RelativeTone; sFineTune += sample.nFineTune; } #ifdef DLSINSTR_LOG @@ -1666,7 +1668,7 @@ bool CDLSBank::ExtractSample(CSoundFile &sndFile, SAMPLEINDEX nSample, uint32 nI sFineTune+(60 + transpose - usUnityNote)*100); sample.nFineTune = static_cast(nBaseTune & 0x7F);*/ //sample.RelativeTone = sample.RelativeTone -60; - sample.RootNoteToFreq(sample.RelativeTone, sample.nFineTune, sample.nC5Speed); + sample.nC5Speed=sample.RootNoteToFreq(usUnityNote, sFineTune, sample.nC5Speed); if (lVolume > 256) lVolume = 256; if (lVolume < 16) lVolume = 16; sample.nGlobalVol = (uint8)(lVolume / 4); // 0-64 diff --git a/soundlib/ModSample.cpp b/soundlib/ModSample.cpp index 09d4bb2..f6e0ea6 100644 --- a/soundlib/ModSample.cpp +++ b/soundlib/ModSample.cpp @@ -314,13 +314,13 @@ void ModSample::TransposeToFrequency() nC5Speed = TransposeToFrequency(RelativeTone, nFineTune); } -void ModSample::RootNoteToFreq(int Root, int finetune, int SampleFreq) +uint32 ModSample::RootNoteToFreq(int Root, int finetune, int SampleFreq) //------------------------------------ { int Relative = 60 -Root; float steps = (Relative * 128.0f + nFineTune) * (1.0f / (12.0f * 128.0f)); //nC5Speed = Util::Round(std::pow(2.0f, (RelativeTone * 128.0f + nFineTune) * (1.0f / (12.0f * 128.0f))) * 440.0f);; - nC5Speed = Util::Round(std::pow(2.0f, steps) * SampleFreq);; + return Util::Round(std::pow(2.0f, steps) * SampleFreq);; } diff --git a/soundlib/ModSample.h b/soundlib/ModSample.h index e69b4c1..02590dc 100644 --- a/soundlib/ModSample.h +++ b/soundlib/ModSample.h @@ -95,7 +95,7 @@ struct ModSample // Transpose <-> Frequency conversions static uint32 TransposeToFrequency(int transpose, int finetune = 0); void TransposeToFrequency(); - void RootNoteToFreq(int Root, int finetune, int SampleFreq); + uint32 RootNoteToFreq(int Root, int finetune, int SampleFreq); static int FrequencyToTranspose(uint32 freq); void FrequencyToTranspose();