0
0

News of FmodEx are very impressive !
By reading new features, FmodEx is very interesting. 😀

I’m writing a Java support for FmodEx (not finished yet but first version already available).

By reading fmodex.chm file (in FmodEx v16), I’ve remarked a lots of differences with c/c++ headers.
Here is a list of things that seems strange for me.

[u:wo1es9gf][b:wo1es9gf] -> STRUCTURES[/b:wo1es9gf][/u:wo1es9gf]

FMOD_DSP_PARAM_*** are listed in the chm list but I don’t find their definitions in the c/c++ headers :
[code:wo1es9gf] FMOD_DSP_PARAM_OSCILLATOR
FMOD_DSP_PARAM_LOWPASS
FMOD_DSP_PARAM_LOWPASS2
FMOD_DSP_PARAM_HIGHPASS
FMOD_DSP_PARAM_ECHO
FMOD_DSP_PARAM_FLANGE
FMOD_DSP_PARAM_DISTORTION
FMOD_DSP_PARAM_NORMALIZE
FMOD_DSP_PARAM_PARAMEQ
FMOD_DSP_PARAM_PITCHSHIFT
FMOD_DSP_PARAM_CHORUS
FMOD_DSP_PARAM_REVERB[/code:wo1es9gf]
Did they exists ?

These structures are not listed in the chm (but are present in the headers) :
[code:wo1es9gf] FMOD_DSP_PARAMETERDESC
FMOD_OUTPUT
FMOD_OUTPUT_DESCRIPTION
FMOD_VECTOR[/code:wo1es9gf]

[u:wo1es9gf][b:wo1es9gf] -> CALLBACKS[/b:wo1es9gf][/u:wo1es9gf]

Why FMOD_OUTPUT_READFROMMIXER and not FMOD_OUTPUT_READFROMMIXERCALLBACK ?
This is the only callback that don’t ends with “CALLBACK”. Moreover, it is not indexed in the CHM documentation.

In Fmod.chm, there are these callbacks :
[code:wo1es9gf] FMOD_ALLOCCALLBACK
FMOD_REALLOCCALLBACK
FMOD_FREECALLBACK[/code:wo1es9gf]
But they are defined like this in the headers :
[code:wo1es9gf] FMOD_MEMORY_ALLOCCALLBACK
FMOD_MEMORY_REALLOCCALLBACK
FMOD_MEMORY_FREECALLBACK[/code:wo1es9gf]

There are also a lots of missing callbacks in the chm list (they are defined in headers files) :
[code:wo1es9gf] FMOD_DSP_CREATECALLBACK
FMOD_DSP_DIALOGCALLBACK
FMOD_DSP_RELEASECALLBACK
FMOD_DSP_RESETCALLBACK
FMOD_OUTPUT_CLOSECALLBACK
FMOD_OUTPUT_GETDRIVERCAPSCALLBACK
FMOD_OUTPUT_GETDRIVERNAMECALLBACK
FMOD_OUTPUT_GETPOSITIONCALLBACK
FMOD_OUTPUT_INITCALLBACK
FMOD_OUTPUT_LOCKCALLBACK
FMOD_OUTPUT_STARTCALLBACK
FMOD_OUTPUT_STOPCALLBACK
FMOD_OUTPUT_UNLOCKCALLBACK
FMOD_OUTPUT_UPDATECALLBACK
FMOD_SOUND_PCMREADCALLBACK
FMOD_SOUND_PCMSEEKCALLLBACK[/code:wo1es9gf]

[u:wo1es9gf][b:wo1es9gf] -> ENUMERATIONS[/b:wo1es9gf][/u:wo1es9gf]

These enumerations are missing in the chm list (they are defined in headers) :
[code:wo1es9gf] FMOD_DSP_OSCILLATOR
FMOD_DSP_LOWPASS
FMOD_DSP_LOWPASS2
FMOD_DSP_HIGHPASS
FMOD_DSP_ECHO
FMOD_DSP_FLANGE
FMOD_DSP_DISTORTION
FMOD_DSP_NORMALIZE
FMOD_DSP_PARAMEQ
FMOD_DSP_PITCHSHIFT
FMOD_DSP_CHORUS[/code:wo1es9gf]

Can you give me precisions on all of this ?

I don’t know if all of this is helpfull for you.

  • You must to post comments
0
0

Brett wrote :
[code:22tx75si] FMOD_OUTPUT_READFROMMIXER is not a callback.
It is a function pointer you call to update fmod’s software engine and put the mixed result in your pointer.[/code:22tx75si]
Ok, not a callback but listed in the Callbacks section of the documentation … quite confusing !

I’ve take a look in the new chm list, it seems good.
The only thing I’ve remarked is that [b:22tx75si]Geometry[/b:22tx75si] interface is missing in the new chm list.

I’ve tried your new examples, very interesting ! :)
I’ve got some problems with few of them.
With [b:22tx75si]netstream[/b:22tx75si] and [b:22tx75si]cdda[/b:22tx75si] examples, at the end, these two examples prints this error :
[code:22tx75si]FMOD error ! (31) An invalid object handle was used.[/code:22tx75si]Where this error come from ?

With [b:22tx75si]multispeakeroutput[/b:22tx75si], I can’t hear anything on my computer when I run it ! Is it normal ?
The music does not seem to be played, it is blocked to the position 00:00:95.
If I change the FMOD_SPEAKERMODE value fo setSpeakerMode, then the applications works well.

In the code, you’ve write this comment :
[quote:22tx75si] If the user doesn’t have 7.1 speakers, then only the speakers they have will be audible. [/quote:22tx75si]
With my two speakers it should normaly works !
Then, I’ve take a look to my integrated souncard (Yeah, this is not the best soundcard) : it only supports 5.1.

Did the problems come from my souncard ?
If we can’t use FMOD_SPEAKERMODE_7POINT1 with a souncard that only support 5.1, I think a little comment on this should be very usefull …

I’ve see your note on System::setSpeakerMode, but I think that my settings are good :
[code:22tx75si] Windows note! Sound will not behave correctly unless your control panel has set the speaker mode to the correct setup.
For example if FMOD_SPEAKERMODE_7POINT1 is set on a speaker system that has been set to ‘stereo’ in the windows control panel, sounds can dissapear and come out of the wrong speaker. Make sure your users know about this.
If using WinMM output, note that some soundcard drivers do not support multichannel output correctly (ie Creative cards). Other soundcards do.
Only DirectSound and ASIO have reliably working multichannel output.[/code:22tx75si]
Can you tell me where the problem comes from ?

  • You must to post comments
0
0

[code:1kay619q]the cdda and netstream examples are only saying that because they over check all the error codes.
It just means the sound has ended, and calling getpaused or getposition or whatever it calls is calling it on a finished sound, so the handle is invalid.
[/code:1kay619q]
Ok, thanks for the explanation.
At first sight, I’ve found it strange because we do not execute the shut down code before exit.

For [b:1kay619q]multisoundcard[/b:1kay619q], I’ve forgot to indicates that I’ve got two speakers and my analog output use 2 channels.
With FSOUND_SPEAKERMODE_5POINT1 it works well like with all the others mode excepted for FSOUND_SPEAKERMODE_7POINT1 that don’t works for me.

[b:1kay619q][u:1kay619q]Plug-in loading[/b:1kay619q][/u:1kay619q]

I’ve seen that we can loads plugins by using libraries (like codec_.dll output_.dll or dsp_***.dll in the windows platform) using :
[code:1kay619q]FMOD_RESULT System::loadPlugin(char * filename, FMOD_PLUGINTYPE * plugintype, int * index);[/code:1kay619q]

Is there a way to loads a plugin without compiling it into a library ?
ie loading the plugin with its description like that :
[code:1kay619q] //Definition of the plugin like in plugin_dev examples (in myplugin.c for example)
FMOD_CODEC_DESCRIPTION myplugin = {...};
...
or
FMOD_DSP_DESCRIPTION myplugin = {...};
...
or
FMOD_OUTPUT_DESCRIPTION myplugin = {...};
...

//Loading the plugin by passing its description to FmodEx (in main.cpp for example)
FMOD_PLUGINTYPE plugintype;
int index;
system->loadPlugin(&myplugin, &plugintype, &index);[/code:1kay619q]
Can you tell me if it is possible ?

I’ve seen that this is possible with DSP using System::createDSP :
[code:1kay619q]FMOD_RESULT System::createDSP(FMOD_DSP_DESCRIPTION * description, FMOD::DSP ** dsp);[/code:1kay619q]
but I’ve not found any similar functions that takes FMOD_CODEC_DESCRIPTION & FMOD_OUTPUT_DESCRIPTION.

I’m making a Java support to FmodEx. In Java, we can’t creates any binary files like libraries …
So, to use the plug-in system of FmodEx with a user plugins, something like this should by implemented in FmodEx (if it is not already done, I probably miss something ! ).

  • You must to post comments
0
0

With java, source files are compilled into *.class files (this is not a binary file like exe dll …, in java we call it byte-code).
This kind of file is only interpreted by Java.

Users that creates plugins compile them into class files. But, we can’t pass this kind of file directly to Fmod.
This is easy to get the FMOD_***_DESCRIPTION object from this file that correspond to the plug-in, but there are no way to pass this object to Fmod.

  • You must to post comments
0
0

[quote="brett":3jc6kk99]ok well the answer has to be no at this stage.[/quote:3jc6kk99]
Did you think that this will be supported in future versions of FmodEx ?

Just few thing to clean up in the callback list of FmodEx.chm beta 26 :

Callbacks that don’t exists :
[code:3jc6kk99] FMOD_SOUND_OPENEDCALLBACK
FMOD_METADATA_CALLBACK[/code:3jc6kk99]
Callback missing :
[code:3jc6kk99] FMOD_SOUND_NONBLOCKCALLBACK[/code:3jc6kk99]

  • You must to post comments
Showing 4 results
Your Answer

Please first to submit.