Copyright: Copyright 1997 CSS


3D Audio

3D-Audio

Welcome to 3D-Audio !

This program enables you to create true three-dimensional sound experiences. For an introduction on the topic of spatial perception select the Quick Start. To learn about the program and its usage do the tutorial.

What's new with the release 1.0a ?

Have a look at the revision history for new implemented features!

Requirements

The program requires Windows95 or WindowsNT 4.0 and a properly installed soundcard!

For best visualisation results you will need DirectX3 be installed on your system. You can obtain a free copy of the runtime binaries from MS via WWW:

http://www.microsoft.com/DIRECTX/RESOURCES/downloads/Dx3busa.exe

Note that this file doesn't work with Windows NT 4.0! When using NT4.0, you need Service Pack 3 installed on your system; it includes the DirectX3 drivers. You may download from MS:

http://www.microsoft.com/isapi/support/bldqpage.idc?ProductPage=q_servpk

If you use the program with Windows NT 4.0, please read the NT 4.0 technical note!

Program status

This program is shareware and may be used for seven days for evaluation; if this period is exceeded you have to register the program in order to use it legally! If you want to distribute the program have a look at the distribution status.

You may download a demonstration project (pingpong.zip) for 3D-Audio. This package demonstrates a better spatial effect because of a larger sound source file than the included tutorial demos. Obtain a copy from our WWW-Site:

http://www.audiophile.com/climax

Have a look at the planned features page!

Copyright 1997 by CSS.


Contact the authors

You may contact us at :

E-Mail	:	climax@audiophile.com

WWW	:	http://www.audiophile.com/climax

Mail    	:	Climax Software Solutions

PO Box 210416

10504 Berlin

Germany


Registration form

Name	: ___________________________________________

Company	: ___________________________________________

Address	: ___________________________________________

  ___________________________________________

  ___________________________________________

  ___________________________________________

E-mail	: ___________________________________________

Your preferred username

for registering 3D Audio 	: ___________________________________________

Payment method

[  ]  Cash

[  ]  Eurocheque in German marks.

[  ]  Direct deposit

[  ]  Credit card 	: [  ] VISA    [  ] Diners   [  ] AMEX

Credit card no.	:  ___________________________________________

Expiration date	:  ___________________________________________

Name on card	:  ___________________________________________

Billing address	:  ___________________________________________

I understand the license terms completely.

Date	:  __________________

Signature	:  __________________


License terms

The received password may be used by one single user only. The license is confined to private use only; for commercial or institutional use, contact the authors.

Disclaimer of warranty

THIS SOFTWARE AND THE ACCOMPANYING FILES ARE SOLD "AS IS" AND WITHOUT WARRANTIES AS TO PERFORMANCE OF MERCHANTABILITY OR ANY OTHER WARRANTIES WHETHER EXPRESSED OR IMPLIED. NO WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE IS OFFERED. IN NO EVENT WILL THE AUTHORS BE LIABLE FOR SPECIAL, DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES, LOSSES, COSTS, CHARGES, CLAIMS, DEMANDS OR CLAIM FOR LOST PROFITS, FEES OR EXPENSES OF ANY NATURE OR KIND.

The user must assume the entire risk of using the program.


Definition file path
Choose the fully qualified path for definition files. Provided for compatibility; need not be set.


Browse definition file path
Press to select the definition file path by means of a file dialog.


Output file
Choose the name of the PCM-File to write the computed data to.


Browse output file
Select the output file by means of a file dialog.


Source file
Select the monaural 16-Bit big-endian PCM-File to use as sound data for the current source.


Browse source file
Select the PCM-File to use for this source by means of a file dialog.


Response file
Specify the .HTF-file containing the head related transfer function as impulse responses to use.


Browse response file
Select the .HTF-file to use by means of a file dialog.


Internal responses
Use the internal set of head responses instead of specifying an external file.


Samplerate
Specify the samplerate of both the impulse data and the source sound files.


Bufferlength
Give the length of the internal synthesis buffer. Must be larger than the maximum delay occurring in the scene.


Blocklength
The length of one atomic computation block in samples. Positions and Doppler-shifts are updated every block.


Starttime
Specify the time that this source is to start relative to the beginning of the simulation.


Power
Determine the power of the sound assumed for this source. Allows you to adjust the relative volume of the sources.


Exponent
The path-loss exponent for this source. For free space this would be -2.0, but smaller values may yield more realistic results.


Reflections
The order of reflections to compute for this source. Zero means only the direct beam is computed, one means reflections over one wall are computed etc.


Emission factor
This value allows you to change the radiation characteristic of the source, which is given as function of the angle between the direction of emission and the direction of the orientation of the source:

Exp[ - EmissionFactor * Angle]

A value of zero yields a constant radiation pattern; values above concentrate the radiation to the direction of orientation.


Source length
Define the length that this source is to run in seconds. If the value exceeds the length of the input file, looping is performed.


Adjust source length
Check this to cause the length the source runs to be exactly that of the input file.


Room size
Define the size of the box-like room that the scenery is to take place in. Values are given in meters.


Room size X
The size in X-direction of the box-like room that the scenery is to take place in given in meters. This value corresponds to the width of the room.


Room size Y
The size in Y-direction of the box-like room that the scenery is to take place in given in meters. This value corresponds to the depth of the room.


Room size Z
The size in Z-direction of the box-like room that the scenery is to take place in given in meters. This value corresponds to the height of the room.


Room reflections
Define the reflection properties of the virtual room. The given values specify the reflection coefficients:

a value of e.g. 0.7 means that reflected waves are attenuated by 30%.


Distance correction
Check this to apply a modified computation, which attempts to incorporate the impact of the distance of the source on the used head related transfer function. Quite experimental parameter, which doesn't yield a big improvement.


Motion dialog

This dialog allows you to define atomic steps of continous motion. By creating of sequence of such motions, virtually any complex motion can be implemented.


Tree Motion
This node contains a list of elementary motion instructions to define the path the source or head will follow during simulation.


Angular speed
The angular velocity for turning motion given in revolutions/sec.


Motion time
The time that the desired motion is to last.


Jump to position
When checked the desired motion is performed in one single step. Use this to initially position the sources.


Fixed radiation
When checked the orientation of the source will be directed towards the virtual head during the motion.


Absolute translation XYZ
Define the end-point of the motion giving its X, Y, Z - coordinates.


Absolute translation
Define an absolute translation, i.e. a movement to a given point. The specified point will be reached after the given motion time.


Relative translation speed XYZ
Define the speed of the motion as velocities in X, Y, Z - coordinates.


Relative translation acc XYZ
Define the the acceleration of the motion in X, Y, Z - coordinates.


Relative translation
Define a relative translation, i.e. a motion with given speed and/or acceleration.


Absolute rotation TP
Define the angle that the orientation of the source is to be turned to. The angles are given as "theta" (angle between direction and the XY-plane) and "phi" (angle in the XY-plane between the X-axis and the direction measured counterclockwise).


Relative rotation speed TP
The angular speed of the rotation of the direction. The angles are given as "theta" (angle between direction and the XY-plane) and "phi" (angle in the XY-plane between the X-axis and the direction measured counterclockwise).


Relative rotation acc TP
The angular acceleration of the rotation of the direction. The angles are given as "theta" (angle between direction and the XY-plane) and "phi" (angle in the XY-plane between the X-axis and the direction measured counterclockwise).


Turning center XYZ
The ciruclar motion of turning will take place on a plane in the three-dimensional space. The point defined by this (X,Y,Z) vector specifies the center of that circle when projected to the plane of motion.


Turning axis XYZ
The ciruclar motion of turning will take place on a plane in the three-dimensional space. This (X,Y,Z) vector defines that plane in that it will be located perpendicular to the plane.


Turning
Turning means moving the source with given rate on a circular path perpendicular to a given axis. The latter is defined by a direction and a position vector.


Absolute rotation
Absolute rotation means turning of the direction of the source to a given absolute angle.


How to register ?

The price for registering 3D Audio is US-$ 30 for a single-user license. You will receive a password which you can use to unlock your copy of the program. This license is limited to private use only! For commercial or institutional use, contact the authors.

There are two ways to register the program:

•	Submit the completed registration form to us. Payment may be done by credit card. Users residing in Europe may alternatively send an eurocheque for the equivalent of $30 in any currency, or can directly transfer the money to a bank account; contact us for the bank account number. Money transfer is the simplest and cheapest way for users in Germany.

•	Alternatively, you can use the Kagi registration service for easy and safe registration via the internet, fax or mail. Kagi resides in the USA, which makes it the preferred choice for American users.


Username
Enter your name as given when registering your copy.


Password
Enter the password you received for your username.


Register cancel
The button for the greedy people...


Register
Press this button to register your copy of 3D Audio after entering your name and the received password.


How to register button
Press this button to view the terms for registering.


Start Kagi registration
Pess this button to start the program for simple and safe Kagi registration service!


D3D Screen mode
Select the way the Direct3D output is displayed. Possible are either in a window or fullscreen.


D3D Window Mode
Check this to let the Direct3D output be displayed in a window.


D3D FullScreen mode
Check this to let the Direct3D output be display fullscreen. The combo box to the right may be used to select the desired resolution and color depth.


D3D FullScreen mode box
Select the desired resolution and color depth for fullscreen display.


D3D Render mode
Define the render mode used by Direct3D.


D3D Wireframe mode
Renderer output will be a wireframe model.


D3D Unlitflat mode
Renderer output is unlit flat mode.


D3D Flat mode
Renderer output will be in flat mode.


D3D Gouraud mode
Renderer output will be Gouraud mode; this looks best but is the most demanding in terms of computational complexity.


D3D Emulation mode
The mode of color emulation used by Direct3D.


D3D Ramp mode
Emulation mode will be "ramp".  This is faster than RGB and looks reasonably good.


D3D RGB mode
Emulation mode will be RGB. Very heavy load for the computer...


D3D Preview
This window gives you an idea of how the selected Direct3D options will look like. If this display is active (click with the mouse on it), you can influence the movement of the displayed room by means of the num-locked keypad and <Pos1>, <End> and <Insert>. See the actual help file for a detailed list.


D3D Texture box
Here you may change the textures used for walls, floor and ceiling of the virtual room.


D3D Texture wall box
Select the wall that you want to change the texture of.


D3D Texture path
Brings up a file dialog where you may specify a .BMP-file to use as new texture for the selected wall. Note that the dimension of the picture must be a power of 2!


D3D Texture default
Check this to revert back to the default texture of the selected wall.


D3D Objects
Select the object that you want to modify and define a new model for it.


D3D Object box
Use the combo box to select the object that you want to modify by its name.


D3D Object path
Brings up a file dialog which lets you specify a new Direct3D model (.X-file) to use for the selected object.


D3D Object default
Check this to use the default model for the selected object.


D3D Colors
Lets you change the color of any of the used Direct3D objects.


D3D Color window
Displays the currently selected color of the current object.


D3D Color button
Brings up a dialog to select a color.


D3D Color default
Check this to revert back to the default color for the currently selected object.


D3D Object tab
Use this notebook to select that property of the object which you want to edit. You may modify the spatial position, orientation and scaling of the used Direct3D model to make it fit for later display purposes.


D3D Object translate XYZ
Specify a (X,Y,Z) vector to use as an offset for the currently selected object.


D3D Object scale XYZ
Specify a (X,Y,Z) vector with scaling factors that will be applied to the model.


D3D Object rotate XYZ
Specify a (X,Y,Z) vector of angles that the Direct3D object will be turned prior to display.


D3D Object default transform
Check this to revert back to default settings for the transform options.


About about
Is there anything to say about About?


About register
Press this button to access a window for entering your registration code.


About Ok
Press this when you're bored enough by the window.


About Tutorial
Do the tutorial to learn 3D-Audio


About how to register
Information about how you can register the program


About start registration
Here you can easy and safe register the program!


Source name
Define a name to identify the new source.


Project window

This window displays the parameters and settings of the simulation in a tree-like structure. Dive into the structure and edit the nodes parameters by using the according context-menu (right mouse-button) or the keyboard. Use 'Return' for the node properties, 'Insert' for inserting new sources/motions and 'Delete' to delete sources or motions!

The hierarchial structure groups the project data into these entries:

Basic	Contains basic data like the name of the output file

Room	Contains the parameters defining the virtual room

Head	Bundles data defining the position and animation of the virtual head

Source	Contains all data defining a sound source. There can be a list of such source-entries, one for each source appearing in the simulation. To insert and delete sources, use the context menu (right mouse-button) when a source entry is selected.


Tree basic
This node contains basic data concerning the simulation, such as the output file name, the samplerate of the data etc.


Tree room
This node contains the definition of the virtual room that the scenery is to take place in.


Tree head
This node contains information on the virtual head, i.e. its position and motion in time.


Tree head basic
Contains basic information on the virtual head; actually just a flag which defines if the head is moved during the simulation.


Tree Update head
Signals if the virtual head is animated and thus must be updated during the simulation. This flag cannot be changed by the user, but automatically changes with the definition of the "motion" node.


Tree Source
This node contains the data defining a sound source.


Tree Source basic
Contains basic information on the source, such as  the PCM-file associated with it, the power etc.


Tree Source motion
Contains the definition of the motion of the source or the head during the simulation.


Tree Source update
Signals if the source is animated and thus must be updated during the simulation. This flag cannot be changed by the user, but automatically changes with the definition of the "motion" node.


Tree Source end
A dummy entry which signals the end of the list of sources.


Tree Motion type
Each node represents one motion instruction where the order of the statements gives the order of the complete, compound motion that will finally be performed. There are various types of motion supported, which are described in the actual help file.


Tree Motion argument
The parameters of the parent motion instruction. The type of possible parameters depends on the type of motion selected. See the help file.


Tree Motion end
A dummy entry which signals the end of the list of motion instructions.


Basic properties dialog

This dialog lets you control the basic properties of the various objects, such as the room, the virtual head and

the sound sources. The actual elements of the dialog depend on the type of object worked on.


Options menu

This menu contains several entries which let you control how the rendered scenery will be displayed on the screen. These submenu entries are available:

Show 3D preview	Disable this to hide the 3D preview output while rendering. This will speedup the render process!

Use Direct3D	Check this to let the output be displayed using Direct3D. Naturally, Direct3D must be installed on your system.

Use wireframe	Check this to let the output be a simple wireframe model.

Direct3D options	Brings up a dialog to define a number of parameters when using the Direct3D display, such as desired emulation and rendering modes or the used models for displaying sources and the head.

Try to use Direct3D	Instruct the program to check for Direct3D. Invoke this operation if you installed Direct3D after 3DAudio.

Use snap shot positions	Use the positions of the MDI-windows stored with "Make a snap shot" as default when opening new windows.

Make a snap shot	Store the current position of the MDI-child windows.


Help menu

Contents	Take you to the top of the helpfile!

Tutorial	A tutorial how to use 3D-Audio!

Using help	How to use help in windows...

How to register	Brings up the help how you can register 3D-Audio!

Start Kagi registration	Register the program easy and safe with the Kagi registration service located in USA!

About	About 3D-Audio! Here you can insert the registration information for your personal copy of 3D-Audio!


Project menu

The project menu contains the items to invoke a simulation and control its run (the equivalent key is in parenthesis given):

Compute (F9)	Start computing the current project. If another computation is in progress, it will be canceled.

Simulate (F10)	Start simulating the current project. This means that the scenery will be rendered and displayed, but no audio data are computed. This can be used to verify the motion sequences.

Priority	Enables you to adjust the priority of the thread computing the audio data.

Pause (F11)	Pause the current computation.

Resume (CRTL+L)	Resume the paused computation.

Stop (F12)	Stop the current computation.

Open outputfile (O)	Open the PCM-file that contains the output data; this can be performed while the simulation is running.


Main menu

The contents of the main menu depend on the type of MDI-child that is currently active. These submenus are defined:

File	The file menu contains items that allow you to load and store simulation project files as well as sound files. The structure of the menu and the meaning of the items should be well known.

File / Preferences / Use new wizard

Check the menu item if you want to enable the wizard for new projects.

File / Preferences / Use source wizard

Check the menu item if you want to enable the wizard for new sources.

Project 	(only available for project and render display window)

Audio 	(only available for audio-waveform display window)

Options

Window	Now this should really be known to you!

Help


Audio menu

The audio menu is available when a waveform window is the current MDI-child. It contains these entries:

Change

Play (F8)

Pause (F7)

Resume (F6)

Stop (F5)

Loop (STRG+L)


Audio change menu

The entries of this menu allow you to change the parameters of the current waveform, such as samplerate, bits per sample and mono/stereo. Note that changing doesn't mean the data are changed, but only the assumed format! These parameters may be changed:

Samplerate	Available are a number of usual rates.

Bits per sample	Can be either 8 or 16.

Stereo	Check this for stereo waveforms.


Visualisation window

This window displays the scenery you created. The rendering will either be done by Direct3D or it will be a simple wireframe model. In either case you can switch the viewpoint interactively:

Wireframe view

Press the left mouse button within the window and drag the mouse to change the view.

Direct3D view

The following keys are supported additionally to mouse dragging:

<PgUp>	Rotate the viewpoint around the center of the room by a small amount.

<PgDn>	Rotate the viewpoint around the center of the room by a small amount in the opposite direction.

<Pos1>	Start rotating the viewpoint around the origin of the coordinate-system.

<End>	Start rotating the viewpoint around the origin of the coordinate-system in the opposite direction.

<Delete>	"Freeze" viewpoint, i.e. stop moving, rotating etc.

<Insert>	Reset the viewpoint to the default.

<Csr-Keys>	Move the viewpoint in space.

<0>	Attach the viewpoint to the head.

<1..9>	Attach the viewpoint to source 1..9 if they exist.

When navigating within the preview window of the "Direct3D Options"-dialog, the cursor-keys are not available. Use the num-locked keypad instead.


Audio window

This window displays the waveform of a loaded audio file. When this type of window is the active MDI-child, the audio menu is available, which allows to play the sound etc.

You can save the audio data as raw pcm-data or as a windows pcm WAV-file!


Progress and verbose window

This window displays the current spatial position of the objects during computation. Additionally, progress bars indicate the current degree of completion for each of the sources.

During initialisation of the computation, the upper part of the window serves as log-display to dump error messages if any problems occurr.


Entry "Basic" in the project window

This entry contains the generic parameters of the project. The following items are found here:

Output file	The name of the output file in PCM-format. To get a wav file, simply save the audio data as WAV!

Head responses	The set of measured HRTF-data to use. Should currently always be the internally stored set.

Samplerate	The sampling rate of the audio data. Must be 44100 Hertz for the internal ser of HRTF-data.

Buffertime	The length of the interal audiobuffer for calculations. This length must exceed the maximum delay that occurs in the simulated scene. If e.g. you have a room of 10x10x5 meters and use reflections of second order, the maximum path length from source to head is (max. reflections + 1) * max. path length without reflections (this is the longest diagonal line in the room): about 40-50 meters, which means a maximum delay of about one sixth of a second.

Blocklength	The interval in samples in which the positions and doppler shifts of the source sounds will be updated. Default is each 1000 samples, i.e. about every 20 ms. This seems to be a good value; you only may need to lower it when using very fast animated sources. Do not choose values below 128 samples!


Entry "Room" in the project window

This entry contains the parameters of the virtual room.

Room size	The size of the room in meters.

Wallreflections	The reflection coefficients for the walls of the room.


Entry "Head" in the project window

This entry contains the its animation instructions for the head which define the position and orientation of the virtual head during the simulation. See the description of the Source / Motion entry for an explaination of the instructions.


Entry "Source" in the project window

This entry contains information defining a sound source and its motion during simulation. There are two subentries concerning these definitions:

Basic	Contains the generic definition like the name of the sound file associated with the source.

Motion	Contains the motion instructions.


Entry "Source / Basic" in the project window

This entry contains generic definition data of the source:

Definition file	Relict from older command-line version. Simply ignore it!

Source file	The name of the sound-file to use as output of the source.

Start time	The time to elapse before starting the source.

Source length	The length of the sound that the source emits in seconds. If the length exceeds the length of the according PCM-File, the sound will be looped.

Power	Factor to amplify the sound of the source with. Can be used to adjust the volume of the sound arriving at the head. Note that with higher reflection orders (see below) the volume of the arriving sound automatically increases.

Exponent	The path-loss exponent to use to compute the attenuation of the arriving sound depending on the distance between source and head. The attenuation will be proportional to the distance to the power of the given exponent. The natural value is -2.0, but it may lead to a too strong attenuation especially when using few reflections. In that case you might want to lower the value to about -1.5.

Reflection order	The order of reflections to allow for for this source.

Distance correction	Rather experimental option which is intended to allow for the distance-dependency of the HRTF-data. Has not proven very useful...

Emission factor	Controls the radiation pattern of the source. A value of zero yields an omnidirectional emission. Values above concentrate the radiation more and more to the direction of orientation of the source. Practical values may be in the range up to 0.7, which already yields a very strong concentration of radiation.

Update source	Can not be modified by you, but indicates if the source position will be updated during computation.


Entry "Source / Motion" in the project window

This entry contains the definition of the motion during simulation. The subentry "Motion" of the entry "Head" is identically structured. This entry contains a list of subentries which define the path that the source (or head) is to follow during simulation. Each of the subentries defines one type of motion like a translation. New subentries can be added by selecting "Insert" within the context menu of any one of the existing subentries; the newly created entry will be inserted before the current one. For the use of the motion list, see the tutorial, section three.

Each motion instruction in the list is made up of the type of motion to perform, the parameters for this motion type and the time that the motion is to last. However, you may specify that the motion is performed immediately, i.e. in zero seconds time. This is called "Jump to position" and is useful for initially positioning sources. Moreover, you can specify that the orientation of the source will automatically be directed to the heads position during the movement ("Directed to head"). The following types of motion instructions are currently implemented:

•	Absolute translation: Moves the source to an absolute position within the virtual room. Leaves the orientation of the source unchanged, unless "Directed to head" is checked (see above).

•	Relative translation: Moves the source with a given speed and acceleration. Leaves the orientation of the source unchanged, unless "Directed to head" is checked (see above).

•	Absolute rotation: Rotates the orientation of the source to an absolute angular value. Leaves the position of the source unchanged.

•	Relative rotation: Rotates the orientation of the source with a given angular speed and acceleration. Leaves the position of the source unchanged.

•	Turning: Moves the source on a circular path around a given center and axis. Leaves the orientation of the source unchanged, unless "Directed to head" is checked (see above).

Note, that "Directed to head" is naturally only available when animating sources; when animating the head, this option is senseless.


Audio play
Start playing the current waveform.


Audio pause
Pause playing the current waveform.


Audio resume
Resume playing the current waveform.


Audio stop
Stop playing the current waveform.


Audio loop
Select loop mode, when playing a waveform.


PCM-Files

So called PCM-Files contain sampled audio data. The format of such files expected by this program is:

- Sampled at 44100 Hertz

- Monaural

- 16 Bit, big-endian (i.e. Intel-format)

If you wish to use a sound file in another format, utilise 3rd party products such as "CoolEdit" or "Sox" to convert the data.


Source files

As source files, you can use raw pcm-files or wav-files. The format of such files expected by this program is:

- Sampled at 44100 Hertz

- Monaural

- 16 Bit

If you wish to use a sound file in another format, utilise 3rd party products such as "CoolEdit" or "Sox" to convert the data.


Quick start

3D Audio enables you to create sound files that convey the notion of true spatial placement of the sound's source. A prerequisite to make this possible is, however, that you listen to the created sounds over headphones, since using loudspeakers would imply the real acoustic scenery of the room you're in being mixed with the virtual one.

There are various influences which determine the way we localize sounds. The most important of these factors are empirically modeled by the program to allow the simulation of a sound arriving at the head from a given direction. Since in the real world we always are surrounded by objects reflecting the sound waves and thus providing more information to the ear, the simulation has to allow for the surroundings by means of introducing a virtual room, where the virtual head and an arbitrary number of sources, each associated with a monaural PCM-file, may be positioned. In this way the reflections from the walls can be incorporated, where you can specify the maximum order of reflections to allow for. And since static scenes are always a little boring, you may freely animate both the head and the sources! The animated scene can also be viewed as a rendered picture sequence if you have Direct3D installed on your system; if not, you still may view a simple wireframe animation. This visualisation is very useful to verify the motion instructions and can therefore also be perfomed without actually computing the audio output data.

To start, load one of the examples and examine the simulations parameters by diving into the tree-like hierarchy. Let it run with "Project / Compute", load the result by selecting "Project / Open outputfile" and listen to it. Then start changing a few parameters to get a feeling for them. The usage of the tree-structure should be intuitive; you can change the parameters by double-clicking on them, or you may invoke the context-menu with the right mouse button. Some operations, like inserting new sources, are only possible via the context-menu.

To get familiar with 3D-Audio, do the tutorial.


The virtual room

The virtual room has a regular box-like shape. Its extent and the reflecting properties of each wall can be chosen arbtirarily. The figure illustrates the orientation of the room within the coordinate-system as well as the definition of the angles.

The reflection coefficients of the walls can be given in the range from 0.0 to 1.0, where a coefficient of 1 means total reflection a 0 total absorbtion. Thus you can omit a wall by setting its coefficient to zero. To simulate a surrounding with just a floor, set all coefficients except that of the floor to zero.

Since the programs time to finish the calculation should be finite, you can specify the reflection order to incorporate: an order of N means computing the line-of-sight wave and all waves reflected via at maximum N walls. Note that each reflection order introduces additional reflected waves from various directions, so that each of these waves has to be processed using a different impulse repsonse. Hence the simulation time dramatically increases with N! Using reflections of first order significantly increases the naturalness of the result; reflections of second order perform a little better, at the cost of about four times as much computational time. The highest order to use within finite time seems to be seven. Results really sound great, but the time for computing is about 2000 times the length of the source's sound on a modern PC...

Here is an overview of the number of reflected sound beam introduced by allowing for reflections of higher order. These beams have to computed additionally to the direct, line-of-sight beam:

Reflection order	Number of reflected beams

--------------------------------------------------------------------------------

0	0

1	6

2	24

3	62

4	128

5	230

6	376

7	574


Localization of sounds

There are a number of cues influencing and supporting our spatial perception of sounds. The actual process of spatial hearing is not yet fully understood, but these factors appear to be the most important cues:

•	Interaural delay time , the delay between a sound reaching the closer and the farther ear. This delay is zero for sources directly behind, ahead or above and reaches its maximum of about 0.63ms for a sound from the far left or right. This quantity depends primarily on the direction of the sound, but also on distance and frequency.

•	Head shadow, being the effect imposed on a sound having to pass through or around the head to reach the farther ear. The most striking effect is an attenuation, but there is also a dependency on distance and frequency of the source.

•	Frequency response of the outer ear, which is significant for frequencies above 4kHz. It is supposed to be important for determining the direction of the sound.

•	Reflections from the shoulders, which are present for frequencies below 3kHz. Also depending on the direction of the sound.

•	Head motion, which is subconsciously performed to gather information by slightly moving the head to and fro. This naturally cannot be implemented in this program.

•	Vision; we so strongly depend on out vision, that any auditory cues on a sources position is discarded when we see it.

•	Early echoes and reverberation, which are primarily a characteristic of the surrounding.

The first four mentioned cues form the so called head-related transfer function. The impact of these cues can be empirically modeled as done by this program.

Parts of the enumeration above have been taken from:

D.A. Burgess, "Techniques for Low Cost Spatial Audio", Tech Report, Georgia Institute of Technology.


The programs model of spatial perception

The most important influences of spatial perception of acoustic signals are attributed the term head-related transfer functions. These are modeled empirically within this program, represented by a set of impulse responses which have been measured by a microphone placed inside a dummy head. Since these responses strongly depend on the direction of the sound source relative to the head, a set of responses has been measured to cover most of the range of possible directions. Applying these data to a sound file, i.e. convoluting an impulse response corresponding to a certain direction with the sound data, yields a vague impression of spatial positioning of the sound. This vagueness is due to the fact that the response measurements took place inside an anechoic chamber; if you've ever been in such a place you know that acoustic perception is very confusing and odd in there. Therefore a virtual room is introduced to allow for signal reflections from the walls. These reflections supply both additional information for localisation and the substance for a more realistic impression.


Animation of the objects

Each of the, i.e. the virtual head and the sources, may be given a set of instructions to describe a motion to be performed during simulation. These movements concern both the position and the orientation of the objects. The initial state of each object is a position in the origin of the coordinate-system with an orientation along the X-axis. Any of the movements is given a length as a period of time that the motion is to last. If the time is zero, the motion will be performed in one atomic step; this option is useful for initial positioning of the objects.The following movement instructions are supported:

•	Absolute translation, which means specifying an end-point that will be reached after the given time by the object by moving along a straight line.

•	Relative translation, which means giving a speed and optionally an acceleration. The object will move according to these values for the given time.

•	Absolute rotation, which means giving an end-orientation for the object. This orientation will be reached after the given time. Note that rotation implies no change of position!

•	Relative rotation, meaning changing the orientation of the object with a given angular speed and acceleration. Note that rotation implies no change of position!

•	Turning, which means animating the object on a circular path, located in plane which is defined by an axis perpendicular to it. The center of the circle is given by a vector by projecting it on the mentioned plane.

When applied to a source all possibilities, except instructions on rotation, can be chosen such that the orientation of a source will always point towards the virtual head during the motion. Normally, a translation leaves the orientation unchanged. Changing of the orientation naturally only affects the simulation if the source has a non-uniform radiation pattern. This can be controlled by means of the source's emission factor.

Note that with speed too high, more precisely when approaching the speed of sound, the computation may get somewhat unphysical!


Tutorial

This tutorial introduces you to the usage of the program and demonstrates some of its capabilities.

Two PCM-files are shipped along with this program, called "ping.pcm" and "pong.pcm". Both are the recording of a single bounce of a tabletennis ball. You might want to use other files for the tutorial, especially since more complex sounds tend to result in a more realistic rendered result.

The following tutorial is divided into the following sections:

•	Creating a new scene with the wizard (1)

•	Changing parameters of the sound source (2)

•	Animating the sound source (3)

•	Adding more sources (4)

Each of the sections contains a list of step-by-step instructions to follow. The resulting scene and thus the resulting project file is contained in the directory of 3D-Audio as project "demo?.3da" where the question mark indicates the section index as given in brackets above.


Creating a new scene with the wizard

1.	Make sure that in the submenu File / Preferences both entries Use new wizard and Use source wizard are checked.

2.	Create a new project by selecting New in the File-menu or by pressing the taskbar-button depicting a blank page. The wizard will appear to guide you through the process of setting up the basic parameters of the scene. You will be prompted by various windows for these parameters. First the new wizard will ask for generic, room and head data:

a)	Output file: Define the name of the PCM-File that will be rendered. Enter "output1.pcm"

b)	Roomsize: The dimension of the virtual room in meters. Choose a 6 x 5 x 3 m room, i.e. 6 meters in x-direction, 5 in y- and 3 in z-direction.

c)	Reflection coefficients: The reflection coefficients of the walls of the virtual room. Choose 0.7 for the walls, 0.9 for the ceiling and 0.4 for the floor.

d)	Position and orientation of the head: First position the head in the middle of the room at standing height, i.e. choose the position (3,2.5,1.8). Leave the orientation as is, which yields a head looking along the x-axis.

Now the source wizard will appear and assist you in creating one source:

e)	Source name: Enter a name to identify the source. Choose "Ball"

f)	Source file: The name of the PCM-File to associate with this source, i.e. define the sound that this source will play. Use the file "ping.pcm" within the 3D-Audio program directory. Select it by pressing the "Browse" button and choosing it in the appearing file dialog. You might as well enter just the name of the file, but this way will not automatically set up the length of the sound source to the length of the file. Note that the fully qualified name is needed for source files that are not located in the same directory as the project file! Since the project file isn't stored anywhere while creating a new one with the wizard, you need to give a fully qualified name when using the wizard!

g)	Position and orientation of the source: The position of the source within the virtual room. The orientation will automatically be chosen such that it will point towards the head. Let us choose (4,4.5,0.1) as position. The source thus will appear to the left of the the virtual head near to the floor.

3.	Now the wizard setup is complete. A window will open, containing the project data in hierarchial structure, very much like directory tree. You can later modify the projects parameters by diving into this structure and editing entries. Save the created project as "mydemo1". It should be identical to the shipped project file "demo1.3da".

4.	If DirectX3 is installed on your system, check the menu Options if it is selected for the visual display. If it is not, select "Try to use Direct3D"; the program will check if it can find it. If it can, you may need to restart the program now to allow proper use of the DirectX3-DLLs and subsequently reload the just created project.

5.	Preview the scene by selecting Project / Simulate. A window will appear to visualise the scene. This preview is mainly useful to check animated scenes; since we have no animation yet, there is not much to see. If you have chosen "ping.pcm" as source input file, the animation will be over VERY quickly. This is due to the fact that the source file is only about half a second long.

6.	Now render the sound by selecting Project / Compute. Here also the preview window will be opened and updated during calculation. One more window will appear, containing information on the progress of the computation. You may switch between the windows as you like. You may even edit the project in the project window while computation is going on. However, this demo is VERY short, so that calculation should be finished within a few seconds at maximum. You can open the rendered output file - in this case output.pcm - by selecting Project / Open outputfile or pressing the seventh button from the left in the taskbar. This may also  be done while computation is in progress. Another window with the time-domain waveform of the rendered sound will appear. If you select that window, you can listen to the result of the calculation by pressing the play button in the taskbar, or by selecting the menuitem Audio / Play. Don't forget that you will need headphones to achieve the desired result! Since the sound is quite short, select Audio / Loop or the second button from the right in the taskbar. If you now initiate playback of the sound, it will inifinitely be looped. Stop playback with Audio / Stop. Listening to the result you should be able to perceive spatial information of the sound. This is not very impressive yet, but we are going to improve now...

7.	To go on, close all windows except the project window and click here.


Changing parameters of the sound source

Listening to the result of the first calculation, you will find that

•	The source sound is too short

•	The spatial information carried by the sound is not as impressive as you had expected...

To mitigate these drawbacks, do the following:

1.	In the project window, double-click on the entry "Basic" at the very top of the window. The structure will open and display several entries that belong to "Basic". We now first want to specify a new name for the output file to avoid overwriting the result from section one. Double-click the entry "Output file"; a parameter window will open, containing a number of notebook-tabs. These tabs correspond to the various entries displayed in the project window. Change the name of the output file to "output2.pcm" and close the window. Double-click the top-level entry "Basic" once more and the tree-like structure will collapse and hide the subitems again.

2.	Now double-click on the entry "Source: Ball". The structure will open up and reveal two subitems of the source entry: Basic and Motion. The first contains further entries concerning the basic setup of the source; the latter contains entries that define the motion of the source within the virtual room. We will now concentrate on the generic parameters; to access them, double-click on the subitem "Basic". Various entries will appear that define the behaviour of the source. First we want the sound of the bouncing ball to be repeated. To achieve this, double-click the entry "Source length". A parameter window will open, containing a number of notebook-tabs. These tabs correspond to the various entries displayed in the project window. Now set the length of the source to 3 seconds and close the dialog. If the length of a source is set to be longer than the length of the file, the sound will be looped.

3.	Now select the entry "Power" in the project window hierarchy. The same window will appear once again, showing a different tab. Set the power to a value of four to increase the volume of the sound. This power is an absolute factor that the source waveform will be amplified with. When using the wizard to create a new source, the power will automatically be set to a value which yields a medium volume of the source. This initial power depends on the distance from the virtual head to the source as well as on the path-loss exponent.

4.	Finally, select the entry "Reflexion order". This value defines the maximum number of reflections that a sound emitted from the source will experience. Waves resulting from more reflections will not be considered for calculation. The more reflections you use, the more natural the result will be, but the computation time grows exponentially with the reflection order! An order of zero means that only the direct line-of-sight wave from the source will be accounted for. The default value for this is one, which yields a reasonable tradeoff between quality and computation-time. If you have set up a scene and wish more naturality, you can later increase this value. However, note that the additional reflections of higher order will change the perceived power of the signals! Set the value to two for now. Click here to find an overview of the number of reflection beams corresponding to a certain reflection order.

5.	Save the project as "mydemo2". The shipped project "demo2.3da" should contain the same.

6.	Redo calculation by selecting Project / Compute. This time the computation will take much longer than in the first section. This is due to the fact that we utilise reflections of higher order and that we extended the length of the source to three seconds.

7.	Open the rendered result by means of Project / Open outputfile and listen to it. You will find that the spatial impression is a little improved; if you use source files different than "ping.pcm" you might find more naturalness. Using more reflections is definitively a good idea in terms of quality of the result! If you have the time you should try reflection orders as high as five to seven (seven is the absolute maximum to finish calculation in finite time). BUT do not use the shipped tabletennis ball sounds for that experiment, since the results won't be too impressive. You may try some speech data instead. For an order of seven you must expect computation to take about several thousand(!) times the length of the source sound: rendering ten seconds of sound can easily take a whole night.

8.	To go on, close all windows except the project window and click here.


Animating the sound source

We now will improve the spatial impression by introducing motion. This greatly enhances the spatial perception because it enables your brain to additionally evaluate the change in the perception for estimating the position. We will make use of different types of motion to demonstrate the use of the supported motion instructions. Perform the following steps:

1.	Close all windows except the project window when continuing from section two, or reload the project from section two (either "mydemo2.3da" or the shipped "demo2.3da").

2.	Change the name of the output file to output3.pcm as described in section two, step one.

3.	Change the reflection order of the source back to one to save time. See the last section, step four. Set the length of the source to eight seconds.

4.	Open the contents of the source and subsequently open the contents of the motion entry: first double-click on "Source : Ball" and the on the appearing "Motion". The motion entry will contain a list of items (motion instructions) that define the path of motion that the source will follow during the simulation. Now the list will only contain one entry "Absolute translation". This motion instruction is used to place the source at the desired initial position as you have specified within the source wizard (see section one). You can now add further instructions to the list to define a desired motion sequence. To add an instruction, select on of the entries of the motion list and press the right mouse-button. The context menu that appears will offer you to edit the selected item (menuitem Properties), to delete it or to insert a new one; it will be placed before the current item in the list. To append an item, you need to select the "end of list" entry and insert a new item. We now will append a number of instructions to the list and edit the instructions parameters:

Select the "end of list" entry, press the right mouse-button and select "Insert" from the context menu. The new instruction will be placed at the end of the list and will be highlighted. Now select "Properties" from its context menu (Double-clicking it will show a list of further subitems: The parameters of the motion instruction). A window will open, containing the parameters of that motion instruction. These parameters include the type of motion, the parameters depending on the type and the time that this motion instruction is going to take. Moreover, you can check that the source will jump to the end-position of the motion instruction in no time; this is used for initial positioning. Finally, it may be checked that the source will be automatically directed to the head (its orientation will always point to the virtual head; the orientation of a source is only of interest when using directed emission characteristics of the source. We will not make use of that feature in the tutorial, but you can change the emission characteristic within the "Basic" entry of the source in the project window.) The following motion instructions, which can also be applied to animate the head, are supported:

•	Absolute translation: Moves the source to an absolute position within the virtual room. Leaves the orientation of the source unchanged, unless "Directed to head" is checked (see above).

•	Relative translation: Moves the source with a given speed and acceleration. Leaves the orientation of the source unchanged, unless "Directed to head" is checked (see above).

•	Absolute rotation: Rotates the orientation of the source to an absolute angular value. Leaves the position of the source unchanged.

•	Relative rotation: Rotates the orientation of the source with a given angular speed and acceleration. Leaves the position of the source unchanged.

•	Turning: Moves the source on a circular path around a given center and axis. Leaves the orientation of the source unchanged, unless "Directed to head" is checked (see above).

a)	Keep the first instruction as "Absolute Translation" (this is the default) and select the end-position as (1.5,4.5,0.1) to be reached in two seconds. Close the dialog.

b)	Repeat the step described above to append another instruction to the list and invoke its parameter window. Set the type of the motion to "Relative Translation" with a velocity of (0,-1,0) and a time of two seconds. This will lead to a position of the source after the motion at (1.5,2.5,0.1). Close the dialog.

c)	Append another motion instruction and edit its properties. Set the type to "Turning", choose the centre to be the position of the head (3,2.5,1.8) and the axis along the z-axis (0,0,1). Set the angular velocity to -0.2 - the sign gives the direction of the motion - and the motion time to 2.5 seconds. This causes the source to move on a circular path around the head with a speed of 0.2 revolutions per second for three seconds. Hence the source will describe approximately a half-circle. After this motion the source will come to rest in front of the virtual head.

5.	Save the project as "mydemo3". It should be identical to shipped "demo3.3da".

6.	Choose Project / Simulate to visualise the motion. Click the mouse within the renderer window that opens and drag the mouse-cursor to change your viewpoint. Click here to learn more about the use of keys within the renderer window to change the display and viewpoint.

7.	Compute the scene. Check the output during calculation. When you listen to the result, you should be able to clearly perceive the direction of the sound source. You will also notice that you are not able to distinguish between the turning and the linear motion for example. This not a drawback of the program but of human perception. Note also, that the settings within the tutorial are not chosen with respect to maximum listening enjoyment, but to be instructive. You may repeat the computation with higher reflection orders, but as already mentioned in the last section, the bouncing sound is not very well suited for higher order reflections. Substitute the source file with a speech PCM-File instead.

8.	To go on, close all windows except the project window and click here.


Adding more sources

Now we finally expand the scene to more than just one sound source by adding another one. Follow these steps:

1.	Revert the status of the project back to that which you saved in the last section, e.g. load the shipped "demo3.3da".

2.	Set the name of the output file to output4.pcm.

3.	Within the project window you can add new sources very much the same way you can add new motion instruction as described in the last section, step four. Select the "end of sources" entry and press the right mouse-button. Select "Insert" in the context menu. A new source is added and the source wizard guides you through setting up the basic parameters of the new source. If you disabled the wizard (File / Preferences), you will have to make all settings by editing the directory-like view in the project window. For now is assumed that the wizard is active:

a)	Source name: Enter a name to identify the new source. Could be "Ball 2"

f)	Source file: The name of the PCM-File to associate with this source, i.e. define the sound that this source will play. Use the file "pong.pcm" within the 3D-Audio program directory. This sound differs slightly from "ping.pcm".

g)	Position and orientation of the source: The position of the source within the virtual room. The orientation will automatically be chosen such that it will point towards the head. Let us choose (2,1.5,0.1) as position. The source thus will appear behind the virtual head, to the right and near to the floor.

4.	Within the project window, use the hierarchial display to find the entry "Starttime" which resides in "Basic" within the new source "Source: Ball 2". Change the value to 0.3 seconds. This causes the new source to start after 0.3 seconds so that there will be a little offset between the two bouncing sounds. Additionally change the length of the source sound to eight seconds.

5.	The newly created source is not animated yet; you might do this to practise the usage of the program. Save your work! It should be identical to shipped "demo4.3da".

6.	Choose Project / Simulate to view the altered scenery.

7.	Compute the result and listen to it. You will see that you can easily distinguish the two sources.


NT 4.0 technical note

•	There seems to be a problem with the screensaver and the Direct3D output in Window NT 4.0. If you've installed the service pack 3, make sure to turn off the screensaver. If you do not turn it off, 3D-Audio will lock if the screensaver appears!


Distribution status

You may freely distribute the unregistered version of 3D-Audio, provided that all the files are included and are unmodified and that no files have been added to the package. Please distribute it by copying the original zip file. You may not ask any money for the distribution.

If you want to put this component on a freeware/shareware CD-ROM or other compilation, please contact us before doing so, to be sure that you are not including old or incomplete stuff in the compilation. We would also appreciate it if we could get a free copy of the CD-ROM.


Kagi registration service

Using Kagi registration service offers these advantages:

•	Internet online registration via Kagi for users with a credit card. Go to the online registration!

•	Virtually any payment method is accepted: Cash, Check, Money order, Credit cards, Invoice.

•	Credit card numbers will only appear encrypted within the registration order, increasing the security of the transaction.

•	You can submit the order via e-mail, fax of mail.

•	Kagi is located in USA, so it is best for all users out of Europe. Residents in Europe should pay directly to us. This will speed up the registration process!

Click here to start the Kagi registration program.


Revision history

V0.99	8.6.1997

- Initial release

V0.99b	19.6.1997

- fewer shareware restrictions: the program will not stop working after 7 days!

- 'new wizard' and 'source wizard' added for simply setup the basic parameters for the head and the source

- help extended

- demonstration tutorial with four demo setups added

- several small bugfixes

Official release V1.0 	25.7.1997

- new render algorithm; about 300% faster than before

- support for wav-files as sources

- more keyboard handling for faster processing

- help extended

- smoother thread shutdown

- several bugfixes

- new simple registration via KAGI

V1.0a	09.09.1997

- registered users can get two more sets of head-responses for free:

•	The diffuse set: the head responses are manupulated by a small reverb effect

•	The original set: these are the original recorded ony small truncated head responses for best audio results.

- sligth improvment of the render algorithm

- DirectX3 upgrade bug solved

- save pcm-file as wav-file should work now

- playing wav files should not crash any more

- several other bugfixes

- help extended

- internet online registration via KAGI


Planned features

Here are some of the planned features for the next versions of 3D-Audio. If you miss a feature, feel free to contact us!

Version 2.0

Audio

•	converter between different sound formats, e.g. stereo<->mono and a samplerate converter

3D-renderer

•	improved renderer

•	direct support for wav files (so you don't have to convert the output file into wav)

•	audio - preview with DirectSound3D (but this will sound different from the renderer output... unresolved problem)

•	server for DirectX streaming (known before as ActiveMovie)

Scene construction

•	movement construction within the preview window

•	more flexible movement paths like splines etc.

•	timeline

Plugin for other programs

•	3D-Audio will be a DirectX-streaming client for use as plugin in other 3rd party programs e.g. soundforge