setMultibandCompressor method
void
setMultibandCompressor({
- required bool enable,
- required List<
double> crossoverFreqs, - required List<
ViperMultibandCompressorBand> bands,
Multiband Compressor (up to 5 bands).
Implementation
void setMultibandCompressor({
required bool enable,
required List<double> crossoverFreqs,
required List<ViperMultibandCompressorBand> bands,
}) {
if (_enginePtr == ffi.nullptr) return;
int count = bands.length;
if (count > 5) count = 5;
final crossPtr = _malloc(4 * ffi.sizeOf<ffi.Float>()).cast<ffi.Float>();
final paramsPtr = _malloc(count * 17 * ffi.sizeOf<ffi.Float>()).cast<ffi.Float>();
try {
final crossList = crossPtr.asTypedList(4);
for (int i = 0; i < 4 && i < crossoverFreqs.length; i++) {
crossList[i] = crossoverFreqs[i];
}
final paramsList = paramsPtr.asTypedList(count * 17);
for (int i = 0; i < count; i++) {
bands[i].writeToArray(paramsList, i * 17);
}
_multibandCompressor(_enginePtr, enable ? 1 : 0, count, crossPtr, paramsPtr);
} finally {
_freePtr(crossPtr.cast<ffi.Void>());
_freePtr(paramsPtr.cast<ffi.Void>());
}
}