いぬおさんのおもしろ数学実験室

おいしい紅茶でも飲みながら数学、物理、工学、プログラミング、そして読書を楽しみましょう

waveモジュールを使ってwavファイルのサウンドデータを逆順にする

前回の記事の続きです。wavファイルのサウンドデータを逆順に並べて保存するのですが、以下のPythonのwaveモジュールを使ったコードでできます。逆順に並べ替えているのは

for i in range(buf.size): #bufの内容を逆転してbuf1へ格納
    buf1[i] = buf[buf.size - i - 1]

の部分です。ここをいろいろに変えればちゃんとした暗号化も可能です。

#----------------------------------

import sys
import wave
import numpy as np

path1 = 'C:\\Users\\nakiu\\Desktop\\ME_GameOver.wav'
path2 = 'C:\\Users\\nakiu\\Desktop\\outOver.wav'

wavefile = wave.open(path1,"rb")
params = wavefile.getparams()
nframes = params.nframes #フレーム数の取得
if (params.sampwidth != 2):
    wavefile.close()
    print('16bitで記録されていません')
    sys.exit() #16ビットで記録していなければ終了
buf = wavefile.readframes(nframes) #サウンドデータの読み取り
buf = np.frombuffer(buf, dtype= "int16") #16bit符号付き整数に変換
wavefile.close()
buf1 = np.zeros(buf.size, dtype = "int16")


for i in range(buf.size): #bufの内容を逆転してbuf1へ格納
    buf1[i] = buf[buf.size - i - 1]

writewave= wave.Wave_write(path2)
writewave.setparams(params)
writewave.writeframes(buf1) #編集したサウンドデータを保存
writewave.close()
sys.exit()

#----------------------------------

これは本サイトの次のページにあるコードをもとにして少し書き換えたものです。

Python基本サウンドプログラミング~周波数分析,高速フーリエ変換(FFT)入門~ 専用ページ - いぬおさんのおもしろ数学実験室

 

そろそろ朝晩が涼しくなってきました。ぼくは夏が好きなんですが、秋の夜長もプログラミングにはいいですよね。とりあえず学期中に1本、ゲーム書きたいです。