in pedalboard/juce_overrides/juce_PatchedMP3AudioFormat.cpp [985:1169]
void initLayer3Tables() {
int i, j;
for (i = -256; i < 118 + 4; ++i)
powToGains[i + 256] = (float)std::pow(2.0, -0.25 * (i + 210));
for (i = 0; i < 8207; ++i)
nToThe4Over3[i] = (float)std::pow((double)i, 4.0 / 3.0);
for (i = 0; i < 8; ++i) {
static constexpr double Ci[] = {-0.6, -0.535, -0.33, -0.185,
-0.095, -0.041, -0.0142, -0.0037};
const double sq = sqrt(1.0 + Ci[i] * Ci[i]);
antiAliasingCs[i] = (float)(1.0 / sq);
antiAliasingCa[i] = (float)(Ci[i] / sq);
}
for (i = 0; i < 18; ++i) {
win[0][i] = win[1][i] =
(float)(0.5 *
std::sin(MathConstants<double>::pi / 72.0 * (2 * i + 1)) /
std::cos(MathConstants<double>::pi * (2 * i + 19) / 72.0));
win[0][i + 18] = win[3][i + 18] =
(float)(0.5 *
std::sin(MathConstants<double>::pi / 72.0 *
(2 * (i + 18) + 1)) /
std::cos(MathConstants<double>::pi * (2 * (i + 18) + 19) /
72.0));
}
const double piOver72 = MathConstants<double>::pi / 72.0;
for (i = 0; i < 6; ++i) {
win[1][i + 18] = (float)(0.5 / std::cos(piOver72 * (2 * (i + 18) + 19)));
win[3][i + 12] = (float)(0.5 / std::cos(piOver72 * (2 * (i + 12) + 19)));
win[1][i + 24] =
(float)(0.5 *
std::sin(MathConstants<double>::pi / 24.0 * (2 * i + 13)) /
std::cos(piOver72 * (2 * (i + 24) + 19)));
win[1][i + 30] = win[3][i] = 0;
win[3][i + 6] =
(float)(0.5 *
std::sin(MathConstants<double>::pi / 24.0 * (2 * i + 1)) /
std::cos(piOver72 * (2 * (i + 6) + 19)));
}
for (i = 0; i < 12; ++i)
win[2][i] =
(float)(0.5 *
std::sin(MathConstants<double>::pi / 24.0 * (2 * i + 1)) /
std::cos(MathConstants<double>::pi * (2 * i + 7) / 24.0));
for (j = 0; j < 4; ++j) {
static constexpr int len[4] = {36, 36, 12, 36};
for (i = 0; i < len[j]; i += 2)
win1[j][i] = win[j][i];
for (i = 1; i < len[j]; i += 2)
win1[j][i] = -win[j][i];
}
const double sqrt2 = 1.41421356237309504880168872420969808;
for (i = 0; i < 16; ++i) {
const double t = std::tan(i * MathConstants<double>::pi / 12.0);
tan1_1[i] = (float)(t / (1.0 + t));
tan2_1[i] = (float)(1.0 / (1.0 + t));
tan1_2[i] = (float)(sqrt2 * t / (1.0 + t));
tan2_2[i] = (float)(sqrt2 / (1.0 + t));
for (j = 0; j < 2; ++j) {
double p1 = 1.0, p2 = 1.0;
if (i > 0) {
const double base = std::pow(2.0, -0.25 * (j + 1));
if (i & 1)
p1 = std::pow(base, (i + 1) * 0.5);
else
p2 = std::pow(base, i * 0.5);
}
pow1_1[j][i] = (float)p1;
pow2_1[j][i] = (float)p2;
pow1_2[j][i] = (float)(sqrt2 * p1);
pow2_2[j][i] = (float)(sqrt2 * p2);
}
}
for (j = 0; j < 9; ++j) {
const BandInfoStruct &bi = bandInfo[j];
int cb;
int *mp = map[j][0] = mapbuf0[j];
const int16 *bdf = bi.longDiff;
for (i = 0, cb = 0; cb < 8; ++cb, i += *bdf++) {
*mp++ = (*bdf) >> 1;
*mp++ = i;
*mp++ = 3;
*mp++ = cb;
}
bdf = bi.shortDiff + 3;
for (cb = 3; cb < 13; ++cb) {
const int l = (*bdf++) >> 1;
for (int lwin = 0; lwin < 3; ++lwin) {
*mp++ = l;
*mp++ = i + lwin;
*mp++ = lwin;
*mp++ = cb;
}
i += 6 * l;
}
mapEnd[j][0] = mp;
mp = map[j][1] = mapbuf1[j];
bdf = bi.shortDiff;
for (i = 0, cb = 0; cb < 13; ++cb) {
const int l = (*bdf++) >> 1;
for (int lwin = 0; lwin < 3; ++lwin) {
*mp++ = l;
*mp++ = i + lwin;
*mp++ = lwin;
*mp++ = cb;
}
i += 6 * l;
}
mapEnd[j][1] = mp;
mp = map[j][2] = mapbuf2[j];
bdf = bi.longDiff;
for (cb = 0; cb < 22; ++cb) {
*mp++ = (*bdf++) >> 1;
*mp++ = cb;
}
mapEnd[j][2] = mp;
}
for (j = 0; j < 9; ++j) {
for (i = 0; i < 23; ++i)
longLimit[j][i] = jmin(32, (bandInfo[j].longIndex[i] - 1 + 8) / 18 + 1);
for (i = 0; i < 14; ++i)
shortLimit[j][i] = jmin(32, (bandInfo[j].shortIndex[i] - 1) / 18 + 1);
}
for (i = 0; i < 5; ++i)
for (j = 0; j < 6; ++j)
for (int k = 0; k < 6; ++k) {
const int n = k + j * 6 + i * 36;
iLength2[n] = (unsigned int)(i | (j << 3) | (k << 6) | (3 << 12));
}
for (i = 0; i < 4; ++i)
for (j = 0; j < 4; ++j)
for (int k = 0; k < 4; ++k) {
const int n = k + j * 4 + i * 16;
iLength2[n + 180] =
(unsigned int)(i | (j << 3) | (k << 6) | (4 << 12));
}
for (i = 0; i < 4; ++i)
for (j = 0; j < 3; ++j) {
const int n = j + i * 3;
iLength2[n + 244] = (unsigned int)(i | (j << 3) | (5 << 12));
nLength2[n + 500] =
(unsigned int)(i | (j << 3) | (2 << 12) | (1 << 15));
}
for (i = 0; i < 5; ++i)
for (j = 0; j < 5; ++j)
for (int k = 0; k < 4; ++k)
for (int l = 0; l < 4; ++l) {
const int n = l + k * 4 + j * 16 + i * 80;
nLength2[n] =
(unsigned int)(i | (j << 3) | (k << 6) | (l << 9) | (0 << 12));
}
for (i = 0; i < 5; ++i)
for (j = 0; j < 5; ++j)
for (int k = 0; k < 4; ++k) {
const int n = k + j * 4 + i * 20;
nLength2[n + 400] =
(unsigned int)(i | (j << 3) | (k << 6) | (1 << 12));
}
}