read Frames
Reads framesToRead frames starting at startFrame into the caller-allocated dest arrays. The C API takes float* const* dest — an array of per-channel float pointers. We pin each FloatArray in dest via JNA Memory, call the C function, then copy back.