Hätt' mich gewundert, wenn das funktioniert hätte.
Du mußt Dir die Daten kopieren, und sie von der
VCL, oder nem Thread aus in die WaveOut schicken.
Genau genommen sollte man nicht mal CopyMemory verwendet, aber es funktioniert doch.
Alles was Du in dem Rumpf von OnData machst wird aus dem Thread heraus ausgeführt, welcher von WaveInOpen geöffnet wurde.