様々な制約をうけながらスピーカーのデッドニング第1弾の施工まで終わったので音を出してみた。
ボーカル、バイオリンなどを耳で聞く限りかなり効果はでているもののもっと良くできそうな気がする。
iPhoneアプリのマイクで拾った音をリアルタイムで高速フーリエ変換し、周波数帯域のグラフで計測してみた。
apps.apple.com昨年の2月頃、世の中がコロナ過に入る直前に、振動測定のお仕事をやっていたので、 計測用の音は生成できる。
たとえば、こんな感じ。
import wave import numpy as np import struct a = 1 #振幅 fs = 44100 #サンプリング周波数 #周波数 f0 = 0 # 0Hz(無音0) f1 = 65 # 65Hz(低音域) f2 = 80 # 80Hz f3 = 100 #100Hz f4 = 1000 # 1kHz(基準音) f5 = 10000 #10kHz f6 = 16000 #16kHz f7 = 20000 #20kHz(高音域) sec = 10 #秒 swav=[] for n in np.arange(fs * sec): s = a * np.sin(2.0 * np.pi * f0 * n / fs) swav.append(s) for n in np.arange(fs * sec): s = a * np.sin(2.0 * np.pi * f1 * n / fs) swav.append(s) for n in np.arange(fs * sec): s = a * np.sin(2.0 * np.pi * f2 * n / fs) swav.append(s) for n in np.arange(fs * sec): s = a * np.sin(2.0 * np.pi * f3 * n / fs) swav.append(s) for n in np.arange(fs * sec): s = a * np.sin(2.0 * np.pi * f4 * n / fs) swav.append(s) for n in np.arange(fs * sec): s = a * np.sin(2.0 * np.pi * f5 * n / fs) swav.append(s) for n in np.arange(fs * sec): s = a * np.sin(2.0 * np.pi * f6 * n / fs) swav.append(s) for n in np.arange(fs * sec): s = a * np.sin(2.0 * np.pi * f7 * n / fs) swav.append(s) #サイン波を-32768から32767の整数値に変換(signed 16bit pcmへ) swav = [int(x * 32767.0) for x in swav] #バイナリ化 binwave = struct.pack("h" * len(swav), *swav) #サイン波をwavファイルとして書き出し w = wave.Wave_write("frequencytest.wav") p = (1, 2, fs, len(binwave), 'NONE', 'not compressed') w.setparams(p) w.writeframes(binwave) w.close()
ハイレゾ非対応のナビのため、故障を防ぐためにCDの周波数帯に合わせている。
測定結果は
無音
80Hz
100Hz
1kHz
10kHz
16kHz
20kHz
測定できず。
まあ、スマートフォンのマイクだし、ほぼ期待通りの結果になったと思う。
これを超えるには、AVユニット、DSP、DAC、さらにはサブウーファー、ケーブル類等等、いろいろと必要になるのでひとまず終わりとする。