ギターの音を分析(スペクトル)Python | ..あちゃ! no mic's

..あちゃ! no mic's

クラウドファンディング予定~2026年度
何度でもチャレンジ!
ただいまソーラーピックアップのテスト中

SANTA no Mix

サンタのいい加減ブログの続き。
ギター音の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()