|
|
@@ -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<double>(); |
|
|
|
} |
|
|
|
//Logger::writeToLog("Seek cycle finished"); |
|
|
|
m_seekfade.counter = 0; |
|
|
|
m_seekfade.state = 0; |
|
|
|
m_seekfade.requestedpos = 0.0; |
|
|
|
m_seekfade.requestedrange = Range<double>(); |
|
|
|
} |
|
|
|
} |
|
|
|
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); |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|