I would like to know if there is any support (existing or planned) for .NET.
I intend to use FMOD with Visual C# or if necessary with VB .NET.
I got a sample-program to run under Visual C#, but I had to migrate everything by hand.
Thanks for any information. Prem.
- Prem asked 14 years ago
I’m using SharpDevelop at the moment because it’s free. I cannot justify purchasing VS.NET at this stage.
I also like how you have kept more faithful to the original FMOD headers. Last night I started heading in the other direction (creating classes for streams and samples) in the name of experimentation.
Hopefully whoever is doing the interface for .NET is not using Interop. I would suggest using Managed C++ to wrap FMOD. The performance degradation of Interop is pretty significant, especially for games.
Microsoft was going to use Interop for Managed DirectX initially but saw a 30% performance degradation. Changing to Managed C++ reduced the performance degradation to around 2%.
I am no expert on FMOD but I have wrapped quite a few C/C++ libraries with Managed C++. I will give it a try and see what I can come up with. The main hurdle is designing a good class structure for FMOD since it is all C based.
Absolutely fair enough, forgive me! 😉
My programming experience has almost always been Windowed apps in MS Windows and all the backend stuff on various UNIX flavours or NT Server. I’ve never tried to program UI apps for X or Mac etc.
Has anyone got any more on Callbacks crashing on exit (I can make them fire OK).
Brett, I presume that you’re really busy, but .NET isn’t going to go away! Maybe some of the people in this forum can get together and build a good wrapper and get it released, with a little of your help?
The Callback thing might be quite easy to find as it happens constantly at least. My fear is that the solution could be somewhere in .NET though as there are many ways to wrap DLL functions / callbacks etc. Quite a lot to get to grips with.
Back to your reply:
FMOD is not a COM component. To use FMOD from a .NET language, you must use the PInvoke mechanism (System.Runtime.InteropServices) to call unmanaged functions in DLLs from managed code. I have started wrapping the FMOD 3.63 functions into an assembly that can be used from any .NET language. It is nowhere near complete yet though.
–> I want to learn to write a wrapper for some dll!
So after thinking for a while, since i want to learn to write one, maybe i can write one for fmod. I want to see fmod power! Haha!
Okay, but since you already write a wapper in .net, can you show me some light! I know what to use, as you describe on top!
Do you willing to share the current source code with me? I want to see how actually the whole thing works? Maybe it might helpful for me to do some wrapper for other dll too!
Managed code with c++ or vb.net or c# – which one you used?
So it means that you are writing a wrapper with managed language, is it stable? I never write wrappers before, so no much experience!
Any help by sharing the source code of you existing wrapper? I hope it is not as hard i see!
Chua Wen Ching :p
He’s right, Brett. By “managed code,” Microsoft is essentially referring to garbage collection. Because fmod.dll is already compiled, and executables can’t be easily directly modified, .NET’s CLR can’t do garbage-collection on it, so unless a specific .NET (let’s say fmodnet.dll) port of FMOD is made, it’s going to be very tough to use FMOD as is in a .NET environment.
Oh, why i never think of that!
I write a wrapper based on my needs!
Hmm.. i should look into the API and see what i need!
For the fmod_error… why you say i need to do a different approach?
Writing a wrapper had many ways?
Thanks for the help..
Chua Wen Ching :p
Do you know where i can download those codes?
Maybe i can try with it?
Anyway doess fmod much much better over DirectSound! Coz if it is really that good, maybe i will focus more into fmod? Sorry as i off-topic abit.
Chua Wen Ching :p
Wow, even Microsoft, a company that seems to like using proprietary technology, has taken note of FMOD? That’s surprising… then again, I guess it’s all in due time. Microsoft is now using Inno Setup, one of the best [b:1nt96nu1]completely free[/b:1nt96nu1] installation systems out there… wouldn’t it be something to see MS start using all third-party technologies?
I do not have the wrapper with me at the moment. It is at home. I am using C# and the PInvoke directive provided by System.Runtime.InteropServices. Look for PInvoke in the .NET documentation. That has been my sole source of information in regards to writing this wrapper.
I can send the wrapper once I get home tonight.
[quote="Sly":37q4mtxp]How do you not use Interop when all you have is a DLL?[/quote:37q4mtxp]
You use the header ( fmod.h) and library ( fmodvc.lib ) files from the SDK distribution. When programming in C/C++ that is what you usually do. I guess you could go directly against the DLL utilizing the LoadLibrary and GetProcAddress Win32 functions, but you would still need to have the header file for structures and constants ( #defines in this case ). The only reason I see doing it this way is if you wish to determine at runtime which sound system to use. For example allowing the user to choose between FMod, OpenAL or Direct3D. There would be a lot more to it though.
Note: If all you have is the DLL then you probably just downloaded the binary distribution. Therefore you need to download the SDK distribution. It is the same distribution that includes the VB and Delphi interfaces.
Hope this helps,
Its fairly easy to write your wrapper from the FMOD documentation as well, thats usually where I start out…that way you get explanations about the purpose of the method and its parameters. Something else I’ve done to start out writing wrappers is to re-write one of the samples – like a simple MP3 player – that helps in keeping you focused on what functions you need to implement to get that working, then you just build on it from there.
- RonCY answered 14 years ago
Please login first to submit.