super Tipps, vor allem das mit dem malloc Rückgabewert und dem Nullpointer nach free()!
Werde ich genau so machen, vielen Dank !

edit:
für

buf = (int16_t *)malloc(arrlen * sizeof (int16_t) );

heißt das dann
if(buf!=NULL) {...}

bzw.

if(buf==NULL) {
Serial.print("\n\n malloc() error - not enough memory\nprogram halted\n\n");
return;
}

richtig?