我一直在运行Raspian的Raspberry Pi B上使用Fluidsynth(不是绝对最新的图像,因为Fluidsynth不会在最新版本上运行,但至少从2014年4月开始运行。)
我通过运行fluidsynth -a alsa -g 1 -s -o "shell.port=9800" /path/to/FluidR3_GM.sf2
我能够使用Fluidsynth自己的shell获得预期的音频输出,使用noteon 1 54 100
等命令,我还可以使用以下命令行使用telnet服务器播放音频:
telnet localhost 9800
然后在它生成的子shell中键入标准noteon
命令。
我的最终目标是从python发送这些telnet命令。
我已经尝试了以下代码,它不会返回任何错误:
>>> from telnet lib import Telnet
>>> fluidsynth = Telnet("localhost","9800")
>>> fluidsynth.write('noteon 1 25 127')
但这无法发出任何声音。
此时我已经碰壁了,我不知道为什么python语句不会起作用,但命令shell中的语句会。他们不会做同样的事情吗?我错过了telnet协议的一些微妙之处吗?
答案 0 :(得分:0)
在传递给write
的字符串末尾添加换行符:
fluidsynth.write('noteon 1 25 127\n')