Hi James,
It has been a while since I've looked at this so I have to dig a bit
here. I don't think much has changed in the mean time though, except for
adding positioning and directional parameters.
James Sleeman wrote:
> Erik I think you wrote the xmlsound.README file. Do you know if there
> is some other documentation I could look at, that might make it a bit
> clearer as I think maybe your documentation is not quite up to date.
>
> For example, I don't think that max-dist works any more (if it ever
> did), a search of the current FG source doesn't turn it up in anything
> (except mk_viii.cxx but that does not seem related, and of course your
> xmlsound.README).
I'm not sure if such a configuration parameter was ever implemented as
the idea at that time was could have been that it would be the same for
every sound. Adding it might be a good idea though
> I also have not been able to find what the valid "range of values" for
> <pitch> is, (<volume> I believe is 0 to 1 (silent to full)). I'm also
> having trouble understanding the interaction of offset, factor and
> multiple volume/pitch sections for a single event.
OpenAL specifies the following:
volume: [0..1]
pitch: unspecified, may be clamped.
Actually the limiting factor for pitch is the Creative driver which
limits pitch to [0..2]
Also, multiple offsets are added together (so be careful) and multiple
factors are multiplied together.
> To give a specific example I am trying to accomplish, I want a given
> sound to start to "fade in" when accelerating past say 300kts airspeed,
> reach full volume at, say, 350kts, maintain full volume at or above
> this, and then when decelerating start fading out from 350 and be
> silenced by 300.
>
> In a functional description, I want:
> volume = max(min(350,airspeed)-300,0)/50
> (where 0 <= volume <= 1) but I can't see how such a thing could be done
> in a sound.xml
What I end up doing all the time is determining the maximum value of a
property and set <factor> to 1/max
The easiest way would be to create a separate <volume> section for the
divide by 50:
<volume>
<property>/velocities/airspeed-kt</property>
<factor>0.002857</factor> <!-- 1/350 -->
<offset>-0.8571</offset> <!-- -300/350 -->
<min>0.0</min>
<max>1.0</max>
</volume>
<volume>
<factor>0.02</factor> <!-- 1/50 -->
</volume>
So one would divide every number by the maximum allowable value and
substitute the property for '1' to get a normalized formula. For
volume(norm) = max(min(350/350,1/350)-(300/350),0)
this way you can set <min>0</min> and <max>1.0</max> and remove them
from the formula:
volume = (1/350) - (300/350)
And then you split up the factor and offset parts:
factor = (1/350) = 0.002857142
offset = (-300/350) = -0.875142857
It should be possible to fetch all this into one <volume> section but
the division by 50 outside them min() and max() statement makes this
rather tough.
Erik
------------------------------------------------------------------------------
This SF.net email is sponsored by:
SourcForge Community
SourceForge wants to tell your story.
http://p.sf.net/sfu/sf-spreadtheword
_______________________________________________
Flightgear-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/flightgear-devel