テスト信号の準備
<概要>
動作チェックに欲しいwavファイルを,MATLAB/Octaveで制作.
今回は,エネルギーが一定のものを用意.
dB値の基準を,複数のプログラム間で揃える必要があるため.
<制作するデータ>
- constant minimum bit : 全サンプルが,正の最小値
- constant full bit : 全サンプルが,正の最大値
- sin 1000 Hz full bit : 最大値が正の最大値となる,1000 Hzの正弦波
- sin 4000 Hz full bit : 最大値が正の最大値となる,4000 Hzの正弦波
<諸元>
- サンプリングレート Fs : 44100 Hz
- 総サンプル数 N : 4410 (0.1 sec)
- 量子化ビット数 bits : 16 bit
MATLAB/Octaveさんのwavfileでは,最大値は 2^(bits-1)-1 のようです.
このため,変数gainなどを設置し,値域の調整を行っています.
<ソースコード>
% generate sample wave files % setting Fs = 44100; N = 4410; bits = 16; minibitval = 1 / (2^(bits-1)); fullbitval = (2^(bits-1) - 1) / (2^(bits-1)); % constant minimum bit gain = minibitval; dat = ones(1,N) * gain; wavwrite(dat, Fs, bits,'constant_minibit_44100_4410.wav'); % constant full bit gain = fullbitval; dat = ones(1,N) * gain; wavwrite(dat, Fs, bits,'constant_fullbit_44100_4410.wav'); % sin 1000 Hz full bit sinufreq = 1000; gain = fullbitval; dat = sin(2 * pi * sinufreq / Fs * ( (1:N) - 1) ) * gain; wavwrite(dat, Fs, bits,'sin_1000Hz_fullbit_44100_4410.wav'); % sin 4000 Hz full bit sinufreq = 4000; gain = fullbitval; dat = sin(2 * pi * sinufreq / Fs * ( (1:N) - 1) ) * gain; wavwrite(dat, Fs, bits,'sin_4000Hz_fullbit_44100_4410.wav');