aboutsummaryrefslogtreecommitdiffstats
path: root/utils
Commit message (Collapse)AuthorAgeFilesLines
* Add options to encode 3- and 4-channel UHJ to uhjencoderChris Robinson2022-02-041-19/+71
| | | | | | | The generated files won't play correctly if the player doesn't know they're 3- and 4-channel UHJ (the third and fourth channels must be ignored, or decoded, for playback). This is largely just for completion's sake, just in case someone has a use for it.
* Rename Sqrt1_2 for consistencyChris Robinson2022-02-011-2/+2
|
* Remove math_defs.hChris Robinson2022-01-271-47/+48
|
* Get rid of MathDefsChris Robinson2022-01-271-1/+2
|
* Add an ambi-format option for ACN ordering and FuMa scalingChris Robinson2022-01-121-1/+2
|
* Use the deprecated enum for older Qt versionsChris Robinson2022-01-061-0/+4
|
* Avoid a deprecated QString enumChris Robinson2022-01-051-1/+1
|
* Add a third-order ambisonic decoder for HRTFChris Robinson2022-01-051-5/+4
| | | | | Using the 20-channel dodecahedron, seems to be good enough to handle 16-channel third-order ambisonics.
* Add the PipeWire config option to alsoft-configChris Robinson2021-12-252-0/+33
|
* Slight update to the UHJ coefficientsChris Robinson2021-11-282-34/+34
| | | | | | | The extended precision of the encoder's 0.6512*X term was guesswork, with no real basis for it. Switch back to the original value until something better actually comes up. Also updates the decoder to account for the change in the encoder.
* Recognize PipeWire in alsoft-configChris Robinson2021-11-261-0/+3
|
* Slightly improve logging on WindowsChris Robinson2021-11-211-64/+5
| | | | | The characters won't display properly if the system codepage isn't UTF-8, but at least it shouldn't cut the line off prematurely.
* Update alsoft-configChris Robinson2021-11-112-17/+49
|
* Remove some lingering mentions of surround51rearChris Robinson2021-10-211-2/+3
|
* Use a higher quality all-pass for the UHJ utilsChris Robinson2021-07-302-8/+17
|
* Add a utility to encode audio files to UHJChris Robinson2021-07-091-0/+454
|
* Fix UHJ encoding/decoding factorsChris Robinson2021-04-111-1/+3
| | | | | | | | | | | Classic B-Format uses scaling factors W=1, X=sqrt(2), Y=sqrt(2), and Z=sqrt(2), which is +3dB louder than FuMa. The base factors are designed assuming classic scaling, so encoding a 0dBFS FuMa signal without accounting for this would result in the UHJ signal peaking at about -3dBFS. Similarly, decoding UHJ to FuMa B-Format would be +3dB louder than intended. So encoding needs to implicitly boost the signal by +3dB, and decoding needs to attenuate by -3dB.
* Remove some unnecessary includesChris Robinson2021-03-281-6/+0
|
* Move the UHJ phase shifter to a common headerChris Robinson2021-03-281-196/+31
|
* Add an option to change the UHJ decoder methodChris Robinson2021-03-261-27/+50
| | | | | | | | | | | | For 2-channel UHJ, two decoding equations are provided in the original paper. The alternative one is most often referenced for 2-channel UHJ decoding, but the original/general one can also be used by assuming T is fully attenuated (which the format allows for, as T can be variably attenuated by a factor between 0 and 1 to deal with an imperfect transmission medium). Neither method can be perfect for 2-channel UHJ, it's irrevocably lossy to the original source, but my subjective testing indicates the general equation produces less audibly errant results.
* Fix a comment typoChris Robinson2021-03-241-2/+2
|
* Update the UHJ decoding coefficientsChris Robinson2021-03-241-60/+66
|
* Add support for decoding 3- and 4-channel UHJ audioChris Robinson2021-03-211-32/+185
| | | | | | | There are no known file formats intended to support 3- and 4-channel UHJ, but it is possible to store them in various audio files when a player/decoder is aware of what it's dealing with. So there's no reason not to have it as an option.
* Don't assume two input channels in uhjdecoderChris Robinson2021-03-211-1/+1
|
* Add a utility to decode UHJ sound files to AMBChris Robinson2021-03-211-0/+515
| | | | | | Currently only supports 2-channel UHJ, and the produced .amb files shouldn't be played as normal B-Format (decoded 2-channel UHJ needs to use different shelf filters).
* Add missing includeChris Robinson2021-02-161-0/+1
|
* Avoid a deprecated functionChris Robinson2020-11-131-10/+10
|
* Print the number of used measurements in sofa-infoChris Robinson2020-10-071-1/+9
|
* Avoid using a deprecated functionChris Robinson2020-08-311-4/+3
|
* Avoid allocating for each HRIR reconstructionChris Robinson2020-08-141-9/+9
|
* Simplify StrSubst in makemhrChris Robinson2020-08-131-36/+27
|
* Improve handling main() with UTF-8 args on WindowsChris Robinson2020-08-123-5/+4
|
* Add the jack/connect-ports option to alsoft-configChris Robinson2020-08-052-1/+20
|
* Apply simulated HRIR occlusion in the frequency domainChris Robinson2020-06-211-50/+59
|
* Synthesize missing elevations in the frequency domainChris Robinson2020-06-211-141/+147
| | | | | | This should help avoid destructive phase interference. The occlusion low-pass filter is still applied in the time domain due to no clear topology (cutoff frequency, slope, bandwidth, etc).
* Use multiple threads for magnitude calculationsChris Robinson2020-06-193-46/+107
| | | | Also allow user-declarable thread count.
* Avoid blending multiple IRs for the -90 elevation IRChris Robinson2020-06-191-33/+27
|
* Calculate the HRIR onsets and magnitudes separately from loadingChris Robinson2020-06-171-21/+82
| | | | | This should help improve memory use a bit since the SOFA file can be unloaded before allocating some temp buffers for onset detection and FFT calculation.
* Add a makemhr option to use the farthest field onlyChris Robinson2020-06-171-8/+30
| | | | | All fields are used for equalization, but only the farthest field is resampled, reconstructed, normalized, and written to the mhr.
* Resample HRIRs after equalizationChris Robinson2020-06-171-93/+93
|
* Avoid reinitializing the resampler with each HRIRChris Robinson2020-06-171-10/+11
|
* Resample HRTFs in the frequency domain in makemhrChris Robinson2020-06-171-29/+93
| | | | | | | | | | | | This should produce far better results given it works directly on the frequency response magnitudes prior to phase reconstruction, as it doesn't deal with a linear phase filter on a truncated time-domain response (with the result also getting truncated in both direction). The in-library on-load HRTF resampler still uses the linear filter due to its relative performance and simplicity benefits. It's good enough as a backup, though users with custom HRTFs would benefit from resampling when creating the mhr (adjusting its window size as appropriate/desired).
* Print the synthesized elevations' azimuth countsChris Robinson2020-06-161-2/+4
|
* Print why a sofa file couldn't be openedChris Robinson2020-05-211-1/+2
|
* Fix installing alsoft-configChris Robinson2020-04-151-1/+9
|
* Combine utility target installsChris Robinson2020-04-141-7/+0
|
* Add missing <cstdarg>ArthurSonzogni2020-04-102-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | OpenAL-Soft fails to compile on some GCC version: https://travis-ci.com/github/ArthurSonzogni/smk/jobs/318304162 It has regressed likely after: https://github.com/kcat/openal-soft/commit/c83609277bed4be4ef40ed306bf2c57fefa19519 va_start is defined in: - <stdarg.h> - <cstdarg> The repository is using it from: - al/error.cpp - al/filter.cpp - alc/alu.cpp - alc/helpers.cpp - common/alexcpt.cpp - utils/makemhr/loaddef.cpp - utils/openal-info.c This patch is adding its definition in the files missing it: - common/alexcpt.cpp - utils/makemhr/loaddef.cpp - utils/openal-info.c Bug: https://travis-ci.com/github/ArthurSonzogni/smk/jobs/318304162
* Require Qt5 for alsoft-configChris Robinson2020-04-051-49/+17
|
* Update the makemhr utility and default HRTFChris Robinson2020-02-111-17/+13
|
* Scale delays when exceeding the max for generated mhr filesChris Robinson2020-02-101-15/+35
|