any PIC will do

it just we to wait for the correct data to come in, which is set by the sending program.

the only real important part is here:

Code:
waitforkeydata:
pause 1
DEBUGIN [WAIT("DT")]
DEBUGIN [HEX2 curnote]
DEBUGIN [WAIT(",")]
DEBUGIN [HEX2 duration]
DEBUGIN [WAIT(13)]  ; wait carriage return

pause 2

sound Speaker,[curnote,duration ]

;High LedPort

GOTO waitforkeydata