aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Revert "Fix B-Format rotation"Chris Robinson2015-08-241-3/+3
| | | | | | | This reverts commit 7ffb9b3056ab280d5d9408fd023f3cfb370ed103. It was behaving as appropriate before (orienting left did pan it left for the listener), I was apparently just misinterpreting the matrix.
* Fix B-Format rotationChris Robinson2015-08-231-3/+3
| | | | | | | The rotation erroneously specified the orientation of the source relative to the sound field, whereas it should be the orientation of the sound field *and* source relative to the listener. So now when the source is oriented left, the front of the sound field is to the left of the listener.
* Minor reformatingChris Robinson2015-08-221-31/+32
|
* Don't explicitly store first-order coefficientsChris Robinson2015-08-182-65/+117
| | | | | | | It seems a simple scaling on the coefficients will allow first-order content to work with second- and third-order coefficients, although obviously not with any improved locality. That may be something to look into for the future, but this is good enough for now.
* Set the WAVEFORMATEX cbSize field for mmdevapi captureChris Robinson2015-08-181-0/+1
|
* Define MixHrtf directly instead of through a SUFFIX macroChris Robinson2015-08-154-19/+6
|
* Fix handling of PulseAudio devices that have the same descriptionChris Robinson2015-08-141-10/+44
|
* Also recognize "DirectSound" and "MMSYSTEM" on WindowsChris Robinson2015-08-141-3/+5
|
* Recognize "DirectSound3D" as a device name on WindowsChris Robinson2015-08-131-1/+8
|
* Wait for the OpenSL buffer queue to empty when stoppingChris Robinson2015-08-131-1/+10
|
* Check for pthread_*_np functions in pthread_np.h when it existsChris Robinson2015-08-131-4/+10
|
* Merge pull request #15 from aaronmjacobs/masterkcat2015-08-121-31/+40
|\ | | | | Make installation of headers and libraries optional
| * Make installation of headers and libraries optionalAaron Jacobs2015-08-121-31/+40
|/
* Allow specifying ALC_DONT_CARE_SOFT for ALC_HRTF_SOFTChris Robinson2015-07-062-18/+31
| | | | | ALC_FALSE now indicates explicitly no HRTF mixing, while ALC_DONT_CARE_SOFT is autodetect.
* Change source radius behaviorChris Robinson2015-07-051-19/+33
| | | | | | | | | For sources with a non-0 radius: When distance <= radius, factor = distance/radius*0.5 When distance > radius, factor = 1 - asinf(radius/distance)/PI Also, avoid using Position after calculating the localized direction and distance.
* Update a couple commentsChris Robinson2015-07-043-8/+6
|
* Check for duplicate device names in the mmdevapi backendChris Robinson2015-06-301-1/+27
|
* Use the lockless ringbuffer for mmdevapi captureChris Robinson2015-06-301-8/+9
| | | | | The backend's capture funcs are already called while under a lock, so multiple threads shouldn't be able to read from it at once.
* Double check the mmdevapi capture formatChris Robinson2015-06-071-1/+23
| | | | | This isn't a real solution, but it should get IAudioClient_IsFormatSupported to stop failing.
* Don't define struct timespec with VS2015Chris Robinson2015-06-071-1/+1
|
* Check for snprintf in stdio.hChris Robinson2015-06-071-1/+1
| | | | This works better for VS2015, which adds support for the function.
* Add a macro to simplify allocating and constructing an objectChris Robinson2015-05-1812-117/+29
|
* Convert the solaris backend to the new APIChris Robinson2015-05-174-81/+135
|
* Add a method to reset the deviceChris Robinson2015-05-162-0/+42
| | | | | | | This basically acts as if the app created a new context with the specified attributes (causing the device to reset with new parameters), then immediately delete it. Existing contexts remain undisturbed, except for a temporary pause while the device output is reconfigured.
* Add a few more HRTF status valuesChris Robinson2015-05-162-4/+23
| | | | | | | | | DISABLED - Generic disabled status ENABLED - Generic enabled status DENIED - Not allowed (user has configured HRTF to be off) REQUIRED - Forced (user has forced HRTF to be used) HEADPHONES_DETECTED - Enabled because headphones were detected UNSUPPORTED_FORMAT - Device format is not compatible with available filters
* Add an HRTF status queryChris Robinson2015-05-152-4/+28
| | | | | This can report the status of HRTF, specifying if it's enabled or not and why (currently only reports unsupported formats, but this may be extended).
* Merge pull request #11 from alexxvk/masterkcat2015-05-031-0/+1
|\ | | | | Fix mingw build
| * Fix mingw64 buildalexxvk2015-05-021-0/+1
|/
* Fix EFX_REVERB_PRESET_DRIVING_COMMENTATORChris Robinson2015-04-041-1/+1
|
* Fix static_assert when __COUNTER__ isn't availableChris Robinson2015-03-021-1/+3
|
* Don't assert the increment value in the copy32 resamplerChris Robinson2015-02-151-2/+1
|
* Fix the HRTF B-Format decoder's W coefficientChris Robinson2015-02-141-18/+5
| | | | | And limit it to first-order again, since there will likely need to be extra scalings applied.
* Cheange some more unnecessarily small coefficients to 0Chris Robinson2015-02-111-6/+6
|
* Add an option for "basic" HRTF renderingChris Robinson2015-02-113-9/+36
| | | | | | | | | | | | | | | | | This method is intended to help development by easily testing the quality of the B-Format encode and B-Format-to-HRTF decode. When used with HRTF, all sources are renderer using the virtual B-Format output, rather than just B-Format sources. Despite the CPU cost savings (only four channels need to be filtered with HRTF, while sources all render normally), the spatial acuity offered by the B-Format output is pretty poor since it's only first-order ambisonics, so "full" HRTF rendering is definitely preferred. It's /possible/ for some systems to be edge cases that prefer the CPU cost savings provided by basic over the sharper localization provided by full, and you do still get 3D positional cues, but this is unlikely to be an actual use- case in practice.
* Calculate HRTF coefficients for all B-Format channels at onceChris Robinson2015-02-103-34/+72
| | | | | | It's possible to calculate HRTF coefficients for full third-order ambisonics now, but it's still not possible to use them here without upmixing first-order content.
* Use a single statement to declare the buffer format channel mapsChris Robinson2015-02-101-14/+9
|
* Pass the (FuMa) channel number to GetBFormatHrtfCoeffsChris Robinson2015-02-103-10/+10
|
* Correct conversion from polar to cartesian coords for HRTFChris Robinson2015-02-101-3/+3
| | | | | A functional no-op (cos(a) == cos(-a), -sin(a) == sin(-a)), but Ambisonics expects the azimuth angle to go counter-clockwise.
* Use B-Format for HRTF's virtual output formatChris Robinson2015-02-094-33/+97
| | | | | | | | This adds the ability to directly decode B-Format with HRTF, though only first- order (WXYZ) for now. Second- and third-order would be easilly doable, however we'd need to be able to up-mix first-order content (from the BFORMAT2D and BFORMAT3D buffer formats) since it would be inappropriate to decode lower-order content with a higher-order decoder.
* Properly handle a mono output buffer with the MIDI synthsChris Robinson2015-02-095-17/+19
|
* Add a comment detailing how the HRTF channel buffer is set upChris Robinson2015-02-091-19/+45
|
* Make sure the BS2B filter is freed if HRTF is enabledChris Robinson2015-02-091-0/+4
|
* Move HRTF params and state closer togetherChris Robinson2015-02-094-18/+18
|
* Add a note to the JACK backend about a (minor) race conditionChris Robinson2015-02-071-0/+14
|
* Fix some ringbuffer function commentsChris Robinson2015-02-071-4/+4
|
* Clean up another vector iterator loopChris Robinson2015-02-071-12/+12
|
* Avoid tracing wide-char stringsChris Robinson2015-02-072-27/+43
| | | | | | Because on Windows, traced strings are written to a char string, which causes UTF-16 strings to be converted to a narrow (non-UTF-8) encoding, potentially losing characters.
* Avoid unnecessary uses of ExchangeInt/PtrChris Robinson2015-02-044-15/+23
|
* Avoid unnecessary ExchangeInt usesChris Robinson2015-02-041-2/+2
|
* Try the JACK backend before PulseAudioChris Robinson2015-02-031-3/+3
| | | | | The backend will not spawn a server by default, so PulseAudio will still be preferred as long as a JACK server isn't already running.