前回の記事の続きです。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本、ゲーム書きたいです。