|
From: | Zachary Northrup |
Subject: | [fluid-dev] A new program using FluidSynth |
Date: | Mon, 16 Apr 2007 14:25:42 -0400 |
Hello,
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.
Zachary Northrup
|
[Prev in Thread] | Current Thread | [Next in Thread] |