【问题标题】:No sound using fluidsynth and mingus except in shell除了在 shell 中,使用流体合成器和 mingus 没有声音
【发布时间】:2017-02-20 13:36:52
【问题描述】:

我正在尝试使用 this question 中建议的 mingus 在 python 中模拟钢琴。我正在运行 Ubuntu 14.04,并且已经创建了一个音频组并将自己添加到其中。 我正在使用 alsa。

我运行了上述问题的答案之一中给出的代码,它在 shell 模式下运行良好。但是,当我编写一个 python 脚本并尝试运行它时,我没有听到任何声音。这是我的代码:

#!/usr/bin/env python

from mingus.midi import fluidsynth
DEF_FONT_PATH = '/usr/share/sounds/sf2/FluidR3_GM.sf2'

def main():
    fluidsynth.init(DEF_FONT_PATH, 'alsa')
    fluidsynth.play_Note(80, 0, 80)

if __name__ == '__main__':
    main()

我检查了许多其他答案,但似乎找不到解决方案。

【问题讨论】:

    标签: python alsa


    【解决方案1】:

    我设法解决了。

    问题似乎是,正如我之前所怀疑的,在调用fluidsynth.init 之后需要等待一段时间。但是,由于一个简单的time.sleep() 无法解决此问题,因此我放弃了这种可能性。

    提示用户提供一些输入以触发音符的播放后,声音播放正常。

    但是,我仍然不确定为什么需要延迟。

    【讨论】:

      【解决方案2】:

      我在 Mac 上遇到了同样的问题。

      使用time.sleep() 确实是正确的答案,但在我看来,它与等待fluidsynth.init 完成无关,而是在fluidsynth.play_Note()fluidsynth.play_NoteContainer() 调用之后使用time.sleep() 和它应该可以播放。

      虽然我希望在 https://bspaans.github.io/python-mingus/ 的 mingus 文档中的某处提到这一点,但他们在 GitHub 中确实有示例表明这正是他们为演奏音符所做的事情。

      这个例子特别有用,因为几乎每次调用 fluidsynth.play_Note() 都会跟进 time.sleep() 调用:

      https://github.com/bspaans/python-mingus/blob/master/mingus_examples/play_progression/play-progression.py

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-21
        • 2021-04-20
        • 1970-01-01
        • 2014-08-01
        • 2016-03-13
        • 1970-01-01
        相关资源
        最近更新 更多