<!-- canonical: https://jmrplens.github.io/phonometry/es/guides/room-noise/ -->
Source: https://jmrplens.github.io/phonometry/es/guides/room-noise/

El ruido de fondo estacionario de una sala ocupada (de la ventilación, los
difusores o el tráfico lejano) se califica frente a una familia de **curvas de
criterio por bandas de octava**. **ANSI/ASA S12.2-2019**, *Criteria for
Evaluating Room Noise*, define dos calificaciones a partir de un espectro que
phonometry implementa: la calificación **Noise Criteria (NC)** (la designación
NC-(SIL) de la cláusula 5.2.2, con el método de tangencia cuando el espectro la
supera), y la calificación **Room Criteria Mark II (RC)** con su etiqueta
espectral de retumbo/siseo. Ambas trabajan sobre niveles de presión acústica por
banda de octava en las diez bandas de 16 Hz a 8000 Hz.

## 1. Criterios de ruido: designación SIL y tangencia

Las **curvas NC** (ANSI/ASA S12.2-2019, Tabla 1) son una familia de límites por
banda de octava, cada una designada por su valor a 1000 Hz (de NC-15 hasta
NC-70). La cláusula 5.2.2 califica un espectro en **dos pasos**. Primero el
**nivel de interferencia con el habla** $\mathrm{SIL}$ (cláusula 3.2, la media
de los niveles de 500/1000/2000/4000 Hz) selecciona la curva NC-(SIL): si
ninguna banda de octava la supera, el espectro se designa simplemente
**NC-(SIL)**. Solo cuando el espectro asoma por encima de esa curva entra el
**método de tangencia** (cláusula 5.2.3): para cada banda de octava se busca el
índice NC cuya curva pasa por el nivel medido, y la calificación es el máximo
entre bandas. La banda en la que se alcanza ese máximo, la que empuja el
espectro contra las curvas, se reporta como **banda determinante**.

```python

from phonometry import room

# SPL en bandas de octava, 16 Hz - 8000 Hz (una sala dominada por la ventilación).
spl = np.array([62.0, 62.0, 59.0, 57.0, 52.0, 42.0, 35.0, 29.0, 24.0, 19.0])

nc = room.noise_criterion(spl)
print(round(nc.sil, 1))           # 32.5   (cláusula 3.2)
print(nc.method)                  # 'tangency'  (se supera la curva NC-32)
print(round(nc.rating, 1))        # 42.5
print(nc.governing_frequency)     # 250.0  (la banda tangente)
print(nc.label)                   # 'NC-42.5 (250 Hz)'
nc.plot()   # el espectro sobre la familia de curvas NC (panel izquierdo de abajo)
```

Como la calificación de tangencia interpola entre las curvas tabuladas es un
número continuo: una calificación NC de $42{,}5$ queda a medio camino entre
NC-40 y NC-45 (una designación SIL es siempre un entero). La calificación de
tangencia se conserva en `tangency_rating` incluso cuando se aplica la
designación SIL. Puede suministrarse un subconjunto de las bandas de octava
junto con sus frecuencias centrales
(`room.noise_criterion(levels, frequencies)`); sin las cuatro bandas del SIL la
designación la fija solo la calificación de tangencia.

La familia de la Tabla 1 termina en NC-70 y NC-15, y la norma no define ninguna
calificación más allá. Un espectro por encima de la curva NC-70 (o enteramente
por debajo de la curva NC-15) recibe por tanto `rating = nan` y una marca
`out_of_range` de `"above"` / `"below"`, con `nc.label` leyendo
`'>NC-70 (63 Hz)'` (gobierna la banda con mayor exceso sobre NC-70) o
`'

<details>
<summary>Mostrar el código de esta figura</summary>

```python

from phonometry import room

spl = np.array([62.0, 62.0, 59.0, 57.0, 52.0, 42.0, 35.0, 29.0, 24.0, 19.0])

# En una línea cada uno:
room.noise_criterion(spl).plot(language="es")
room.room_criterion(spl).plot(language="es")
plt.show()

# A mano, reproduciendo lo que dibujan NCResult.plot() / RCResult.plot():
from phonometry.room.room_noise import NC_CURVES, NC_INDICES, OCTAVE_BANDS
nc, rc = room.noise_criterion(spl), room.room_criterion(spl)
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 5))

for row, idx in zip(NC_CURVES, NC_INDICES):
    ax1.plot(OCTAVE_BANDS, row, color="#bbbbbb", lw=0.8)
ax1.plot(OCTAVE_BANDS, spl, "o-", label="Measured")
gov = spl[OCTAVE_BANDS == nc.governing_frequency][0]
ax1.plot([nc.governing_frequency], [gov], "D", color="#d62728")
ax1.set_xscale("log"); ax1.set_title(f"NC-{nc.rating:g}")

ref = rc.reference_curve
low, high = OCTAVE_BANDS <= 500, OCTAVE_BANDS >= 1000
ax2.plot(OCTAVE_BANDS, ref, "s--", color="#7f7f7f", label=f"Reference RC-{rc.rating}")
ax2.fill_between(OCTAVE_BANDS[low], ref[low], ref[low] + 5, color="#ffbb78", alpha=0.35)
ax2.fill_between(OCTAVE_BANDS[high], ref[high], ref[high] + 3, color="#aec7e8", alpha=0.45)
ax2.plot(OCTAVE_BANDS, spl, "o-", label="Measured")
ax2.set_xscale("log"); ax2.set_title(rc.label)
plt.show()
```

</details>

El `NCResult` lleva la calificación `rating`, el `sil`, la `tangency_rating`,
el `method` (`'SIL'` o `'tangency'`), la `governing_frequency`, la marca
`out_of_range` y los `levels` medidos, más una etiqueta `label` de conveniencia
(`'NC-44'`, `'NC-51 (125 Hz)'`, `'>NC-70 (63 Hz)'`); el `RCResult` lleva la
calificación `rating`, la `lmf`, la `classification`, la `reference_curve`, una
marca `out_of_family` (la Tabla D.1 solo tabula de RC-25 a RC-50) y una
etiqueta `label` de conveniencia en la forma `RC-NN(A)`. La cláusula D.3.5
admite las etiquetas $N$, $R$, $H$ o $RV$; cuando disparan a la vez las
desviaciones de retumbo y siseo, la biblioteca informa la combinación `RH` como
extensión de diagnóstico. Cada resultado expone un `.plot()` que dibuja su
panel de arriba. La cláusula D.4 espera al menos las bandas de octava de
31,5 Hz a 4000 Hz: un espectro al que le falte alguna se califica igualmente,
pero emite un `UserWarning` porque las bandas ausentes se omiten en las pruebas
de desviación de la etiqueta.

Los criterios de ruido balanceados (NCB), el criterio de ruido de sala para
ruido de baja frecuencia fluctuante (RNC, que necesita una serie temporal en
lugar de un único espectro), la etiqueta de vibración y traqueteo ($RV$, que
necesita la prueba de la Tabla 6) y el índice numérico de evaluación de calidad
(QAI, que la norma remite a referencias externas) no forman parte de este
módulo.

## 3. Elegir un criterio: NC, RC Mark II o NR

Las dos calificaciones responden a preguntas distintas, y existe una
tercera familia que este módulo deliberadamente no implementa:

- **NC** responde a *"¿cumple la sala su límite, y qué banda lo rompe?"*.
  Es la calificación de conformidad de la práctica norteamericana
  (especificaciones, códigos, fichas de equipos). El paso SIL de la cláusula
  5.2.2 ancla la designación a la interferencia con el habla, pero en cuanto
  alguna banda supera la curva NC-(SIL) toma el relevo el método de tangencia,
  gobernado por completo por la única banda determinante. Ese es también su
  punto ciego: dos salas NC-40 pueden sonar completamente distintas, una
  retumbante y otra siseante, porque la tangencia no dice nada del
  equilibrio espectral. Usa NC cuando una especificación lo cite, e informa
  siempre de la banda determinante junto a la calificación, porque nombra
  la octava que cualquier corrección debe atacar primero.
- **RC Mark II** responde a *"¿cómo suena la sala, y qué hay que
  corregir?"*. Su calificación sigue la interferencia con el habla a través
  de la media de frecuencias medias, y su pendiente de referencia de
  −5 dB por octava es el espectro que los ocupantes describen como neutro,
  un fondo de ventilación anodino que no es ni retumbante ni agudo. La
  etiqueta espectral señala después el rango de frecuencias problemático.
  Recurre a RC Mark II en la fase de diseño del sistema de climatización, o
  para diagnosticar una instalación que no cumple su límite NC.
- **NR (Noise Rating)**, la familia de curvas de Kosten y van Os (1962),
  es la contraparte europea de NC: la misma lógica de
  tangencia sobre una familia de curvas algo distinta (más permisiva en
  baja frecuencia, más estricta en alta), habitual en especificaciones
  europeas e internacionales de equipos y edificación. phonometry no
  implementa NR; cuando una especificación cite NR, califica contra las
  propias curvas NR en lugar de sustituirlas por NC, porque las dos
  familias divergen varios decibelios lejos de las frecuencias medias.

**Leer la etiqueta.** La etiqueta de RC Mark II es una pista de reparación,
no solo un rótulo. Una etiqueta de retumbo (`R`, más de 5 dB sobre la
referencia a 500 Hz o por debajo) apunta a la planta de climatización: un
ventilador sobredimensionado o estrangulado, retumbo de conductos o
vibración estructural rerradiada por las paredes, y es la energía de baja
frecuencia la que hace vibrar la construcción ligera y fatiga a los
ocupantes. Una etiqueta de siseo (`H`, más de 3 dB por encima a 1000 Hz o
más) apunta al extremo terminal: velocidades de paso excesivas en difusores
y rejillas o una compuerta estrangulada cerca de la salida, y es el rango
que enmascara el habla. Una etiqueta neutra (`N`) significa que el nivel
aún puede estar mal, pero el carácter es correcto: reduce todo el espectro
en lugar de remodelarlo.

## 4. Informes de ruido de salas (`.report()`)

Ambas calificaciones generan una ficha PDF de evaluación de ruido de salas de
una página. `NCResult.report(path)` y `RCResult.report(path)` comparten la misma
maquetación: una línea de base normativa, un bloque opcional de metadatos de
cabecera, los niveles medidos por bandas de octava junto al espectro medido
representado frente a la familia de curvas NC/RC (el propio `.plot()` del
resultado), la calificación en un recuadro, una fila opcional de veredicto y un
pie con el descargo de responsabilidad fijo. El recuadro NC muestra la
designación `NC-nn` con el SIL y, para una calificación de tangencia, su banda
determinante (`>NC-70` / `

## Véase también

- Referencia de la API: [`room.room_noise`](/phonometry/es/reference/api/rooms/room-noise/).
