WAV文件以错误的顺序保存

时间:2016-10-09 03:30:00

标签: python for-loop audio wav

我有一个循环for循环的程序,并将正弦波保存为wav文件,为键盘创建一系列音调。循环从-int到+ int,并在每次迭代中保存这些WAV文件。唯一的问题是当它到达x = 2左右时,文件顺序混乱了。我不知道为什么会发生这种情况或如何解决它。

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")

有很多数据会进入这些文件,这就是为什么我猜测在保存之前的样本之前生成一些注释并保存它需要更长的时间。 每个样本的输出频率都是正确的,但它们会关闭。

无论如何确保代码在转到下一个文件之前先写入并保存每个文件?我尝试将循环的顺序更改为从正值到负值,但是负迭代的样本被搞砸了。

1 个答案:

答案 0 :(得分: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