cris'andt'emo escribió:
Estoy haciendo prototipos de unos sintes en pure data y no sé que técnica es mejor para evitar el aliasing en las señales, si construirlas mediante tablas de ondas o hacer oversampling. ¿Alguien sabe qué es mejor y por qué?
Como sabemos, para evitar el aliasing lo que hay que hacer es limitar la señal en banda. Ni la tabla de ondas ni el oversampling son técnicas que intrínsecamente consigan ese efecto por sí mismas.
Una tabla de ondas es sencillamente una señal precalculada, que puede estar limitada en banda o no. Por ejemplo, podrías cargarla con una onda cuadrada pura, o con una onda cuadrada ya prefiltrada a 20 kHz. En el segundo caso no necesitas filtrar la señal a la salida, por lo que es computacionalmente menos costoso, pero más inflexible para variar la frecuencia, sintetizar distintas notas, hacer pitch bend, etc.
El oversampling simplemente te permite que la pendiente del filtro antialiasing de salida sea menos crítica, por lo que puedes implementar filtros computacionalmente menos costosos. Por contra tienes que calcular más muestras de la señal, lo cual es poco costoso si son ondas sencillas como cuadradas, sierras o triangulares, pero muy costoso si son funciones trigonométricas o exponenciales.
Lo normal es emplear ambas técnicas simultáneamente: reducir la carga del sobremuestreo usando tablas de ondas complejas interpolando las muestras que necesites por algún método barato, por ejemplo linealmente. También en el método de tabla de ondas puede que tengas que recurrir al sobremuestreo para sintetizar frecuencias no almacenadas.
Como casi siempre en ingeniería no hay una respuesta correcta, la solución óptima va a ser siempre un compromiso entre la naturaleza de las señales que quieras sintetizar, la funcionalidad que quieras dar en cuanto a rango y densidad de frecuencias fundamentales disponibles y los requisitos hardware (CPU, RAM) que quieras imponer.