diff --git a/Source/PS_Source/Input/AInputS.h b/Source/PS_Source/Input/AInputS.h index 8eaeec4..ec60a0b 100644 --- a/Source/PS_Source/Input/AInputS.h +++ b/Source/PS_Source/Input/AInputS.h @@ -171,52 +171,51 @@ public: readinc = -1; for (int i = 0; i < nsmps; ++i) { - - if (inchans == 1 && numchans > 0) + float seekfadegain = 1.0f; + if (m_seekfade.state == 1) { - float sig = getCrossFadedSampleLambda(m_currentsample, 0, subsect_t0, subsect_t1, xfadelen); - if (m_seekfade.state == 1) - { - //Logger::writeToLog("Seek requested to pos " + String(m_seekfade.requestedpos)); - m_seekfade.state = 2; - } - if (m_seekfade.state == 2) + //Logger::writeToLog("Seek requested to pos " + String(m_seekfade.requestedpos)); + m_seekfade.state = 2; + } + if (m_seekfade.state == 2) + { + seekfadegain = 1.0 - (1.0 / m_seekfade.length*m_seekfade.counter); + ++m_seekfade.counter; + if (m_seekfade.counter >= m_seekfade.length) { - float seekfadegain = 1.0-(1.0 / m_seekfade.length*m_seekfade.counter); - sig *= seekfadegain; - ++m_seekfade.counter; - if (m_seekfade.counter >= m_seekfade.length) + //Logger::writeToLog("Doing seek " + String(m_seekfade.requestedpos)); + m_seekfade.counter = 0; + m_seekfade.state = 3; + if (m_seekfade.requestedrange.isEmpty() == false) { - //Logger::writeToLog("Doing seek " + String(m_seekfade.requestedpos)); - m_seekfade.counter = 0; - m_seekfade.state = 3; - if (m_seekfade.requestedrange.isEmpty() == false) - { - setActiveRangeImpl(m_seekfade.requestedrange); - updatesamplepositions(); - if (m_activerange.contains(getCurrentPositionPercent()) == false) - seekImpl(m_activerange.getStart()); - } - + setActiveRangeImpl(m_seekfade.requestedrange); + updatesamplepositions(); + if (m_activerange.contains(getCurrentPositionPercent()) == false) + seekImpl(m_activerange.getStart()); } + } - if (m_seekfade.state == 3) + } + if (m_seekfade.state == 3) + { + seekfadegain = 1.0 / m_seekfade.length*m_seekfade.counter; + ++m_seekfade.counter; + if (m_seekfade.counter >= m_seekfade.length) { - float seekfadegain = 1.0 / m_seekfade.length*m_seekfade.counter; - sig *= seekfadegain; - ++m_seekfade.counter; - if (m_seekfade.counter >= m_seekfade.length) - { - //Logger::writeToLog("Seek cycle finished"); - m_seekfade.counter = 0; - m_seekfade.state = 0; - m_seekfade.requestedpos = 0.0; - m_seekfade.requestedrange = Range(); - } + //Logger::writeToLog("Seek cycle finished"); + m_seekfade.counter = 0; + m_seekfade.state = 0; + m_seekfade.requestedpos = 0.0; + m_seekfade.requestedrange = Range(); } + } + jassert(seekfadegain >= 0.0f && seekfadegain<=1.0f); + if (inchans == 1 && numchans > 0) + { + float sig = getCrossFadedSampleLambda(m_currentsample, 0, subsect_t0, subsect_t1, xfadelen); for (int j = 0; j < numchans; ++j) { - smps[j][i] = sig; + smps[j][i] = sig*seekfadegain; } } else if (inchans > 1 && numchans > 1) @@ -224,7 +223,8 @@ public: for (int j = 0; j < numchans; ++j) { int inchantouse = j % inchans; - smps[j][i] = getCrossFadedSampleLambda(m_currentsample, inchantouse, subsect_t0, subsect_t1,xfadelen); + smps[j][i] = seekfadegain*getCrossFadedSampleLambda(m_currentsample, inchantouse, + subsect_t0, subsect_t1,xfadelen); } }