私は、Raspian を実行している Raspberry Pi B で Fluidsynth を使用してきました (Fluidsynth は最新バージョンでは実行されないため、少なくとも 2014 年 4 月以降は完全に最新のイメージではありません)。
実行して Fluidsynth を起動しますfluidsynth -a alsa -g 1 -s -o "shell.port=9800" /path/to/FluidR3_GM.sf2
のようなコマンドで Fluidsynth 独自のシェルを使用して、期待されるオーディオ出力を取得noteon 1 54 100
できます。また、次を使用して、別のコマンド ラインから telnet サーバーを使用して再生するオーディオを取得することもできます。
telnet localhost 9800
noteon
次に、生成されたサブシェルに標準コマンドを入力します。
ただし、私の最終的な目標は、これらの telnet コマンドを Python から送信することです。
エラーを返さない次のコードを試しました。
>>> from telnet lib import Telnet
>>> fluidsynth = Telnet("localhost","9800")
>>> fluidsynth.write('noteon 1 25 127')
しかし、これでは何の音も出せません。
この時点で、私は壁にぶつかりました。なぜ python ステートメントは機能しないのに、コマンド シェルのステートメントは機能するのかわかりません。彼らはまったく同じことをしているのではないでしょうか? telnet プロトコルの微妙な点が欠けていますか?