klausmaria escribió:Igual no es tan complicado con el nuevo Raspberry Pi Model B+
Ahora mismo estoy yo tratando de hacerlo. Estoy en ratos libres y tal, pero por ahora va bien.
Estoy tirando de Raspbian (el que viene de primeras) sin interfaz gráfica, usando fluidsynth (que es el más ligero) y alsaconnect, y limitando la polifonía bastante (alrededor de 24) no da ningún problema. A partir de ahí depende del instrumento y las capas que tenga. Tengo un preset orquestal muuy chulo que se cala en cuanto pasas de 24, y sin embargo, con el piano (una versión que reduje yo mismo a partir del salamander) tira con mas de 32 de polifonía. La latencia, por ahora, no ha sido ningún problema.
Quiero ver los límites que tiene esto y hasta donde se puede llegar, pero por ahora todo apunta a que el cuello de botella es el procesador (no la RAM, como yo pensaba de primeras) y por tanto, se pueden optimizar las diferentes soundfonts para trabajar sobre RPi, haciendo que haya que tocar lo menos posible la CPU.
Por lo que yo tengo entendido, la mejor forma de hacer esto es utilizar el menor número posible de efectos y de capas, y por la limitación de polifonía no hacer muchas mezclas (poner mezclados todos los samples). Por ejemplo, si quieres un piano + strings, samplear piano+strings y utilizar eso directamente como samples en la soundfont, en lugar de poner una capa de piano y otra de strings.
Bajar el rate no sirve de nada, he bajado de 48000 a 24000 e incluso a 16000 y la diferencia en la polifonía máxima (cuando empieza a rajar como una perra) es mínima. Lo mismo ocurre con la profundidad de bits.
También estoy mirando a ver si fuese posible ejecutar un módulo de fluidsynth, por ejemplo el que se encarga de la interpolación en punto flotante, en la GPU, pero por ahora no he avanzado nada en eso. Si se pudiese, estaríamos quitando una carga de procesador grande que podríamos emplear en aumentar la polifonía o incluso manejar efectos en tiempo real, descentralizando este tipo de operaciones repetitivas a las que la GPU, que tiene muchas unidades de punto flotante, puede procesar más rápidamente.
En fin, os iré informando conforme avance.
Edit: estoy utilizando alguna soundfont propia y también el GeneralUser, que me parece que tienen una buena relación calidad/peso.