I am trying to test your new FMod4Ex system, since I was previously using BASS 😉 I am using C#.
So I have tried to study all your docs, but a few questions remain.
Assume, I am using system.createStream for playing out MP3, WMA etc. files…using the SOFTWARE option.

The “system.createStream” method creates a sound to be played.
It will be played out by using “system.playSound”, which also creates the ‘channel’ object.
Where is the actual decoding handled within Fmod? Is it within the ‘channel’ or the ‘sound’ object?

When I call “channel.getWaveData” I call it with the length of data to retrieve.
From where does the data come from – or better to say – is it ensured, that when I call this method that this amount of data has already been decoded?
-> Is it always the actual playing position of the channel PLUS the amount of data forward which I get, or the actual position MINUS the data lenght?

When using “…getWaveData” – can I get float values above 1.0 resp. below -1.0 ?
-> e.g. a DSP o any other method has increased the ampliture (level) of the data – e.g. by applying a gain factor to the float data…

There are several “.getWaveData” methods. Is the following correct?

a) system.getWaveData : the really final output data going to the soundcard -> really final mixdown!
Same as masterChannel.getWaveData?

b) channel.getWaveData : the data comming from the ‘sound’ -> the original input signal plus any DSP or volume settings applied to it

c) channelGroup.getWaveData : the data comming from the channels attached to that group plus DSP etc. attached to that group

If the above is more or less true:
How to get the original, original volume level data (e.g. to display a VU meter) comming from the ‘sound’ without any effects!?

What is the easiest way to manipulate the channel data?
E.g. implementing a simple gain method.
Is there a simple “callback” method which I can use to GET the actual data buffer – manipulate it – and put it back …
Or do I always have to code my own DSP with all things arround in it, out it to a seperate dll and use that one?

How can I set the priorities of DSPs – only by the order in which I create them? Or is there an easy way to reorder them even live while playing?

Many THX in advance

  • You must to post comments

Great thing so far.
THX a lot for your nice answers!

And yes, a little more detailed toutorial about DSP callbacks, the network etc. would be great!
Also some C# examples would be perfect ;-), since some of your mentioned examples do only exist in C/C++

  • You must to post comments
Showing 1 result
Your Answer

Please first to submit.