More mini details, fake audio runs, set host param values
Signed-off-by: falkTX <falktx@falktx.com>
This commit is contained in:
parent
d0eba9e1ae
commit
5e73b8c227
14 changed files with 427 additions and 127 deletions
|
|
@ -222,25 +222,51 @@ struct HostAudio2 : HostAudio<2> {
|
|||
valueR = 0.0f;
|
||||
}
|
||||
|
||||
const uint32_t j = internalDataFrame++;
|
||||
internalDataBufferL[j] = valueL;
|
||||
internalDataBufferR[j] = valueR;
|
||||
|
||||
if (internalDataFrame == 128)
|
||||
if (pcontext->variant == kCardinalVariantMini)
|
||||
{
|
||||
internalDataFrame = 0;
|
||||
const uint32_t j = internalDataFrame++;
|
||||
internalDataBufferL[j] = valueL;
|
||||
internalDataBufferR[j] = valueR;
|
||||
|
||||
if (resetMeters)
|
||||
gainMeterL = gainMeterR = 0.0f;
|
||||
if (internalDataFrame == 4)
|
||||
{
|
||||
internalDataFrame = 0;
|
||||
|
||||
gainMeterL = std::max(gainMeterL, d_findMaxNormalizedFloat128(internalDataBufferL));
|
||||
if (resetMeters)
|
||||
gainMeterL = gainMeterR = 0.0f;
|
||||
|
||||
if (in2connected)
|
||||
gainMeterR = std::max(gainMeterR, d_findMaxNormalizedFloat128(internalDataBufferR));
|
||||
else
|
||||
gainMeterR = gainMeterL;
|
||||
gainMeterL = std::max(gainMeterL, d_findMaxNormalizedFloat<4>(internalDataBufferL));
|
||||
|
||||
resetMeters = false;
|
||||
if (in2connected)
|
||||
gainMeterR = std::max(gainMeterR, d_findMaxNormalizedFloat<4>(internalDataBufferR));
|
||||
else
|
||||
gainMeterR = gainMeterL;
|
||||
|
||||
resetMeters = false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
const uint32_t j = internalDataFrame++;
|
||||
internalDataBufferL[j] = valueL;
|
||||
internalDataBufferR[j] = valueR;
|
||||
|
||||
if (internalDataFrame == 128)
|
||||
{
|
||||
internalDataFrame = 0;
|
||||
|
||||
if (resetMeters)
|
||||
gainMeterL = gainMeterR = 0.0f;
|
||||
|
||||
gainMeterL = std::max(gainMeterL, d_findMaxNormalizedFloat128(internalDataBufferL));
|
||||
|
||||
if (in2connected)
|
||||
gainMeterR = std::max(gainMeterR, d_findMaxNormalizedFloat128(internalDataBufferR));
|
||||
else
|
||||
gainMeterR = gainMeterL;
|
||||
|
||||
resetMeters = false;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
|
|
|||
|
|
@ -52,6 +52,37 @@ extern Model* modelTextEditor;
|
|||
|
||||
extern std::vector<Model*> hostTerminalModels;
|
||||
|
||||
/*
|
||||
* Find the highest absolute and normalized value within a float array.
|
||||
*/
|
||||
template<std::size_t size>
|
||||
static inline
|
||||
float d_findMaxNormalizedFloat(const float floats[size])
|
||||
{
|
||||
static constexpr const float kEmptyFloats[size] = {};
|
||||
|
||||
if (std::memcmp(floats, kEmptyFloats, sizeof(float)*size) == 0)
|
||||
return 0.f;
|
||||
|
||||
float tmp, maxf2 = std::abs(floats[0]);
|
||||
|
||||
for (std::size_t i=1; i<size; ++i)
|
||||
{
|
||||
if (!std::isfinite(floats[i]))
|
||||
__builtin_unreachable();
|
||||
|
||||
tmp = std::abs(floats[i]);
|
||||
|
||||
if (tmp > maxf2)
|
||||
maxf2 = tmp;
|
||||
}
|
||||
|
||||
if (maxf2 > 1.f)
|
||||
maxf2 = 1.f;
|
||||
|
||||
return maxf2;
|
||||
}
|
||||
|
||||
/*
|
||||
* Find the highest absolute and normalized value within a float array.
|
||||
*/
|
||||
|
|
@ -61,7 +92,7 @@ float d_findMaxNormalizedFloat128(const float floats[128])
|
|||
static constexpr const float kEmptyFloats[128] = {};
|
||||
|
||||
if (std::memcmp(floats, kEmptyFloats, sizeof(float)*128) == 0)
|
||||
return 0.0f;
|
||||
return 0.f;
|
||||
|
||||
float tmp, maxf2 = std::abs(floats[0]);
|
||||
|
||||
|
|
@ -76,8 +107,8 @@ float d_findMaxNormalizedFloat128(const float floats[128])
|
|||
maxf2 = tmp;
|
||||
}
|
||||
|
||||
if (maxf2 > 1.0f)
|
||||
maxf2 = 1.0f;
|
||||
if (maxf2 > 1.f)
|
||||
maxf2 = 1.f;
|
||||
|
||||
return maxf2;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue