Hice un poco de búsqueda en este sitio, pero sorprendentemente, no encontré mucha información relevante, y mi conocimiento de DSP es muy, muy limitado.
Mi objetivo es bastante simple: quiero programar una reverberación algorítmica en C ++ que suene realmente bien. O más exactamente, la mejor opción sería dejar que el usuario final elija la compensación entre calidad y uso de la CPU.
Por lo que descubrí hasta ahora es que, para crear una reverberación, debes alimentar la señal seca a un algoritmo de reflexiones tempranas y luego a un algoritmo de reflexiones tardías. Es esto correcto ?
Ahora, encontré un extenso artículo sobre la parte de reflexiones tardías, utilizando la Red de Retraso de Comentarios ( REDUCCIÓN DE LOS REQUISITOS DE REVERBERACIÓN ARTIFICIAL UTILIZANDO REDES DE RETARDO DE VOTACIONES VARIANTES ). Por lo que he leído, FDN es una forma de simulación de reflexiones tardías de alta calidad, no demasiado expansiva (CPU sabia). Además, supongo que puede controlar la compensación de calidad / carga de la CPU cambiando el número de líneas de retraso.
Sin embargo, no tengo ni idea de cómo programar algo de las reflexiones tempranas (¿recuerdas? Soy realmente ignorante en el dominio DSP).
Me parecería lógico utilizar una especie de retardo múltiple, que tiene la ventaja de ser fácil de programar y de bajo costo computacional. Pero eso suena demasiado simple para ser verdad.
Además, mi instinto me dice que uno o varios filtros deben incluirse en algún lugar de la ruta de la señal.
¿Podría alguien aclararme un poco este tema?
Dos notas:
- No busco una reverb de convolución en absoluto. Realmente no me importa el realismo de la reverberación, pero en cambio quiero una buena reverberación, modificable, no hambrienta de CPU.
- Además, la parte de codificación no es lo que me preocupa, de lo contrario pediría en stackoverflow. Es realmente la parte de DSP, y solo esa parte, que busco :)
fuente
Hacer una buena reverberación NO es fácil. Las redes de retardo de retroalimentación son definitivamente el camino a seguir. Los algoritmos originales de Schroeder con todos los pasos y filtros de peine sufren de "adelgazamiento espectral" que lo hace sonar metálico. Debe marcar la atenuación dependiente de la frecuencia en las diferentes líneas de retardo que es representativa del tiempo de reverberación (en función de la frecuencia). Las reflexiones tempranas se pueden hacer a través de una línea de retardo intermitente también con cierta atenuación dependiente de la frecuencia y algunos difusores para descorrelacionarlas. Hacer estéreo también requiere algunos medios de descorrelación.
Hay una implementación bastante buena de código abierto flotando, se llama GVerb y se usa, por ejemplo, en Audacity. Una búsqueda en Google debería llevarlo a una copia (legal) del código fuente.
fuente