new idea but not finish:
handle each frame of buffer (follow PCMAN)