void synthesise()

in pedalboard/juce_overrides/juce_PatchedMP3AudioFormat.cpp [3215:3291]


  void synthesise(const float *bandPtr, int channel, float *out,
                  int &samplesDone) {
    out += samplesDone;
    const int bo = channel == 0 ? ((synthBo - 1) & 15) : synthBo;
    float(*buf)[0x110] = synthBuffers[channel];
    float *b0;
    auto bo1 = bo;

    if (bo & 1) {
      b0 = buf[0];
      DCT::dct64(buf[1] + ((bo + 1) & 15), buf[0] + bo, bandPtr);
    } else {
      ++bo1;
      b0 = buf[1];
      DCT::dct64(buf[0] + bo, buf[1] + bo1, bandPtr);
    }

    synthBo = bo;
    const float *window = constants.decodeWin + 16 - bo1;

    for (int j = 16; j != 0; --j, b0 += 16, window += 32) {
      auto sum = window[0] * b0[0];
      sum -= window[1] * b0[1];
      sum += window[2] * b0[2];
      sum -= window[3] * b0[3];
      sum += window[4] * b0[4];
      sum -= window[5] * b0[5];
      sum += window[6] * b0[6];
      sum -= window[7] * b0[7];
      sum += window[8] * b0[8];
      sum -= window[9] * b0[9];
      sum += window[10] * b0[10];
      sum -= window[11] * b0[11];
      sum += window[12] * b0[12];
      sum -= window[13] * b0[13];
      sum += window[14] * b0[14];
      sum -= window[15] * b0[15];
      *out++ = sum;
    }

    {
      auto sum = window[0] * b0[0];
      sum += window[2] * b0[2];
      sum += window[4] * b0[4];
      sum += window[6] * b0[6];
      sum += window[8] * b0[8];
      sum += window[10] * b0[10];
      sum += window[12] * b0[12];
      sum += window[14] * b0[14];
      *out++ = sum;
      b0 -= 16;
      window -= 32;
      window += (ptrdiff_t)bo1 << 1;
    }

    for (int j = 15; j != 0; --j, b0 -= 16, window -= 32) {
      auto sum = -window[-1] * b0[0];
      sum -= window[-2] * b0[1];
      sum -= window[-3] * b0[2];
      sum -= window[-4] * b0[3];
      sum -= window[-5] * b0[4];
      sum -= window[-6] * b0[5];
      sum -= window[-7] * b0[6];
      sum -= window[-8] * b0[7];
      sum -= window[-9] * b0[8];
      sum -= window[-10] * b0[9];
      sum -= window[-11] * b0[10];
      sum -= window[-12] * b0[11];
      sum -= window[-13] * b0[12];
      sum -= window[-14] * b0[13];
      sum -= window[-15] * b0[14];
      sum -= window[0] * b0[15];
      *out++ = sum;
    }

    samplesDone += 32;
  }