Analizador de espectro

class Visualizer(pz.App): def subscriptions(self): return [pz.frames(lambda dt: None)] # redibuja en cada fotograma
def view(self): return ui.audio.Spectrum(magnitudes=engine.spectrum(512), variant="blocks", colors="fl")De bins a bandas
Sección titulada «De bins a bandas»magnitudes son decibelios (−120 a 0), uno por bin de frecuencia: justo lo que devuelven
node.spectrum() y engine.spectrum(). El analizador los agrupa en bands bandas espaciadas de
forma logarítmica (cada banda un poco más ancha que la anterior), como oye el oído: una octava
ocupa el mismo ancho en 100 Hz que en 5 kHz. Cada banda muestra su bin más fuerte.
spacing indica cómo están espaciados tus bins:
"log"(por defecto): ya espaciados de forma logarítmica de 20 Hz a la mitad de la frecuencia de muestreo, como el espectro del motor. Solo se reagrupan enbands."linear": espaciados por igual desde 0 Hz, como la salida de una FFT simple (numpy.fft.rfft). El analizador calcula qué bins van en cada banda a partir desample_rate.
min_db y max_db son la parte de abajo y de arriba de la pantalla.
Movimiento
Sección titulada «Movimiento»Las barras suben de golpe y caen a falloff decibelios por segundo (0 hace que sigan la entrada
exactamente), así la pantalla se ve suave aunque la entrada parpadee. Con peaks=True una pequeña
tapa se queda encima de cada barra y baja más despacio. La velocidad se mide en tiempo real, así
que es la misma a 30 o a 144 fotogramas por segundo.
Estilos y colores
Sección titulada «Estilos y colores»variant |
Se parece a |
|---|---|
"bars" |
Barras sólidas. |
"blocks" |
Segmentos LED, como un equipo de alta fidelidad. |
"line" |
Una línea luminosa por la parte alta de las bandas. |
"filled" |
La misma línea con el área de debajo rellena. |
"mirror" |
Barras centradas en vertical, con un aspecto simétrico. |
"radial" |
Barras alrededor de un círculo, como un visualizador de música. |
colors es una paleta ("fl", "neon", "fire", "ice", "magma", "viridis"…) o una lista de
colores. color_by="level" pinta cada barra de suave (abajo) a fuerte (arriba);
color_by="frequency" da a cada banda su propio color de graves a agudos. labels=True marca
100 Hz, 1 kHz y 10 kHz.
| Propiedad | Por defecto | Qué hace |
|---|---|---|
magnitudes |
() |
dB por bin de frecuencia. |
width, height |
360, 140 |
Tamaño en píxeles. |
variant |
"bars" |
Ver la tabla de arriba. |
bands |
48 |
Número de bandas. |
spacing |
"log" |
Cómo están espaciadas las magnitudes: "log" (el motor) o "linear" (una FFT simple). |
min_db, max_db |
-90, 0 |
Rango mostrado. |
colors, color_by |
"fl", "level" |
Paleta y qué sigue. |
falloff, peaks |
48, True |
Velocidad de caída (dB/s) y tapas de pico. |
sample_rate |
48000 |
Para las etiquetas y los bordes de las bandas. |
labels, gap, background |
False, 2, "#0f1012" |