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


_______________________________________________
fluid-dev mailing list
[email protected]
http://lists.nongnu.org/mailman/listinfo/fluid-dev

Reply via email to