Sensibilidad

Es un concepto que indica la capacidad del micrófono de captar sonido débiles y convertirlos en señales eléctricas. Se define como el cociente entre la tensión eléctrica en bornas del micrófono cuando está en circuito abierto y la presión que incide sobre su diafragma en campo libre.

\[ S = \frac{E}{p} \]

La sensibilidad, cuya unidad fundamental es el V/Pa, suele expresarse en mV/Pa debido a que el micrófono proporciona muy poca tensión por cada Pascal.

En las características técnicas de un micrófono es común expresar la sensibilidad en dB, indicando la sensibilidad de referencia So.

\[ S = 20 log \frac{S}{S_o} \]

Por ejemplo, un micrófono con una sensibilidad de S = -60dB (re 1V/µbar) recibe una presión de 94dB, la tensión que éste genera es E = Sp. La sensibilidad S expresada linealmente es:

\[ S = 10^\frac{-60}{20} = 0,001 V/µbar \]

Como vemos que la tensión de salida es muy chica (10mV). Este es el motivo por el cual es deseable micrófonos con sensibilidades altas, lo que significa valores en dB cercanos a cero.

La variación de la sensibilidad con respecto al ángulo de incidencia da lugar a una carácteristica de la que se detalla a continuación:

Directividad

Da una idea de la variación de la sensibilidad en función de la orientación del micrófono, o del ángulo con el que incide una onda sonora.

Un micrófono omnidireccional es aquel cuya sensibilidad es independiente de la dirección de incidencia del sonido. Por el contrario, un micrófono direccional es aquel cuya sensibilidad varía en función de la dirección de incidencia del sonido.

Para graficar la directividad se utilizan los conocidos graficos polares, que se calculan a partir de lo que se llama ecuación polar. A quien le interese:

\[ R(\theta) = \frac{p(\theta)}{p_m}\]

Patrones directivos

Básicamente, los micrófonos pueden ser omnidireccionales (que la sensibilidad no varía con el ángulo de incidencia), o direccionales, dentro de los cuales existes, los cardioides, supercardioides, hipercardioides o bidireccionales (figura en 8).

CaracterísticaR(x)
Omnidireccional1
Bidireccionalcos(x)
Cardioide½(1+ cos(x))
Hipercardioide¼(1 + 3 cos(x))
Supercardioide½[(√3 - 1) + (3 - √3) cos(x)]

La tabla anterior muestra la clasificación de micófonos y sus características directivas.

Se presentan a continuación los gráficos de cada clasificación y de su directiva. Para ello se utilizo un código en Python con la librería matplot.lib para realizar los gráficos.

Se puso a modo de ejemplo un micrófono con una sensibilidad de 28mV

gráfico sensibilidad
Sensibilidad
Radianes

El segundo gráfico representa los radianes. Un círculo completo es 2π (360°) que para los gráficos mostrados anteriormente, es el punto de mayor sensibilidad en los micrófonos. Por el contrario π equivale a 180° es el de menos sensibilidad, π/2 a 90° y 3π/2 son 270° .

Con esto en cuenta podemos ver y entender la figura n°1 y como cambia la sensibilidad de acuerdo al ángulo de incidencia sobre el micrófono.

No por nada, en vivo, el monitor de escenario se coloca a 180° del micrófono ( π ) que es donde un micrófono cardioide (el mas usado en vivo, como el Shure SM-58) tiene menos sensibilidad.

Podemos entender mejor los gráficos si pensamos en mV (lo que realmente es). Por ejemplo, si miramos el tipo cardioide sabemos que a 2π (0°) la sensibilidad es máxima, en nuestro ejemplo, entrega 28mV. Si nos movemos en el eje y nos vamos a π (180°) nos entrega casi nada de voltaje.

Código Python para los gráficos

Para quien le interese, acá dejo, como siempre, el código que use para poder realizar los gráficos.

#IMPORTO LOS MODULOS A UTILIZAR
import numpy as np
import matplotlib.pyplot as plt
import math

#GENERO VALORES EQUIDISTANTES ENTRE -2*pi Y 2*pi
x = np.arange((-2*np.pi), (2*np.pi), 0.01)

#SENSIBILIDAD DEL MICRÓFONO EXPRESADO EN MV
s = 28

#CALCULO DE SENSIBILIDADES
bi = s*np.cos(x)
di = (s/2)*(1+np.cos(x))
su = (s/2)*((np.sqrt(3)-1)+(3-np.sqrt(3))*np.cos(x))
hy = s/4* (1+3*np.cos(x))

#CREO EL SUBGRÁFICO
fig, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2, 2,figsize=(9, 5), dpi=120)

#GENERO LOS DIFERENTES GRÁFICOS
ax1.plot(x, bi)
ax2.plot(x, di, 'tab:orange')
ax3.plot(x, su, 'tab:green')
ax4.plot(x, hy, 'tab:red')

#AGREGO TITULOS Y LABELS
ax1.set_title('Bidireccional', fontsize = 8)
ax1.set_ylabel('mV', fontsize = 6)

ax2.set_title('Direccional', fontsize = 8)
ax2.set_ylabel('mV', fontsize = 6)

ax3.set_title('Supercardioide', fontsize = 8)
ax3.set_ylabel('mV', fontsize = 6)

ax4.set_title('Hipercardioide', fontsize = 8)
ax4.set_ylabel('mV', fontsize = 6)

#LIMITO EL EJE Y
plt.ylim(-29, 29)

#LIMITO EL EJE X Y LE AGREGO LOS VALORES A LOS PUNTOS
plt.setp((ax1,ax2,ax3,ax4), 
         xticks=[-2*np.pi, -np.pi, 0, np.pi, 2*np.pi], 
         xticklabels=[r'$-2\pi$', r'$-\pi$', r'$0$', r'$+\pi$', r'$2\pi$'],
        yticks=[-28, 0, 28])

#CENTRO LA FIGURA Y REALIZO UN AJUSTE PARA QUE LOS GRÁFICOS ESTEN ORDENADOS
fig.tight_layout()

#SI DESEO GUARDAR LA IMAGEN ELIMINAR # DE LA LINEA DE ABAJO
#plt.savefig("nombre imagen.png")

#MUESTRO LA IMAGEN
plt.show()

Nos vemos en el próximo post!!

Teorema de Nyquist

¿Qué dice el teorema? ¿Qué pasa si no se cumple?

Este teorema dice: Según el teorema de muestreo de Nyquist-Shannon, para poder digitalizar una señal analógica y transmitirla por un medio eléctrico a grandes distancias y poder recuperarla en el extremo distante con la máxima fidelidad posible, se requiere que la señal analógica sea muestreada al menos dos veces su frecuencia máxima. [Wikipedia]

De este teorema surge la frecuencia de muestreo de 44.1kHz. El rango de escucha del oído humano va desde los 20Hz hasta los 20.000Hz. La frecuencia de muestreo de 44.100Hz cumple con el teorema.

Para poder graficar una onda pura vamos a usar Python y vamos a cambiar la frecuencia de muestreo para ejemplificar ambos casos.

import numpy as np
import matplotlib.pyplot as plt

f = 50  #Frecuencia en Hertz
f_s = 44100  #Sampleo, o cantidad de muestras por segundos

f_s_b = 10 #Sampleo, o cantidad de muestras por segundos donde no se cumple el teorema de Nyquist

t = np.linspace(0, 1, 2 * f_s) #Función para crear un array equidistante
x = np.sin(f * 2 * np.pi * t)

fig, ax = plt.subplots(figsize=(15,7))
ax.plot(t, x)
ax.set_ylim(1.5,-1.5)
ax.set_xlabel('Tiempo [s]')
ax.set_ylabel('Amplitud Señal')
ax.set_title('50Hz con Frecuencia de Muestreo de 44100Hz')
plt.show()

El gráfico que se genera es el siguiente

1 segundo de una onda de 50Hz

Al código de arriba lo modifico para que la resolución sea de 10Hz. Veamos que onda se genera:

import numpy as np
import matplotlib.pyplot as plt

f = 50  #Frecuencia en Hertz
f_s = 44100  #Sampleo, o cantidad de muestras por segundos

f_s_b = 10 #Sampleo, o cantidad de muestras por segundos donde no se cumple el teorema de Nyquist

t = np.linspace(0, 1, 2 * f_s) #Función para crear un array equidistante
x = np.sin(f * 2 * np.pi * t)

fig, ax = plt.subplots(figsize=(15,7))
ax.plot(t, x)
ax.set_ylim(1.5,-1.5)
ax.set_xlabel('Tiempo [s]')
ax.set_ylabel('Amplitud Señal')
ax.set_title('50Hz con Frecuencia de Muestreo de 10Hz')
plt.show()
1 segundo de una onda de 50Hz

Claramente se ve la diferencia entre una onda y la otra. A este error se le denomina aliasing. Trae en los resultados falsos picos, datos erróneos. Justamente el término aliasing viene de alias. Según la RAE:

1. m. Apodo o sobrenombre.
2. adv. Por otro nombre. Alfonso Tostado, alias el Abulense.
3. adv. desus. De otro modo.

El propio nombre lo dice, no es una copia exacta, es un alias. Hoy no es una configuración que sea necesario tener pendiente, ya que practicamente cualquier DAW trae como predeterminado el valor de 44.100 Hz. Pero es importante conocer todos los aspectos del sonido digital.

El código de Python para generar la onda

Hasta el próximo post!!!