在python中以任意音调制作合成声音

时间:2019-07-16 14:08:23

标签: python audio synthesizer

我发现很难找到一个适合python的合成器模块,该模块允许程序以任意音高弹奏音符。最好,该音符不仅应不仅仅是纯正弦波,还应包括至少一些谐波-不仅应是蜂鸣声。

想法是能够写类似的东西

the_module.play(frequency, loudness, duration)

my_synth = the_module.newsynth()
my_synth.play(frequency, loudness, duration)

,其中频率以Hz为单位指定,并具有来自用户扬声器的合成音调。有执行此操作的JavaScript模块,例如Tone.js,但是有人知道使用Python的方法吗?

1 个答案:

答案 0 :(得分:1)

如果在Windows上,则可以使用内置的winsound.Beep

如果在Linux上,则需要直接写入/dev/audio,如建议的here

def beep(frequency, amplitude, duration):
    sample = 8000
    half_period = int(sample/frequency/2)
    beep = chr(amplitude)*half_period+chr(0)*half_period
    beep *= int(duration*frequency)
    audio = file('/dev/audio', 'wb')
    audio.write(beep)
    audio.close()