initMultibandEq method

void initMultibandEq(
  1. int bands,
  2. List<double> frequencies, {
  3. List<double>? qFactors,
})

Implementation

void initMultibandEq(
  int bands,
  List<double> frequencies, {
  List<double>? qFactors,
}) {
  if (_engine == ffi.nullptr) return;
  if (frequencies.length != bands) return;
  if (qFactors != null && qFactors.length != bands) return;

  final freqPtr = _malloc(bands * ffi.sizeOf<ffi.Float>()).cast<ffi.Float>();
  final freqList = freqPtr.asTypedList(bands);
  freqList.setAll(0, frequencies);

  ffi.Pointer<ffi.Float> qPtr = ffi.nullptr;
  if (qFactors != null) {
    qPtr = _malloc(bands * ffi.sizeOf<ffi.Float>()).cast<ffi.Float>();
    final qList = qPtr.asTypedList(bands);
    qList.setAll(0, qFactors);
  }

  try {
    _initMultibandEq(_engine, bands, freqPtr, qPtr);
  } finally {
    _freePtr(freqPtr.cast<ffi.Void>());
    if (qPtr != ffi.nullptr) {
      _freePtr(qPtr.cast<ffi.Void>());
    }
  }
}