so, i thought about this more, and realized that 28hz is quite close to being 2/3 of 44.1

so, it MIGHT be enough to do the following:

for every 3 samples, output the first sample, the second sample, and then instead of playing the 3rd sample,  repeat the second sample.

so, if my block looks like:  0.597, 0.604, 0.628, 0.651.. then
the output block would be 0.597, 0.604, 0.604, 0.651 ...

i still have no idea how i would do that.