import numpy as np
from scipy.io import wavfile
frequency = 471.0 # 生成するサイン波の周波数
seconds = 10.0 # 生成する音の秒数
rate = 47100 # 出力する wav ファイルのサンプリング周波数
phases = np.cumsum(2.0 * np.pi * frequency / rate * np.ones(int(rate * seconds)))
# 波形を生成
wave = np.sin(phases) # -1.0 〜 1.0 の値のサイン波
# import scipy.signal して、
# wave = scipy.signal.sawtooth(phases) とすると鋸歯状波、
# wave = scipy.signal.square(phases) とすると矩形波になる
# 16bit の wav ファイルに書き出す
wave = (wave * float(2 ** 15 - 1)).astype(np.int16) # 値域を 16bit にする
wavfile.write("sine.wav", rate, wave)
ちなみに
frequency = 441.0
rate = 44100 にするとAの音になる。
frequency = 396.0
rate = 39600 ならG
frequency = 417.0
rate = 41700 ならG♯
frequency = 369.0
rate = 36900 ならF♯
frequency = 349.3
rate = 34930 ならF