サンタのいい加減ブログの続き。
ギター音のWAVファイルをダウンロードしてきて…一体、どの音階の音なのかも分からないまま使用した。
たぶん「ド」の音だったと思う。
普通は、「ラ?」の440Hzが普通でしょう?
インプットシグナルをグラフにして(レンジが間違っているのは、まだ、対処できていない)スペクトルを見てフーリエ逆変換した。
インポートしたモジュール、全部使っている訳でないから、削除出来る分があるはず。
# -*- coding: utf-8 -*- import wave import matplotlib.pyplot as plt import numpy as np from scipy import arange, hamming, sin, pi from scipy.fftpack import fft, ifft from matplotlib import pylab as pl import scipy as sp filename = 'guitar_source.wav' wav_file = wave.open(filename,'rb') print wav_file.getnchannels() print wav_file.getframerate() print wav_file.getnframes() #data = wav_file.readframes(wav_file.getnframes()) data = wav_file.readframes(40000) data = np.frombuffer(data,dtype="int16") L = 3000 # フーリエ変換 spectrum = fft(data) half_spectrum = abs(spectrum[: L / 2 + 1]) # フーリエ逆変換 resyn_sig = ifft(spectrum) # 図を表示 fig = plt.figure() fig.add_subplot(311) plt.plot(data) plt.title("1. Input signal", fontsize = 8) fig.add_subplot(312) plt.plot(half_spectrum) plt.xlim([0, len(half_spectrum)]) plt.title("2. Spectrum", fontsize = 8) fig.add_subplot(313) plt.plot(resyn_sig) plt.title("3. Resynthesized signal", fontsize = 8) plt.show()
倍音の美しさなんて言うけど、これなのか。
以下が、ギター音の時間推移。
単純に減衰する波でないことだけは分かる。
WAVのデータ読み取りに使ったプログラム。
import wave
import matplotlib.pyplot as plt
import numpy as np
filename = 'guitar_source.wav'
wav_file = wave.open(filename,'rb')
print wav_file.getnchannels()
print wav_file.getframerate()
print wav_file.getnframes()
data = wav_file.readframes(wav_file.getnframes())
data = np.frombuffer(data,dtype="int16")
plt.plot(data[0:220513])
plt.show()
