Spatial Audio Simulation System

Audio3D is a program to simulate simple virtual audio environments. Multiple monophonic sound sources can be placed in a virtual room and are combined using room response and head-related transfer functions into a real-time binaural audio signal that can be listened to over headphones. Audio3D also supports a head-tracker such that the sound sources appear at a constant room position even if the header orientation changes. A server version Audio3DServer can be controlled by external clients.

Download |  Operation |  Server |  Hardware |  Feedback |  Copyright

Download and Installation

Audio3D and Audio3DServer are only available for Windows PCs by anonymous FTP from:

Download the file called audio3dddd.exe into a temporary directory. Then find and run the file to unpack and install.

Release Notes

Version 1.60

Version 1.53

Version 1.52

Version 1.47

Version 1.46

Version 1.45

Version 1.44

Version 1.42

Version 1.41

Version 1.40

Version 1.30

Audio3D Operation

Full details of operation of Audio3D can be found in the Program Documentation.

Configuration File

Example Configuration file

Program Menu

Open Configuration
Opens a new configuration, replacing current
Opens a new HRIR source file, replacing any specified in config file
Open Audio
Opens a new audio file to replace any audio file specified in the [source] section of the config file.
Save Captured Audio
Saves the generated and captured audio as stereo file.
Audio Play
Starts replay of all sound sources
Audio Pause
Pauses replay of all sound sources
Audio Capture
Toggles audio capture
Audio Direct Path
Toggles inclusion of direct path in synthesis
Audio Reflections
Toggles inclusion of early reflections in synthesis
Audio Reverberation
Toggles inclusion of room reverberation in synthesis
Audio Devices
Presents dialog to allow selection of the audio capture device and the audio rendering device.
View Head Tracker
Toggles on and off operation of the head tracker (if connected).
Head Tracker Reset
Resets head tracker to 0 degrees azimuth and 0 degrees elevation.

Program Keys

Page Up
Rotates listener head anticlockwise
Page Down
Rotates listener head clockwise
Up arrow
Increases level of sources marked with 'level:live' by 1dB
Down arrow
Decreases level of sources marked with 'level:live' by 1dB
Space bar
Toggles replay on and off.

Audio3DServer Operation

The Audio3DServer program has the same audio processing capability as Audio3D but is controlled from external clients rather than through configuration files and a graphical user interface. Clients communicate with the server using a simple API using the standard HTTP protocol. Effectively the server acts as a primitive web server, and clients can be written in any language that supports HTTP calls. Demonstration code is supplied for clients written in JavaScript running within a web browser and from MATLAB.

The first time Audio3DServer is used, it should be configured through the Edit | Settings menu item. You can then select the audio rendering device and the HRIR data file. Once settings have been saved, restart the program to make them active.

Audio3DServer API

By default the server can be found at the URL http://localhost:8080/.

/Return current status of server
/resetReset all parameters and sources to initial values
/setSet various server properties
/getGet source status and location
/statusGet current values of all server properties
/sourceSpecify a sound source
/playStart sound sources playing
/pausePause playing sound sources
/downloadDownload captured audio
/trackerDownload captured head tracker data
/equalisationUpload a headphone equalisation impulse response (as WAV file)
/reverberationUpload a room reverberation impulse response (as WAV file)

The server properties are as follows:

render_deviceAudio device nameRead only
mixer_rateAudio sampling rateRead only
mixer_levelAudio reference mixer level (dB)Read only
reverb_timeReverberation time (s)Read only
hrir_filenameHRIR filenameRead only
hrir_max_pcaHRIR PCA mode #coefficientsRead only
hrir_pcaHRIR PCA mode #used coefficientsRead only
room_widthRoom width (m)Read/write
room_depthRoom depth (m)Read/write
room_heightRoom height (m)Read/write
reflect_wallWall reflection coefficientRead/write
reflect_floorFloor reflection coefficientRead/write
reflect_ceilingCeiling reflection coefficientRead/write
gain_0125Reflection coefficient at 125HzRead/write
gain_0250Reflection coefficient at 250HzRead/write
gain_0500Reflection coefficient at 500HzRead/write
gain_1000Reflection coefficient at 1000HzRead/write
gain_2000Reflection coefficient at 2000HzRead/write
gain_4000Reflection coefficient at 4000HzRead/write
gain_8000Reflection coefficient at 5000HzRead/write
listener_xListener position X (m)Read/write
listener_yListener position Y (m)Read/write
listener_zListener position Z (m)Read/write
listener_azimuthListener azimuth (rad)Read/write
listener_elevationListener elevation (rad)Read/write
head_trackerHeader tracker availableRead only
head_trackingHead tracking enabledRead/write
head_track_azimuthHead tracker reset azimuth (rad)Write
head_track_elevationHead tracker reset elevation (rad)Write
captureAudio and head tracker capture enabledRead/write
equalisation_irHeadphone equalisation IR lengthRead only
reverberation_irRoom reverberation impulse response lengthRead only

Note that use of reflection coefficients and frequency-dependent gains are mutually exclusive. Only one method may be chosen at a time.

The following source properties may be set:

source_indexSource number0 .. 31
source_levelSource level (dB)-100 .. mixer_level or 'fix'
source_xSource position X (m)0 .. room_width or 'none'
source_ySource position Y (m)0 .. room_depth or 'none'
source_zSource position Z (m)0 .. room_height or 'none'
source_loopSource looping0/1
source_resetSource reset to sample 01

If a source level is given the RMS of the signal is adjusted to make it play at that level with respect to the mixer level. Use a setting of 'fix' to leave the source level unchanged. To create a diffuse source with no location, set the x,y,z co-ordinates to 'none'.

To upload audio data, use the HTTP file upload mechanism with data stored in WAV format.

The following source properties may be got: (send source_index to get details of one source)

statusReplay status
locationSource location

For the "Play" and "Pause" commands, include a variable "select" which contains a bit-map of which sources are to be played/paused. Source 0 = bit 20, source 1 = bit 21, etc. For example, to play source 0, set select=1. To play sources 0 and 1 together, set select=3.


Documentation and example scripts for the MATLAB API may be found in the installation matlab folder.

Hardware recommendations

The program supports the following Head Trackers:


Please send suggestions for improvements and reports of program faults to

Please note that we are unable to provide help with the use of this program.


Audio3D is not public domain software, its intellectual property is owned by Mark Huckvale, University College London. However Audio3D may be used and copied without charge as long as the program and help file remain unmodified and continue to carry this copyright notice. Please contact the author for other licensing arrangements. Audio3D carries no warranty of any kind, you use it at your own risk.

Some other pages on our site you may enjoy:

CLEAR - Centre for Law-Enforcement Audio Research

The CLEAR project aims to create a centre of excellence in tools and techniques for the cleaning of poor-quality audio recordings of speech. More information.

ESYNTH - Harmonic analysis/synthesis teaching tool

ESynth is a free program designed to explain the harmonic analysis and synthesis of signals. With ESynth you can create signals by adding together individual sinusoidal waveforms (sinewaves) and study the resulting waveform and spectrum. You can also perform an analysis of an input waveform, to see how a given sound can be represented in terms of a sum of sinewaves. More information.