C++? Respecto a la pregunta, que realizas hasta el momento? Podrías establecer un periodo de muestro fijo (utilizar un timer o módulo CCP), y analizar dicha señal, estableciendo mínimos, máximos, ect. Guardar dicha señal en una memoria externa, y luego tratar de reproducirla con un DAC o potenciometro digital, ect.
Saludos!