Disclaimer: this feels like something that should be obvious from an intro class, but for some reason I can't find anything around this.
I'm working on an algorithm that takes a signal, let's call it S_in. I'm running both a high pass and low pass filter (identical parameters otherwise) on it so that I can work on different frequency bands of the signal with slightly different parameters in my algorithm. So, lpf(S_in) and hpf(S_in). When I mix them back together (which I'm doing in the time domain via just simple addition, S_out = lpf(S_in) + hpf(S_in)), I get significant "interference" in the transition band in the resulting signal, usually in the form of something that resembles a band stop/notch filter at my original cutoff frequency. This happens even if I don't run those signals through my algorithm (i.e., S_in != S_out; preferably they would be approximately equal to each other, instead of significantly different).
As a "workaround" I noticed if I offset the addition by as few as 8 or 16 samples on one of the signals (that is, a time delay on one of the streams; also 44100 samples/sec audio fwiw), then the frequency response of the mixed signal looks much more flat relative to my original signal (which is what I want -- the band stop is gone, though there's still clearly some interference pattern in the shared transition band).
What am I doing wrong here? Is this a simple signal processing thing I've forgotten about and can't figure out how to search for it? Is it an artifact of discretization/rounding errors of my implementation? (Though since I can reproduce that same behavior in common audio editing software, I don't think it's just my implementation). I'm using a low order biquad filter for the filters (is it that? obviously a higher order filter would shrink the transition band, but is that the "right" fix, or just a workaround?). Is there a "right" way to mix them back together, or a "right" way to do my overall algorithm where I need to process frequency bands separately and then mix them back together?