Removing odd formuations, adding HOA free field renderer. and typos fixed

parent 6c20eed2
......@@ -96,11 +96,11 @@
<h4>Latency, real-time capability and resource management</h4>
<p>Input-output latency is crucial for any interactive application. VA tries to achieve minimal latency wherever possible, because latency of subsequent components add up. As long as latency is kept low, a human listener will not notice small delays during scene updates, resulting in a convincing live system, where interaction directly leads to the expected effect (without waiting for the system to process).<br />
VA tries to achive real-time capability by establishing data management and processing modules that are lightweight and handle updates efficiently. For example, the FIR filtering modules use a partitioned block convolution resulting in update latencies (at least for the early part of filters) within one single audio block - which usually means a couple of milliseconds. Remotely updating long room impulse responses using Matlab can easily hit 1000 Hz update rates, which under normal circumstances is about three times more a block-based streaming sound card provides. And by far more a dedicated graphics rendering processor achieves, which is often the driving part of scene modifications.<br />
However, this comes at a price: VA is not trading computational resources over update rates. And VA will plainly result in audio dropouts or complete silence, if the computational power is not sufficient for rendering and reproducing the given scene. Simply put, if you request too much, VA will stop auralizing. The number of paths between a sound source and a sound receiver that can effectively be processed is limited. For example, a single binaural free field rendering can calculate up to 20 paths in real-time, but for room acoustics with long reverberation times, a maximum of 6 sources and one listener is realistic (requiring the sound propagation simulation to be processed remotely). If reproduction of the renderd audio stream also requires processing power, the numbers go even further down.
However, this comes at a price: VA is not trading computational resources over update rates. And VA will plainly result in audio dropouts or complete silence, if the computational power is not sufficient for rendering and reproducing the given scene. Simply put, if you request too much, VA will stop auralizing. The number of paths between a sound source and a sound receiver that can effectively be processed is limited. For example, a single binaural free field rendering can calculate up to 20 paths in real-time, but for room acoustics with long reverberation times, a maximum of 6 sources and one listener is realistic (plus requiring the sound propagation simulation to be processed remotely). If reproduction of the rendered audio stream also requires processing power, the numbers go further down.
</p>
<h4>Why is VA a framework?</h4>
<p>You can <a href="download.html">download a ready-to-use VA application</a> and <a href="start.html">configure it for your purpose</a>. The combinations of available rendering modules are diverse and range from spatial processing using Binaural Technology over artificial reverberation for simple mood creation of a given space to ambient sounds that guide or entertain. <br />
<p>You can <a href="download.html">download a ready-to-use VA application</a> and <a href="start.html">individually configure it</a> to reach your target. The combinations of available rendering modules are diverse and therefore VA is suitable for various purposes. The more simple modules provide free-field spatial processing (e.g. using Binaural Technology) for precise localization. More sophisticated modules create certain moods by applying directional artificial reverberation. And others try to be as precise as possible applying physics-based sound propagation simulation for indoor and outdoor scenarios. And there are also possibilities to simply mix ambient sounds that guide or entertain. <br />
To deliver your sound to a human listener, you can use different reproduction modules. The selection process depends on the available hardware and the rendering type, and also the computational power you can afford. Find below the tables indicating the <b>rendering and reproduction modules</b> shipped with VA. <br />
If what you want to do is not reflected by the available modules, you can also extend VA with your own module implementation. You can use generic calls to configure your components without modifying any interface and binding library, which is very helpful for prototyping. <br />
</p>
......@@ -136,25 +136,25 @@
<td>binaural 2-channel</td>
<td>Uses a simulation scheduler backend for binaural room impulse responses and applies effect by efficient convolution of long FIR filters per source-receiver-pair</td>
</tr>
<tr>
<td>AmbientMixer</td>
<td>variable</td>
<td>Routes sound direcly to all channels of reproductions and applies gains of sources</td>
</tr>
<tr>
<td>BinauralOutdoorNoise</td>
<td>binaural 2-channel</td>
<td>Uses OutdoorNoise base renderer and processes incidence waves using binaural technology for spatialization.</td>
<td>Uses OutdoorNoise base renderer and processes incidence waves using binaural technology for spatialization. [BETA]</td>
</tr>
<tr>
<td>BinauralAirTrafficNoise</td>
<td>binaural 2-channel</td>
<td>See binaural free field renderer, but adds a ground reflection and temporal variation of medium dynamics.</td>
</tr>
<tr>
<td>AmbisonicsFreeField</td>
<td>configurable</td>
<td>Generates panned signals based on spherical base functions according to higher order Ambisonics (HOA).</td>
</tr>
<tr>
<td>VBAPFreeField</td>
<td>variable</td>
<td>Generates panned cannel-based sound depending on output loudspeaker setup based on Vector-Base Amplitude Panning. Omits any geometry.</td>
<td>Generates panned channel-based sound depending on output loudspeaker setup based on Vector-Base Amplitude Panning. Omits any geometry.</td>
</tr>
<tr>
<td>PrototypeFreeField</td>
......@@ -166,6 +166,11 @@
<td>configurable</td>
<td>Concolves a long FIR filter efficiently for a configurable number of channels for each source-receiver-pair. FIR filter can be updated in real-time using the binding interface.</td>
</tr>
<tr>
<td>AmbientMixer</td>
<td>variable</td>
<td>Routes sound direcly to all channels of reproductions and applies gains of sources</td>
</tr>
<tr>
<td>PrototypeDummy</td>
<td>unspecified</td>
......@@ -250,11 +255,15 @@
</p>
<h4>Configuring VA</h4>
<p>
If you want to use VA, you most likely want to change the configuration to match your hardware and activate the rendering and reproduction modules you are intereset in.
If you want to use VA, you most likely want to change the configuration to match your hardware and activate the rendering and reproduction modules you are interested in.
</p>
<h5>Configuration using an INI file</h5>
<h5>Configuring VA in a VAServer application</h5>
<p>
You can do this by modifying the <code>*.ini</code> files in the <code>conf</code> folder and use the provided batch start scripts, that will start the VA server using these configuration files. The <code>VACore.ini</code> controls the core parameters, the <code>VASetup.*.ini</code> are describing hardware devices and channel layouts. They are included by a line in the <code>[Files]</code> section of the configuration file and usually represent a static setup of a laboratory or a special setup of an experiment. Use <code>enabled = true</code> or <code>enabled = false</code> to activate or deactivate instantiation of sections, i.e. rendering or reproduction modules and output groups.
<b>VAServer</b> can only start VA by providing a configuration file, usually called <code>VACore.ini</code>. You can configure VA for your purpose by modifying the <code>*.ini</code> files in the <code>conf</code> folder and use the provided batch start scripts, that will start the VA server using these configuration files. The <code>VACore.ini</code> controls the core parameters, the <code>VASetup.*.ini</code> are describing hardware devices and channel layouts. They are included by a line in the <code>[Files]</code> section of the configuration file and usually represent a static setup of a laboratory or a special setup of an experiment. Use <code>enabled = true</code> or <code>enabled = false</code> to activate or deactivate instantiation of sections, i.e. rendering or reproduction modules and output groups.
</p>
<h5>Configuring VA in a Redstart application</h5>
<p>
<b>Redstart</b> offers basic GUI dialogs to create and control common configurations in so called sessions, but can also create sessions based on arbitrarily configured <coded>INI</code> files for special purposes. The audio settings and network server settings have extra inputs to provide rapid switching between sessions and audio hardware.
</p>
<h5>Using search paths</h5>
<p>
......@@ -313,6 +322,7 @@ H = va.create_directivity_from_file( '$(DefaultHRIR)' );
L = va.create_sound_receiver( 'itaVA_Example_Sound_Receiver' );
va.set_sound_receiver_pose( L, [ 0 1.7 0 ], [ 0 0 0 1 ] );
va.set_sound_receiver_directivity( L, H );
va.disconnect;</code></pre>
......@@ -338,6 +348,7 @@ hrir = va.create_directivity_from_file( '$(DefaultHRIR)' )
sound_receiver_id = va.create_sound_receiver( 'VAPy_Example_Sound_Receiver' )
va.set_sound_receiver_pose( L, ( 0, 1.7, 0 ), ( 0, 0, 0, 1 ) )
va.set_sound_receiver_directivity( sound_receiver_id, hrir )
va.disconnect
......@@ -368,6 +379,7 @@ namespace VA {
int SoundReceiverID = VAConnection.CreateSoundReceiver("C# example sound receiver");
VAConnection.SetSoundReceiverPose(SoundReceiverID, new VAVec3(0.0f, 1.7f, 0.0f), new VAQuat(0.0f, 0.0f, 0.0f, 1.0f));
VAConnection.SetSoundReceiverDirectivity(SoundReceiverID, HRIR);
// do something that suspends the program ...
......@@ -397,7 +409,7 @@ int main( int, char** )
pVA-&gt;Reset();
const std::string sSignalSourceID = pVA-&gt;CreateSignalSourceBufferFromFile( "ita_demosound.wav" );
const std::string sSignalSourceID = pVA-&gt;CreateSignalSourceBufferFromFile( "$(DemoSound)" );
pVA-&gt;SetSignalSourceBufferPlaybackAction( sSignalSourceID, IVAInterface::VA_PLAYBACK_ACTION_PLAY );
pVA-&gt;SetSignalSourceBufferLooping( sSignalSourceID, true );
......@@ -406,10 +418,11 @@ int main( int, char** )
pVA-&gt;SetSoundSourceSignalSource( iSoundSourceID, sSignalSourceID );
const int iHRIR = pVA-&gt;CreateDirectivityFromFile( "NeumannKU100.v17.ir.daff" );
const int iHRIR = pVA-&gt;CreateDirectivityFromFile( "$(DefaultHRIR)" );
const int iSoundReceiverID = pVA-&gt;CreateSoundReceiver( "C++ example sound receiver" );
pVA-&gt;SetSoundReceiverPose( iSoundReceiverID, VAVec3( 0.0f, 1.7f, 0.0f ), VAQuat( 0.0f, 0.0f, 0.0f, 1.0f ) );
pVA-&gt;SetSoundReceiverDirectivity( iSoundReceiverID, iHRIR );
// do something that suspends the program ...
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment