通过Telnet和Python使用Fluidsynth:无音效

0 投票
1 回答
733 浏览
提问于 2025-04-18 14:54

我在一台运行Raspian系统的树莓派B上使用Fluidsynth(不是最新的版本,因为Fluidsynth在最新版本上无法运行,我用的是至少2014年4月的版本)。

我通过运行 fluidsynth -a alsa -g 1 -s -o "shell.port=9800" /path/to/FluidR3_GM.sf2 来启动Fluidsynth。

我可以通过Fluidsynth自己的命令行界面,使用像 noteon 1 54 100 这样的命令来获得预期的音频输出。我也可以通过在另一个命令行中使用telnet服务器来播放音频,方法是:

telnet localhost 9800,然后在它打开的子命令行中输入标准的 noteon 命令。

不过,我最终的目标是想通过Python发送这些telnet命令。

我尝试了以下代码,没有返回错误:

>>> from telnet lib import Telnet
>>> fluidsynth = Telnet("localhost","9800")
>>> fluidsynth.write('noteon 1 25 127')

但是这并没有发出任何声音。

到目前为止,我遇到了瓶颈,不知道为什么Python的语句不工作,而命令行中的语句却可以。难道它们不是在做同样的事情吗?我是不是遗漏了telnet协议中的某些细节?

1 个回答

0

在你传给 write 的字符串末尾加上一个换行符:

fluidsynth.write('noteon 1 25 127\n')

撰写回答