如何在python中生成音符或和弦?

如何在python中生成音符或和弦?,python,audio,Python,Audio,有谁能告诉我一个在Python2.7中生成音符和和弦的好库吗?我看了PythonInfoWiki,运气不好,PyAudio只是崩溃了,似乎没有其他东西能产生音调。我不知道它是否有用,但这里有一些代码,可以根据给定的频率和振幅合成复杂的声音: import math import wave import struct def synthComplex(freq=[440],coef=[1], datasize=10000, fname="test.wav"): frate = 44100

有谁能告诉我一个在Python2.7中生成音符和和弦的好库吗?我看了PythonInfoWiki,运气不好,PyAudio只是崩溃了,似乎没有其他东西能产生音调。

我不知道它是否有用,但这里有一些代码,可以根据给定的频率和振幅合成复杂的声音:

import math
import wave
import struct

def synthComplex(freq=[440],coef=[1], datasize=10000, fname="test.wav"):
    frate = 44100.00  
    amp=8000.0 
    sine_list=[]
    for x in range(datasize):
        samp = 0
        for k in range(len(freq)):
            samp = samp + coef[k] * math.sin(2*math.pi*freq[k]*(x/frate))
        sine_list.append(samp)
    wav_file=wave.open(fname,"w")
    nchannels = 1
    sampwidth = 2
    framerate = int(frate)
    nframes=datasize
    comptype= "NONE"
    compname= "not compressed"
    wav_file.setparams((nchannels, sampwidth, framerate, nframes, comptype, compname))
    for s in sine_list:
        wav_file.writeframes(struct.pack('h', int(s*amp/2)))
    wav_file.close()

synthComplex([440,880,1200], [0.4,0.3,0.1], 30000, "tone.wav")

这就是我用python生成音符和和弦的代码。第一个参数应该有一个频率列表,一个振幅列表(与第一个参数大小相同),一个采样数和文件名。它将生成一个具有给定组合的wav文件。

为什么不将前两个参数设置为一个元组列表<代码>[(440.4)、(880.3)、(1200.1)]。。。是的,你是对的,这是一个更好的方法。在这种情况下更有意义,谢谢你的提示!有没有任何地方我可以跟踪这段代码的开发(或者是一次性的?)-在gpl应用程序中使用它可以吗?这是一次性的…我正在做一个和弦识别项目,我已经制作了一些脚本来生成测试材料。这不是项目的核心。但你绝对可以在gpl应用程序上使用它。这对我来说没有任何意义。