Gracias de antemano y saludos.
Osciladores "bandlimited" vs "oversampling" ¿qué es mejor?
Gracias de antemano y saludos.
OFERTASVer todas
-
-26%AKAI MPC Key 61
-
-35%Set de grabación completo de Focusrite
-
beyerdynamic DT-770 Pro
Gracias por responder, compañero. De momento las señales las genero mediante tablas de ondas y me dan buen resultado, para hacer prototipos es suficiente.
De todos modos tengo esa curiosidad. Si saco tiempo haré algunas pruebas y echaré un vistazo a la cantidad y amplitud de armónicos indeseados que se generan con un método y con otro. No sé cuando será pero lo compartiré por aquí.
De todos modos tengo esa curiosidad. Si saco tiempo haré algunas pruebas y echaré un vistazo a la cantidad y amplitud de armónicos indeseados que se generan con un método y con otro. No sé cuando será pero lo compartiré por aquí.
Me encantaría verlo.
Otra cosa es que tengo entendido que los osciladores band limited y los osciladores por tabla de onda no son lo mismo.
Por lo que he visto en Max los osciladores que son band limited son "inteligentes" en el sentido que de que limitan la cantidad de armónicos conforme sube la frecuenca (de alguna manera) y los wavetables no.
Si vas a usar wavetables implementa un filtro anti aliasing.
Otra cosa es que tengo entendido que los osciladores band limited y los osciladores por tabla de onda no son lo mismo.
Por lo que he visto en Max los osciladores que son band limited son "inteligentes" en el sentido que de que limitan la cantidad de armónicos conforme sube la frecuenca (de alguna manera) y los wavetables no.
Si vas a usar wavetables implementa un filtro anti aliasing.
No trabajo con MAX y no conozco en qué punto diverge con pure data, pero es muy probable que tengas razón e implemente mejoras de éste tipo.
Los osciladores los creo mandando un mensaje interno aplicando el teorema de Fourier con la función 'sinesum', creando un array y especificando la amplitud de cada armónico. Así creo una tabla con un número concreto de señales y limito la cantidad de armónicos que se generan en las señales.
Los osciladores los creo mandando un mensaje interno aplicando el teorema de Fourier con la función 'sinesum', creando un array y especificando la amplitud de cada armónico. Así creo una tabla con un número concreto de señales y limito la cantidad de armónicos que se generan en las señales.
cris'andt'emo escribió:...creando un array y especificando la amplitud de cada armónico. Así creo una tabla con un número concreto de señales y limito la cantidad de armónicos que se generan en las señales.
Y digo yo, si puedes especificar la amplitud de cada armónico a priori, haz que dependa de la frecuencia de muestreo y así cumplir siempre nyquist, a parte de eso, si no haces algo raro al leer la tabla no deberías tener aliasing.
Sí, esa es la forma en la que creo los osciladores bandlimited y tengo mucho menos alliasing. De todos modos siempre se genera algún "birdie" en altas frecuencias, por eso abrí el hilo y tengo la duda de qué método es mejor y si no sería un gasto innecesario de recursos el hecho de hacer oversampling tras crear los osciladores de éste modo.
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.
Gracias por la aclaración, ha resuelto realmente la duda que tenía. Respecto a las tablas de ondas, me refiero al proceso del que hago uso para crear las señales de banda limitada y solo he estado usando senos para generar otras señales. Creo que ha habido un poco de confusión en cuanto al proceso y el concepto de oscilador bandlimited.
Le voy a dar al botón del dedo para arriba de tu respuesta pese a ser enemigos hispasónicos
Un saludo y gracias de nuevo.
Le voy a dar al botón del dedo para arriba de tu respuesta pese a ser enemigos hispasónicos
Un saludo y gracias de nuevo.
Si yo tuviera "enemigos hispasónicos" no habría respondido en este hilo. No voy a volver sobre el desacuerdo en fondo y, sobre todo, formas del otro hilo, la vida es corta y ya trae suficientes problemas de serie como para encima tener que dilapidar energía en mantener rencilias mezquinas, y más con este calor. Espero que la información te sirva a ti y a otros que puedan leer este hilo y os pongo un enlace a otro donde se cita algo de bibliografía sobre DSP:
https://www.hispasonic.com/foros/primeros-pasos-programando-plugins-lv2/464255
https://www.hispasonic.com/foros/primeros-pasos-programando-plugins-lv2/464255
Jarl... Se puede hacer un filtro antialiasing con un lp resonante que resuene a la frecuencia del oscilador, sin auto oscilar, aunque las técnicas que comentáis son más adecuadas para casos en que hay que subir mucho de octava.
También hay que recordar lo del multimuestreo, aunque a los acérrimos de la síntesis les parecerá una osadía plantear el uso de muestras...
También hay que recordar lo del multimuestreo, aunque a los acérrimos de la síntesis les parecerá una osadía plantear el uso de muestras...
Hilos similares
Nuevo post
Regístrate o identifícate para poder postear en este hilo