Yo ya tenía entendido que se podía reconstruir cualquier sonido con la inversa, pero no me cuadraba con lo de que no pudiera examinar una frecuencia determinada con precisión en un tiempo muy concreto. He examinado el algoritmo de la transformada discreta a ver si veía el problema, y ya lo he encontrado.
El problema partía de la base de que en todas las instrucciones de uso de la función FFT se indica que el buffer de entrada ha de ser el mismo de salida. De hecho en muchas funciones que he encontrado en internet y en librerías, se hace así. Supongo que es porque están diseñadas para espectograma, o no lo sé la verdad, no entiendo esa limitación. Sé que para la transformada rápida los tamaños han de ser potencia de 2, pero eso tampoco tendría que ser una limitación, se podría elegir 1, 2, 4, 8 frecuencias.
He buscado alguna información y he encontrado esto, a la pregunta de "Why output of FFT is same as input data size ?", una de las respuestas es esta:
I find it strange that libraries don't implement arbitrary bin counts, but I suppose I would shrug and say it's probably because they're written for people dealing with much more data than you.
El caso es que es lo que me estaba liando.
El problema de la resolución en esas implementaciones se debe a que utilizan un bucle que comprueba las frecuencias intermedias dividiendo el tamaño de la muestra. Así que de ese modo obtenías un número concreto y limitado de frecuencias intermedias del mismo tamaño que el buffer de entrada, y por tanto para obtener más cantidad de frecuencias intermedias (resolución), el buffer de muestras debía ser más grande, lo que hace perder precisión en el tiempo.
Supongo que se podrá hacer también con la FFT, pero yo lo he comprobado con la DFT que es más simple, lo que hace es multiplicar cada sample por el seno y coseno de una frecuencia * PI * 2, y lo suma a dos números, real e imaginario, que luego hay que convertir con la fórmula de la distancia (la del teorema de pitágoras), y te da la distancia (en este caso el nivel de la frecuencia).
Si se hace esa operación con una frecuencia concreta, y sobre cualquier número de muestras te da la amplitud con toda la precisión que tenga la muestra en el tiempo.
Así que creo que esto se ha resuelto, y ya soy feliz