あーさん日記

https://akkera102.sakura.ne.jp/gbadev/ の中の人

pythonで440Hz

pythonで1秒の440hz(ドレミファでいうラ音)を再現してみました。wikiで必要なネタなのでちょっと予習中です。使ってみた感想というと、なにこれ!超簡単じゃないですか!C言語に比べて圧倒的な簡略化じゃないですかヤダー!という気持ち。田舎者が都会に出てきて、最近の常識はコレですよ感を見せつけれたような心境です(泣。

import numpy as np
import wave
import struct
from matplotlib import pylab as plt

fname = '440Hz.wav'

fs  = 44100
f   = 440
sec = 1
A   = 32767
samples = sec * fs

t = np.linspace(0, sec, samples)
s = A * np.sin(2 * np.pi * f * t)
s = np.rint(s)
s = s.astype(np.int16)

data = struct.pack("h" * samples , *s)

wf = wave.open(fname, 'w')
wf.setnchannels(1)
wf.setsampwidth(2)
wf.setframerate(fs)
wf.writeframes(data)
wf.close()

plt.plot(s[0:441])
plt.show()