Hola, soy Monty Montgomery de Red Hat y Xiph.Org.
Hace pocos meses, escribí un artículo sobre audio digital y por qué las descargas de música en 24bit/192kHz no tienen sentido.
En el artículo mencioné al pasar que una forma de onda digital no es escalonada,
y que al convertirla nuevamente en análoga ciertamente no se obtiene una onda escalonada.
Con respecto al artículo, fue eso sobre lo que más me escribió la gente.
De hecho, más de la mitad del correo que recibí fueron preguntas y comentarios
sobre el comportamiento básico de las señales digitales.
Debido a ese interés, tomémonos un poco de tiempo para jugar con algunas señales digitales sencillas.
Supongamos, por un momento,
que no tuviéramos la menor idea de cómo se comportan estas señales.
En tal caso no tendría sentido para nosotros
usar equipos de ensayo digitales.
Afortunadamente para este ejercicio, todavía hay
bastantes equipos analógicos de laboratorio que funcionan.
Lo primero que necesitamos es un generador de señal
para proporcionar señales de entrada analógicas.
En este caso, un generador HP3325 de 1978.
Todavía es un muy buen generador,
así que si a uno no le preocupa el tamaño,
el peso,
el consumo de energía,
y el ruido del ventilador,
se lo puede encontrar en eBay.
A veces por poco más que lo que se paga el envío.
Luego observaremos nuestras señales analógicas en un osciloscopio analógico,
como este Tektronix 2246 de los 90,
uno de los últimos y mejores osciloscopios jamás fabricado.
Todo laboratorio hogareño debería tener uno de éstos.
Finalmente, veremos el espectro de frecuencias de nuestras señales
usando un analizador de espectro analógico.
Este HP3585, de la mísma linea de productos que el generador de señal.
Como los otros equipos, posee un microcontrolador
rudimentario y voluminoso hasta el ridículo,
pero el camino de la señal desde la entrada hasta lo que se ve en la pantalla
es completamente analógico.
Todo este equipo es clásico,
pero a pesar de su peso bruto,
las especificaciones todavía son muy buenas.
En este momento tenemos nuestro generador de señal
generando una hermosa onda senoidal de 1 kHz y 1 V RMS
Vemos la onda senoidal en el osciloscopio,
y podemos verificar que realmente es de 1 kHz y 1 V RMS,
que es lo mismo que 2,83 V pico a pico,
y que corresponde a la medición del analizador de espectro.
El analizador también muestra algo de ruido blanco de bajo nivel
y apenas un poco de distorsión armónica,
con su máximo pico unos 70 dB debajo de la fundamental.
Esto no tendrá importancia en nuestra demostración,
pero quería señalarlo en este momento
por las dudas que ustedes no lo notaran.
Ahora intercalaremos muestreo digital.
Para la conversión utilizaremos un aburrido
dispositivo de audio eMagic USB1 de bajo costo.
En este momento ya cumplió más de 10 años,
y se está voviendo obsoleto.
Un conversor más actual puede tener fácilmente especificaciones mejores en un orden de magnitud.
Respuesta plana, linealidad, jitter, ruido, todo...
Tal vez no lo notaron.
Sólo porque podemos medir una mejora
no significa que podamos escucharla,
e incluso estas placas de bajo costo ya alcanzaban
el límite de la transparencia ideal.
La eMagic se conecta a mi ThinkPad,
que muestra la forma de onda digital y el espectro para comparación,
luego la ThinkPad reenvía la señal digital
a la eMagic para su reconversión a análoga
y observación con el osciloscopio.
De la entrada a la salida, izquierda a derecha.
OK, vamos a empezar.
Comenzamos convirtiendo una señal analógica a digital
y luego nuevamente a analógica sin ningín otro paso intermedio.
El generador de señal se configura para producir
una onda senoidal de 1 kHz ligual que antes.
Podemos ver la onda senoidal en la entrada con el osciloscopio.
Digitalizamos la señal a 16 bit PCM y 44.1 kHz,
igual que en un CD.
El espectro de la señal digital concuerda con el que vimos antes y...
lo que vemos ahora en el analizador de espectro analógico,
aparte de que su alta impedancia de entrada es algo más ruidosa.
Por ahora
la pantalla muestra la onda senoidal digitalizada
como un patrón escalonado con un escalón por muestra.
Pero cuando miramos la señal de salida
que ha sido reconvertida de digital a análoga, vemos...
¡Que es exactamente como la onda senoidal original!
No hay escalones.
De acuerdo, 1 kHz es todavía una frecuencia bastante baja,
Puede ser que los escalones sean sólo difíciles de apreciar o que hayan sido suavizados.
Veamos. Elijamos una frecuencia más alta, algo más cercana a Nyquist, digamos 15 kHz.
Ahora la onda senoidal está representada por menos de tres muestras por ciclo...
y la forma de onda digital se ve horrible.
Bueno, las apariencias engañan. La salida analógica...
sigue siendo una onda senoidal perfecta, igual que la original.
Sigamos subiendo.
16 kHz....
17 kHz...
18 kHz...
19 kHz...
20kHz.
Bienvenidos al límite superior de la audición humana.
La forma de onda de salida sigue siendo perfecta.
No hay bordes dentados, caída de tensión, ni escalones.
¿Adónde fueron los escalones?
No respondan, es una pregunta capciosa.
Nunca estuvieron allí.
Dibujar la forma de onda digital escalonada
no es correcto. por empezar.
¿Por qué?
Una onda escalonada es una función de tiempo continuo.
Presenta saltos y es constannte a trozos,
pero tiene un valor definido en cualquier instante de tiempo.
Una señal muestreada es completamente diferente.
Es en tiempo discreto;
sólo tiene valores en los instantes de muestreo
y está indefinida, es decir, no posee ningun valor, en puntos intermedios.
Una señal en tiempo discreto se dibuja más propiamente con barras.
La contraparte análoga y continua de una señal digital
pasa suavemente por cada muestra,
y eso es tan cierto para alta como para baja frecuencia.
Ahora, el detalle interesante pero para nada obvio, es:
Hay sólo una señal limitada en banda que pasa
exactamente por cada muestra.
Es una solución única.
Por lo tanto si uno muestrea una señal limitada en banda
y luego la reconvierte a análoga nuevamente,
la señal original es también la única salida posible.
Y antes de que digan,
"¡Eh! Yo puedo dibujar diferentes señales que pasan por esos puntos."
Bueno, sí, es posible pero...
si difiere incluso apenas de la original,
entonces contendrá frecuencias por encima de Nyquist,
dejará de cumplir con el requisito de estar limitada en banda
y no será una solución válida.
Entonces, ¿cómo es que todo el mundo se ha confundido
y empezó a pensar en las señales digitales como escalones?
Se me ocurren dos buenas razones.
Primero, es sencillo convertir una señal muestreada
en una verdadera señal escalonada.
Basta extender el valor de cada muestra hasta el próximo periodo de muestreo.
Esto se llama retención de orden cero,
y es una parte importante de algunos conversores digital / analógicos,
especialmente los más simples.
Así, cualquiera que hace una búsqueda sobre conversión digital/analógica
probablemente terminará encontrando alguna forma de onda escalonada,
pero ésa no es una conversión completa,
ni es la señal de salida del conversor.
Segundo,
y esta es posiblemente la razón más probable,
los ingenieros que se supone conocen el tema,
como yo,
dibujan escalones aunque son técnicamente incorrectos.
Es una especie de versión unidimensional de
los puntos gordos en un editor de imágenes.
Los píxeles no son cuadrados,
son muestras de una función bidimensional así que son, también,
conceptualmente, puntos infinitamente pequeños.
En la práctica es un verdadero parto ver
o manipuilar cualquier cosa infinitamente pequeña.
De allí los cuadrados rellenos.
Los gráficos escalonados son exactamente lo mismo.
Es un dibujo conveniente.
Los escalones realmente no existen.
Cuando convertimos la señal digital nuevamente en análoga,
el resultado es también suave independientemente de la resolución en bits.
24 bits ó 16 bits...
u 8 bits...
No afecta.
¿Eso significa que la resolución en bit
no hace ninguna diferencia?
Por supuesto que sí la hace.
El canal 2 aquí es la misma señal de entrada
pero recuantizada con dither bajando a 8 bit.
En el canal 2 del osciloscopio, aún vemos una forma de onda senoidal bonita y suave.
Mirando muy de cerca, se verá también un poquito más de ruido.
Ésa es una pista.
Si miramos el espectro de la señal...
¡Ahá!
Nuestra señal está allí inalterable,
pero el nivel de ruido de la señal de 8 bit
en el segundo canal ¡es mucho más alta!
Y esa es la diferencia debida al número de bits.
¡Así es!
Cuando digitalizamos una señal, primero la muestreamos.
La etapa de muestreo es perfecta. No se pierde nada.
Pero luego la cuantizamos, y la cuantización agrega ruido.
El número de bits determina cuánto ruido
y también el nivel del piso de ruido.
¿Cómo suena esta cuantizacioón con dither?
Escuchemos nuestra onda senoidal de 8 bit.
Puede ser difícil escuchar otra cosa además del tono.
Escuchemos sólo el ruido una vez eliminado el tono
y aumentado la ganancia un poco porque el ruido es bajo.
Quienes hayan usado equipos de grabación analógicos
seguramente pensaron
"¡Por Dios! ¡Suena como el soplido de cinta!"
Bueno, no sólo sonaba como ruido de cinta,
sino que actúa como si lo fuera,
y si usamos dither gaussiano
entonces es equivalente en todos los aspectos.
ES soplido de cinta.
Intuitivamente esto significa que podemos medir el soplido de cinta
y por lo tanto el piso de ruido de la cinta magnética
en bits en lugar de en decibeles,
para poner las cosas en una perspectiva digital.
Cassetes compactos...
Para quienes son suficientemente viejos para recordarlos,
se podían alcanzar hasta 9 bits en perfectas condiciones,
aunque 5 ó 6 era lo más típico,
especialmente si era una grabaciuón hecha en una cassetera.
Es así... las cintas de cassete tenían sólo seis bits... ¡Con suerte!
La mejor cinta profesional de carrete abierto
usada en estudios podía escasamente alcanzar...
¿Alguna idea...?
13 bits
con reducción de ruido avanzada.
Y es por eso que ver "DDD" en un cassete compacto
se consideraba el sumum.
En todo momento dije que estaba cuantizando con dither,
pero... ¿qué es dither, exactamente?
Más importante: ¿Qué es lo que hace?
La forma simple de cuantizar una señal es elegir
el valor de amplitud digital cercana
a la amplitud análoga original.
Obvio ¿no?
Desgraciadamente, el ruido exacto que se obtiene
a partir de este esquema simple de cuantización
depende en cierta medida de la señal de entrada,
por lo tanto uno puede obtener ruido que no es siempre igual,
o causa distorsión,
o es indeseable de algún otro modo.
Dither es un ruido especialmente generado
que sustituye al ruido producido por simple cuantización.
El dither no desplaza o enmascara al ruido de cuantización,
en realidad lo reemplaza
con un ruido cuyas características podemos elegir
y que no dependen de la entrada.
Veamos qué hace el dither.
El generador de señal tiene demasiado ruido para esta prueba
por lo cual lo generaremos una señal senoidal
matemáticamente perfecta con el ThinkPad
y la cuantizaremos a 8 bit con dither.
Vemos una linda onda senoidal en la pantalla
y en el opsciloscopio
y...
tan pronto como el analizador de espectro responda...
aparece un pico frecuencial limpio con un piso de ruido uniforme
en los dos dispositivos de análisis espectral,
igual que antes.
Nuevamente, esto sucede con dither.
Ahora deshabilito el dither.
El ruido de cuantización que el dither había desparramado
en un piso de ruido plano,
se apila ahora en picos de distorsión armónica.
El piso de ruido es menor pero la distorsion se vuelve no nula,
y los picos de distorsión son más altos que el ruido debido al dither.
Para 8 bits el efecto queda exagerado.
Para 16 bit,
aun sin dither,
la distorsión armónica es tan baja
que se torna completamente inaudible.
Aun así podemos usar dither para eliminarla completamente
si así lo preferimos.
Quitando el dither nuevamente, por un momento,
se notará que el nivel absoluto de distorsión
debido a la cuantización sin dither es aproximadamente constante
independientemente de la amplitud de entrada.
Pero cuando la señal baja por debajo de 1/2 bit,
toda la señal se cuantiza a 0.
En un sentido,
la cuantización de toda la señal a 0... ¡es una distorsión del 100 %!
El dither eslimina esta distorsión también.
Si volvemos a aplicar dither...
tendremos de nuevo nuestra señal de 1/4 bit,
con un bonito piso de ruio.
El piso de ruido no necesita ser plano.
El dither es un ruido que podemos elegir,
así que elijamos un ruido que resulte tan inofensivo
y difícil de percibir como sea posible.
Nuestra audición es más sensible en el rengo medio de 2 kHz a 4 kHz,
por lo que es allí que el ruido de fondo será más obvio.
Podemos conformar el dither de modo de alejarlo de las frecuencias sensibles
hacia donde el oído es menos sensible,
en general, las altas frecuencias.
En 16 bit el ruido de dither es normalmente demasaido débil para ser audible,
pero escuchemos nuestro ejemplo de conformacióin de ruido,
nuevamente subiendo bastante la ganancia...
Por último, el ruido de cuantización con dither tiene mayor potencia total
que sin dither, aun cuando suena múcho más débil.
Eso se puede apreciar en un VUmetro durante pasajes casi en silencio.
Pero el dither no es una elección por sí o no..
Podemos reducir la potencia del dither para balancear menos ruido
versus algo de distorsión para minimizar el efecto global.
Modulemos la señal de entrada de esta forma:
... para mostrar cómo una entrada variable afecta el ruido de cuantización.
Usando máximo dither, el ruido es uniforme, constante,
y no tiene aspectos que resaltan, tal como esperamos:
A medida que reducimos la potencia del dither,
la entrada tiene un efecto cada vez mayor sobre la amplitud y el carácter
del ruido de cuantización:
El dither conformado se comporta similarmente,
pero la conformación de ruido presenta otra atractiva ventaja.
Para hacer corta una larga historia, se puede usar
una menor potencia de dither antes de la entrada
para obtener un mayor efecto en la salida.
A pesar de todo el tiempo que le dediqué al dither,
estamos hablando de diferencias
que empiezan 100 decibeles por debajo del fondo de escala.
Es posible que si el CD hubiera tenido 14 bits según el diseño original,
el dither podría ser más importante.
Puede ser.
Para 16 bits, realmente, es un lavado de cara.
Se puede pensar en el dither como una póliza de seguro
que proporciona decibeles extra de rango dinámico...
por si acaso.
El hecho simple es, sin embargo,
que nunca nadie arruinó una gran grabación
por no aplicar dither al master final.
Hemos estado usando ondas senoidales.
Son la elección obvia cuando lo que queremos ver
es el comportamiento de un sistema en una frecuencia aislada.
Ahora echemos una ojeada a algo un poco más complejo.
¿Qué deberíamos esperar que suceda
al cambiar la entrada por una onda cuadrada?
El osciloscopio muestra nuestra onda cuadrada de 1 kHz a la entrada.
En la salida muestra...
Exactamente lo que debería.
¿Qué es, realmente, una onda cuadrada?
Bien, podemos decir que es una onda con algún valor positivo
durante medio ciclo que luego transiciona instantáneamente
a un valor negativo durante la otra mitad.
Pero esto no nos dice nada útil
acerca de cómo esta entrada
se transforma en esta salida.
Luego recordamos que cualquier forma de onda
es también la suma de frecuencias discretas
y una onda cuadrada es particularmente una simple suma
de una fundamental
y una serie infinita de armónicos.
Sumándolos a todos, se obtiene la onda cuadrada.
A primera vista,
esto no parece demasiado útil tampoco.
Hay que sumar infinitos armónicos
para obtener el resultado.
Ah, pero no tenemos un número infinito de armónicos.
Estamos utilizando un filtro antialias muy selectivo
que recorta todo lo que está por encima de 20 kHz
por lo que nuestra señal está limitada en banda,
lo cual significa que obtenemos esto:
... que es exactamente lo que vemos con el oscilosciopio a la salida.
La ondulación que se observa cerca de los bordes empinados en una señal limitada en banda
se llama effecto Gibbs.
Sucede siempre que se elimina una parte del dominio frecuencial
en una zona donde la energía no era 0
Como regla general, cuanto más abrupto es el recorte
más fuerte es la ondulación,
lo cual es aproximadamente cierto,
pero tenemos que ser cautos al pensar en ello.
Por ejemplo...
¿Qué cabe esperar que hará nuestro abrupto filtro antialias
si hacemos pasar la señal a través de él por segunda vez?
Además de agregar unas pocas fracciones de ciclo de retardo,
la respuesta es...
Nada.
La señal ya está limitada en banda.
La nueva limitación en banda no hace nada.
Una segunda pasada no puede eliminar frecuencias que ya se habían elilminado.
Y eso es importante.
La gente tiende a pensar que las ondulaciones son un efecto colateral
del uso de los filtros antialias y de suavizado,
insinuando que las ondulacioens son cada vez peores
cada vez que la señal atraviesa el filtro.
Vemos que en este caso ello no sucede.
Entonces: ¿fue realmente el filtro que agregó ondulaciones la primera vez?
Realmente no.
Es una distinción sutil,
pero las ondulaciones del efecto Gibbs no son agregadas por el filtro,
son parte de cualquier señal limitada en banda.
Aun si construimos sintéticamente
algo que parece una onda cuadrada digital perfecta,
sigue estando limitada al ancho de banda del canal.
Recordemnos que la representación escalonada es engañosa.
Lo que realmente tenemos aquí son muestras inatantáneas,
y sólo una señal limitada en banda puede pasar por esos puntos.
Lo único que hicimos cuando dibujamos la onda cuadrada aparentemente perfecta
fue alinear los puintos dando la impresión
de que que no había ondulaciones si jugábamos al juego de conectar los puntos.
Pero la señal original limitada en banda,
incluyendo las ondulaciones, seguía estando allí.
Y esto nos lleva a otro punto importante.
Probablemente escucharon que la precisión temporal en una señal digital
se limita a su tasa de muestreo; en otras palabras,
que las señales digitales no pueden representar algo
que cae entre medio de dos muestras...
insinuando que los impulsos o ataques rápidos deben estar alineados
exactamente con una muestra, o la temporización se desarma...
o directamente desaparecen.
A esta altura podemos ver fácilemnte por qué esto es erróneo:
Nuevamente, nuestras señales de entrada están limitadas en banda.
Y las señales digitales son muestras,
no escalones, no puntos conectados.
Podemos ciertamente colocar, por ejemplo,
el flanco ascendente de nuestra onda cuadrada limitada en banda
donde queramos entre muestras.
Quedará representada perfecamente
y se reconstruye perfectamente.
Igual que en el episodio previo,
hemos cubierto un amplio rango de temas,
y sin embargo apenas rascamos la superficie de cada uno.
Como mínimo, mis pecados por omisión son mayores esta vez...
pero este es un buen punto de llegada.
O, tal vez, un buen punto de partida.
Escarben más profundamente.
Experimenten.
Yo elijo mis demostraciones muy cuidadosamente
para ser sencillas y dar resultados claros.
Pueden reproducir cada una de ellas por sus propios medios, si quieren.
Pero, seamos realistas, algunas veces aprendemos más
sobre un lindo juguete despanzurrándolo
y estudiando las piezas que van cayendo.
Y está bien, somos ingenieros.
Jueguen con los parámetros de las demostraciones,
hackeen el código,
planteen experimentos alternativos.
El código fuente para todo,
incluyendo la pequeña aplicación demo,
está en Xiph.Org.
En el curso de la experimentación,
seguramente se encontrarán con algo
que no esperaban ni pueden explicar.
¡No se preocupen!
Dejando la cháchara anterior a un costado, Wikipedia es fantásticca
precisamente para esta clase de búsqueda casual.
Si ustedes realmente quieren comprender las señales a fondo,
varias universidades tienen material avanzado en línea,
Tales como los módulos 6.003 y 6.007 sobre Señales y Sistemas
del MIT OpenCourseWare.
Y, por supuesto, la comunidad está siempre aquí en Xiph.Org.
Escarbando más o no,
me quedé sin café,
así que hasta la próxima,
¡Feliz hackeo!