cat sound.wav | distortion | reverb | aplay
cat sound.wav | distortion | reverb | aplay
alias fx="sox - -t wav -"
cat foo.wav | fx overdrive | fx reverb | play -
considering that sox has existed since the early 1990's, I'd wager that the demand for that isn't exactly huge(note that in practice you'd directly use sox's play command to apply effects as it's certainly muuuuuuuuuuuch more efficient than to spin up a ton of processes which'll read from stdin/stdout)
$ cat sound.wav | pedalboard --compressor --compressor-threshold-db=-50 --gain --gain-db=30 | aplay
You can't really do it without that, because sound.wav contains both actual audio data and "metadata".
In the real world however, almost nobody who has done this sort of thing actually wants to do it that way. The processing always has a lot of parameters and you are going to want to play with them based on the actual contents of sound.wav. Doing this in realtime (listening while fiddling) is much more efficient than repeatedly processing then listening.