събота, 2 октомври 2021 г.

Акустика на помещение, резонанси

Звукът, който се получава в помещение, зависи не само от характеристиките на апаратурата, но и от акустиката на самото помещение.

За правилно възпроизвеждане на тембъра е необходимо цялата система, включително акустичните системи (тонколоните) да имат равна честотна характеристика - всички честоти да се просвирват с еднаква сила.

Когато такъв звук с правилно съотношение на честотите се възпроизвежда, на някои честоти звукът ще се усили и ще се получи неравномерност на честотната характеристика, поради акустичните свойства на самото помещение.

Собствени честоти


В зависимост от своята форма и размери всяко помещение има определен набор резонансни честоти (Room modes), на които звукът се усилва. За правоъгълно помещение с твърди стени тези честоти се намират по формулата за собствените честоти:

 

където f е честотата в Hz, C е скоростта на звука в m/s; nx, ny, nz са произволни три цели числа, lx,ly,lz са размерите на помещението в m.

Честотни области


Собствените резонансни честоти на помещението влияят най-много в нискочестотната област. Най-ниската резонасна честота на помещението се определя по формулата:

fl = C/(2L)

където fl е най-ниската резонасна честота в Hz, C е скоростта на звука в m/s, L е най-дългата страна на помещението в m.

Звукът с по-ниска от тази честота fl се проявява като промени на налягането. Звуците с по-високи честоти (докато дължината на вълната е сравнима с размерите на помещението), се променят поради появата на резонанси на собствените честоти.

Изчисляване на собствените честоти


Написах програма на Python, която изчислява собствените честоти (Room modes) по дадени размери на помещението:

import math

W = 3.45     # широчина на стаята, [m]
D = 4.95     # дълбочина на стаята, [m]
H = 2.61     # височина на стаята, [m]
fLow = 250.0 # условна граница на ниските честоти, [Hz]
C = 344.0    # скорост на звука, [m/s]
nxmax = 300
nymax = 300
nzmax = 300

Lr = max(W, D, H)
fpz = C / (2.0 * Lr)

fla = []
for nx in range(nxmax):
    for ny in range(nymax):
        for nz in range(nzmax):
            f = C*math.sqrt(\
              (float(nx)/W)*(float(nx)/W)+\
              (float(ny)/D)*(float(ny)/D)+\
              (float(nz)/H)*(float(nz)/H))/2.0
            fla.append(f)

fla = sorted(fla[1:])

fl = []
for f in fla:
    if f < fLow:
        fl.append(f)

print('Широчина на стаята:', W, 'm')
print('Дълбочина на стаята:', D, 'm')
print('Височина на стаята:', H, 'm')
print('Честотен диапазон на налягането:','<',round(fpz,1),'Hz')
print('Резонансни честоти в диапазона от 0.0 до',fLow,'Hz:\n',\
  ', '.join([str(round(f,1)) for f in fl]), 'Hz')


За една конкретна стая се получиха следните резултати:

Широчина на стаята: 3.45 m
Дълбочина на стаята: 4.95 m
Височина на стаята: 2.61 m
Честотен диапазон на налягането: < 34.7 Hz
Резонансни честоти в диапазона от 0.0 до 250.0 Hz:
 34.7, 49.9, 60.8, 65.9, 69.5, 74.5, 82.6, 85.5, 89.6, 95.8,
 99.7, 104.2, 105.6, 108.0, 115.6, 119.5, 121.5, 123.3, 124.5,
 131.8, 133.0, 136.3, 138.3, 139.0, 140.9, 144.3, 145.1, 147.7,
 149.0, 149.6, 153.5, 153.8, 157.1, 158.6, 161.7, 163.4, 164.9,
 165.3, 167.1, 168.0, 168.9, 171.1, 173.7, 175.3, 177.6, 179.3,
 180.7, 182.3, 183.3, 185.8, 191.5, 192.4, 193.9, 195.4, 197.7,
 197.9, 199.4, 199.4, 200.3, 200.7, 202.4, 202.4, 203.9, 204.2,
 206.8, 208.5, 209.6, 210.0, 210.9, 211.1, 211.2, 212.9, 214.4,
 214.5, 215.4, 215.9, 218.1, 218.7, 221.2, 221.4, 223.5, 223.7,
 224.1, 224.3, 225.0, 225.0, 229.0, 229.2, 231.1, 232.1, 234.5,
 238.5, 239.0, 239.8, 240.3, 241.6, 241.7, 243.0, 243.1, 243.2,
 244.7, 246.7, 246.8, 247.9, 248.3, 248.9, 249.3 Hz

Програмата дава резонансните честоти (закръглени до един знак след десетичната точка) в диапазона до една условна горна граница на нискочестотния диапазон от 250 Hz.

При повишаване на честотата броят на резонансите във всеки интервал нараства и те се разполагат така близо по честота, че започват да се сливат:

Поради това сливане на резонансите във високочестотната област честотната характеристика се изглажда и там вече няма да има толкова резки върхове и спадове.