【问题标题】:Making a synthesized sound at arbitrary pitch in python在python中以任意音高合成声音
【发布时间】:2019-07-16 14:08:23
【问题描述】:

我发现很难找到一个用于 python 的合成器模块,它允许程序以任意音高播放音符。最好的音符应该不仅仅是一个纯正弦波,并且应该包括至少一些谐波 - 它应该不仅仅是一个哔哔声。

这个想法是能够写出类似的东西

the_module.play(frequency, loudness, duration)

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

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

【问题讨论】:

    标签: python audio synthesizer


    【解决方案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()
    

    【讨论】:

    • 这看起来很有趣,但是你能解释一下Linux代码在做什么吗?例如,为什么要调用 chr()?
    • 顺便说一句,由于文件权限问题,我无法让它工作。
    猜你喜欢
    • 2011-09-23
    • 2012-04-03
    • 2017-07-30
    • 1970-01-01
    • 2018-10-03
    • 2010-10-21
    • 2013-04-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多