Problems with current implementation and possible solutions
Overlapped FFT not critically sampled
In the current implementation, we encode 4/3 times more samples than necessary because we use 256-point FFTs with 64 samples overlap.
- Use an MDCT instead of the FFT
- Do extrapolation on the input and use a wider FFT. Then optimise the search only for the "real" samples
Non-harmonic signals (i.e. music)
CEFT only works on speech because most of its coding efficiency is provided by the pitch predictor.
- Sinusoidal prediction
- Use two (or more) pitch periods and choose one for each bin/band/whatever
- Use two (or more) pitch periods at the same time and use energy conservation to keep everything stable.
CEFT tends to have musical noise, especially at high frequency when there are very few bits/bin.
- Use a "rotation matrix"
- Prediction from lower frequencies