[Openal] EFX Clarifications

Christopher Fitzgerald solaryn at hotmail.com
Fri Sep 12 15:16:14 PDT 2008


Greetings,

> As you may have realized already, the Creative EFX extension is built on top of EAX technology.  The I3DL2 guidelines are very similar to the features of EAX 2 and EAX 3 so that can be a good source of information ( http://www.iasig.org/pubs/3dl2v1a.pdf )

It was actually my poor understanding of that document that made me think (based on figure 3 on page 7) that by relating x (GainHF?) and ref (reference frequency of 5KHz) to the filter's curve it would require the cut-off to vary with GainHF.

> The GainHF parameter specifies the gain at the reference high frequency (5KHz).   It is done in this manner so that individual implementations can select what type of filter is used (e.g. one-pole or two-pole).  It enables products to differentiate themselves in terms of quality and performance.

Which was my understanding.

1.  But how does that all relate to the cut-off?
2.  Is the cut-off particular to an implementation?
3.  If it is fixed, how does the adjustment of GainHF guarantee that the reference frequency is attenuated as indicated (to GainHF)?
 
> Not in EFX.

Is it variable in I3DL2 then?  Or do you mean there's no property to adjust it directly?  My understanding was that the GainHF value was used to determine it.
 
> See http://www.iasig.org/pubs/3dl2v1a.pdf for details about the transfer function for a one-pole filter and how it relates to the reference high frequency and sample rate.

So rather than having GainHF alter the cut-off, does it instead alter the coefficient(s) of the filter directly?
 
> It is possible (and desirable) to combine all the parameters that affect the gain at high frequencies together before applying the low pass filter.

Sounds good.
 
> If your parameters are in millibels they need to be added together, if they are in linear levels they should be multiplied.

That makes sense.
 
> It is easier to convert all the linear gains to millibels and then use this formula ...
> 
> lSourceAirAbsorptionHF = AirAbsorptionHF * SourceAirAbsorptionFactor * DistanceFactor * (distance - reference_distance)
> if (lSourceAirAbsorptionHF> 0)
>     lSourceAirAbsorptionHF = 0
> 
> The default AirAbsorptionHF in millibels is -5mB.  The above formula is for the Inverse Distance Clamped model.

I didn't think the distance model would effect the accuracy of this calculation.  What would it look like for the other two models?  I imagine (distance - reference_distance) would be changed somewhat.
 
> What soundcard do you have installed?  Does it have up-to-date drivers.

On the effected system (the only one with hardware 3D sound support) I've got an old SB Live Value, with the most recent drivers (which are very old).  I suppose that means all these issues may be driver and card related.

I just want to make sure the Generic Hardware device isn't at fault, since I'm relying on it for any systems that have hardware support but no specific OpenAL driver.
 
> Depends on the soundcard you have installed.  If the device supports EAX 5 (hardware based X-Fi cards) it should work.  It should also work on most EAX 4 (hardware based Audigy cards).

Okay, so this probably is the fault of my card.
 
> If you are referring to filter gain then the answer is same as 1.  Normal Source Gain should work fine.

Yeah, filter gain.
 
> Hmmm - not sure about this one.   What are the steps to reproduce the problem?

I just create a stereo source, then an effect slot loaded with reverb, and finally a mono source.  Then I set the mono source to send to the reverb effect, and mute the dry path.  I get no output, but that may be a driver/card issue too, I guess.
 
> The affect is quite subtle - especially with the default value of AirAbsorptionHF - so you could try increasing the value of that and seeing if that make a difference.

Unfortunately, I think this is again a driver/card issue... I can't get the effect to do anything, even at its highest value, with a large distance from the source.
 
If anyone has a chance to test the Generic Hardware on a more recent card, could you let me know if all these parameters are working correctly?

> Dan
> Creative Labs

Thank you for your reply, it has been very helpful.

Regards,
 - Christopher
_________________________________________________________________




More information about the Openal mailing list