WAVファイルを操作するPython標準ライブラリ wave もあるが,以下のようにするほうが楽。

WAVファイルの作成

880Hzの音と1320Hzの音を混ぜると,あるはずのない440Hzの音も聞こえるという話を聞いたので確かめてみよう。numpy と scipy はインストールしておく(pip install numpy scipy)。

import numpy as np
from scipy.io import wavfile

samplerate = 44100 # 44100Hzサンプリング
duration = 5       # 5秒
t = np.linspace(0, 2 * np.pi * duration, samplerate * duration + 1)

data = 10000 * (np.sin(880 * t) + np.sin(1320 * t))
wavfile.write("test.wav", samplerate, (data + 0.5).astype("int16"))

こうしてできた test.wav を再生してみよう。Macであればターミナルに afplay test.wav と打ち込めば再生できる。

880Hzを左耳,1320Hzを右耳に出すには,data = ... の行を次のようにする:

data = 10000 * np.c_[np.sin(880 * t), np.sin(1320 * t)]

1320Hzのほうを少し小さい音にして,1秒遅れて出す:

w = np.append(np.zeros(samplerate), np.ones(samplerate * (duration - 1) + 1))
data = 10000 * np.sin(880 * t) + 5000 * w * np.sin(1320 * t)

いろいろ試してください。聞こえるのは差 (1320-880)Hz だという説もありますが,それなら高い方を例えば 1374 にすれば (1374-880)Hz でほぼレの音が聞こえるはずですね。


Last modified: