我正在尝试按照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()我已经检查了许多其他的答案,但我似乎找不到解决方案。
发布于 2015-12-15 00:04:03
我设法解决了这个问题。
问题似乎是,正如我之前怀疑的那样,在调用fluidsynth.init之后,有必要等待一段时间。然而,由于简单的time.sleep()不能解决这个问题,所以我放弃了这种可能性。
在提示用户提供一些输入以触发音符的播放之后,声音可以正常播放。
然而,我仍然不确定为什么需要延迟。
发布于 2017-02-20 13:36:52
我用的是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://stackoverflow.com/questions/34254594
复制相似问题