Separate midi file into parts and play over network

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Separate midi file into parts and play over network

Ruoshui Mao
Hi! I'm working on a networking music program and I have several questions about FluidSynth.

My goal is to play a midi file but play different channels on different computers, all at the same time. I'll have access to all machines and will write a server and client c program to manage networking problems. Is FluidSynth the right library to use?

With this library, I would like to send different midi channels to different (networked) outputs. fluid_synth_process() seems to do that, but its output is in the form of int arrays. How do I go about transferring arrays across a network so the client program can read and play the data just in time? (Do I have to somehow "drive" the playing process if I'm only using this function and not with a driver? How do I do that?)

Ruoshui

_______________________________________________
fluid-dev mailing list
[hidden email]
https://lists.nongnu.org/mailman/listinfo/fluid-dev
Reply | Threaded
Open this post in threaded view
|

Re: Separate midi file into parts and play over network

Marcus Weseloh
Hey Roushui,

You can definitely use fluidsynth to play the midi files. And for the networked sound, have a look at pulseaudio. One of its features is exactly your use case: networked sound output on multiple machines. No need to reinvent the wheel here :-)

Cheers
Marcus

Ruoshui Mao <[hidden email]> schrieb am Di., 31. Dez. 2019, 15:12:
Hi! I'm working on a networking music program and I have several questions about FluidSynth.

My goal is to play a midi file but play different channels on different computers, all at the same time. I'll have access to all machines and will write a server and client c program to manage networking problems. Is FluidSynth the right library to use?

With this library, I would like to send different midi channels to different (networked) outputs. fluid_synth_process() seems to do that, but its output is in the form of int arrays. How do I go about transferring arrays across a network so the client program can read and play the data just in time? (Do I have to somehow "drive" the playing process if I'm only using this function and not with a driver? How do I do that?)

Ruoshui
_______________________________________________
fluid-dev mailing list
[hidden email]
https://lists.nongnu.org/mailman/listinfo/fluid-dev

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