On 11/03/2012 07:59 PM, Element Green wrote: > > > On Sat, Nov 3, 2012 at 6:44 AM, David Pearah <pea...@gmail.com > <mailto:pea...@gmail.com>> wrote: > > Hello. > > I am an experienced web programmer (Javascript, HTML, Flash, Java) > but relatively new to MIDI. I am researching a project requires > both 1. real-time audio synthesis and 2. real-time audio streaming > from server to client, but I wanted to get insight/direction > before moving forward with FluidSynth Very simply, this is what > I'm trying to build: > > * USER EXPERIENCE > o Web app (i.e. runs in most Mac + Windows desktop browsers) > that plays MIDI files with high-quality grand piano SoundFont > o Real-time controls for speed and pitch (along with typical > controls for volume, pause/play, etc.)... so there's no > option to pre-generate audio files since you can't > anticipate what pitch/key combination will be requested in > the middle of playing the song. > * ARCHITECTURE: > o My assumption is that it is NOT a good idea to have the > softsynth running in the browser (computationally intense, > large SoundFont download, install fat client vs. web app, > etc.) > o *So this leads me to believe that the softsynth should be > running in _real-time_ on the server, generating audio > that can be _streamed _to the browser app, which would be > very lightweight since all it would need to do is play > streaming audio* > o The controls for speed + pitch would actually go back to > the server, and in real-time cause the softsynth to > generate the corresponding audio which would be streamed > to the web client > > So my questions are: > > 1. Can Fluidsynth be installed on a server and generate real-time > audio fast enough to give up with playback, i.e. given typical > server CPU and single piano instrument, is it reasonable to > expect that FluidSynth can generate audio in faster than > real-time? > 2. Can the FluidSynth API be accessed in mid-song to change the > pitch and velocity, or does it have to start over from the > beginning of the song? > 3. Do you know of anyone who has taken the audio output from > FluidSynth and streamed it to another client? > > > I greatly appreciate your time to review these questions and > hopefully point me in the right direction. And for those who are > interested, I'm willing to pay for a short-term development > contract to help get this project started. > > Thanks! > > -- Dave > > > Hello Dave, > > I have also been interested in such an application of FluidSynth for > some time now, for use with the online SoundFont instrument database > project that I was working on. In that case it would be used to > preview SoundFont instruments with a Javascript or Flash based > keyboard interface for playing notes, etc. Seems like a similar > application to yours. > > My own thoughts around the architecture of such a system is the following: > > * Would be a server based solution, with a server application written > in C. > > * Server application would handle spawning FluidSynth rendering > threads using libFluidSynth to stream to users. > > * Server would provide a FastCGI interface for control FluidSynth > instances. > > * Client application interface would be Javascript or Flash and use > AJAX to control the FluidSynth instance. > > * Server application would interface to a Shoutcast server to stream > encoded MP3 data. > Hello Element,
and the server side could use the fluidsynth wrapper for gstreamer plus other gstreamer elements (lamemp3enc ! shout2send) for the streaming. Another alternative would be to compile fluidsynth use NaCl (http://en.wikipedia.org/wiki/Google_Native_Client), but that would only work in the chome browser as far as I know. Stefan > > > One thing about such a system is it would require quite a lot of CPU > and probably would not scale very well. So in cases where there were > a lot of users (say more than a couple), a distributed server farm > like topology would be needed (synthesis servers, MP3 encoding > servers, etc). > > I am interested to hear the details of your offer to pay for such a > project. > > Best regards, > > Element Green > > > > > _______________________________________________ > fluid-dev mailing list > fluid-dev@nongnu.org > https://lists.nongnu.org/mailman/listinfo/fluid-dev
_______________________________________________ fluid-dev mailing list fluid-dev@nongnu.org https://lists.nongnu.org/mailman/listinfo/fluid-dev