Erik Hofman's documentation for sound configuration, updated and moved
from the base package.
This commit is contained in:
parent
d83fc1e9c8
commit
b1ddb2a800
1 changed files with 198 additions and 0 deletions
198
docs-mini/README.xmlsound
Normal file
198
docs-mini/README.xmlsound
Normal file
|
@ -0,0 +1,198 @@
|
|||
Users Guide to FlightGear sound configuration
|
||||
Version 0.7.10, Mar 02 2002
|
||||
Author: Erik Hofman <erik@ehofman.com>
|
||||
|
||||
This document is an attempt to describe the configuration of
|
||||
FlightGear flight simulator's aircraft sound via XML.
|
||||
|
||||
Some History:
|
||||
------------
|
||||
Older versions of FGFS had a hard coded audio layer. This was a
|
||||
than ideal state of affairs due to FGFS ability to use different
|
||||
aircraft models. Being primarily developed on UNIX type systems, a
|
||||
modular approach is taken towards the simulation. To date, most
|
||||
alternatives to the default Cessna 172 aircraft are the product
|
||||
of research institutions interested in the flight characteristics and
|
||||
not cosmetics. The result of this was that one could fly the X-15 or
|
||||
a Boeing 747 but be limited to C172 sounds.
|
||||
|
||||
A rewrite of the sound code was done around v0.7.10 by Erik Hofman
|
||||
allowing for configuration of the sounds via XML to address this
|
||||
limitation.
|
||||
|
||||
About The Property Manager:
|
||||
--------------------------
|
||||
The
|
||||
|
||||
Sound Architecture:
|
||||
------------------
|
||||
All of the sound configuration files are XML-encoded* property lists.
|
||||
The root element of each file is always named <PropertyList>. Tags are
|
||||
almost always found in pairs, with the closing tag having a slash
|
||||
prefixing the tag name, i.e </PropertyList>. The exception is the tag
|
||||
representing an aliased property. In this case a slash is prepended to
|
||||
the closing angle bracket. (see section Aliasing)
|
||||
|
||||
The top level sound configuration file is composed of a <fx>, a
|
||||
<name>, a <path> sound file and zero or more <volume> and/or <pitch>
|
||||
definitions.
|
||||
|
||||
[ Paths are relative to $FG_ROOT (the installed location of FGFS data files.) ]
|
||||
[ Absolute paths may be used.Comments are bracketed with <!-- -->. ]
|
||||
|
||||
A limited sound configuration file would look something like this:
|
||||
|
||||
<PropertyList>
|
||||
<fx>
|
||||
<engine>
|
||||
<name>engine</name>
|
||||
<path>Sounds/wasp.wav</path>
|
||||
<mode>looped</mode>
|
||||
<property>/engines/engine/running</property>
|
||||
<volume>
|
||||
<property>/engines/engine/mp-osi</property>
|
||||
<factor>0.005</factor>
|
||||
<min>0.15</min>
|
||||
<max>0.5</max>
|
||||
<offset>0.15</offset>
|
||||
</volume>
|
||||
<pitch>
|
||||
<property>/engines/engine/rpm</property>
|
||||
<factor>0.0012</factor>
|
||||
<min>0.3</min>
|
||||
<max>5.0</max>
|
||||
<offset>0.3</offset>
|
||||
</pitch>
|
||||
</engine>
|
||||
</fx>
|
||||
</PropertyList>
|
||||
|
||||
This would define an engine sound event handler for a piston engine driven
|
||||
aeroplane. The sound representing the engine is located in $FG_ROOT/Sounds
|
||||
and is named wasp.wav. The event is started when the property
|
||||
/engines/engine/running becomes non zero.
|
||||
|
||||
When that happens, the sound will be played looped (see <mode>) until the
|
||||
property returns zero again. As you can see the volume is mp-osi dependant,
|
||||
and the pitch of the sound depents on the engine rpm.
|
||||
|
||||
Configuration description:
|
||||
-------------------------
|
||||
|
||||
<fx>
|
||||
Named FX subtree living under /sim/sound
|
||||
|
||||
< ... >
|
||||
This is the event seperator. The text inside the brackets
|
||||
can be anything. Bit it is adviced to give it a meaningfull name
|
||||
like:
|
||||
crank, engine, rumble, gear, squeal, flap, wind, stall or click.
|
||||
|
||||
The value can be defined multiple times, thus anything which is
|
||||
related may have the same name.
|
||||
|
||||
<name>
|
||||
This defines the name of the event. This name is used internally
|
||||
and, although it can me defined multiple times in the same file,
|
||||
should have a unique value unless you realy know what you're doing.
|
||||
|
||||
Defining it multiple times could lead to unexpected behaviour.
|
||||
|
||||
<path>
|
||||
This defined th path to the sound file. The path is relative to the
|
||||
FlightGear root directory but could be specified absolute.
|
||||
|
||||
<property>
|
||||
Define which property triggers the event, and reffers to a node
|
||||
in the FlightGear property tree.
|
||||
|
||||
The value is converted to an integer value (anything less than 0.5 is
|
||||
is considered to be 0) and handled if it were a boolean value
|
||||
(0 = false, anything else = true).
|
||||
|
||||
The triger depends on the value of <type>.
|
||||
|
||||
<type>
|
||||
This specifies how the event is triggered.
|
||||
There are multiple options:
|
||||
|
||||
level: events are active if the value is true.
|
||||
this is the default behaviour.
|
||||
|
||||
inverted: events are active if the value is false.
|
||||
|
||||
flipflop: events are triggered on state changes.
|
||||
this is only usefull for samples which are played
|
||||
once.
|
||||
|
||||
<mode>
|
||||
This defines how the sample should be played:
|
||||
|
||||
once: the sample is played once.
|
||||
this is the default.
|
||||
|
||||
looped: the sample plays continuesly,
|
||||
until the event turns false.
|
||||
|
||||
|
||||
<volume> / <pitch>
|
||||
Volume or Pitch definition. Currently there may be up to 5
|
||||
volume and up to 5 pitch definitions defined within one sound
|
||||
event. Normally all <offset> values are added together and the
|
||||
results after property calculations will be miltplied.
|
||||
A special condition occurs when the <factor> value is negative,
|
||||
in which case the offset doesn't get added to the other offset values
|
||||
but instead will be used in the multiplication section.
|
||||
|
||||
<property>
|
||||
Defins which property supplies the value for the calculation.
|
||||
The value is treatened as a floating point number.
|
||||
|
||||
<type>
|
||||
lin: lineair handling of the property value.
|
||||
this is the default.
|
||||
|
||||
ln: convert the property value to a natural logarithmic
|
||||
value before scaling it.
|
||||
|
||||
log: convert the property value to a true logarithmic
|
||||
value before scaling it.
|
||||
|
||||
<factor>
|
||||
Defines the multiplication factor for the property value.
|
||||
A special condition is when scale is defined as a negative
|
||||
value. In this case the result of |<scale>| * <property) will be
|
||||
subtracted from <default>
|
||||
|
||||
<offset>
|
||||
The initial value for this sound. This value is also used as an
|
||||
offset value for calulating the end result.
|
||||
|
||||
<min>
|
||||
Minimum allowed value.
|
||||
This is usefull if sounds start to sound funny. Anything lower
|
||||
will be converted to 0.
|
||||
|
||||
<max>
|
||||
|
||||
Maximum allowed value.
|
||||
This is usefull if sounds gets to loud. Anything higher will be
|
||||
truncated to this value.
|
||||
|
||||
|
||||
Calculations are made the following way
|
||||
(function can be one of: none, ln or log ):
|
||||
|
||||
if (scale < 0) {
|
||||
value[i] = offset[n] - abs(scale[n]) * function(property[n])
|
||||
offset[i] = 0;
|
||||
} else
|
||||
value[i] = scale[n] * function(property[n])
|
||||
|
||||
And the end result will be:
|
||||
|
||||
result = offset[0..max] + value[0..max];
|
||||
|
||||
|
||||
|
||||
|
Loading…
Reference in a new issue