Problems
P: It dont Work Right!!! Sounds weird, skips, lags, no 3d, no effects...
A: You forget to call FMODUpdate() each end step. 80% of the posts here are about this.

P: Some functions dont work. Pause, change volume, set position, mute
A: Many functions are instance based and you passed a sound to them. When you SoundPlay a sound, remember to store the instance, remember to use the instance when the function name indicates it. 20% of the posts here are about this.

P: Game won't compile In Studio
A: You have to use the provided gmz as a base; import in studio and save as gmx from there you can add the scripts to your existing project easily with the add existing scrips option and add the dlls in your include files.
A2: You have your output set to an output that does not support dll, like YYC, Java, Win8 or Steam Workshop. http://gmc.yoyogames...33705&p=4546770

GM Functions ReplacementGMFnWrapper.gml in the Zip
For people who don't want to translate all their sound_play/add/delete calls to FMOD equivalent in their code. This function set replaces GM's functions. They call FMOD functions so little is needed to do but drop the SampleSoundController in the boot room and call the init function. You still need to convert your GMK sounds to files (See comments in the init function)Detailed explanation here...

//On Game End
//to free the sounds
FMODSoundFree(global.bkMusic);
FMODSoundFree(global.gunshot);
//to free the system
FMODfree();
UnloadFMOD();
//Simple setup end
////////////////////////

Must read
HowToUse Script for common examples in the merge file
Known Problems and Questions Script in the merge file

Complete API (Does not seem that simple anymore, but you don't need to know most of these)

Game Start/End

LoadFMOD -Load dll, define API

UnloadFMOD -Unload DLL

FMODinit -Init Sound system and defines how many sounds can play at the same time and if web streaming is used

FMODfree -Free the system

EndStep

FMODUpdate -Update the system every end step, a MUST

Adding Sounds Resources

FMODSoundAdd -Add a sound resource

FMODSoundFree -Free a sound resource

FMODSoundSetGroup -Set the play group

FMODSoundSetMaxVolume -Set the max volume

FMODSoundGetMaxVolume - Get

FMODSoundGetMaxDist -Get the max 3d audible distance

FMODSoundSetEffects -Add sound effect (like GM)

FMODSoundAddEffect Add other sound effects

FMODSoundSet3dMinMaxDistance -Set the audible 3d distances

FMODSoundSet3dDopplerMax -Set the doppler amplification

FMODSoundSet3dCone -set the playing cone

FMODSoundGetNumChannels -Get if sound is mono, stereo, or other

FMODSoundGetLength -Get the length in millisecs

FMODSoundSetLoopCount -Sets the loop count

FMODSoundGetLoopCount - Get

FMODSoundSetLoopPoints -Set where the sound starts and ends a loop

FMODSoundGetMusicNumChannels -Get the number of midi tracks

*1*FMODSoundGetMusicChannelVolume -Get the midi track volume

*1*FMODSoundSetMusicChannelVolume -Set the midi track volume

*1* These APIs will allow you to change the volume or even mute MIDI/MOD/S3M/XM/IT instrument tracks one track at a time. All playing instance will be affected, this can be done while a sound is playing

Playing Sounds

FMODSoundPlay -Play a sound (Like GM)

FMODSoundLoop -Loop a sound (Like GM)

FMODSoundPlay3d -Play a 3d sound

FMODSoundLoop3d -Loop a 3d sound

Sound Instances

FMODInstanceStop -Stops a playing sound instance

FMODInstanceGetSound -Get the sound resource ID from the instance

FMODInstanceIsPlaying -Is playing (like GM)

FMODInstanceSetVolume -Set the instance volume

FMODInstanceGetVolume - Get

FMODInstanceSetFrequency -Set the frequency (bullet time)

FMODInstanceGetFrequency - Get

FMODInstanceSetMuted -Set Mute

FMODInstanceGetMuted - Get

FMODInstanceSetPaused -Set Pause

FMODInstanceGetPaused - Get

FMODInstanceSetPosition -Set playing position

FMODInstanceGetPosition - Get

FMODInstanceSetPan -Pan left right

FMODInstanceGetPan - Get

FMODInstanceSetLoopCount -Like sound version but only for this instance

FMODInstanceGetLoopCount - get

FMODInstanceSet3dConeOrientation -Like sound version but for this instance

FMODInstanceSet3dPosition -Set 3d position in the 3d world

FMODInstanceFadeVolume -Fade volume to a value

FMODInstanceFadeFrequency -Fade frequency to a value

FMODInstanceFadePan -Pan towards a value

FMODInstanceSet3dMinMaxDistance -Like for sound but only this instance

FMODInstanceSet3dDopplerMax -Ditto Doppler

FMODInstanceSet3dCone -Ditto cone

FMODInstanceGetMaxDist -Ditto audibility distance

FMODInstanceGetWaveSnapshot -get wave data

FMODInstanceGetSpectrumSnapshot -ditto spectrum

FMODInstanceGetWaveSnapshot2 -another method

FMODInstanceGetSpectrumSnapshot2 -another method

FMODInstanceSoundGetLength -get the length of the sound of the playing instance

FMODInstanceSetLoopPoints -same a sound version but for this instance

FMODInstanceGetAudibility -Get the audibility, 0 if too far to hear

FMODInstanceSetSpeakerMix -Complete control over where the sound plays in a 5.1/7.1 setup

FMODInstanceSet3DPanLevel -Dynamically change 3d sound from position relative (stereo) to distance only

FMODInstanceGet3DPanLevel - Get

FMODInstanceSet3DSpread -Set the amount of 3d stereo effect the instance has, from intense to little

FMODInstanceGet3DSpread - Get

FMODInstanceSetPitch -Set frequency of the instance whitout needing to know what the original frequency was

FMODInstanceGetPitch - Get

Groups

FMODAllStop -Stop everything

FMODGroupStop -Stop all in this group

FMODMasterSetVolume -Set master volume

FMODGroupSetVolume -Set group volume

FMODGroupGetVolume - Get

FMODGroupSetPitch -Set group pitch (changes all playing sounds in the group)

FMODGroupGetPitch - Get

FMODGroupSetPaused -Pause the playing instance in groups

FMODGroupGetPaused - Get

FMODGroupSetMuted - Mute

FMODGroupGetMuted - get

FMODGroupSetFrequency -Changes the frequency of the group (use pitch instead)

FMODGroupSetPan -Set the group pan

FMODGroupFadeVolume -Fade the volume to a value

FMODGroupFadePitch -Ditto for pitch

FMODGroupFadePan -and pan

FMODGroupGetWaveSnapshot -Get the data, assembled from all instances playing in the group

FMODGroupGetSpectrumSnapshot -Ditto spectrum

FMODGroupGetWaveSnapshot2 -Another method

FMODGroupGetSpectrumSnapshot2 -Another method

Listener

FMODListenerSetNumber -Set the number of player on this PC

FMODListenerSet3dPosition -Set the players hears position

FMODListenerSet3dPositionEx -Complete control

FMODListenerHearsDistanceOnly -Distance only or add a sense of direction to the sound position

FMODSetDopplerFPS -Like for a moving car

FMODSetWorldScale -Set the units used for real time Doppler, 1 pixel = 1 meter is default

Password

FMODSetPassword -Set the decryption password

Use the included encryption application to encrypt your sound or included dll API

FMODGetTagName -Is the tag Â€ÂœARTISTÂ€Â or Â€ÂœDESCRIPTIONÂ€Â, for example

FMODInstanceGetNextTag -check if there is a tag to read

Helpers

FMODNormalizeWaveData -Makes the largest data vale a 1 and adjust the rest to match

FMODNormalizeSpectrumData - Ditto

FMODSpectrumSetSnapshotType -Sets how to get the spectrum

FMODGetSnapshotEntry -Get a single data entry of a snapshot

FMODGetSpectrumBuffer -Fill a string with data

FMODGetWaveBuffer - Ditto

FMODEncryptFile -Encrypt a sound file

FMODUpdateTakeOverWhileLocked -Take over FMODUpdate while in the help window or file_open dialog

FMODUpdateTakeOverDone - Done

FMODSnapShotToDsList- Grab the data feteched with GetSpectrumData and tranfer it to a ds list

Microphone

FMODCreateSoundFromMicInput -Associate a sound to the default microphone

FMODMicStart-Starts the microphone and returns a instance

FMODMicStop -Stops the recording

Debugging

FMODGetNumInstances -Number of active playing sound instances

FMODSoundIsStreamed -Is sound streamed

FMODSoundIs3d -Is sound 3d

FMODSoundInstanciate -Generic play, only I know how it works, do not use

FMODErrorStr -Convert error value to string

FMODGetLastError -Error of last API call

FMODSimplePasswordProtect
This app will allow you to encrypt sound files, You can multi-select files to encrypt. Start the program, select the files, clicl opne. The app will ask for a password (in another file dialog, sorry, the compiler I use does not compile dialog resources under Vista). The encrypted files will be created in a sub folder in the directory where you selected the files from.

Supported File Types:

AIFF - (Audio Interchange File Format)

ASF - (Advanced Streaming format, includes support for the audio tracks in video streams)

IT - (Impulse tracker sequenced mod format. FMOD Ex also fully supports resonant filters in .IT files, and the per channel or per instrument echo effect send, that can be enabled in ModPlug Tracker. This is cross platform effect support and does not require DirectX like other libraries do.)

I like sxms too. In fact this is kinda like it's little brother. I made this when I saw sxms was a little too hard core for the laymen gm developer (as had core as FMOD itself). That's why I called mine GMFMODSimple.

I do recommend shaltif's sxms if you have to use more in dept FMOD features. Safe for the geometry I plan to add, I will not add any more (multimedia type) features like sound recording and wav form data fetching...

Mine pretty much covers everything related to playing sounds in a game and I use the new FMOD which has a much smaller footprint and less files since I use the dll that has all the codecs and dsps compiled in it.

I was going to ask what the differences are between SXMS and your Fmod Wrapper. You somewhat awnsered it already though.

The main problems I had with SXMS was that the GM functions weren't very well documented nor supplied with decent examples. Only one example was supplied and that used the SXMSSimple scripts, which only allow playing a single sound at any one time. Using the regular scripts allowed of course any ammount of sounds, but these scripts were pretty hard to use and many of em totally overkill, most GM games don't even come close to using such an ammount of features.

That said, I haven't gone through the code much yet, but if you could tell me, how well documented are most functions? And has it been fully tested and returned a bug-free DLL?

That said, great work on the DLL. I'm very happy you've gone through all the work, I've personally been looking for a fit sound DLL for a long time now. SXMS was difficult and felt undocumented to me, and also wasn't entirely bug free (hence the beta-status). No other DLL apart from it and SuperSound offered Pitch or Frequency, so I converted all my sounds to .ogg to use with SS, then found that SS has a nasty crashing bug in GM7 when changing resolution also. (Just check the last page of its topic.)

I'm hoping your DLL will finally be the end of all my effort, I've really tried out many sound DLLs and rewritten lots of code.

I was hoping we could speak realtime sometime on MSN for example. Either way, I'll look into the DLL some more and get back to you.

It also isn't icuurd's license you're talking about -- all he's written is a wrapper to use the FMOD sound system with GM. So don't complain to him about it, it's not something he decided on, or something he could change.

I was going to ask what the differences are between SXMS and your Fmod Wrapper. You somewhat awnsered it already though.

The main problems I had with SXMS was that the GM functions weren't very well documented nor supplied with decent examples. Only one example was supplied and that used the SXMSSimple scripts, which only allow playing a single sound at any one time. Using the regular scripts allowed of course any ammount of sounds, but these scripts were pretty hard to use and many of em totally overkill, most GM games don't even come close to using such an ammount of features.

That said, I haven't gone through the code much yet, but if you could tell me, how well documented are most functions? And has it been fully tested and returned a bug-free DLL?

Yeah, too complicate that other dll was and a non game related demo... That's why I wrote this...

The demo is my test bench. the second room you can test most everything/setup your game will have. I have fully tested, using mp3,wav and mids and documented all the issues found. Read all my comments in all scripts. Any quirk I found, I documented.

The only problem of importance is freeing sounds that are in used or freeing them twice wich, like any other dll, will cause GM to tell you an error occurred (or simply crash).

I have a facts in my scripts

That said, great work on the DLL. I'm very happy you've gone through all the work, I've personally been looking for a fit sound DLL for a long time now. SXMS was difficult and felt undocumented to me, and also wasn't entirely bug free (hence the beta-status). No other DLL apart from it and SuperSound offered Pitch or Frequency, so I converted all my sounds to .ogg to use with SS, then found that SS has a nasty crashing bug in GM7 when changing resolution also. (Just check the last page of its topic.)

I'm hoping your DLL will finally be the end of all my effort, I've really tried out many sound DLLs and rewritten lots of code.

I can't guaranty you won't hit any snag. But if you read my comments, you should be fine.

I was hoping we could speak realtime sometime on MSN for example. Either way, I'll look into the DLL some more and get back to you.

Just pm me here or add a reply in this thread. I am better at writing detailed explanations in a PM/post than live.

I was thinking about downloading this because i havent experimented with many audio DLLS. I just checked on your sales page>>>

Commercial Licence>> $6000!!!!!!!!!!!!!!!!!!!!!! OMG!

1) From what i've heard there seems to be much better DLLs around than this.2) I dont think anyone in the right mind would pay $6000 for this!

But it does seem an ok sort of DLL, and its great that you are giving it out for free with non-commercial, but the price for commercial!

In short. Multimedia/Sound Editor/WinAmp type application need a licenceGame developers (I think it refers to a commercial entity) require a 2500$ game licence but not if the product distributes less than 5000 games (not sure if it’s limited to $$Sold$$ games). Again, I think it may not apply for free product… In any case, using MP3s have always been a dangerous legal dance between you, the MP3 patent holder and the artist label (like Sony). But don’t take my words as facts. The info on the site is not all that clear. It's not my fault people don't like to share.

In the future, read the entire license before scarring people off. And I would appreciate you edit your post and clarify your misunderstanding… I don’t want people turned away by your post since it’s so early in the thread…

The majority of the games here would likely not require the commercial license.

Most would require the free-license, as in, free, as most games aren't sold.

Many sold ones would require the 100$ license of a shareware/hobbyist game).

Thanks.

It also isn't icuurd's license you're talking about -- all he's written is a wrapper to use the FMOD sound system with GM. So don't complain to him about it, it's not something he decided on, or something he could change.

Nectrotic, are you a moron, do you have a disease that makes you ignorant?
Do you have something against icuurd12b42 or FMOD, or against random people?

Cause really, you're hating for no reason, and based on the wrong arguments. As has been said before, 99% of the people on this forum do NOT pay 6.000 dollars for their game to use this DLL...

In fact, probably closer to zero percent would. 99% could use this game for free, while the other 1 percent or less would pay for the 100dollar hobbyist license, which really isn't much compared to the sales you get with a decent game.

So remember, 6000, WRONG. Free, or 100 dollar, right. If two people just explained why it's 6000 dollars, please do not go and say 'So I could do this or pay 6000 dollars.' cause it's simply not true.

That said, the GM functions don't even come close to the full potential of Fmod. I've had lots of trouble with the GM functions, playing any non-wav file is either impossible, or has to be used with the 'use multimediaplayer' option which results in a hickup for even the smallest sounds. And if you didn't know, wav files can get huge compared to .ogg or .mp3. That said, FMOD plays 15-20 media files ATLEAST more than GM. GM also hasn't got many functions such as frequency or Doppler effects. Nor can you in GM automatically mute and unmute -groups- of sounds. That said, a sound in GM is seen as a single resource, changing the volume of it changes the volume of the sound played anywhere, with FMOD you can have one sound and play it twice each with a different volume, meaning you can have gunshots with different volumes depending on how far you are from the shooter.

Trust me, GM functions do not come close to FMODs and 99% of the games on this forum could use FMOD for free.

As for other DLLs, SuperSound only loads two filetypes and has much less functions, as well as a nasty crash bug. (Still a great DLL.)
SXMS is a wrapper for FMOD as well, same costs, though undocumented and still in Beta.
There's one other DLL with frequency only the creator warns that it might freeze your computer and that it isn't entirely bug free.
No other DLL and I've tried many, as far as I know, does even have frequency changes. (Which is a great fundamental aspect of a sound with which you can do many things, including realistic car engines and bullet-time sounds on the fly and dynamically.) No DLL comes close to FMODs functions, that's why FMOD is used by many (next-gen or very populer) commercial titles like world of warcraft, BioShock and Crysis.

So I could either use the default GM functions.... which do basically the same thing as this.... OR I could pay 6000 dollars for a DLL with less features than the free ones!

Those free ones have the same lincencing issues.

SXMS has the exact same licencing situation since it uses FMOD too.

Any "sound" dll that uses a sound layer not written from scratch has some sort of licencing issue you must resolve with the 3rd party that made the actual sound interface. NOT the guy who wrote the GM DLL wrapper. The guy who wrote the wrapper has the responsability to inform you of these things.

MP3 falls under another category, no matter what sound system you use, even GM's, you need a licence to play them (unless the engine 3rd party paid a huge fee to include their sound system users).

As for less features... Well I guess I can match every single GM functions I overlooked thanks for noticing... That Pan function can be useful.

If you want more features like recording and have extreme control over everything, then, like I suggested, Go check out sxms.

Just to clear it up, Icuurd is not charging anything. It is not the DLL that cost the money anyway, it is the license for FMOD. Do not post things that will turn people away without fully understanding what your talking about. GO BACK AND READ THE LICENSE INFO, and then change your posts so that people don't get the wrong idea. Please, I'm not trying to be rude, but also this DLL shouldn't lose users from faulty information in a post.

The demo actualy loads 220 individual wavs when it boots... no problem.

Did you go crazy and loaded a huge mp3 unstreamed? Well...

If you can supply me with the proper information instead of just making a shot in the dark claim, I'd be happy to look into it.

I need the media file used and the settings you used to load it.

OK. I updated the demo and added PASSWORD PROTECTION and SOUND BLOCKERS.

Uses SHA1 key system for password obfuscation so it should be relatively secure.Combined with GM's code encryption, your password in the game should be safe and I use a proprietary encoding system. Just make sure the area in your code you set the password too will not "show" if GM has an error... You know, that GM error message displaying the code where the problem is, that can be useful information to hackers.

Interface Notes:You run the password encryptor and you select the files to encrypt in the file dialog box.Next you enter the password. Sorry, my dev-c++ cannot compile resource files so I had to use another file dialog for the password input box.The original files will be left intact. The encrypted files will be in a sub directory under the folder you selected your files. To use the files, you will need to use the password option of the API.

The sound blockers will allow walls to block the sounds in the game. Such as when your player is inside a house. You can move the blockers such as for a sliding door. You can set them so they only mute the sound a little such as for a window.

Just a quick possible bug note here (and sorry, I've only skimmed over the API) but are you making sure FMOD_System_Update() is being called every step? I didn't see a relative function call for this, nor did anything in the demo showcase it. If not, make sure you have it included in some way in a future update, otherwise you'll hit critical channel issues (mainly, when fmod tries to calculate when channels are in use and allocating virtual space). I learned this lesson the hard way with all types of unexplainable bugs. =P (Yes, it's even required when using Fmod for non-3D purposes)

Glad to see someone else taking a shot at the fmod api. It's a great audio middleware that only a few seem to appreciate fully.

The Sound Blockers setup seems interesting. Do I assume correct that this is using the Geometry functions? I have yet to figure out a good way to implement them without causing massive confusion for both myself and the end user (since they are generally designed for 3D environments). Since I try to wrap as close to the original API as possible, I still am having trouble getting the Geometry functions to transfer nicely over the variable conversion gap.

My only complaint (if I had to make one) with the API is how limited it appears compared to the massive API it's using as it's core. Of course, I guess you have to draw the line somewhere. =) (sound instances instead of channels, brilliant move for ease of use for GM)

Oh, and one last thing. For those who are comparing this to SXMS (or upcoming S-FmodEx) please note that these projects have different goals in mind. Mine is to wrap the API as transparent to fmod's C API as possible, while icurrd12b42 wishes to make something a little more easier for someone without a lot of background sound knowledge / experience. So obviously his API is going to be a bit limited in scope and mine is going to be complex to use.

That format is technically not supported. This is because you need to use SubSounds, which I don't see present in your API. I would recommend not trying to support it unless users demand it, mainly because it will add another layer of complication when it comes to loading sounds.

Also, before your FMOD_System_Init(), are you calling FMOD_System_SetSoftwareChannels()? I've noticed FMODinit(double maxsounds) seems to be the only function where you set the max amount of audible sounds. However, this function doesn't actually do this. The Fmod Init function only allocates the total (both software + virtual) sounds. So even if you set this to 1000, you will only have 32 software channels (and 968 virtual channels). To remedy this, you should call the SetSoftwareChannels() function. (Personally, since this is going for ease of use, I would avoid having anything going into virtual channels).

Just a quick possible bug note here (and sorry, I've only skimmed over the API) but are you making sure FMOD_System_Update() is being called every step? I didn't see a relative function call for this, nor did anything in the demo showcase it. If not, make sure you have it included in some way in a future update, otherwise you'll hit critical channel issues (mainly, when fmod tries to calculate when channels are in use and allocating virtual space). I learned this lesson the hard way with all types of unexplainable bugs. =P (Yes, it's even required when using Fmod for non-3D purposes)

Yes, it's wrapped into FMODUpdate3dPositions. The sample controller calls it on end step. With FMODEx, you notice the problem right away... Your 3d sounds will not move when you change their position or the listener position. And it's only required in 2d if you have 3d playing too orherwise the system craps... Though I can't tell for sure right now. My ealy tests, I had just a few sounds playing and I added the listenner and 3d on day 2 (2 weeks ago) and hundreds of sounds on day 3. But, yeah, I experienced odd things if you omit it and have many sounds playing, like sound stopping...

Glad to see someone else taking a shot at the fmod api. It's a great audio middleware that only a few seem to appreciate fully.

Like I mentioned in some prior posts, you were the inspiration in a way... I saw the FMOD potential from your dll and api set. In order to apriciate it (FMOD), you need to dedicate time to become an expert which only a few code wiz can do... Lets face it... It's pretty hard core. Really, not a great percentile of programmer can jump in and use it from the start.

The Sound Blockers setup seems interesting. Do I assume correct that this is using the Geometry functions? I have yet to figure out a good way to implement them without causing massive confusion for both myself and the end user (since they are generally designed for 3D environments). Since I try to wrap as close to the original API as possible, I still am having trouble getting the Geometry functions to transfer nicely over the variable conversion gap.

Yes, it's geomety... Simplyfied of course. A blocker instance... A simple cube is basically all you need. Wich I wrapped arround a 9 coord system to set them up instead of the conventional 24 vectors wich can drive you bananas. I actually begged on the FMOD forum for someone to at least give me the vertices for a cube compatible with fmod... Wich I then simplified... Think outside the box is my creed. Look at AddBlocker and BlockersAddGMObjects

My only complaint (if I had to make one) with the API is how limited it appears compared to the massive API it's using as it's core. Of course, I guess you have to draw the line somewhere. =) (sound instances instead of channels, brilliant move for ease of use for GM)

A channel, to me, will alway be something your stereo system has... 1 channel for mono, 2 channels for stereo, 4 for quadraphonic... I'm too much of an old dog. The naming convention actually confused me for a few days. So instance was the obvious naming for it.

Believe me, the only thing missing are the various hooking features, the sound recording and data fetching to display the wave form... Such things used for intrinsic control over micro aspects of fmod such as putting it your own 3d control, dsps, codeks and and handling FSB and FMOD Designer event and the likes... You get about 95% of FMODs features easy though hard core sound developers will spend 90% of their time in the extra 5%... Because it's their job and they have the time to hyper tweak their stuff. Yes, you dont have access to any FMOD Designer api... At that level, you must be in c++.

Oh, and one last thing. For those who are comparing this to SXMS (or upcoming S-FmodEx) please note that these projects have different goals in mind. Mine is to wrap the API as transparent to fmod's C API as possible, while icurrd12b42 wishes to make something a little more easier for someone without a lot of background sound knowledge / experience. So obviously his API is going to be a bit limited in scope and mine is going to be complex to use.

That format is technically not supported. This is because you need to use SubSounds, which I don't see present in your API. I would recommend not trying to support it unless users demand it, mainly because it will add another layer of complication when it comes to loading sounds.

Thanks...

I know. the FSB features are quite intense and not possible to access from GM. But at that level, you are most likelly making you game in c++ and very thightly binding your game with FMOD. Personally, I find the features a little too much for INDI game dev. and you most likelly will be able to replicate the system with GM's event driven system...

Not all file formats listed are supported, especially FSB and formats with sub sounds and file that are reference lists. Not even worth my time to try if you ask me. Most people will be happy with the standard single sound files formats

Also, before your FMOD_System_Init(), are you calling FMOD_System_SetSoftwareChannels()? I've noticed FMODinit(double maxsounds) seems to be the only function where you set the max amount of audible sounds. However, this function doesn't actually do this. The Fmod Init function only allocates the total (both software + virtual) sounds. So even if you set this to 1000, you will only have 32 software channels (and 968 virtual channels). To remedy this, you should call the SetSoftwareChannels() function. (Personally, since this is going for ease of use, I would avoid having anything going into virtual channels).

I don't call this function. The documentation is not obvious as per the benifit of the feature so I simply used the recommended boot sequence.

Just pointing these out to make sure this API is bug free.

I'm glad you came by... I will send you the code for your review. I find the people at the fmod forum are a little too into it to provide accurate/useful information. Most to the questions in there might as well be written in greek. They sure are answered in it... No offense, just a fact. It goes with the teritory.

The demo actualy loads 220 individual wavs when it boots... no problem.

Did you go crazy and loaded a huge mp3 unstreamed? Well...

If you can supply me with the proper information instead of just making a shot in the dark claim, I'd be happy to look into it.

I need the media file used and the settings you used to load it.

I was just testing you dll in gm6, playing a 1.75 mb mp3 file and it takes around 6 seconds to load this single file which takes less than 2 secs on SXMS & sss 3.

Anyway I hope you don't feel sad for passing negative remarks.I do like this dll of yours, BT its the speed that does matter a bit.

No harm done. I just don't like claims with no supporting fact to replicate.

Have you tried the streamed option? SXMS is FMOD too you know? So, there has to be a difference with the stream option. Thought, with the 1.1 version there is a chance it could be slower but not by 6 seconds.

My system here loads a 3mb mp3, streamed of not with no lag at all as though it was a simple 30K wav effect file.FMODSoundPlay(FMODSoundAdd("garbage\testsound.mp3"))and FMODSoundPlay(FMODSoundAdd("garbage\testsound.wma"))or (streamed)FMODSoundPlay(FMODSoundAdd("garbage\testsound.mp3",false,true))and FMODSoundPlay(FMODSoundAdd("garbage\testsound.wma",false,true))that's for 1.1 (file,3d,streamed)... 1.0, the last 2 params are reversed (file,streamed,3d)In fact I repeatedly pressed the play key and now have 30 of them playing... All playing (almost) at the same time (save for the time it took to press the key repeatedly) making a very eary looooong echo.

So, sorry. I think you may be an exception. Report back with the streamed option.

Yes... It's the stream option... My previous test is flawed since 1.1 is always streamed (I temporarely disabled memory sounds) untill I resolve an issue with those. When I did my tests, above, they were all streamed sounds (My bad).

I re-enabled memory sounds in my version here... and yes, I get a 1 second delay for mp3. Such time is needed to load the entire 3MB file into memory. Any application loading 3MB files into memory will have a few second delay... That's normal.

No self respecting game dev would load a 3MB sound into memory hehehe. That would only cause trouble down the road.

No self respecting game dev would load a 3MB sound into memory hehehe. That would only cause trouble down the road.

Especially an mp3 (or the likes: ogg, wma, etc), which is loaded into ram uncompressed (which is the main reason for the delay) so a 3MB mp3 may actually take about 30 mb of ram (depending on quality, of course). This is why you should ALWAYS use streaming for those type of formats.

UPDATE 1.2:Fixed the multiple instancing problem for unstreamed (memory) sounds. Hopefully this version is the final version. Enjoy.Fixed the demo to only load 1 sound used by all car instances, demonstrating the multi-instancing capability to it's fullest.

so to use a mp3 track within your game...you need a licence, unless you only distribute less then 5000 copies? Thats not good.

Well. you can blame whoever owns the mp3 patent (I think it's not FMOD at fault here but it's not clear) FMOD redirects you to a general licence issuer for MP3 licences... It's the same kindof problems we had with .gif files for a long time where no one was allowed to use .gif files without paying huge fees (and I still dont know if the issue was resolved...We may all still be breaking the law using .gif files). Anyway, I don't recommend using mp3 files or any file format not made to be used by all freely.

I guess it will be the .ogg road then.Free, and better quality than mp3.

lets get it clear. if i play a mp3 file or a stream in my gm made program would this require a licence...i dont see why it would!! as i am not selling the mp3 file/stream neither am i claiming ownership of it. I think it is aimed at people who use mp3 encoding/decoding within their programs such as encoders, sound applications such as wav mapping programs etc..

lets get it clear. if i play a mp3 file or a stream in my gm made program would this require a licence...i dont see why it would!! as i am not selling the mp3 file/stream neither am i claiming ownership of it. I think it is aimed at people who use mp3 encoding/decoding within their programs such as encoders, sound applications such as wav mapping programs etc..

Sorry. but I'm 99% sure you need a licence to play any mp3 file within your application. You are actually paying to have the right to decode mp3 files. Apart from the less than 5000 distributed game reference which was probably tailored for indi game developers like ourselves.

I would not worry about it that much. Is your application a game? Yes? Then you need only to worry if you distribute more than 5000. Again, there is no mention on if the games as to be revenu making distribution.

Man, I'm starting to think I should not have been so straigth forward warning people about this... I'm not a lawyer. You should contact the mp3 licence issuers to give you the reasoning behind all the BS. Like a said, Gif files had (possibly still has) this exact same problem.

<div align='center'><img src="http://img33.imagesh...igpic88821.jpg" border="0" class="linked-sig-image" />
A designer knows that he achieved perfection not when there is nothing left to add but when there is nothing left to take away.</div>

Interesting image though, but I think we can all agree perfect is opinion-based, and in gaming realism often does not equal perfect at all.

Imagine having no friction or sound or firy explosions like we're used to here on earth in space games, is having ambient music in space unrealistic and thus inperfect? No.

I do agree, I'd rather have realistic sound reflection in this case, but nobody claims this DLL has that, in fact it was stated that the blocker system was simplified rather than perfect, and it's as far as I'm concerned a great DLL without it. We're talking GM guys, we get industry-professional features used in multi-million commercial games released in 2007 from FMOD wrapped in this DLL.

That is why I called them Blockers instead of using the initial FMOD nomenclature "Geometry". Yes, I did notice there is no sound echoing on wall to propagate inside an enclosure. I imagine such implementation would be very hard on the CPU. Fluid dynamics and all... But why don’t you just lower the blockers’ value in that area instead... And allow 20% of the sound to go though the area. I'm sure you can set it up pretty realistically without imitating reality to the letter (and have no CPU left for your game).

I did mention somewhere that I was pretty sure I thought of everything. But no, no mention of perfection.

Interesting image though, but I think we can all agree perfect is opinion-based, and in gaming realism often does not equal perfect at all.

Imagine having no friction or sound or firy explosions like we're used to here on earth in space games, is having ambient music in space unrealistic and thus inperfect? No.

I do agree, I'd rather have realistic sound reflection in this case, but nobody claims this DLL has that, in fact it was stated that the blocker system was simplified rather than perfect, and it's as far as I'm concerned a great DLL without it. We're talking GM guys, we get industry-professional features used in multi-million commercial games released in 2007 from FMOD wrapped in this DLL.

Thanks

I might add Imagine having a 1 second delay to hear the explosion since you are 300 meters away...

God knows I never claimed reflexion. FMOD does not claim it either... They are occlusion geometry not reflection geometry.

Like I said, you can play with the occlusion factor (FMODBlockerSetStrength()) of the blockers of that area to emulate the effect.

Ohh i didn't notice that i said "Your DLL isn't perfect as most of you say"

0

<div align='center'><img src="http://img33.imagesh...igpic88821.jpg" border="0" class="linked-sig-image" />
A designer knows that he achieved perfection not when there is nothing left to add but when there is nothing left to take away.</div>

Ohh i didn't notice that i said "Your DLL isn't perfect as most of you say"

Oooh, I didn't notice that you read our minds and read what we were thinking... Cause really, if we didn't say it, how the hell do you know we think this DLL is perfect? You don't, stop the nonsense already.

Ohh i didn't notice that i said "Your DLL isn't perfect as most of you say"

Oooh, I didn't notice that you read our minds and read what we were thinking... Cause really, if we didn't say it, how the hell do you know we think this DLL is perfect? You don't, stop the nonsense already.

I know like 4 people who said that this engine is perfect and i can easily tell by that that most of you think that this is perfect so stop spamming the board please

0

<div align='center'><img src="http://img33.imagesh...igpic88821.jpg" border="0" class="linked-sig-image" />
A designer knows that he achieved perfection not when there is nothing left to add but when there is nothing left to take away.</div>

Ohh i didn't notice that i said "Your DLL isn't perfect as most of you say"

Oooh, I didn't notice that you read our minds and read what we were thinking... Cause really, if we didn't say it, how the hell do you know we think this DLL is perfect? You don't, stop the nonsense already.

I know like 4 people who said that this engine is perfect and i can easily tell by that that most of you think that this is perfect so stop spamming the board please

I wish I had seen those... The best comment, save from tarik here, is “Nice dll but I prefer sxms”. All the rest are neutral or complaints about the FMOD licensing and the mp3 licence (which every one needs regardless of what sound system they use).

Anyway, like I said, you can use FMODBlockerSetStrength() to emulate the effect.

Ohh i didn't notice that i said "Your DLL isn't perfect as most of you say"

Oooh, I didn't notice that you read our minds and read what we were thinking... Cause really, if we didn't say it, how the hell do you know we think this DLL is perfect? You don't, stop the nonsense already.

I know like 4 people who said that this engine is perfect and i can easily tell by that that most of you think that this is perfect so stop spamming the board please

I wish I had seen those... The best comment, save from tarik here, is “Nice dll but I prefer sxms”. All the rest are neutral or complaints about the FMOD licensing and the mp3 licence (which every one needs regardless of what sound system they use).

Anyway, like I said, you can use FMODBlockerSetStrength() to emulate the effect.

How can FMODBlockerSetStrength() help?or maybe it can by setting it to negative values?

0

<div align='center'><img src="http://img33.imagesh...igpic88821.jpg" border="0" class="linked-sig-image" />
A designer knows that he achieved perfection not when there is nothing left to add but when there is nothing left to take away.</div>

Ohh i didn't notice that i said "Your DLL isn't perfect as most of you say"

Oooh, I didn't notice that you read our minds and read what we were thinking... Cause really, if we didn't say it, how the hell do you know we think this DLL is perfect? You don't, stop the nonsense already.

I know like 4 people who said that this engine is perfect and i can easily tell by that that most of you think that this is perfect so stop spamming the board please

I wish I had seen those... The best comment, save from tarik here, is “Nice dll but I prefer sxms”. All the rest are neutral or complaints about the FMOD licensing and the mp3 licence (which every one needs regardless of what sound system they use).

Anyway, like I said, you can use FMODBlockerSetStrength() to emulate the effect.

How can FMODBlockerSetStrength() help?or maybe it can by setting it to negative values?

You can set the area where you figure the sound should still bleed in the enclosure, like the few blocks near the entrance and set the strength to .5...

When you add support for spectrum (ie leading to visualizations), I will be very happy. SXMS is quite bloated indeed =P

Well, I said I would not do it but what the hay...Hey!?

Version 1.6 is out

Uses the latest FMOD 4.08.08Fixed a Stack Fault in FMODInstanceGetSound caused by sample code not commented out. The code showing how to use the function was calling the function LOL Kaboom. I recommend updating to fix the problem...

NewFMODSoundGetNumChannels() to see if the sound is mono/stereo or other...

FMODInstanceGetMaxDist(double instance) useful to go with the new InstanceSet3dMinMax added in earlier version

FMODInstanceGetWaveSnapshot(). Well, it's in... You can draw your wave or snoop at the data.

FMODInstanceGetSpectrumSnapshot(). Similar to wave but for the spectrum... The volume at different frequencies for the laymen...

FMODGroupGetWaveSnapshot(). Same as for instance but for the sound group (Slower. use with care)

FMODGroupGetSpectrumSnapshot(). Same as for instance but for the sound group (Slower. use with care)

UPDATE 1.6.1Fixed wave data clipping problem.... FMOD has a little bug returning values beyond "forum" documented values (playing missionimpossible.mid), causing the wave to clip. I had to double check the buffer to prevent this from happening.

I split the simple functions into individual more complete methods to satisfy most needs.Added FMODInstanceGetWaveSnapshot2FMODInstanceGetSpectrumSnapshot2FMODGroupGetWaveSnapshot2FMODGroupGetSpectrumSnapshot2FMODNormalizeSpectrumDataFMODNormalizeWaveDataFMODGetSnapshotEntryFMODGetWaveBufferFMODGetSpectrumBuffer

These functions will give more control over the data fetched, and adds/allows using normailisation on wave form data. And gives easy access to every bit of the data, either spectrum or wave. Though I do recommend using the string buffer version which is faster. Using the #2 versions of the functions plus The included normalisation and the included GetBuffer function is almost as fast as the original functions... But using the added "simpler to use" FMODGetSnapshotEntry will be costly.

FIX/UPDATE 1.6.2Ooops, last update used the wrong dll with FMOD effects commented out...

UPDATE 1.6.3Compiled with new FMOD libs and dll (4.08.08)Added FMODEncryptFile for those who what to make their own encrypt interfaceIncluded exe. Sorry for the huge jump in size due to the included exe

UPDATE 1.6.3Compiled with new FMOD libs and dll (4.08.08)Added FMODEncryptFile for those who what to make their own encrypt interfaceIncluded exe. Sorry for the huge jump in size due to the included exe