How to get standard positive and negative peak

Maybe there is a filter that removes the DC component.

It is possible to make that in the Arduino (or STM32).
When you have a average value, created by a low pass filter in software, then you can use that as a offset for every sample.

I make such a low pass filter with 'float' variables, but it is faster with integers. I forgot how to do it with integers.

float filtered;

void setup()
{
  filtered = analogRead( ...          // start with begin value, to get started at the begin.
  ...
}

void loop()
{
  int adcValue = analogRead( ...
  filtered = (0.99 * filtered) + (0.01 * float( adcValue));   // 1 percent low pass filter
  int sample = adcValue - int( filtered);      // use the filtered value as offset

  // The 'sample' will now be a value around zero without DC offset.
  ...
}

I think that the 1% filter is too much, probably a lower value is better.