[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [fluid-dev] How to send manual midi commands to fluidsynth from anot
From: |
Pedro Lopez-Cabanillas |
Subject: |
Re: [fluid-dev] How to send manual midi commands to fluidsynth from another program? |
Date: |
Sun, 12 Oct 2008 15:33:54 +0200 |
User-agent: |
KMail/1.9.6 (enterprise 20070904.708012) |
John O'Hagan wrote:
> Hi,
>
> I'm writing an algorithmic music program which generates lists of numbers
> representing notes and durations. The results can be printed as scores and
> played as midi files using lilypond, and to play the results as they are
> generated (i.e., bar by bar), I'm using the sox synth.
>
> That's pretty limited, however, so I thought that fluidsynth might be the
> way forward.
>
> The simplest solution would be to translate my number lists into noteon
> commands, etc, and pipe them to fluidsynth.
>
> But I need a little help understanding the fluidsynth shell.
>
> When that is active, I can type commands in, but I cant figure out how to
> pipe them from my program. I tried sending a file object to stdout but it
> seemed to just disappear. Also, when I try to run fluidsynth with the -i
> switch, (no shell), it seems to start up, then immediately exit.
>
> I can get a result by translating my data into a text-to-midi program,
> then piping that to, say, pmidi, which plays via fluidsynth, but that seems
> very roundabout.
>
> Any advice?
Use the TCP/IP shell server mode. QSynth enables it in Linux, or you can
enable it in the command line client with the argument "-s, --server". By
default, the shell port is 9800/tcp, but you can change the number with the
setting "shell.port", for instance:
$ fluidsynth -i -s -o "shell.port=9988" ...
To send commads to the shell server, use the telnet protocol:
$ telnet localhost 9988
noteon 1 66 100
noteoff 1 66
...
Using the bash shell, or a bash script:
$ echo "noteon 1 60 100" > /dev/tcp/localhost/9988
$ echo "noteoff 1 60" > /dev/tcp/localhost/9988
...
Hope this helps.
Regards,
Pedro