2016-10-09 10 views
1

私はforループでループするプログラムを用意しており、正弦波をwavファイルとして保存してキーボードの音域を作成しています。ループは-intから+ intに移動し、各繰り返しでこれらのWAVファイルを保存します。唯一の問題は、x = 2付近でファイルの順序が乱れていることです。なぜこのようなことが起こるのか、どうやって解決するのか分かりません。WAVファイルが間違った順序で保存されています

out_int = 0 

for x in xrange(-43, 47, 1): 
    CFreq = CFreq * 2**(x/12.)         
    out_int += 1 

    . 
    . 
    . 
     wavdata = np.zeros(len(data), np.int16) 
     wavdata[:] = data/max(data) * 2**15 

     wavfile = wave.open("WavFiles/Modes_%02d_.wav" % (out_int), "wb") 

は、私はそれがいくつかのメモを作成し、前のサンプルを保存する前にそれを保存するために時間がかかります推測している理由である、これらのファイルに入って大量のデータをtheresの。 各サンプルの出力周波数は正しいが、消灯します。

次のコードに進む前に、各ファイルの書き込みと保存を確実に行うための方法はありますか?私は、ループの順序を正の値から負の値に変更しようとしましたが、負の反復のサンプルが乱されていました。

答えて

0

複製するのに十分なコードがありませんが、次のxrange要素を順番に並べる列挙型を使用した例があります。おそらく、これはあなたのwavefilesを順番に保つのを助けるでしょう。

for i, x in enumerate(xrange(-43, 47, 1)):  
    file_name = "file{0}-{1}.wav".format(i, x) 
    print file_name 

出力:

Python 2.7.9 (default, Dec 10 2014, 12:24:55) [MSC v.1500 32 bit (Intel)] on win32 
Type "copyright", "credits" or "license()" for more information. 
>>> ================================ RESTART ================================ 
>>> 
file0--43.wav 
file1--42.wav 
file2--41.wav 
file3--40.wav 
| 
| 
file86-43.wav 
file87-44.wav 
file88-45.wav 
file89-46.wav 
+0

私は私のファイルプレイヤーは、右のファイルを再生していなかったことに気づき、および順序は大丈夫でした! –

関連する問題