Comment out the EsounD opening code in openSound(), and just use pipeIn = 0 instead. This gets sound data from standard input. You can then provide input from the ALSA stereo monitor using something like:
parec --latency=1 --format=s16le --device=alsa_output.pci-0000_00_1b.0.analog-stereo.monitor | synaesthesia esd
If your stereo monitor source is different, you may need to find it using
pacmd. You may also need to unmute it. The
parecfrom buffering a lot of data and then outputting it at once. The result works, though the high frame rate makes it a bit weird. Perhaps synaesthesia needs a frame rate cap?