There's a magic tuning parameter that I had wrong. Here's the new Readme and kaiser.c for the package. Z or similar. Being ignorant, I've glommed some of the pieces together into a program that performs straight filtering on a sound sample file of signed words. Kaiser reads and writes a stream of signed binary words.
Factor is the ratio of input data rate to output data rate.
The default is 0.85 because high-pitched aliasing noise creeps in. It default to 2.120. Try 8 or 10 if you're downconverting by a large amount, say from 44khz to 8khz. This was done to prevent overflow.