Pythonで音信号の生成、具体的には音階ドレミファソラシドを各音3秒ずつ鳴らしていくデータを作成しようとして、以下のスプリクトコードを描いてみたのですが、エラーが表示されてしまい、上手くいきません。何をどうしたらいいのかアドバイスをいただけるとありがたいです。
Python
1import numpy as np 2from scipy.io.wavfile import write 3 4def GenFreq(Fc, Fs, dur): 5 # 長さ dur 秒間,周波数 Fc[Hz] のデータを 6 # サンプリング周波数 Fs[Hz] で生成する. 7 # 正弦波関数を用いる 8 Fs = 22100. 9 Fc = 262 10 dur = 3. 11 Amp = 1.0 12 13 delta = 1. / Fs 14 Nmax = Fs * dur 15 16 t = np.arange(Nmax) * delta 17 x = Amp * np.sin(2. * np.pi * Fc * t) 18 19 20 21# 以下に GenFreq を用いて "CDEFGAB" の音階を各 dur 秒間 22# 生成するスクリプトコードを書く 23 24Fs = 22100. # サンプリング周波数 25Fc = (262, 294, 330, 349, 392, 440, 494, 523) 26dur = 3. 27 28for i in Fc: 29 y = GenFreq(i, Fs, dur) 30 31 32 33# y に音声波形を入れたものとしてファイルを保存 34fname = 'MkSnd4Test.wav' 35write(fname, Fs, y) 36
以上のスクリプトコードを実行させると、以下のようなエラーが表示されます。
Python
1--------------------------------------------------------------------------- 2AttributeError Traceback (most recent call last) 3/Users/shouri/Python18/2018pymonq2-sho-fed/ans1.py in <module>() 4 35 # y に音声波形を入れたものとしてファイルを保存 5 36 fname = 'MkSnd4Test.wav' 6---> 37 write(fname, Fs, y) 7 8/usr/local/lib/python3.6/site-packages/scipy/io/wavfile.py in write(filename, rate, data) 9 331 10 332 try: 11--> 333 dkind = data.dtype.kind 12 334 if not (dkind == 'i' or dkind == 'f' or (dkind == 'u' and 13 335 data.dtype.itemsize == 1)): 14 15AttributeError: 'NoneType' object has no attribute 'dtype'