|Subject:||[fluid-dev] A new program using FluidSynth|
|Date:||Mon, 16 Apr 2007 14:25:42 -0400|
It says on the FluidSynth homepage to email this list with any new programs using FluidSynth. I've been working on a program called Z-Maestro which is basically like Apple Garageband for Windows. It offers some functionality that Garageband lacks, and lacks some functionality that Garageband gives, but it generally works pretty well. I'm going to be releasing RC1 soon, so I though you might want to take a look at it. My website is at http://www.z-sys.org/, and the product page for it is at http://www.z-sys.org/zmaestro.aspx. Like I said, it's for Windows, and it needs the .NET framework 2.0 to be installed. That's right, it is managed code running FluidSynth. In fact, Z-Maestro is almost completely programmed in VB.NET. I never thought I would get it working.
Originally, I was using the Windows MIDI functions, but then I obviously run into the problems of normal MIDI such as it sounding different on different computers. I knew I needed a synth, so I searched around. It took me a long time to find FluidSynth. Due to the complexity of FluidSynth, I couldn't just import the functions into managed code. So, I created a partially managed wrapper in C++. If you aren't familiar with Microsoft's managed C++, it basically gives you the compatibility of normal C++ and improvements of being managed. You can write classes that aren't managed, classes that are partially managed, and completely managed classes. I was able to import the FluidSynth libraries directly into the wrapper project and create a few managed classes for use in VB.NET. Unfortunately, I am currently using the original 1.0.0 FluidSynth libraries since for some reason, when I tried to upgrade, it kept crashing. Being that I have little experience in native code, it could be a simple problem. If I can get the wrapper working fully, I will release it as open source.
Another problem is that (mainly due to my lack of experience in native C++/C and the interop required between managed and native code) I can't figure out how some functions are used and how I can marshal them to managed code. The one function I am most anxious to figure out how to translate is the fluid_synth_write_s16 function for recording output. I'd like to see some simple examples of how it's used. The documentation only says that it fills two buffers with left and right audio info. Does this mean that FluidSynth is keeping a buffer in-memory of all audio?
Thanks for creating such a useful synth.
|[Prev in Thread]||Current Thread||[Next in Thread]|