diff options
Diffstat (limited to 'hrtf.txt')
-rw-r--r-- | hrtf.txt | 74 |
1 files changed, 0 insertions, 74 deletions
diff --git a/hrtf.txt b/hrtf.txt deleted file mode 100644 index 37a329d2..00000000 --- a/hrtf.txt +++ /dev/null @@ -1,74 +0,0 @@ -HRTF Support -============ - -Starting with OpenAL Soft 1.14, HRTFs can be used to enable enhanced -spatialization for both 3D (mono) and multi-channel sources, when used with -headphones/stereo output. This can be enabled using the 'hrtf' config option. - -For multi-channel sources this creates a virtual speaker effect, making it -sound as if speakers provide a discrete position for each channel around the -listener. For mono sources this provides much more versatility in the perceived -placement of sounds, making it seem as though they are coming from all around, -including above and below the listener, instead of just to the front, back, and -sides. - -The default data set is based on the KEMAR HRTF data provided by MIT, which can -be found at <http://sound.media.mit.edu/resources/KEMAR.html>. It's only -available when using 44100hz or 48000hz playback. - - -Custom HRTF Data Sets -===================== - -OpenAL Soft also provides an option to use user-specified data sets, in -addition to or in place of the default set. This allows users to provide their -own data sets, which could be better suited for their heads, or to work with -stereo speakers instead of headphones, or to support more playback sample -rates, for example. - -The file format is specified below. It uses little-endian byte order. - -== -ALchar magic[8] = "MinPHR01"; -ALuint sampleRate; - -ALubyte hrirSize; /* Can be 8 to 128 in steps of 8. */ -ALubyte evCount; /* Can be 5 to 128. */ - -ALubyte azCount[evCount]; /* Each can be 1 to 128. */ - -/* NOTE: hrirCount is the sum of all azCounts */ -ALshort coefficients[hrirCount][hrirSize]; -ALubyte delays[hrirCount]; /* Each can be 0 to 63. */ -== - -The data is described as thus: - -The file first starts with the 8-byte marker, "MinPHR01", to identify it as an -HRTF data set. This is followed by an unsigned 32-bit integer, specifying the -sample rate the data set is designed for (OpenAL Soft will not use it if the -output device's playback rate doesn't match). - -Afterward, an unsigned 8-bit integer specifies how many sample points (or -finite impulse response filter coefficients) make up each HRIR. - -The following unsigned 8-bit integer specifies the number of elevations used -by the data set. The elevations start at the bottom (-90 degrees), and -increment upwards. Following this is an array of unsigned 8-bit integers, one -for each elevation which specifies the number of azimuths (and thus HRIRs) that -make up each elevation. Azimuths start clockwise from the front, constructing -a full circle for the left ear only. The right ear uses the same HRIRs but in -reverse (ie, left = angle, right = 360-angle). - -The actual coefficients follow. Each coefficient is a signed 16-bit sample, -with each HRIR being a consecutive number of sample points. The HRIRs must be -minimum-phase. This allows the use of a smaller filter length, reducing -computation. For reference, the built-in data set uses a 32-point filter while -even the smallest data set provided by MIT used a 128-sample filter (a 4x -reduction by applying minimum-phase reconstruction). Theoretically, one could -further reduce the minimum-phase version down to a 16-point filter with only a -small reduction in quality. - -After the coefficients is an array of unsigned 8-bit delay values, one for -each HRIR. This is the propagation delay (in samples) a signal must wait before -being convolved with the corresponding minimum-phase HRIR filter. |