fc2ブログ

Pythonで音声波形を作る

 前回前々回にソフトシンセのamsynthのお話をしましたが、amsynthを見つける前に「音声波形」をプログラミングで合成できないかを調べていました。すぐに見つかりました。このサイトの記事を参考にPythonで簡単にコーディングできました。参考にさせていただきありがとうございました。
import numpy as np
from scipy.io import wavfile
import scipy.signal

frequency = 440.0 # 生成するサイン波の周波数
seconds = 1.0 # 生成する音の秒数
rate = 44100 # 出力する wav ファイルのサンプリング周波数

phases = np.cumsum(2.0 * np.pi * frequency / rate * np.ones(int(rate * seconds)))
# 波形を生成
wave = np.sin(phases) # sine wave
# wave = scipy.signal.sawtooth(phases) # saw wave
# wave = scipy.signal.square(phases) # pulse wave

# 16bit の wav ファイルに書き出す
wave = (wave * float(2 ** 15 - 1)).astype(np.int16) # 値域を 16bit にする
wavfile.write("sine.wav", rate, wave)
#wavfile.write("saw.wav", rate, wave)
#wavfile.write("pulse.wav", rate, wave)
 sin波、saw(ノコギリ)波、pulse(矩形)波の三種類を作成し、音声と波形の確認、および周波数解析を「Audacity」で行いました。

1.sin波

sine_180915.png
2.saw波

saw_180915.png
3.pulse波

pulse_180915.png sawの方がpulseよりも周波数成分が多いようですね。より複雑な波形ということでしょう。
また、今度、ソフトシンセのオシレータの勉強する時に復習しようと思います。
スポンサーサイト



コメント

非公開コメント

ご訪問者数

(Since 24 July, 2016)

タグクラウド


プロフィール

Dr.BobT

Author: Dr.BobT
興味のおもむくままに生涯考え続けるエンジニアでありたい。

月別アーカイブ

メールフォーム

名前:
メール:
件名:
本文: