setMultibandFxBands method
Implementation
void setMultibandFxBands(List<EqBandConfig> bands) {
if (_engine == ffi.nullptr) return;
if (bands.isEmpty) {
clearMultibandFx();
return;
}
final count = bands.length;
final typesPtr = _malloc(count * ffi.sizeOf<ffi.Int32>()).cast<ffi.Int32>();
final frequencyPtr =
_malloc(count * ffi.sizeOf<ffi.Float>()).cast<ffi.Float>();
final qPtr = _malloc(count * ffi.sizeOf<ffi.Float>()).cast<ffi.Float>();
final gainPtr = _malloc(count * ffi.sizeOf<ffi.Float>()).cast<ffi.Float>();
final slopePtr = _malloc(count * ffi.sizeOf<ffi.Float>()).cast<ffi.Float>();
final enabledPtr =
_malloc(count * ffi.sizeOf<ffi.Int32>()).cast<ffi.Int32>();
try {
final types = typesPtr.asTypedList(count);
final freqs = frequencyPtr.asTypedList(count);
final qs = qPtr.asTypedList(count);
final gains = gainPtr.asTypedList(count);
final slopes = slopePtr.asTypedList(count);
final enabledFlags = enabledPtr.asTypedList(count);
for (var i = 0; i < count; i++) {
final band = bands[i];
types[i] = band.type.index;
freqs[i] = band.frequencyHz;
qs[i] = band.q;
gains[i] = band.gainDb;
slopes[i] = band.slope;
enabledFlags[i] = band.enabled ? 1 : 0;
}
_setMultibandFxBands(
_engine,
count,
typesPtr,
frequencyPtr,
qPtr,
gainPtr,
slopePtr,
enabledPtr,
);
} finally {
_freePtr(typesPtr.cast<ffi.Void>());
_freePtr(frequencyPtr.cast<ffi.Void>());
_freePtr(qPtr.cast<ffi.Void>());
_freePtr(gainPtr.cast<ffi.Void>());
_freePtr(slopePtr.cast<ffi.Void>());
_freePtr(enabledPtr.cast<ffi.Void>());
}
}