首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >除非在shell中,否则使用fluidsynth和mingus时没有声音

除非在shell中,否则使用fluidsynth和mingus时没有声音
EN

Stack Overflow用户
提问于 2015-12-14 02:18:07
回答 2查看 839关注 0票数 2

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

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

代码语言:javascript
复制
#!/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()

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

EN

回答 2

Stack Overflow用户

发布于 2015-12-15 00:04:03

我设法解决了这个问题。

问题似乎是,正如我之前怀疑的那样,在调用fluidsynth.init之后,有必要等待一段时间。然而,由于简单的time.sleep()不能解决这个问题,所以我放弃了这种可能性。

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

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

票数 1
EN

Stack Overflow用户

发布于 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://github.com/bspaans/python-mingus/blob/master/mingus_examples/play_progression/play-progression.py

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34254594

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档