Chris Robinson
ce6076091b
Release 1.18.2
2017-09-24 06:41:50 -07:00
Chris Robinson
dba8166b67
Update ChangeLog with JACK fix
2017-09-23 15:12:50 -07:00
Chris Robinson
4fa9c8e4b4
Restore the original JACK message callback when possible
2017-09-23 15:12:38 -07:00
Chris Robinson
912c0cc9eb
Update ChangeLog
2017-09-22 07:18:31 -07:00
Daniel Scharrer
9a67aa8530
Fix build on Gentoo FreeBSD with freebsd-lib 9.1
2017-09-22 07:18:14 -07:00
Chris Robinson
45e757ea12
Update ChangeLog
2017-09-19 10:16:53 -07:00
Chris Robinson
026f96c2a3
Manually save and restore the FPU rounding mode on Windows
...
Apparently there is a bug with at least MinGW-W64 where fegetenv and fesetenv
do not properly save and restore the FPU rounding mode, resulting in the
rounding mode remaining as round-to-zero after certain function calls. I do not
know if this also affects MSVC, but better safe than sorry for now.
2017-09-19 10:05:41 -07:00
Chris Robinson
631624fa58
Always link to ossaudio when found
2017-09-19 10:05:41 -07:00
Chris Robinson
51e11fdb9c
Handle libossaudio as an optional OSS library
2017-09-19 10:05:41 -07:00
Chris Robinson
eaf3b94143
Add a check for pthread_setname_np with three parameters
...
As found in NetBSD.
2017-09-19 10:05:41 -07:00
Chris Robinson
84eca96dad
Don't hide -msse and -mfpu=neon checks behind a not-msvc check
...
Apparently Clang gets reported as being MSVC on Windows, but still needs the
GCC switches to enable SSE code generation.
2017-09-19 10:05:41 -07:00
Chris Robinson
bf9c36408a
Release 1.18.1
2017-07-29 22:09:21 -07:00
Chris Robinson
12db67f548
Cleanup output write functions
2017-07-27 19:07:02 -07:00
Chris Robinson
e25ba747e6
Remove unused macros
2017-07-25 17:42:16 -07:00
Chris Robinson
11b44d29e6
Update default HRTFs
2017-07-25 17:11:44 -07:00
Chris Robinson
75841642bf
Update makehrtf to use a larger FFT by default
...
Also fixes DC offset removal and increases the max IR size.
2017-07-25 16:17:46 -07:00
Chris Robinson
1ab082caaf
Update ChangeLog with OSS enumeration fix
2017-07-23 22:10:13 -07:00
Chris Robinson
82a990e08e
Downgrade some ERRs to TRACEs
...
These don't exist outside OSSv4, e.g. with OSS/Free, padsp, or aoss, so no need
to be concerned.
2017-07-23 16:43:39 -07:00
Chris Robinson
5ab4e584ee
Make sure OSS device files exist before adding them
2017-07-23 16:38:54 -07:00
Chris Robinson
4ec67e6226
Add missing include for std::array
2017-07-23 00:18:32 -07:00
Chris Robinson
21b71b2fd2
Update ChangeLog
2017-07-19 18:54:12 -07:00
Chris Robinson
f91445029d
Fix default effect initialization
2017-07-19 18:26:46 -07:00
Chris Robinson
fea74124c8
Add an all-pass filter that replicates the band splitter's phase shift
2017-07-19 02:48:01 -07:00
Chris Robinson
0135ddc2e5
Scale the source volume by +3dB for a full spread
...
This effectively turns a full spread source into an ambient response,
preventing such sources from being unexpectedly quiet.
2017-07-18 22:15:32 -07:00
Chris Robinson
5f7268c0cc
Add a 5.1 preset that excludes the front-center speaker
...
On some speaker setups, the front-center speaker is not designed for full-range
content and should be used exclusively for dialog. Consequently it should not
be used for positional sounds, only the dedicated dialog effect.
2017-07-18 20:30:45 -07:00
Chris Robinson
c484935542
Apply the output buffer offset before writing to it
2017-07-15 23:13:08 -07:00
Chris Robinson
ff696bc1fe
Set the float PCM GUID for wave files only when outputting float
2017-07-15 01:45:48 -07:00
Chris Robinson
8fa3f6da64
Add the default auxiliary slot to the active slot array
2017-07-13 23:13:02 -07:00
Chris Robinson
249afde5f9
Initialize the default effect after device update
2017-07-13 22:35:37 -07:00
Chris Robinson
a535169bbd
Use macros to set and restore the mixer FPU mode
2017-07-13 22:30:39 -07:00
Chris Robinson
22d77b87a3
Store the default effect slot in the context
2017-07-13 21:44:25 -07:00
Chris Robinson
67ab9ec466
Don't trace for every GetDriverIndexForName call
2017-07-11 22:43:22 -07:00
Chris Robinson
0da55fd912
Trace a version for the router
2017-07-11 00:43:15 -07:00
Chris Robinson
5048322fff
Update alffplay's command line message
2017-07-11 00:38:52 -07:00
Chris Robinson
f313f9c117
Rename the OpenAL target if also building the router
...
This is rather ugly, but it's necessary to get a proper export configuration.
The issue was that the main OpenAL target library name is set to soft_oal when
the router is being built, which is incorrect for the exported config library.
Exporting the router would have the incorrect name of OpenAL::Router.
So this change has the router use the OpenAL target name when it's built, which
is good since it will have the standard OpenAL lib name for apps to link to and
get the OpenAL::OpenAL export name. The main library's target name is changed
in this case to avoid conflicts.
2017-07-10 01:57:22 -07:00
Chris Robinson
d6326c1791
Generate the def and lib files from the router when built
2017-07-09 23:14:31 -07:00
Chris Robinson
d050af7eeb
Reorganize some Windows-only CMake commands
2017-07-09 22:19:34 -07:00
Chris Robinson
2be4c93f9f
Use a macro to add backend include dirs
2017-07-08 22:58:16 -07:00
Chris Robinson
09826cc684
Set the proper ldflags for the router
2017-07-07 18:48:19 -07:00
Chris Robinson
e4e240fa9b
Support ALC_EXT_thread_local_context in the router
...
Note that a given context's device must also support the extension to work. The
router's support simply lets a driver's capabilities through.
2017-07-07 18:41:03 -07:00
Chris Robinson
6be752a9b1
Add methods for thread-local contexts to the router
2017-07-07 18:33:54 -07:00
Chris Robinson
faefa1d554
Revert "Try all drivers for an unknown device name"
...
This reverts commit dadf7a4cf2 .
2017-07-05 14:18:16 -07:00
Chris Robinson
56a33ef955
Print the opened device in alffplay
2017-07-05 12:32:19 -07:00
Chris Robinson
dadf7a4cf2
Try all drivers for an unknown device name
2017-07-05 12:23:08 -07:00
Chris Robinson
3af2ff7b25
Trace if a driver was found for a device name
2017-07-05 12:16:28 -07:00
Chris Robinson
72ce0d1e9c
Open a device only when a driver index is found
2017-07-03 22:14:15 -07:00
Chris Robinson
3cd4cfe73d
Don't add --output-def to EXTRA_LDFLAGS
2017-07-01 20:48:17 -07:00
Chris Robinson
74139c914d
Skip past the -device switch even if the device doesn't open
2017-07-01 20:44:56 -07:00
Chris Robinson
cb83f48105
Add an option to enable direct channels for alffplay
2017-07-01 19:18:57 -07:00
Chris Robinson
a14f651034
Flush the log file after writing
2017-07-01 15:34:42 -07:00
Chris Robinson
958fa34272
Use a weaker memory order for the current context iface
2017-07-01 15:25:39 -07:00
Chris Robinson
af626fdded
Initialize ALC resources in the file they're used in
2017-07-01 15:25:11 -07:00
Chris Robinson
7daefd4e77
Use the al alloc functions instead of standard
2017-07-01 12:22:25 -07:00
Chris Robinson
32bda7b94c
Add tracing capabilities to the router
2017-06-30 17:22:15 -07:00
Chris Robinson
77e317609b
Add special handling for alGerError in the router
2017-06-30 17:21:26 -07:00
Chris Robinson
ce9222b686
Clear initial ALC version vars before querying it
2017-06-29 23:21:07 -07:00
Chris Robinson
8a0d1e5191
Store the QSA backend's ExtraData in the wrapper struct
2017-06-29 17:38:38 -07:00
Chris Robinson
d874b6bb27
Don't assume the first driver has the default device
2017-06-29 15:59:16 -07:00
Chris Robinson
00694826ef
Protect context switches with a lock in the router
2017-06-29 10:56:32 -07:00
Chris Robinson
058d57ef03
Protect device enumeration in the router with a mutex
2017-06-29 10:39:27 -07:00
Chris Robinson
e8ce8924d1
Use sqrtf for single-precision square roots
2017-06-29 10:28:37 -07:00
Chris Robinson
ec13cf6c9c
Add casts to silence MSVC
2017-06-29 10:28:22 -07:00
Chris Robinson
a69d608a1e
Define a backup log2f if the compiler doesn't have it
2017-06-29 10:11:31 -07:00
Chris Robinson
aefa11b6ad
Workaround for MSVC not liking 1.0f/0.0f for float infinity
2017-06-29 09:57:19 -07:00
Chris Robinson
cee2d226d2
Return the extension list in the router
2017-06-29 08:55:44 -07:00
Chris Robinson
f08a7b341f
Prepare the new driver in a local variable
2017-06-29 08:46:06 -07:00
Chris Robinson
15e6821147
Avoid unnecessary reenumeration in the router
2017-06-29 08:35:21 -07:00
Chris Robinson
3a16fed279
Handle the ALC version for some extension capabilities
...
Also fix some improper parenthesis.
2017-06-28 23:18:39 -07:00
Chris Robinson
ef7eced7a7
Properly clean up allocated memory at exit
2017-06-28 22:39:11 -07:00
Chris Robinson
a729007887
Implement setting a context current in the router
2017-06-28 21:54:44 -07:00
Chris Robinson
323162c49f
Implement creating and destroying contexts
2017-06-28 21:15:30 -07:00
Chris Robinson
ea4379c5b7
Implement opening and closing devices in the router
2017-06-28 21:10:02 -07:00
Chris Robinson
6124f447cd
Implement enumeration in the router
2017-06-28 20:45:23 -07:00
Chris Robinson
47f1db36a7
Partially implement ALC functions in the router
2017-06-28 20:03:36 -07:00
Chris Robinson
b88b57868a
Add a ptr-to-int map
2017-06-28 19:09:38 -07:00
Chris Robinson
9fd7349220
Add forwarding for the AL functions
2017-06-28 17:02:43 -07:00
Chris Robinson
cfec20830b
Load driver dlls in the router
2017-06-28 16:41:38 -07:00
Chris Robinson
ebee8da05c
Start a router DLL
...
Experimental, Windows only. This is intended as an alternative to Creative's
router DLL, fixing a few issues with it (falsely reporting extensions that
aren't supported, not being able to query the ALC version without a device, and
not being able to use ALC extension functions).
When enabled OpenAL Soft's DLL is built as soft_oal.dll, while the router is
OpenAL32.dll.
2017-06-28 12:42:20 -07:00
Chris Robinson
7cadbebe9f
Calculate the converter stepping value using floating point
2017-06-28 10:17:36 -07:00
Chris Robinson
e9a7218a06
Remove the fastf2u conversion function
2017-06-27 07:25:08 -07:00
Chris Robinson
8f2bbc434c
Use a macro to apply NFC filtered mixes instead of a loop
2017-06-26 11:19:27 -07:00
Chris Robinson
b13fead555
Round the converter's stepping value
2017-06-26 11:04:23 -07:00
Chris Robinson
2f2d941edb
Trace the message name in the message handler loop
2017-06-26 08:57:29 -07:00
Chris Robinson
740e7d979c
Convert all input samples in the loop
...
Instead of potentially leaving 1 sample that requires another loop iteration.
2017-06-26 08:55:22 -07:00
Chris Robinson
464a7c0545
Update ChangeLog for mmdevapi fix
2017-06-26 07:09:17 -07:00
Chris Robinson
55c329b462
Clean up some messy rounding code
2017-06-26 06:54:45 -07:00
Chris Robinson
5d5eff7502
Ensure the mmdevapi capture buffer is at least 100ms
2017-06-26 06:14:11 -07:00
Chris Robinson
4b7cbb50ab
Add a whitenoise generator to altonegen
2017-06-25 08:00:55 -07:00
Chris Robinson
be552a35e6
Support 32-bit float with the recording example
2017-06-25 06:10:20 -07:00
Chris Robinson
1deb8b6160
Clean up some loop variables
2017-06-25 05:42:35 -07:00
Chris Robinson
c465718ddd
Use the bsinc resampler for the converter
2017-06-25 04:07:06 -07:00
Chris Robinson
d1bb04d588
Improve traces for the mmdevapi capture conversions
2017-06-23 09:54:26 -07:00
Chris Robinson
d70a98fe03
Use the correct destination channel offset
2017-06-23 08:25:47 -07:00
Chris Robinson
9d01ac440d
Don't report any output samples for no input samples
2017-06-23 08:13:42 -07:00
Chris Robinson
44a940d8d6
Forward Sample_ALuint to Sample_ALint
2017-06-23 05:34:43 -07:00
Chris Robinson
e07166e93c
Add a recording example app
2017-06-23 05:19:24 -07:00
Chris Robinson
d1077795de
Stop conversion when no more source samples are available
2017-06-22 15:07:24 -07:00
Chris Robinson
31b02e044f
Trace the capture converter formats for mmdevapi
2017-06-22 13:58:32 -07:00
Chris Robinson
552d3a85af
Workaround log2f missing on Android
2017-06-21 23:05:11 -07:00
Chris Robinson
6fcbb7c738
Remove an unnecessary variable
2017-06-21 11:34:26 -07:00
Chris Robinson
e09468cdca
Trace if dithering is enabled
2017-06-19 00:17:11 -07:00
Chris Robinson
36edd80073
Update ChangeLog for the dither-depth config option
2017-06-18 04:14:56 -07:00
Chris Robinson
0a361fa9e2
"Convert" the QSA backend to the new API
...
I say "convert" because it takes the lazy way and essentially just embeds the
wrappers into the backend. It's done this way because I lack the means to check
any changes, even syntactically. This also means the device's ExtraData field
is still needed.
However, this does mean all the backends are now using the new API. Code
related to the old interface can now be removed.
2017-06-18 03:07:02 -07:00
Chris Robinson
2b013fc54e
Make the dithering depth configurable
2017-06-17 23:09:51 -07:00
Chris Robinson
e3a825b37c
Apply dither separately from output
2017-06-17 02:42:01 -07:00
Chris Robinson
9fc01934c2
Use helpers to get data from byte streams
2017-06-16 22:58:13 -07:00
Chris Robinson
879b79740f
Round the B-Format HRTF response where the multiple is defined
2017-06-16 19:00:00 -07:00
Chris Robinson
e18f7ca3e4
Update ChangeLog with the PulseAudio fix
2017-06-15 23:13:25 -07:00
Chris Robinson
d4f3490a88
Limit device buffer based on PulseAudio's tlength
...
Unfortunately PulseAudio has a habit of limiting tlength, and trying to
calculate the device's buffer length to write regardless of tlength could
result in some amount always being writable.
2017-06-15 21:39:09 -07:00
Chris Robinson
1e8feeff03
Update ChangeLog with recent fixes
2017-06-11 16:38:51 -07:00
Chris Robinson
a35b9bbd3e
Don't force a fade-in when resuming a paused source
...
This needs to be handled more automatically by the mixer to work correctly.
Otherwise, requiring a property update on resume can put the source into a
playing state with the mixer never playing it, due to not having valid mixing
parameters and the mixing parameters not getting calculated because no updates
are specified by the app (and forcing an update can break deferred updates).
2017-06-09 13:32:34 -07:00
kcat
ba0644254c
Merge pull request #123 from rdb/master
...
Implement GetProcPath for FreeBSD
2017-06-09 12:14:56 -07:00
rdb
39e4756b37
Implement GetProcPath for FreeBSD
2017-06-09 15:19:03 +02:00
Chris Robinson
b4aea294c3
Calculate chorus and flanger mod delays separately from feedback
2017-06-07 12:42:54 -07:00
Chris Robinson
10ff6cba9c
Make the late lines' delay the delay average for modulation
...
Similar to the recent chorus and flanger changes, the modulation delay now
swings between -n to +n, where n is less than the delay length. This brings up
a slight issue with the linear interpolation, as modff doesn't produce the
correct fraction value for interpolation (it's inverted, with 0 being closer to
the next sample and 1 being closer to the base). So it's using nearest
interpolation for now.
2017-06-07 10:39:19 -07:00
Chris Robinson
61e43d4039
Release 1.18.0
2017-06-04 07:31:22 -07:00
Chris Robinson
9222d89de2
Update ChangeLog about OpenSL capture support
2017-06-04 05:44:08 -07:00
Chris Robinson
e1dcfa4b9b
Update default 48khz HRTF dataset
2017-06-01 04:09:08 -07:00
Chris Robinson
1c04cbad04
Resample HRIRs prior to minimum phase reconstruction
2017-06-01 04:06:08 -07:00
Chris Robinson
f54946f9cb
Remove unused HIDDEN_DECL macro
2017-05-30 09:58:06 -07:00
Chris Robinson
e893211b65
Restrict ClampedDist to RefDistance for invalid distance attenuation
2017-05-30 05:13:54 -07:00
Chris Robinson
6d4adc6ad6
Use an RMS limit of -3dB for the output limiter
2017-05-29 03:38:27 -07:00
Chris Robinson
07bb5f1322
Add a missing include
2017-05-28 00:53:33 -07:00
Chris Robinson
a79e8f3d95
Use peak limiting rather than RMS detection
2017-05-27 22:47:40 -07:00
Chris Robinson
e9505b164e
Fix source sends' initial HF absorption and decay calculation
...
The HF absorption is applied given the source distance, as relative to the
source's immediate environment, with additional absorption being applied given
the room/reverb environment. This does double up the amount of absorption
compared to the dry path, but it can be assumed the initial reflections travel
a longer distance.
2017-05-27 22:33:40 -07:00
Chris Robinson
c51df897db
Use normal air absorption for the sends
...
Applies just for the normal air absorption which uses the air absorption
factor, not the automated decay applied when WetGainAuto is enabled.
2017-05-27 03:40:52 -07:00
Chris Robinson
c4ef7399f8
Add a new compressor/limiter
...
This is just for the output limiter right now, but in the future can be used
for the compressor EFX effect. The parameters are also hardcoded, but can be
made configurable after 1.18.
2017-05-27 03:36:34 -07:00
Chris Robinson
653f0a1405
Fix handling chorus and flanger LFO displacement offset
...
The phase offset is modulo-wrapped rather than masked, so it's best to avoid
negative offsets.
2017-05-26 09:09:35 -07:00
Chris Robinson
2b14c1d623
Properly handle the chorus and flanger LFOs
...
The effects' specified delay is the average delay time, meaning the delay
offset should move between -n and +n relative to the delay, where n <= delay.
2017-05-26 08:52:07 -07:00
Chris Robinson
59d016dfcd
Update ChangeLog about ALC_SOFT_output_limiter
2017-05-25 04:17:09 -07:00
Chris Robinson
db90dbe9f2
Finalize ALC_SOFT_output_limiter
2017-05-25 04:16:07 -07:00
Chris Robinson
9d4f601a8a
Apply distance compensation separately
2017-05-25 03:24:35 -07:00
Chris Robinson
c68a537ae8
Update ChangeLog for the limiter and dithering
2017-05-24 04:22:03 -07:00
Chris Robinson
2266fb76b9
Add a config option to specify custom ALSA devices
2017-05-23 18:12:45 -07:00
Chris Robinson
dd6c5270b6
Add a dithering option to alsoft-config
2017-05-23 01:12:49 -07:00
Chris Robinson
e6be113903
Add an option to dither 8- and 16-bit output
2017-05-23 00:35:22 -07:00
Chris Robinson
49e5c53591
Reduce the amount of variables that hold the same value
2017-05-21 03:47:52 -07:00
Chris Robinson
95ea3fdd05
Avoid calculating the filter coefficients multiple times
2017-05-21 03:38:19 -07:00
Chris Robinson
5691dceb38
Add a method to copy a filter's coefficients
2017-05-21 03:31:44 -07:00
Chris Robinson
edcdc1dae8
Avoid unnecessary doubles
2017-05-21 02:42:44 -07:00
Chris Robinson
0b2467ed54
Use a macro to specify the decay target gain
2017-05-21 00:01:39 -07:00
Chris Robinson
c234b25ac7
Use more correct doppler shift calculations
2017-05-20 03:28:40 -07:00
Chris Robinson
492050b816
Restore spec-defined cone behavior for auxiliary sends
2017-05-20 02:22:11 -07:00
Chris Robinson
a306407b67
Apply more proper air absorption to the wet path
...
This properly accounts for the room rolloff factor for normal air absorption
(which makes it none by default, like distance attenuation), and uses the
reverb's decay time, decay hf ratio, decay hf limit, and room air absorption
properties to calculate an initial hf decay with the WetGainAuto flag. This
mirrors the behavior of the initial distance decay.
2017-05-19 23:13:39 -07:00
Chris Robinson
efd797a6f6
Reorganize some code to have fewer temporaries
2017-05-17 22:49:34 -07:00
Chris Robinson
a49e2ebbc5
Add an env var to specify a default pulse device
...
Some apps don't allow selecting an audio device, and due to problems with KDE,
PulseAudio isn't allowed to move the stream after being created by default.
2017-05-16 16:50:43 -07:00
Chris Robinson
154e53b911
Reduce the main reverb filter gain limit to match the rest
2017-05-16 13:23:16 -07:00
Chris Robinson
98392fbe90
Limit the dry and wet path filter gains to -60dB
2017-05-15 17:20:09 -07:00
Chris Robinson
fecf26318a
Improve distance-related absorption and decay attenuation
2017-05-15 17:13:05 -07:00
Chris Robinson
2aa620e58f
Make reverb delay line structs use interleaved floats
2017-05-15 00:30:47 -07:00
Chris Robinson
b2760baa64
Make the reverb's early and late feedback lines interleaved
2017-05-14 23:28:22 -07:00
Chris Robinson
cc1b774837
Don't enable NFC for a 0 reference delay
2017-05-14 18:50:22 -07:00
Chris Robinson
232f05be93
Update ChangeLog for AL_SOFT_source_spatialize
2017-05-13 19:52:37 -07:00
Chris Robinson
7cbce6806b
Update a couple comments about the reverb modulation
2017-05-13 16:08:45 -07:00
Chris Robinson
0b66b2bbe7
Replace 4 separate all-passes with one vector all-pass
...
Each 4 related all-passes now share a structure with one delay line, which uses
an interleaved sample history. Also fixes some potential rounding problems for
delay lines with interleaved samples.
2017-05-13 15:45:05 -07:00
Chris Robinson
87d4710bc4
Apply reverb modulation to the late feedback lines
...
This seems to be more in-line with the intended behavior, to allow build-up and
overlap within the reverb decay, rather than a pitch-shift on input.
Unfortunately there's no readily available implementation of this reverb model
that includes modulation to compare with, so a low depth coefficient is used to
keep it very subtle.
2017-05-12 20:53:14 -07:00
Chris Robinson
d456c799fd
Remove the 0.5 gain on the reverb output
...
Turns out to be unnecessary, as it reduced the volume below what other reverb
implementations provide with the same presets.
2017-05-11 23:26:29 -07:00
Chris Robinson
685dc24299
Restore the previous reverb B2A and A2B matrices
...
Also, untranspose the A2B matrix.
2017-05-11 21:48:47 -07:00
Chris Robinson
ef58a8f205
Log whether the output limiter is enabled or disabled
2017-05-11 16:29:05 -07:00
Chris Robinson
748dfb1526
Finalize AL_SOFT_source_spatialize
2017-05-11 14:38:04 -07:00
Chris Robinson
a6f6533a28
Update ALC_OUTPUT_LIMITER_SOFT to handle ALC_DONT_CARE_SOFT
...
Essentially just adding a comment about it. Since we default to on, the
behavior already fit.
2017-05-11 11:04:25 -07:00
Chris Robinson
a2c25378a9
Reduce LIMITER_VALUE_MAX
...
The previous value couldn't actually be expressed as a float and got rounded up
to the next whole number value, leaving the potential for an overrun in the
squared sum.
2017-05-09 11:56:03 -07:00
Chris Robinson
4a4442ad91
Store the output limiter values as fixed-point integers
...
This helps keep the squared sum stable over larger updates, also avoiding the
need to keep recalculating it.
2017-05-08 16:23:16 -07:00
Chris Robinson
f880f67049
Update reverb conversion matrices and output gain
2017-05-08 13:57:31 -07:00
Chris Robinson
0dabe6398f
Apply attenuation when downmixing multi-channel sounds for panning
2017-05-07 18:28:43 -07:00
Chris Robinson
5308ea7e2a
Put the app name after filename in the window title
2017-05-07 04:29:18 -07:00
Chris Robinson
d9d2e73228
Update AL_SOURCE_SPATIALIZE_SOFT value
...
Though it didn't strictly clash since it was for a different component (global
state vs source property), 0x1213 was used by AL_RESAMPLER_NAME_SOFT. Probably
best to avoid duplicate property values regardless.
2017-05-06 10:10:10 -07:00
Chris Robinson
e1bc4c0730
Include the Built-In HRTF names in alsoft-config when enabled
2017-05-05 07:49:56 -07:00
Chris Robinson
074e4496ba
Calculate the output limiter gain using the RMS
2017-05-05 07:38:26 -07:00
Chris Robinson
64f0630fef
Move native-tools to the root directory
2017-05-05 05:03:50 -07:00
Chris Robinson
47f843632f
Make the generated data array static const
2017-05-05 04:59:07 -07:00
Chris Robinson
db6f14748c
Rename RollOff to Rolloff
2017-05-05 04:54:07 -07:00
Chris Robinson
d82e3be8f7
Increase the HRTF transition to 128 samples
2017-05-05 04:54:07 -07:00
kcat
af997bf853
Merge pull request #112 from alexey-lysiuk/embed_hrtf_pr
...
Cross-platform embedding of HRTF data
2017-05-05 04:53:11 -07:00
alexey.lysiuk
24bc8070c8
Enable embedding of HRTF data in CI config files
2017-05-05 14:30:06 +03:00
alexey.lysiuk
17dfaca43d
Implement cross-platform embedding of HRTF data
2017-05-05 14:30:06 +03:00
Chris Robinson
9c9ad2f60a
Start an extension to change the source's spatialize property
2017-05-05 02:41:34 -07:00
Chris Robinson
b639bc9913
Add a property to force source spatialization on or off
2017-05-04 12:27:10 -07:00
Chris Robinson
7829ad8fc9
Handle attenuated sources in CalcPanningAndFilters
2017-05-04 11:09:45 -07:00
Chris Robinson
23bf3d3959
Calculate the multi-channel panning in a separate function
2017-05-04 04:35:53 -07:00
Chris Robinson
14b23c2502
Print available resamplers in openal-info
2017-05-03 04:53:22 -07:00
Chris Robinson
e0ae3c7cb6
Update changelog
2017-05-03 04:41:09 -07:00
Chris Robinson
ab1cca729f
Finalize AL_SOFT_source_resampler
2017-05-03 04:33:38 -07:00
Chris Robinson
732dee5375
Rename Zero-Order Hold to Nearest
...
A bit of a misnomer now since "Nearest" implies rounding (i.e. when the sample
offset is >= .5, it should pick the next sample being closer in time), but that
adds unnecessary complications.
2017-05-03 03:34:44 -07:00
Chris Robinson
444e9563b3
Add a mixing function to blend HRIRs
...
This is a bit more efficient than calling the normal HRTF mixing function
twice, and helps solve the problem of the values generated from convolution not
being consistent with the new HRIR.
2017-05-03 03:29:21 -07:00
Chris Robinson
4e5c4b8e01
Add a slight bit of attenuation to the reverb output
2017-05-02 15:55:58 -07:00
Chris Robinson
66f9640787
Remove a duplicate check
2017-05-02 07:34:28 -07:00
Chris Robinson
53c3d48fe0
Change some ALuint parameters to ALsizei
2017-05-02 04:54:59 -07:00
Chris Robinson
1e5334176e
Rename VOICE_IS_HRTF to VOICE_HAS_HRTF
2017-05-02 04:25:08 -07:00
Chris Robinson
2f8d597f4e
Rename 'moving' flag to 'fading'
2017-05-02 04:09:01 -07:00
Chris Robinson
afe2065d60
Set a voice as 'moving' if it starts/resumes at an offset
2017-05-02 03:58:18 -07:00
Chris Robinson
f1a249b47a
Reimplement bilinear interpolation between HRIRs
...
Some data sets are just too sparse, having noticeably few measurements to
properly handle slowly panning sources. Although not perfect, bilinearly
interpolating the HRIR measurements improves the positional accuracy.
2017-05-01 15:46:25 -07:00
Chris Robinson
8d50b72d8f
Allow querying the output limiter state
2017-04-30 08:54:49 -07:00
Chris Robinson
fc2afa1eaa
Start an extension to toggle the output limiter
2017-04-30 04:21:48 -07:00
Chris Robinson
9767f4f9c3
Don't do more reverb samples than there are to fade.
...
This avoids having to clamp the fade value when incrementing it.
2017-04-28 10:25:22 -07:00
Chris Robinson
dc25370063
Fade HRTF coefficients over 64 samples at most
...
This greatly improves HRTF performance since the dual-mix only applies to the
64-sample coefficient transition. So rather than doubling the full mix, it only
doubles 64 samples out of the full mix.
2017-04-28 10:05:57 -07:00
Chris Robinson
bf138fb4ea
Combine mostly duplicate functions
2017-04-27 19:23:42 -07:00
Chris Robinson
5dc7265ad3
Properly update the delay line offsets when fading is done
2017-04-27 18:54:33 -07:00
Chris Robinson
55d9988f3f
Write directly to the output for HRTF
2017-04-27 06:35:53 -07:00
Chris Robinson
8f56c9522e
Document the output-limiter config option
...
Expose it in alsoft-config as well.
2017-04-26 19:27:50 -07:00
Chris Robinson
ca5c732261
Implement a limiter on the device output
...
This reduces the output volume when the mixed samples extend outside of -1,+1,
to prevent excessive clipping. It can reduce the volume by -80dB in 50ms, and
increase it by +80dB in 1s (it will not go below -80dB or above 0dB).
2017-04-26 18:38:09 -07:00
Chris Robinson
1754d54c18
Compile with -fno-math-errno when available
...
Helps GCC to inline some fp functions, e.g. lrintf
2017-04-26 18:35:05 -07:00
Chris Robinson
12fb0404c1
Reverb code update
...
This update modifies the reverb in numerous ways. The 3-series, 4-parallel
all-pass is replaced with a Gerzon vector all-pass. The vector all-pass is also
applied to the early reflections, to help with the initial diffusion in the
late reverb. The late reverb filter and feedback attenuation has been replaced
with a dual first-order equalization filter, which controls the low and high
frequencies with individual low-pass/high-shelf and high-pass/low-shelf filters
with gain control.
Additionally, delay lines now have the ability to blend the output between two
offsets, to help smooth out the transition for when the delay changes (without
such, it could result in undesirable clicks and pops).
2017-04-26 02:07:51 -07:00
Chris Robinson
ad782c0000
Skip mixing the fade out step when starting silent
...
Unfortunately it can't skip mixing the fade in when going to silence because
the history needs to be up to date.
2017-04-25 22:10:27 -07:00
Chris Robinson
a0a41921fc
Remove const from _Atomic vars to make Clang happy
...
Clang does not allow using C11's atomic_load on const _Atomic variables.
Previously it just disabled use of C11 atomics if atomic_load didn't work on a
const _Atomic variable, but I think I'd prefer to have Clang use C11 atomics
for the added features (more explicit memory ordering) even if it means a few
instances of breaking const.
2017-04-21 16:58:55 -07:00
Chris Robinson
d85177cd3e
Use more sensible values for the source resampler enums
2017-04-21 16:26:22 -07:00
Chris Robinson
d2d5f1d7bd
Add the ability to change the source resampler
2017-04-21 15:48:39 -07:00
Chris Robinson
44f026220f
Correctly enable the ambisonic upsampler for HOA output
2017-04-21 13:26:29 -07:00
Chris Robinson
b59359f80f
Add a method to enumerate resamplers
2017-04-21 04:15:08 -07:00
Chris Robinson
26b49c54af
Store the resampler as part of the source
2017-04-21 00:06:40 -07:00
Chris Robinson
1e8ea59564
Make the default resampler a variable
2017-04-20 23:21:46 -07:00
Chris Robinson
7776ebcedc
Try NEON mixers before SSE
2017-04-20 20:58:32 -07:00
Chris Robinson
63baa3b1c7
Missed a raw atomic variable access
2017-04-20 03:14:49 -07:00
Chris Robinson
5dcbb8db38
Make the buffer list next pointer atomic
2017-04-19 19:54:17 -07:00
Chris Robinson
fbb5295f13
Fix a mixed-sign-comparison warning on MSVC
2017-04-19 15:17:55 -07:00
Chris Robinson
0407285c53
Allocate a new context's voices after updating the device params
2017-04-19 12:34:45 -07:00
Chris Robinson
f1be335486
Check for the upsampler to determine if HRTF uses HOA
2017-04-18 17:39:10 -07:00
Chris Robinson
55011d4bfd
Use a different way to get the size of structs with flexible array members
2017-04-18 14:11:15 -07:00
Chris Robinson
de62ab97e9
Store the source queue head in the voice to signify looping
...
This removes the need to access a couple more source fields in the mixer, and
also makes the looping and queue fields non-atomic.
2017-04-18 00:58:33 -07:00
Chris Robinson
45d52f7124
Remove unnecessary functions in the JACK backend
2017-04-17 21:31:20 -07:00
Chris Robinson
14bc7baeb7
Store the source prop updates with the mixer voice
...
Also move its declaration and rename it for consistency.
2017-04-17 21:16:01 -07:00
Chris Robinson
660971d0b7
Close some gaps in enum values
2017-04-16 23:22:30 -07:00
Chris Robinson
6d3973f965
Trace unhandled device reset attributes
2017-04-16 16:21:11 -07:00
Chris Robinson
064176d03d
Remove some unnecessary parenthesis
2017-04-16 15:05:57 -07:00
Chris Robinson
8f1a968d79
Correctly handle the attribute array size for alcGetInteger64vSOFT
2017-04-15 20:10:32 -07:00
Chris Robinson
fca83263f4
Implement capture support in the OpenSL backend
2017-04-15 18:08:52 -07:00
Chris Robinson
d9bf4f7620
Allow increasing the maximum source limit
...
If the requested number of mono and stereo sources exceeds 256, the source
limit will be expanded. Any config file setting overrides this. If the device
is reset to have fewer sources than are currently allocated, excess sources
will remain and be usable as normal, but no more can be generated until enough
are delated to go back below the limit.
2017-04-14 23:50:49 -07:00
Chris Robinson
afb59e7f98
Move internal headers out of the include directory
2017-04-14 18:15:56 -07:00
Chris Robinson
c5310d2e95
Avoid unnecessary macro parameters
2017-04-14 17:55:23 -07:00
Chris Robinson
f94fa5d5cf
Use separate atomic macros for pointers
2017-04-14 17:47:55 -07:00
Chris Robinson
9e60eea93b
Use atomic flags for the thunk array
2017-04-14 16:14:05 -07:00
Chris Robinson
6476f3277a
Mark some pointers with restrict
2017-04-13 11:48:43 -07:00
Chris Robinson
24c172bb96
Use ALsizei for the fir4 resampler fraction
2017-04-12 22:45:54 -07:00
Chris Robinson
684823ebc4
Select NEON when available before SSE
2017-04-12 22:44:16 -07:00
Chris Robinson
901804d724
Store the ambisonic order separate from the channel enum
2017-04-12 18:26:07 -07:00
Chris Robinson
46046f9caa
Remove an unnecessary variable
2017-04-11 12:06:57 -07:00
Chris Robinson
05531fbee4
Use the correct channel conversion functions
2017-04-11 11:47:23 -07:00
Chris Robinson
78d5492d2c
Use the converters to enable mmdevapi capture
2017-04-11 09:41:23 -07:00
Chris Robinson
bcdd1cee10
Add a mono<->stereo converter
...
This converter always outputs floats, and uses energy-preserving scaling.
2017-04-11 07:25:55 -07:00
Chris Robinson
caae349fdc
Update the given source pointer in the sample converter
2017-04-10 13:40:45 -07:00
Chris Robinson
cc79cb803a
Reduce the size of the temp input buffer
2017-04-10 09:31:25 -07:00
Chris Robinson
8a7bc9ab4f
Trace the capture device format
2017-04-10 09:28:25 -07:00
Chris Robinson
6cc69c8d94
Add a sample converter
...
This is intended to do conversions for interleaved samples, and supports
changing from one DevFmtType to another as well as resampling. It does not
handle remixing channels.
The mixer is more optimized to use the resampling functions directly. However,
this should prove useful for recording with certain backends that won't do the
conversion themselves.
2017-04-10 09:26:06 -07:00
Chris Robinson
81527cdbdd
Convert the CoreAudio backend to the updated backend API
2017-04-09 11:21:02 -07:00
Chris Robinson
aef774a7a0
Handle the source offset fraction as an ALsizei
2017-04-08 14:29:08 -07:00
Chris Robinson
319d097198
Pre-compute the sinc4 resampler coefficient table
2017-04-08 13:43:19 -07:00
Chris Robinson
5ef7d8fe62
Clean up some formatting
2017-04-08 12:27:30 -07:00
Chris Robinson
1f64f9d016
Try to write the full configured buffer length with PulseAudio
...
This basically ignores tlength even if it's smaller than what was requested. It
keeps up-to-date with minreq changes too now, in case that happens.
2017-04-08 10:01:04 -07:00
Chris Robinson
f1a5b6b668
Overwrite the old search path with the new one
2017-04-08 03:00:53 -07:00
Chris Robinson
5e9f5693a4
Combine a couple loops
2017-04-07 14:56:23 -07:00
Chris Robinson
7fd88086f6
Make sure malloc succeeded for 'delays'
2017-04-07 09:49:06 -07:00
Chris Robinson
8f2e4d46ec
Store the HRTF coeffs as a stereo pair
...
This will make it easier to handle HRTF data sets that have separate left and
right ear responses. Will need an mhr version update to take advantage of that.
2017-04-07 08:46:50 -07:00
Chris Robinson
e267f6b88e
Don't explicitly restore the old HRTF when initializing panning
...
Otherwise it won't store the name in the device.
2017-04-07 08:02:13 -07:00
Chris Robinson
b551291840
Allocate temp storage for delays when loading HRTFs
2017-04-07 06:40:42 -07:00
Chris Robinson
36f7dda1ca
Remove another reference to the sinc8 resampler
2017-04-07 03:57:40 -07:00
Chris Robinson
710bbde09c
Ensure SDL_AUDIO_BITSIZE is defined for older SDL2 versions
2017-04-07 03:33:03 -07:00
Chris Robinson
70a097bf59
Clean up a comment
2017-04-07 03:21:40 -07:00
Chris Robinson
338d61f907
Reference count HRTFs and unload them when unused
2017-04-06 13:00:29 -07:00
Chris Robinson
94f514ae5a
Load embedded HRTF entries as-needed
2017-04-06 01:35:09 -07:00
Chris Robinson
37f666fbab
Fix an incorrect message
2017-04-05 12:46:02 -07:00
Chris Robinson
2eaa10fc21
Load HRTF files as needed
...
Currently only applies to external files, rather than embedded datasets. Also,
HRTFs aren't unloaded after being loaded, until library shutdown.
2017-04-05 12:27:30 -07:00
Chris Robinson
f76dea0c03
Store the loaded hrtf entry container in the enumerated hrtf entry
2017-04-05 11:29:58 -07:00
Chris Robinson
e7ca61e8b5
Store the HRTF's filename separate from the entry storage
2017-04-05 07:09:16 -07:00
Chris Robinson
26144ca9df
Rename al_string_* functions to alstr_*
2017-04-04 06:58:53 -07:00
Chris Robinson
b78ddc7ef7
Make sure the mix is done after setting the looping property
2017-04-02 06:40:56 -07:00
Chris Robinson
d52752a3fe
Recognize %-encoded characters for config section names
2017-04-01 06:07:14 -07:00
Chris Robinson
497d078f50
Remove a couple unused macros
2017-04-01 03:04:15 -07:00
Chris Robinson
13d7d6fe95
Don't rely on sizeof being the offset to a struct's unsized array
2017-04-01 03:00:24 -07:00
Chris Robinson
52112b0b8d
Constify a variable
2017-04-01 02:38:44 -07:00
Chris Robinson
1ef916a54b
Make a pointer restrict and assume aligned
2017-04-01 01:08:18 -07:00
Chris Robinson
5f245d5950
Avoid some unnecessary string reallocation
2017-03-31 23:22:06 -07:00
Chris Robinson
af833c8554
Remove a couple more uses of BYTE3
2017-03-31 09:21:31 -07:00
Chris Robinson
90c005bbec
Convert float samples to integer using a power-of-2 multiple
2017-03-31 09:11:28 -07:00
Chris Robinson
355a8898cf
Remove the (u)byte3 sample formats
...
They're not accessible since the removal of the buffer_samples extension, and
were kind of clunky to work with as 24-bit packed values.
2017-03-31 08:15:20 -07:00
Chris Robinson
ac8b4aa5f6
Convert integer samples to float using a power-of-2 divisor
...
This should cut down on unnecessary quantization noise (however minor) for 8-
and 16-bit samples. Unfortunately a power-of-2 multiple can't be used as easily
for converting float samples to integer, due to integer types having a non-
power-of-2 maximum amplitude (it'd require more per-sample clamping).
2017-03-31 06:54:46 -07:00
Chris Robinson
9fb07101dc
Load HRTF coefficients as pre-normalized floats
2017-03-31 04:59:09 -07:00
Chris Robinson
2a8970368f
Combine some HRTF loading code
2017-03-31 03:45:26 -07:00
Chris Robinson
7dc3fb98ab
Use the correct types' sizes for HRTF storage
2017-03-31 02:15:24 -07:00
Chris Robinson
c68dac879c
Update the ambisonic docs to mention the near-field effect
2017-03-29 00:11:38 -07:00
Chris Robinson
facd8ab109
Make ReleaseContext return if any contexts still remain
2017-03-28 05:33:43 -07:00
Chris Robinson
70aefa75e2
Use an array of pointers for effects instead of a linked list
2017-03-27 23:16:23 -07:00
Chris Robinson
b49a79a15f
Require CMake 3.0.2
...
Seems it's necessary for the INCLUDES install property with the cmake config
export.
2017-03-26 21:24:20 -07:00
Chris Robinson
7f55d34a7d
Add include/AL to the exported includes destination
2017-03-26 15:11:15 -07:00
Chris Robinson
9f4e47d7be
Fix HRTF interpolated gain calculation
2017-03-26 02:44:34 -07:00
Chris Robinson
56428cdb74
Use a loop to apply NFC filters
2017-03-25 23:55:44 -07:00
Chris Robinson
1d559ec703
Properly update the resampler label in the UI
2017-03-24 15:34:36 -07:00
Chris Robinson
5c37eca2c5
Use ALsizei for more index lookups
2017-03-24 14:35:25 -07:00
Chris Robinson
9ca92be0b8
Properly calculate the echo damping
2017-03-24 14:08:04 -07:00
Chris Robinson
1aca344688
Fix handling of the PropsClean flags
2017-03-23 19:32:53 -07:00
Chris Robinson
1c49d0542d
Use an atomic flag to mark auxiliary effect slot updates
2017-03-23 19:16:32 -07:00
Chris Robinson
5404b2225a
Add some comments for ALsource functions
2017-03-23 01:16:13 -07:00
Chris Robinson
85042a74ee
Update ChangeLog
2017-03-22 03:13:36 -07:00
Chris Robinson
b062d50bf1
Fix setting Ambi formats for loopback devices
2017-03-21 16:40:23 -07:00
Chris Robinson
cdfe0d8f5a
Use an atomic flag to test if a source needs to update
2017-03-20 21:25:39 -07:00
Chris Robinson
42bcf0870d
Make DataPosInt an ALsizei
2017-03-20 19:22:41 -07:00
Chris Robinson
d7d9ad806a
Use proper bools for boolean states
2017-03-20 16:53:41 -07:00
Chris Robinson
e06cf07ab0
Break up a function and move the code to where it's called
2017-03-19 16:49:23 -07:00
Chris Robinson
ecfa1dcb6f
Don't defer source state or offset changes
2017-03-19 13:48:40 -07:00
Chris Robinson
9e1aa50518
Fix the lib name for the .pc file
2017-03-18 20:24:19 -07:00
Chris Robinson
66b86d43be
Fix alcGetInteger64vSOFT to handle ambisonic attributes
2017-03-18 14:33:40 -07:00
Chris Robinson
7bf7cda467
Replace a couple ALuint with ALsizei
2017-03-17 15:45:39 -07:00
Chris Robinson
a209edb5ee
Fix NFC filter to set the correct center frequency
2017-03-16 19:58:21 -07:00
Chris Robinson
8f5cab5608
Increase the filter slope to -12dB/octave
2017-03-16 11:25:28 -07:00
Chris Robinson
32d521d79c
Check usability of MixHrtf_Neon before MixHrtf_SSE
2017-03-14 19:16:59 -07:00
Chris Robinson
6d565ff1fd
Remove a couple unneeded typedefs
2017-03-14 13:10:34 -07:00
Chris Robinson
cdf63b553f
Avoid doing sequential load for the source state
2017-03-12 19:27:51 -07:00
Chris Robinson
1e7c0b4646
Fix the height of some GUI widgets
2017-03-12 16:25:13 -07:00
Chris Robinson
dc17f287fe
Use a spinbox for the nfc-ref-delay value
2017-03-12 16:10:49 -07:00
Chris Robinson
d9e2a0cbf0
Use QString's arg method to format the float value
2017-03-12 15:27:50 -07:00
Chris Robinson
948ce36fa9
Increase _XOPEN_SOURCE to 600 for Solaris
2017-03-12 14:42:02 -07:00
Chris Robinson
097ed84a87
Handle the nfc-ref-delay config option
2017-03-12 13:24:16 -07:00
Chris Robinson
f276e83c8d
Document the nfc config option and expose it in alsoft-config
2017-03-12 08:56:19 -07:00
Chris Robinson
7b4645f5f8
Store the HRIR coeff pointer and delays directly in MixHrtfParams
2017-03-12 06:58:27 -07:00
Chris Robinson
96aaab9366
Rework HRTF coefficient fading
...
This improves fading between HRIRs as sources pan around. In particular, it
improves the issue with individual coefficients having various rounding errors
in the stepping values, as well as issues with interpolating delay values.
It does this by doing two mixing passes for each source. First using the last
coefficients that fade to silence, and then again using the new coefficients
that fade from silence. When added together, it creates a linear fade from one
to the other. Additionally, the gain is applied separately so the individual
coefficients don't step with rounding errors. Although this does increase CPU
cost since it's doing two mixes per source, each mix is a bit cheaper now since
the stepping is simplified to a single gain value, and the overall quality is
improved.
2017-03-11 18:04:06 -08:00
Chris Robinson
feffe1e81a
Make the voice's 'moving' state a bitflag
2017-03-11 06:26:05 -08:00
Chris Robinson
98e8f941b7
Allocate as many channels for DirectHrtfState as needed
2017-03-11 06:20:04 -08:00
Chris Robinson
6b4b00e462
Dynamically allocate the device's HRTF state
2017-03-10 10:47:43 -08:00
Chris Robinson
51cb969446
Fix building on MSVC
2017-03-10 05:05:25 -08:00
Chris Robinson
b878769ee0
Fix building without C11
2017-03-10 04:59:22 -08:00
Chris Robinson
583d431947
Implement NFC filters for Ambisonic rendering
...
NFC filters currently only work when rendering to ambisonic buffers, which
includes HQ rendering and ambisonic output. There are two new config options:
'decoder/nfc' (default on) enables or disables use of NFC filters globally, and
'decoder/nfc-ref-delay' (default 0) specifies the reference delay parameter for
NFC-HOA rendering with ambisonic output (a value of 0 disables NFC).
Currently, NFC filters rely on having an appropriate value set for
AL_METERS_PER_UNIT to get the correct scaling. HQ rendering uses the averaged
speaker distances as a control/reference, and currently doesn't correct for
individual speaker distances (if the speakers are all equidistant, this is
fine, otherwise per-speaker correction should be done as well).
2017-03-10 04:35:32 -08:00
Chris Robinson
d9b1995e95
Add an NFC filter implementation
2017-03-09 15:41:20 -08:00
Chris Robinson
9454d3e776
Move ALvoice declaration to alu.h
2017-03-09 07:23:12 -08:00
Chris Robinson
ae22d742dc
Remove an unnecessary variable
2017-03-09 07:15:06 -08:00
Chris Robinson
5ffb0842ac
Remove unnecessary atomic members
2017-03-08 04:59:22 -08:00
Chris Robinson
b1b3a369ef
Remove an unnecessary variable
2017-03-07 09:38:33 -08:00
Chris Robinson
b64da108a9
Check that a source is actually playing before setting paused
...
Also slightly refactor setting playing state when the device is disconnected or
there's no buffers to play.
2017-03-07 04:50:09 -08:00
Chris Robinson
190120dfd7
Store the channel count and sample size in the voice
2017-03-07 00:19:40 -08:00
Chris Robinson
bc0096365e
Don't modify the source state in the mixer
2017-03-07 00:19:40 -08:00
Chris Robinson
1b3100ab9a
Remove an unused function
2017-03-07 00:19:40 -08:00
kcat
0b591844b1
Merge pull request #97 from adrianbroher/ci-backends
...
Enable and enforce dependencies on CI services.
2017-03-07 00:19:13 -08:00
Marcel Metz
099b0a1f7c
Only download and strip Android NDK when not cached
2017-03-06 11:39:39 +01:00
Marcel Metz
6a067d9f7e
Use TravisCI cache to store stripped Android NDK toolchain
2017-03-06 11:21:51 +01:00
Marcel Metz
25de358c9a
Unpack only required files from Android NDK
2017-03-06 11:21:51 +01:00
Marcel Metz
a2d0bf8d3a
Configure CMake to require available backends on CI services
...
Configure CMake to require the installed backend libraries. This should
help to find build system regressions.
On TravisCI with Linux this requires the ALSA, PulseAudio, PortAudio, OSS
and JACK backend.
On TravisCI with Android cross compile Linux this requires the OpenSL
backend.
On TravisCI with MacOSX this requires the CoreAudio backend.
ON AppVeyor with Windows this requires the WinMM, DSound and MMDevAPI
backend.
2017-03-06 10:26:03 +01:00
Marcel Metz
1d208c49b5
Add Android cross-compile to TravisCI test matrix
...
The test entry adds the ability to test the OpenSLES backend.
2017-03-06 10:24:26 +01:00
Marcel Metz
adf6fee6d1
Explicit declare test matrix for TravisCI
2017-03-06 10:23:11 +01:00
Marcel Metz
2a08871fba
Delete Xamarin.Common.targets on AppVeyor
...
This is a workaround for a Xamarin build script bug specific to
AppVeyor. For more details see:
http://help.appveyor.com/discussions/problems/4569
2017-03-06 10:23:11 +01:00
Marcel Metz
441180a08a
Install dependencies on TravisCI to enable more features
...
Install Ubuntu development packages for PulseAudio, PortAudio, ALSA and
JACK to enable the building of most Linux backends on TravisCI.
Intall Ubuntu development packages for Qt5 to enable `alsoft-config`.
2017-03-05 16:14:18 +01:00
Chris Robinson
073829f26a
Make the voice's source pointer atomic
2017-03-05 04:50:27 -08:00
Chris Robinson
c040491615
Update alffplay for newer ffmpeg and convert to C++
2017-03-05 01:20:19 -08:00
Chris Robinson
40c5fe4c33
Remove ex-common and test-common static libs
2017-03-04 23:02:52 -08:00
Chris Robinson
87fd288359
Remove unnecessary wrappers around SDL_sound
...
Also remove wrappers for the now-unsupported buffer_samples extension.
2017-03-04 22:30:57 -08:00
Chris Robinson
c013068003
Use the LINK_FLAGS property instead of abusing libs for flags
2017-03-04 18:20:43 -08:00
kcat
9f9faff90a
Merge pull request #95 from adrianbroher/export-config
...
Enable exporting of CMake import targets
2017-03-04 17:47:13 -08:00
Marcel Metz
a11a13bdd1
Use Ubuntu 14.04 in TravisCI to get a less antique CMake version
2017-03-05 00:14:49 +01:00
Marcel Metz
ad640245d8
Export cmake import targets for project build tree
2017-03-05 00:14:49 +01:00
Marcel Metz
df87cf8002
Export cmake import targets for project install tree
2017-03-05 00:14:49 +01:00
Marcel Metz
27be429ca4
Rename logical CMake target openal to OpenAL
2017-03-05 00:14:49 +01:00
Marcel Metz
9d0bf065ee
Compile common library within dependent targets
2017-03-04 22:20:56 +01:00
Marcel Metz
952fb94ff7
Make logical target name openal uniform accross all platforms
2017-03-04 21:08:07 +01:00
Chris Robinson
6d7a790183
Add a boolean to specify if a voice should be playing
2017-03-02 01:02:40 -08:00
Chris Robinson
0e8ca50d7a
Stretch out some GUI elements for the decoder configurations
2017-03-01 20:53:52 -08:00
Chris Robinson
d1833c7b94
Increment MixCount in UpdateClockBase
...
This is to protect clocktime reads since the backend lock won't protect it.
2017-02-28 23:18:51 -08:00
Chris Robinson
521abf2e07
Dynamically allocate the channel delay buffers
2017-02-28 21:01:13 -08:00
Chris Robinson
51092a6315
Remove unused function declarations
2017-02-28 19:58:20 -08:00
Chris Robinson
6f2a30dea2
Remove an unneeded function
2017-02-28 19:48:44 -08:00
Chris Robinson
d3365f1b5b
Start a ALC_SOFT_loopback2 extension
...
This extends the base ALC_SOFT_loopback extension with support for B-Format.
When ALC_FORMAT_CHANNELS_SOFT is set to ALC_BFORMAT3D_SOFT, then additional
attributes must be specified. ALC_AMBISONIC_LAYOUT_SOFT must be set to
ALC_ACN_SOFT or ALC_FUMA_SOFT for the desired channel layout,
ALC_AMBISONIC_SCALING_SOFT must be set to ALC_N3D_SOFT, ALC_SN3D_SOFT, or
ALC_FUMA_SOFT for the desired channel scaling/normalization scheme, and
ALC_AMBISONIC_ORDER_SOFT must be set to an integer value greater than 0 for the
ambisonic order (maximum allowed is implementation-dependent).
Note that the number of channels required for ALC_BFORMAT3D_SOFT is dependent
on the ambisonic order. The number of channels can be calculated by:
num_channels = (order+1) * (order+1); /* or pow(order+1, 2); */
In addition, a new alcIsAmbisonicFormatSupportedSOFT function allows apps to
determine which layout/scaling/order combinations are supported by the loopback
device. For example,
alcIsAmbisonicFormatSupported(device, ALC_ACN_SOFT, ALC_SN3D_SOFT, 2) will
check if 2nd order AmbiX (ACN layout and SN3D scaling) rendering is supported
for ALC_BFORMAT3D_SOFT output.
2017-02-28 19:01:48 -08:00
Chris Robinson
f8558ed2b7
Use a variable counter for an array size limit
2017-02-28 04:21:16 -08:00
Chris Robinson
1cd6617ff6
Don't use the mutex in the base getClockLatency implementation
2017-02-28 03:50:42 -08:00
Chris Robinson
52d1f7883b
Print WARNs when a device or context error is generated
2017-02-27 20:59:52 -08:00
Chris Robinson
45d6c34015
Avoid standard malloc for buffer queue entries
2017-02-27 20:43:16 -08:00
Chris Robinson
a9610b3607
Use separate enums for the ambisonic channel order and normalization
2017-02-27 16:11:45 -08:00
Chris Robinson
5c859af24e
Move the current buffer queue entry and play position to the voice
...
This has a couple behavioral changes. First and biggest is that querying
AL_BUFFERS_PROCESSED from a source will always return all buffers processed
when in an AL_STOPPED state. Previously all buffers would be set as processed
when first becoming stopped, but newly queued buffers would *not* be indicated
as processed. That old behavior was not compliant with the spec, which
unequivocally states "On a source in the AL_STOPPED state, all buffers are
processed."
Secondly, querying AL_BUFFER on an AL_STREAMING source will now always return
0. Previously it would return the current "active" buffer in the queue, but
there's no basis for that in the spec.
2017-02-27 15:35:15 -08:00
Chris Robinson
513c18fdc4
Ensure a non-playing or -paused source does not use a mixing voice
2017-02-25 18:10:09 -08:00
Chris Robinson
9539ccc18b
Set CMP0020 for Qt
2017-02-25 16:29:27 -08:00
Chris Robinson
eceeabaf2f
Improve handling of source state reads
...
This avoids using seq_cst for loading the source state when either inside the
mixer, or otherwise protected from inconsistencies with async updates. It also
fixes potential race conditions with getting the source offset just as a source
stops.
2017-02-24 01:47:34 -08:00
Chris Robinson
652ef2b7fd
Remove an unused function
2017-02-23 20:40:16 -08:00
Chris Robinson
c2a79f0f7b
Remove CalcXYZCoeffs and inline CalcAngleCoeffs
2017-02-23 16:44:59 -08:00
Chris Robinson
08948079e9
Alter how panpot/pair-wise panning works
...
This change allows pair-wise panning to mostly go through the normal ambisonic
panning methods, with one special-case. First, a term is added to the stereo
decoder matrix's X coefficient so that a centered sound is reduced by -3dB on
each output channel. Panning in front creates a similar gain response to the
typical
L = sqrt(1-pan)
R = sqrt(pan)
for pan = [0,1]. Panning behind the listener can reduce (up to) an additional
-10dB, creating a audible difference between front and back sounds as if
simulating head obstruction.
Secondly, as a special-case, the source positions are warped when calculating
the ambisonic coefficients so that full left panning is reached at -30 degrees
and full right at +30 degrees. This is to retain the expected 60-degree stereo
width. This warping does not apply to B-Format buffer input, although it
otherwise has the same gain responses.
2017-02-23 01:32:44 -08:00
Chris Robinson
0ce4c9b8fa
Rename stereo-panning option to stereo-encoding
...
Also rename the 'paired' value to 'panpot', and make it the default.
2017-02-22 19:18:01 -08:00
Chris Robinson
d04cc28f33
Limit filter gains to -24dB
2017-02-22 18:07:41 -08:00
Chris Robinson
629980d15e
Update ChangeLog
2017-02-22 16:31:24 -08:00
Chris Robinson
55e3b840b3
Reduce the default period count to 3
2017-02-22 15:56:09 -08:00
Chris Robinson
2e1f1449bc
Don't remove a period from the OSS buffer
...
Since we're now waiting for space to be available before mixing, the mixing
buffer isn't adding another period.
2017-02-22 15:44:47 -08:00
Chris Robinson
e720faf2d4
Fix OpenSL latency calculation
2017-02-22 15:00:41 -08:00
Chris Robinson
5181e78c1e
Reduce some code
2017-02-21 18:28:09 -08:00
Chris Robinson
2dd142fed0
Make the "sends" config option act as a limit
...
Instead of forcing the device to always use the specified send count, it simply
limits requests to it.
2017-02-21 17:23:54 -08:00
Chris Robinson
d3cc867bd4
Increase the default effect slot and send count
...
The default number of auxiliary effect slots is now 64. This can still be
raised by the config file without a hard maximum, but incurs processing cost
for each effect slot generated by the app.
The default number of source sends is now actually 2, as per the EFX docs.
However, it can be raised up to 16 via ALC_MAX_AUXILIARY_SENDS attribute
requests, rather than the previous 4.
2017-02-21 16:54:55 -08:00
Chris Robinson
864d5387dd
Dynamically allocate the ALsource Send[] array
2017-02-21 16:31:59 -08:00
Chris Robinson
29994aa2de
Interleave the voice and source property objects
2017-02-21 12:29:25 -08:00
Chris Robinson
cd24e42b3f
Make the voices' Send[] array dynamically sized
...
The voices are still all allocated in one chunk to avoid memory fragmentation.
But they're accessed as an array of pointers since the size isn't static.
2017-02-21 11:17:47 -08:00
Chris Robinson
e0e6efbfea
Print warnings about missing libraries and functions
2017-02-21 10:17:48 -08:00
Chris Robinson
bb4726d520
Avoid duplicating device buffer layout logic
2017-02-20 16:57:25 -08:00
Chris Robinson
f5e8a8c75e
Remove an unused flag enum
2017-02-20 09:25:09 -08:00
Chris Robinson
23a34f732b
Remove mention of the sinc8 resampler
2017-02-20 09:13:08 -08:00
Chris Robinson
5a2ef2590f
Allow distance compensation for non-HQ rendering as well
...
It still requires a custom configuration to specify appropriate speaker
distances.
2017-02-20 09:08:57 -08:00
Chris Robinson
b23f81b686
Remove the separate surround51rear decoder option
...
Both 5.1 Side and Rear configurations use 'surround51' to look up the
appropriate decoder file. The decoder loader already handles mapping between
rear and side channels, so there's no need for separate options.
2017-02-19 22:59:55 -08:00
Chris Robinson
3761336e6c
Apply distance compensation when writing to the output
2017-02-19 22:47:59 -08:00
Chris Robinson
9da152a9c8
Don't use periphonic FOA when the HOA decoder is not periphonic
2017-02-19 17:45:27 -08:00
Chris Robinson
d45dd9c668
Remove the sinc8 resampler option
...
Perf shows less than 1 percent CPU difference from the higher quality bsinc
resampler, but uses almost twice as much memory (a 128KB lookup table).
2017-02-19 16:45:17 -08:00
Chris Robinson
247f56249a
Always lock the device backend before calling aluMixData
2017-02-18 17:32:07 -08:00
Chris Robinson
2448f88e70
Return some device latency by default
...
A device will never have 0 latency. OpenAL Soft itself uses a sample buffer
length of UpdateSize*NumUpdates, and during playback will have about
(NumUpdates-1) periods filled, more or less. Without a more accurate
measurement from the playback system, this is better than reporting 0.
2017-02-18 16:55:48 -08:00
Chris Robinson
d8c42918f4
Use select() to wait for audio with OSS and Solaris
2017-02-18 15:58:15 -08:00
Chris Robinson
909193a345
Reorganize ALvoice members
...
This places the Send[] array at the end of the struct, making it easier to
handle dynamically.
2017-02-15 17:40:26 -08:00
Chris Robinson
5a50c46c22
Make ALsourceProps' Send array dynamically sized
...
ALsourceProps' Send[] array is placed at the end of the struct, and given an
indeterminate size. Extra space is allocated at the end of each struct given
the number of auxiliary sends set for the device.
2017-02-14 19:59:39 -08:00
Chris Robinson
69dd570961
Fix build with non-C11 atomics
2017-02-13 21:30:20 -08:00
Chris Robinson
0d19a20901
Make the source state atomic
...
Since it's modified by the mixer when playback is ended, a plain struct member
isn't safe.
2017-02-13 21:18:18 -08:00
Chris Robinson
0324712540
Put BsincState in a generic union
2017-02-13 11:29:32 -08:00
Chris Robinson
841d0bb893
Porperly check for and use __builtin_assume_aligned
2017-02-13 07:36:49 -08:00
Chris Robinson
65f9b2792c
Clean up the bsinc mixer a bit
2017-02-12 21:35:08 -08:00
Chris Robinson
27695e2b24
Add NEON-enhanced resamplers
2017-02-12 21:03:30 -08:00
Chris Robinson
427f484e01
Print separate messages for building sdl_sound and ffmpeg examples
2017-02-12 08:37:42 -08:00
Chris Robinson
6b030999cb
Don't require SDL_sound for alffplay
...
Also explicitly link with libz for alffplay, since static ffmpeg libs need it.
2017-02-11 12:56:13 -08:00
Chris Robinson
e92229f839
Fix more uses of unsigned sizes and offsets
2017-02-10 06:20:16 -08:00
Chris Robinson
5bd63ff03d
Remove a couple context lock wrapper functions
2017-02-07 19:32:49 -08:00
Chris Robinson
7cc8ba99f0
Properly capitalize NEON
2017-02-07 18:33:12 -08:00
Chris Robinson
317d135b96
Clear trailing whitespace from the cpu features string
2017-02-07 11:19:41 -08:00
Chris Robinson
c771b82a39
Use the correct IID for the opensl buffer queue
2017-02-07 10:55:36 -08:00
Chris Robinson
9f10ae466c
Convert the OpenSL backend to the new backend API
...
This also removes the buffer queue callback's call to aluMixData, which could
potentially block on a mutex.
2017-02-07 07:06:41 -08:00
Chris Robinson
af362c2d05
Fix for NULL JNIEnv
...
Which can happen with native-only apps
2017-02-05 14:25:17 -08:00
Chris Robinson
428cde5dc2
Call getSystemService as a non-static function
2017-02-03 09:41:21 -08:00
Chris Robinson
2c1791752a
Android's AudioManager.getProperty(String) returns a String
2017-02-02 06:14:01 -08:00
Chris Robinson
071b83ba52
Replace more ALuint with ALsizei
2017-01-29 16:42:02 -08:00
Chris Robinson
55a2474d7e
Fix late reverb low-pass filtering
2017-01-29 13:06:40 -08:00
Chris Robinson
3cc88b0aab
Use an all-pass series on each late reverb line
...
This attempts to improve the smoothness of the late reverb decay by passing
each line through multiple all-pass filters. Some work is still needed to work
better in high-density and not-so-high-diffusion environments.
This also removes the decay from the early reflections, since it's no longer
continuous feedback.
2017-01-28 17:15:47 -08:00
Chris Robinson
6b2297b508
Add more traces for the Java calls being made
2017-01-27 15:42:06 -08:00
Chris Robinson
9c019126d4
Remove __android_log_print calls for TRACEREF
...
TRACEREFs aren't normally important, and for as often as it happens, the added
function calls are wasteful even if they end up doing nothing.
2017-01-27 15:17:11 -08:00
Chris Robinson
19e96c6fef
Round and clamp the scaled update count with opensl
2017-01-27 01:46:44 -08:00
Chris Robinson
67ffdf7a78
Try to use the system sample rate with Android
2017-01-26 18:23:29 -08:00
Chris Robinson
3ba03c5a29
Also log to __android_log_print on Android
2017-01-26 18:15:19 -08:00
Chris Robinson
f0c8b7f255
Get the JavaVM handle on Android targets
2017-01-26 14:33:03 -08:00
Chris Robinson
1ebfce4cac
Improve the ambisonic upscaling methods
...
This now takes advantage of the differences seen in generated decoder matrices
for first-order compared to second- and third-order, such that with the
appropriate frequency-dependent scaling applied to first-order content, the
result is identical with a higher-order decoder matrix compared to a first-
order matrix for the same layout.
2017-01-24 19:03:51 -08:00
Chris Robinson
f4d52f43d8
Fix coefficient counts for the built-in B-Format decoders
2017-01-21 12:28:54 -08:00
Chris Robinson
7025660e8b
Use a flat sqrt(2) scale for non-directional ambient gains
2017-01-21 11:54:22 -08:00
Chris Robinson
371fda1803
Update the default basic B-Format decoders
...
This also converts them to ACN/N3D format.
2017-01-21 11:05:05 -08:00
Chris Robinson
aa56af1ecb
Move the B-Format HRTF virtual speaker stuff to InitHrtfPanning
...
This keeps the decoder matrices and coefficient mapping together for if it
changes in the future.
2017-01-18 19:16:24 -08:00
Chris Robinson
e8ac0e5bfd
Replace some ALvoid with void
2017-01-18 07:19:43 -08:00
Chris Robinson
d2e5aa79dd
Use ALsizei in more places
2017-01-18 07:13:23 -08:00
Chris Robinson
ba0944af9b
Pass the left and right buffers to the hrtf mixers directly
2017-01-17 16:49:26 -08:00
Chris Robinson
bfb7a6e4c8
Small update for the "virtual" Ambi2DDecoder coefficients
2017-01-17 11:35:19 -08:00
Chris Robinson
e9009968fb
More ALsizei, with the B-Format decoder
2017-01-16 09:37:55 -08:00
Chris Robinson
f1f93a593a
Fix a couple hard-coded array sizes
2017-01-16 09:04:58 -08:00
Chris Robinson
959812ee13
Use ALsizei in a few more places
2017-01-16 08:59:08 -08:00
Chris Robinson
325a49975a
Use ALsizei and ALint for sizes and offsets with resamplers and filters
2017-01-16 08:54:30 -08:00
Chris Robinson
cbb796bf31
Use ALsizei for sizes and offsets with the mixer
...
Unsigned 32-bit offsets actually have some potential overhead on 64-bit targets
for pointer/array accesses due to rules on integer wrapping. No idea how much
impact it has in practice, but it's nice to be correct about it.
2017-01-16 08:06:25 -08:00
Chris Robinson
9f23d17333
Use second-order ambisonics for basic HRTF rendering
...
This should improve positional quality for relatively low cost. Full HRTF
rendering still only uses first-order since the only use of the dry buffer
there is for first-order content (B-Format buffers, effects).
2017-01-15 13:57:22 -08:00
Chris Robinson
8e868823fd
Replace range-based for loops with QList iterators
...
Less than ideal, but some targets can't rely on C++11
2017-01-13 00:46:49 -08:00
Chris Robinson
e254a3f0c2
Search for and use Qt5 for alsoft-config
...
An option is provided to instead use Qt4.8 still if desired.
2017-01-12 23:53:27 -08:00
Chris Robinson
6e806848eb
Use C++11 for alsoft-config
2017-01-12 13:38:21 -08:00
Chris Robinson
24de5127b1
Update binary search algorithm for uintmaps
2017-01-12 10:09:39 -08:00
Chris Robinson
58f84170b6
Avoid using some LP types
2017-01-10 05:12:54 -08:00
Chris Robinson
43ab6075f9
Use proper atomics in the OSS backend
2017-01-10 03:17:23 -08:00
Chris Robinson
e20f0ae5a3
Hold Pulse's mainloop lock while calling capture functions
...
Since commit c837484015 , the backend's lock is no longer implicitly held when
calling capture functions. A separate mutex is used to ensure serial access,
and its up to the backend to protect against races and reentrancy with the
audio API.
2017-01-10 03:02:26 -08:00
Chris Robinson
987b6e069b
One more update for the HRTF B-Format coefficients
...
These should better represent the pseudo-inverse matrices with N3D scaling.
2017-01-09 06:36:02 -08:00
Chris Robinson
18bb46163a
Add missing AL_EFFECTSLOT_ properties for al(c)GetEnumValue
2017-01-05 20:06:24 -08:00
Chris Robinson
da4f0c65c3
Update the B-Format HRTF coefficients to use the pseudo-inverse matrix
...
It's hard to tell which is ultimately better, although this way does make the
FOA output somewhat louder which will help when it's combined with direct HRTF
rendering.
2017-01-04 21:53:28 -08:00
Chris Robinson
fcdf1cea70
Avoid writing to the same buffer that's read from
...
Also clean up comment formatting a bit.
2016-12-23 12:37:48 -08:00
Chris Robinson
40f359d159
Rename the version target for systems that have a version lib
2016-12-21 21:56:51 -08:00
Chris Robinson
080b0cea8b
Reorder filter coefficients
2016-12-21 21:35:50 -08:00
Chris Robinson
4c33818dde
Avoid duplicating code using a macro
2016-12-21 19:58:03 -08:00
Chris Robinson
315bd556ac
Convert the SndIO backend to the updated API
2016-12-21 17:28:22 -08:00
Chris Robinson
dedc782222
Avoid duplicate HRTF entries in the UI
...
Similar to how the library handles it, duplicate entries of the same file are
ignored. This could happen if, for example, XDG_DATA_DIRS contains the same
path multiple times.
2016-12-21 12:05:26 -08:00
Chris Robinson
1b104dd77b
More robustly generate the git commit ID and branch
2016-12-21 11:41:45 -08:00
Chris Robinson
e270a9784b
Add missing macros for OSS3/Free compatibility
2016-12-21 10:54:19 -08:00
Chris Robinson
bcb6dfee71
Trace the commit ID and branch the library was built from
2016-12-21 01:12:47 -08:00
Chris Robinson
8f581c0e66
Use separate macros for atomics that don't take a memory order
2016-12-20 20:49:37 -08:00
kcat
19ba71e767
Merge pull request #89 from rdb/patch-1
...
Explicitly disable use of GNU89 inline semantics
2016-12-20 13:43:59 -08:00
rdb
f0c2c23ad1
Explicitly disable use of GNU89 inline semantics
2016-12-20 22:34:00 +01:00
Chris Robinson
70378925b0
Warn when a given device name isn't found for OSS
2016-12-01 18:34:29 -08:00
Chris Robinson
66569295e5
Minor cleanup for ALCossListPopulate
2016-12-01 18:26:18 -08:00
Chris Robinson
338e0d72b4
Ensure OSS devices are enumerated when a name is requested.
2016-12-01 18:11:52 -08:00
Chris Robinson
02a6031d03
Use atomic flags for boolean atomic locks
2016-11-25 23:25:16 -08:00
Chris Robinson
ea82a6d19e
Use a function to generate the up-sampler transcode matrix
2016-11-24 21:29:53 -08:00
Chris Robinson
10473285ba
Fix an infinite loop
2016-11-23 01:32:14 -08:00
Chris Robinson
6886f77cbc
Only send source updates for sources that have updated
2016-11-23 01:31:13 -08:00
Chris Robinson
fcb669f803
Set the windows subsystem for DLLs on MSVC and GCC on Windows
2016-11-22 15:47:46 -08:00
Chris Robinson
49fd154829
Update cmake scripts to handle policy 0054
2016-11-22 14:50:55 -08:00
Chris Robinson
8492c2845d
Avoid some unnecessary seq_cst memory ordering
2016-11-22 03:40:15 -08:00
Chris Robinson
c618971758
Remove the non-atomic COMPARE_EXCHANGE macro
2016-11-22 03:00:16 -08:00
Chris Robinson
01babb69d2
Clean up finding a source's voice
2016-11-22 02:59:54 -08:00
Chris Robinson
616adea4cc
Improve seqlock behavior
2016-11-21 23:58:28 -08:00
Chris Robinson
8bf4fe2eea
Update some atomic memory ordering
2016-11-21 21:38:49 -08:00
Chris Robinson
a502a41be3
Stop using almemory_order_consume
2016-11-17 00:46:46 -08:00
Chris Robinson
caead294f2
Update a function comment about its input
2016-11-16 22:04:16 -08:00
Chris Robinson
b743bc1c1b
Remove the temporary stub files after the output object is made
2016-11-11 13:19:45 -08:00
Chris Robinson
e69af7ab92
Fixes for embedded HRTFs on OSX
...
Use an empty source file to build a stub object file, instead of /dev/null. Use
_mh_dylib_header to retrieve the data on 10.7+, instead of _mh_execute_header.
And shorten the names to fit in the 16-character limit.
Thanks to Anna Cheremnykh for the fixes!
2016-11-11 13:14:02 -08:00
Chris Robinson
9ef7719734
Try to make embedded HRTF data sets work on OSX
2016-11-10 21:51:45 -08:00
Chris Robinson
0532acdf94
Don't use 0 for a resource ID
2016-11-10 12:37:07 -08:00
Chris Robinson
6a91d6a10a
Add support for 8-byte types on inline assembly ATOMIC_ADD/SUB
2016-11-03 23:47:50 -07:00
Chris Robinson
939d16d57c
Include the full JACK ringbuffer size for the device period count
2016-11-03 23:29:33 -07:00
Chris Robinson
acc9f66baf
Clean up some ringbuffer atomic calls
2016-11-03 21:04:24 -07:00
Chris Robinson
82e8dd0525
Fix win32 atomic fallbacks
2016-11-03 15:32:31 -07:00
Chris Robinson
815947492c
Remove the explicit type from ATOMIC_ADD and ATOMIC_SUB
2016-11-03 01:22:29 -07:00
Chris Robinson
9682a62743
Use proper atomics for the lockless ringbuffer
2016-11-03 00:47:22 -07:00
Chris Robinson
118cc0907d
Remove an unnecessary intermediate variable
2016-11-02 16:10:02 -07:00
Chris Robinson
2d5efe424f
Be clearer about whether full or basic HRTF rendering is used
2016-11-02 16:10:02 -07:00
kcat
c8ce33d5bd
Merge pull request #78 from septag/cmake-dsound
...
Added cmake support for dsound and windows 8/10 SDKs
2016-11-02 16:09:23 -07:00
septag
ac26b209a6
fixed minor check in FindDSound.cmake
2016-11-03 01:52:40 +03:30
septag
d142ba1ab4
Added cmake FindWindowsSDK for FindDSound module and fixed FindDSound.cmake
2016-11-03 00:37:09 +03:30
Chris Robinson
43e7323adb
Rebalance the frequencies for B-Format HRTF coefficients
...
The original pseudo-inverse method that generated the LF matrix expects the
high frequencies to be scaled up by ~2.645751 over the low frequencies (or
sqrt(7), ~8.45dB). However, the AllRAD method used to generate the HF matrix
produced a matrix that was only scaled up by 1.46551981258 (based on the
average of the W coefficients).
Previously, the LF matrix was scaled down by sqrt(7), as the difference
specified in the pseudo-inverse results. This failed to account for the
increase already present in the HF matrix, so now the LF matrix is scaled down
by the remaining difference between the expected scaling and the scaling
already present in the HF matrix (sqrt(7) / 1.46551981258 = 1.80533302205, or
roughly 5.13dB, where the reciprocal is 0.553914423 for -5.13 dB).
2016-11-01 02:20:19 -07:00
Chris Robinson
a44f4c2fcb
Initial ChangeLog update for 1.18 changes
2016-10-30 11:09:34 -07:00
Chris Robinson
e46a92c220
Workaround some systems having an ECHO macro
2016-10-30 08:45:09 -07:00
septag
d01d30ad5e
Added cmake support for dsound and windows 8/10 SDKs
2016-10-30 14:18:45 +03:30
Chris Robinson
9120e7987e
Cleanup and clarify a bit of the ambisonic docs
2016-10-28 06:27:01 -07:00
Chris Robinson
2668da696c
Round the early and late delay tap sample offsets
2016-10-26 22:12:48 -07:00
Chris Robinson
16ed117d71
Restore a comment that was accidentally deleted
2016-10-10 01:33:33 -07:00
Chris Robinson
4bb6b9589f
Don't interpolate between nearest HRIRs
...
It still fades between HRIRs when it changes, but now it selects the nearest
one instead of blending the nearest four. Due to the minimum-phase nature of
the HRIRs, interpolating between delays lead to some oddities which are
exasperated by the fading (and the fading is needed to avoid clicks and pops,
and smooth out changes).
2016-10-09 00:37:47 -07:00
Chris Robinson
698eddbb0c
Better sort the main delay line taps
2016-10-06 20:05:16 -07:00
Chris Robinson
f826f86842
Decorrelate the early reflection inputs
2016-10-06 19:45:48 -07:00
Chris Robinson
76cd6797b7
Add some more 'restrict' keywords
2016-10-06 01:39:18 -07:00
Chris Robinson
965e91c702
Remove an unused struct
2016-10-05 20:35:14 -07:00
Chris Robinson
9b8f36b758
Pass current and target gains directly for mixing
2016-10-05 20:33:45 -07:00
Chris Robinson
1e1a8837f8
Update a comment about using row mixers
2016-10-05 15:09:14 -07:00
Chris Robinson
06639b8250
Better pack the late reverb low- and all-pass variables
2016-10-05 13:31:53 -07:00
Chris Robinson
bb6fba2183
Properly check for struct timespec
2016-10-04 17:19:47 -07:00
Chris Robinson
422f065809
Use the row mixer functions for the B-to-A-Format conversion
2016-10-04 16:42:28 -07:00
Chris Robinson
9349ee9002
Make some pointer-to-array parameters const
2016-10-04 16:25:43 -07:00
Chris Robinson
a0e4696f55
Include wtypes.h for defining Windows' property keys
2016-10-04 11:20:01 -07:00
Chris Robinson
1e4d9cfa7e
Enhance reverb using B-Format processing
...
Technically it uses A-Format processing from the B-Format input and output. But
this attempts to provide better spatial definition to the reverberation so that
it can be used in a more generic fashion, allowing it to be decoded as any
other B-Format signal to whatever output is needed, and also allowing for a bit
of height information when the output is capable of such.
There may still be some kinks to work out, such as properly decorrelating the
early reflection taps and tweaking the late reverb density. But it seems to be
a good enough start.
2016-10-03 12:20:13 -07:00
Chris Robinson
67c74e858b
Finalize AL_SOFT_gain_clamp_ex
2016-10-03 12:11:50 -07:00
Chris Robinson
a258790539
Update the ambisonic coefficients for HRTF
...
This uses an AllRAD-derived decoder matrix for the high frequencies, which
seems to improve positioning response. It also switches back to dual-band.
The low frequencies appear to be unexpectedly quiet by comparison, but it's not
that bad and can be tweaked later.
2016-09-26 11:18:26 -07:00
Chris Robinson
f5e4a3ed85
Add a volume-adjust config option to adjust the source output volume
...
Designed for apps that either don't change the listener's AL_GAIN, or don't
allow the listener's AL_GAIN to go above 1. This allows the volume to still be
increased further than such apps may allow, if users find it too quiet.
Be aware that increasing this can easily cause clipping. The gain limit
reported by AL_GAIN_LIMIT_SOFT is also affected by this.
2016-09-24 18:46:41 -07:00
Chris Robinson
24f9a0f2ae
Remove some more unnecessary volatiles
2016-09-24 14:29:27 -07:00
Chris Robinson
d89624b03c
Recognize Headset formfactors as headphones
2016-09-21 15:16:09 -07:00
Chris Robinson
4486043ae5
Skip audio packets that fail to decode in alffplay
2016-09-14 13:37:20 -07:00
kcat
2f1f7f4c6a
Merge pull request #63 from adrianbroher/gnuinstalldir
...
Use GNUInstallDirs to place the build artifacts properly
2016-09-14 09:48:03 -07:00
Chris Robinson
bb48a7e520
Fix EAX reverb effect output for HRTF and UHJ
2016-09-13 16:55:39 -07:00
Chris Robinson
af5fb3d6e7
Fix the libatomic check
2016-09-13 12:11:52 -07:00
kcat
a56bbbcf36
Merge pull request #70 from snikulov/appveyor_win_ci
...
build: added appveyor-ci script to verify windows build
2016-09-13 10:44:24 -07:00
Sergei Nikulov
1ff24c7171
build: added appveyour-ci script to verify windows build
2016-09-13 15:08:47 +03:00
Chris Robinson
a004ccfa1a
Check for libatomic, in case C11 atomics need it
2016-09-12 12:42:11 -07:00
Chris Robinson
53d8a49673
Call ALfilterState_processC directly
...
It's the only implementation currently, so there's no point to having it stored
as a function pointer in the filter struct. Even if there were SIMD versions,
it'd be a global selection, not per-instance.
2016-09-12 11:48:15 -07:00
Chris Robinson
46b3e1d08c
Check if -mfpu=neon is available for compiling the NEON mixer
2016-09-12 11:31:59 -07:00
Chris Robinson
efaa09dc23
Write to the correct outputs for extra reverb channels
2016-09-11 17:11:19 -07:00
Chris Robinson
651715abc9
Combine the reverb decorrelator delay line with the main delay line
...
Since it was merely acting as an extension of it anyway, with the second delay
line tap (for late reverb) copying attenuated samples to the decorrelator line
that was being tapped off of. Just extend the delay line and offset the
decorrelator taps to be relative to the late reverb tap.
2016-09-11 12:25:06 -07:00
Chris Robinson
4fcf9279fe
Mark a global variable declaration as extern
2016-09-11 07:20:02 -07:00
Chris Robinson
f993fd0cef
Don't warn if the desired default HRTF is already first
2016-09-10 07:55:33 -07:00
Chris Robinson
ba449ccce5
Handle UTF-8 output on Windows in openal-info
2016-09-09 09:52:01 -07:00
Chris Robinson
45dfdca6f9
Reduce the volume for the HRTF ambisonic decoder
...
Since it's accumulating multiple HRIRs for two output speakers, it seems to be
a better option to preserve the amplitude of the high-frequency decoder instead
of increasing it, and reduce the amplitude of the low-frequency decoder to
compensate.
2016-09-08 16:22:46 -07:00
Chris Robinson
0f24f49a44
Allow specifying the device to open for the examples
2016-09-08 12:14:28 -07:00
Chris Robinson
b21e481827
Only WARN if GetProcPath fails to find the binary
2016-09-08 11:56:25 -07:00
Chris Robinson
958301d880
Try increasing the stack size if thread creation fails
...
Also increase the default stack size to 2MB.
2016-09-08 06:30:25 -07:00
kcat
4d91afb203
Merge pull request #64 from tpetazzoni/arm-neon-fix
...
Build NEON code with -mfpu=neon
2016-09-08 02:09:55 -07:00
Chris Robinson
c3c283a0b5
Properly check if /proc/cpuinfo opened
2016-09-08 02:02:09 -07:00
Chris Robinson
742f181595
Use a few more HRIRs for the HRTF B-Format decoder
...
14 in total, an 8-point cube and a 6-point diamond shape, to help improve sound
localization a bit. Incurs no real extra CPU cost once the IRs are built.
2016-09-07 16:26:13 -07:00
Chris Robinson
a52cfc8048
Check for run-time NEON support by reading /proc/cpuinfo
...
Less than ideal since documentations warn it may not list 'neon' even if it's
really supported. However, the "proper" APIs to check for NEON extensions don't
seem to exist in my toolchain.
2016-09-07 09:57:40 -07:00
Chris Robinson
ef67d17a84
Simplify mmdevapi's device name search
...
Avoids converting each enumerated devid from WSTR to UTF-8, and instead just
converts the device name from UTF-8 to WSTR once if needed.
2016-09-07 09:22:34 -07:00
kcat
64a8ad9711
Merge pull request #65 from Dmytry/dmytry_github_master
...
mmdevapi: Allow specifying output device by it's audio endpoint GUID …
2016-09-07 08:32:31 -07:00
Chris Robinson
3af1d5b722
Properly align 16-bit fields in the Hrtf struct
2016-09-07 05:38:22 -07:00
Chris Robinson
7973c5abf8
Use unsigned int shifts for device flags
2016-09-07 05:18:42 -07:00
Dmytry Lavrov
6b7e14f11f
mmdevapi: Allow specifying output device by it's audio endpoint GUID or by the device id string (Oculus VR api requires you to play back on a specific device).
2016-09-06 19:25:44 -05:00
Chris Robinson
1d9d1958db
Make the SelectMixer function sharable
2016-09-06 13:21:11 -07:00
Thomas Petazzoni
27916ce3db
Build NEON code with -mfpu=neon
...
The ARM-specific NEON code needs to be built with -mfpu=neon to avoid
build failures when a difference FPU is used by default by the
compiler.
Fixes issue #54 .
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com >
2016-09-06 22:19:14 +02:00
Marcel Metz
3481cf6fba
Use GNUInstallDirs for generated pkg-config file
...
Continuation of 6387933
2016-09-06 21:52:05 +02:00
Marcel Metz
6387933f8b
Use GNUInstallDirs to place the build artifacts properly
...
CMake 2.8.5 added the GNUInstallDirs module, which provides various
variables following the CMAKE_INSTALL_*DIR pattern to allow users a more
flexible installation setup and to provide sensible defaults while
respecting distribution specific install locations like lib64 for RPM
based linux distributions or debian multiarch tuples.
2016-09-06 21:43:01 +02:00
Chris Robinson
9cbe02fd85
Use the optimized mixing functions for reverb output
2016-09-06 12:16:49 -07:00
Chris Robinson
0558869d94
Use deinterlaced buffers for the intermediate reverb storage
2016-09-06 11:07:45 -07:00
Chris Robinson
a758cc8243
Remove use of DECL_CONST
...
No idea if it was really gaining us anything, but removing it fixes a crash I
was getting with libs built with Clang.
2016-09-06 09:09:25 -07:00
Chris Robinson
1541ff24b8
Do reverb modulation before band-pass filtering
...
Ideally the band-pass should probably happen closer to output, like gain is.
However, doing that would require 16 filters (4 early + 4 late channels, each
with a low-pass and high-pass filter), compared to the two needed to do it on
input.
2016-09-06 07:02:17 -07:00
Chris Robinson
b1f70b5b78
Rename some variables for clarity
2016-09-06 03:10:38 -07:00
Chris Robinson
564030ffa4
Use more correct cube decoder matrices
2016-09-05 10:33:52 -07:00
Chris Robinson
a20576bbd7
Do multiple samples at once for reverb modulation
2016-09-05 06:08:01 -07:00
Chris Robinson
8a64f07121
Use a predefined identity matrix
2016-09-05 02:02:14 -07:00
Chris Robinson
42452b7f79
Correct a comment about B-Format conversion
2016-09-05 00:38:41 -07:00
Chris Robinson
cf0ef500ec
Rename MatrixMixerFunc to RowMixerFunc
2016-09-02 00:29:46 -07:00
Chris Robinson
17636a0c1c
Calculate a variable closer to where it's used
2016-09-01 21:05:24 -07:00
Chris Robinson
7428636071
Use MixMatrixRow to upsample the split frequency bands to the output
2016-09-01 07:08:52 -07:00
Chris Robinson
6fb634c3e1
Remove unnecessary consts
...
They were causing GCC's built-in atomic cmpxchg to complain.
2016-08-31 09:26:57 -07:00
Chris Robinson
7a140b6912
Reorganize sample type conversion functions
...
To help avoid redundant manual definitions.
2016-08-31 08:30:52 -07:00
Chris Robinson
566d449e53
Always load HRTF files through memory pointers
2016-08-31 08:16:49 -07:00
Chris Robinson
e01c337921
Add some helper wrappers to mmap files
2016-08-31 08:14:50 -07:00
Chris Robinson
ccf90df072
Initialize some enums to dummy values
2016-08-31 04:56:10 -07:00
Chris Robinson
f791b8c517
Add a compile-time macro to use dual-band ambisonic HRTF processing
...
Use single-band processing for now, to see if dual-band is causing a drop in
quality at all.
2016-08-30 22:33:33 -07:00
Chris Robinson
8d3a286577
Simplify the ambisonic up-sampler
...
It still behaves the same, although now combines the separate decode+encode
matrices into a transcode matrix (one per frequency band).
2016-08-30 04:21:57 -07:00
Chris Robinson
6d7f9aacd6
Print whether direct channels are off or on to stdout in alffplay
2016-08-29 22:18:44 -07:00
Chris Robinson
4859984e33
Add an option to alffplay to toggle AL_DIRECT_CHANNELS_SOFT
...
Using the 'd' key will toggle the playback source's AL_DIRECT_CHANNELS_SOFT
property. Although there is no visual feedback showing when it's on or off.
2016-08-29 01:55:44 -07:00
Chris Robinson
54649851fa
Remove the upper limit from AL_MIN_GAIN and AL_MAX_GAIN
...
As per the current AL_SOFT_gain_clamp_ex proposal.
2016-08-29 01:53:52 -07:00
Chris Robinson
5bf0c64258
Add a query for the maximum source gain limit
2016-08-28 18:21:09 -07:00
Chris Robinson
3d59021702
Clamp the maximum mixing gain boost to 16
...
The combined source and listener gains now can't exceed a multiplier of 16
(~24dB). This is to avoid mixes getting out of control with large volume
boosts, which reduces the effective precision given by floating-point.
2016-08-27 06:28:04 -07:00
Chris Robinson
4b153dade8
Allow sources to play while alcSuspendContext is in effect
...
This appears to be how Creative's Windows drivers handle it, and is necessary
for at least the Windows version of UT2k4 (otherwise it tries to play a source
while suspended, checks and sees it's stopped, then kills it before it's given
a chance to start playing).
Consequently, the internal properties it gets mixed with are determined by what
the source properties are at the time of the play call, and the listener
properties at the time of the suspend call.
This does not change alDeferUpdatesSOFT, which will still hold the play state
change until alProcessUpdatesSOFT.
2016-08-26 21:19:38 -07:00
Chris Robinson
ef03de3981
Avoid directly replacing the effect slot Update pointer
2016-08-25 18:19:13 -07:00
Chris Robinson
a16739f765
Properly defer effect slot changes
...
Note that this now also causes all playing sources to update when an effect
slot is updated. This is a bit wasteful, as it should only need to re-update
sources that are using the effect slot (and only when a relevant property is
changed), but it's good enough. Especially with deferring since all playing
sources are going to get updated on the process call anyway.
2016-08-25 06:17:36 -07:00
Chris Robinson
4e4e597fa5
Track all references for effect states
...
This allows us to not have to play around with trying to avoid duplicate state
pointers, since the reference count will ensure they're deleted as appropriate.
The only caveat is that the mixer is not allowed to decrement references, since
that can cause the object to be freed (which the mixer code is not allowed to
do).
2016-08-25 04:57:58 -07:00
Chris Robinson
0fbf34fb45
Add a ref count to ALeffectState
...
This is mostly just reorganizing the effects to call the Construct method which
initializes the ref count.
2016-08-25 03:49:57 -07:00
Chris Robinson
d8e9b3c621
Also rotate stereo sounds in the alhrtf example
2016-08-24 03:49:45 -07:00
Chris Robinson
849f85549d
Consolidate duplicate code
2016-08-24 02:17:55 -07:00
Chris Robinson
8bf4a22876
Combine related members into a struct
2016-08-24 00:25:28 -07:00
Chris Robinson
e77de8b12a
Make a function definition static
2016-08-23 23:57:55 -07:00
Chris Robinson
ea2fb38627
Hold updates for both listener and source updates
2016-08-23 19:37:26 -07:00
Chris Robinson
c7eb0b7393
Don't pass the context's distance model as the source's
2016-08-23 19:17:17 -07:00
Chris Robinson
dc8b7814c7
Avoid resupplying unneeded source updates
...
The source's voice holds a copy of the last properties it received, so listener
updates can make sources recalculate internal properties from that stored copy.
2016-08-23 18:56:01 -07:00
Chris Robinson
bd054632e0
Remove an unneeded typedef
2016-08-21 23:59:11 -07:00
Chris Robinson
846cdd472d
Band-split the HRIRs when building the ambisonic decoder filters
...
This allows each HRIR to contribute a frequency-dependent response, essentially
acting like a dual-band decoder playing over the cube speaker array.
2016-08-21 03:05:42 -07:00
Chris Robinson
d16954c34e
Fix HRTF index calculations for B-Format coefficients
...
The CalcEvIndices and CalcAzIndices methods were dependent on the FPU being in
round-to-zero mode, which is not the case for panning initialization. And since
we just need the closest index and don't need to lerp between them, it's better
to just directly calculate the index with rounding.
2016-08-18 23:33:08 -07:00
Chris Robinson
e13c6bca20
Only use the cube points for generating the ambisonic HRTF coefficients
...
Using all the HRIRs seems to have problems with volume balancing, due in part
to HRTF data sets not having uniform enough measurements for a simple decoder
matrix to work (and generating a proper one that would work better is not that
easy). This still maintains the benefits of decoding ambisonics directly to
HRTF, namely that it only needs to filter the 4 ambisonic channels and can use
more optimized HRTF filtering methods on those channels. It can also be
improved further with frequency-dependent processing baked into the generated
coefficients, incurring no extra run-time cost for it.
2016-08-17 05:34:09 -07:00
Chris Robinson
770e2ff7ed
Use a more specialized mixer function for B-Format to HRTF
2016-08-12 05:26:36 -07:00
Chris Robinson
c6c6e3324d
Decode directly from B-Format to HRTF instead of a cube
...
Last time this attempted to average the HRIRs according to their contribution
to a given B-Format channel as if they were loudspeakers, as well as averaging
the HRIR delays. The latter part resulted in the loss of the ITD (inter-aural
time delay), a key component of HRTF.
This time, the HRIRs are averaged similar to above, except instead of averaging
the delays, they're applied to the resulting coefficients (for example, a delay
of 8 would apply the HRIR starting at the 8th sample of the target HRIR). This
does roughly double the IR length, as the largest delay is about 35 samples
while the filter is normally 32 samples. However, this is still smaller the
original data set IR (which was 256 samples), it also only needs to be applied
to 4 channels for first-order ambisonics, rather than the 8-channel cube. So
it's doing twice as much work per sample, but only working on half the number
of samples.
Additionally, since the resulting HRIRs no longer rely on an extra delay line,
a more efficient HRTF mixing function can be made that doesn't use one. Such a
function can also avoid the per-sample stepping parameters the original uses.
2016-08-11 23:20:35 -07:00
Chris Robinson
9a60184bf6
Set a JACK error message handler when initializing the backend
...
JACK2 will print error messages to stderr if it fails to connect to a server.
Users who don't normally use JACK but have the client lib installed will get
those messages even though OpenAL Soft will continue on to find a working
backend without trouble. So to avoid it, set an error message handler that'll
log them as warnings.
This isn't that great because there's no way to tell whether the error messages
are due to the server not running, or some other problem. And it resets the
callback to the default afterward even if it may have been set to something
else before. JACK2, which is what needs this workaround in the first place,
doesn't export the jack_error_callback pointer to properly save and restore it.
2016-08-11 20:43:54 -07:00
Chris Robinson
56d3598020
Avoid checking DeferUpdates for each source state change
2016-08-08 22:31:08 -07:00
Chris Robinson
6117cb2377
Mix gain steps using SIMD with Neon
2016-08-05 18:47:26 -07:00
Chris Robinson
f775f25379
Modify NumUpdates for different sample rates instead of UpdateSize
...
Not that this really changes anything since the CoreAudio backend doesn't honor
the ALCdevice's buffer metrics, nor accurately report the device's actual
metrics. But it clears up warnings from a non-multiple-of-four update size if
the sample rate causes it to change.
2016-08-04 21:19:04 -07:00
Chris Robinson
232293792d
Constify some variables
2016-08-04 20:42:25 -07:00
Chris Robinson
48b954160e
Look for the correct DLL for JACK on Windows
2016-08-03 19:07:35 -07:00
Chris Robinson
3b2d8d3949
Use al_calloc/al_free in more places
2016-08-03 17:36:42 -07:00
Chris Robinson
2b3c7f211c
Add 'restrict' to another parameter
2016-08-03 08:34:25 -07:00
Chris Robinson
f1e3f0762b
Use the ACN and N3D map and scale lookup tables in SetChannelMap
2016-08-02 09:16:12 -07:00
Chris Robinson
0fcd39c4c0
Don't store the looping state in the voice
...
Certain operations on the buffer queue depend on the loop state to behave
properly, so it should not be deferred until the async voice update occurs.
2016-07-31 23:42:30 -07:00
Chris Robinson
48ff5d4ce8
Rename Ambisonics to Ambisonic in a couple places
2016-07-31 08:17:08 -07:00
Chris Robinson
bff5268ed4
Remove DevFmtBFormat3D, which is covered by DevFmtAmbi1
2016-07-31 08:13:41 -07:00
Chris Robinson
2dd2756890
Handle ambi-format with alsoft-config
2016-07-31 08:03:26 -07:00
Chris Robinson
4bcd2fbb2e
Add an option to specify the ambisonic output configuration
2016-07-31 07:46:38 -07:00
Chris Robinson
01af7b432d
Update alsoft-config for the ambisonic output configurations
2016-07-30 16:32:26 -07:00
Chris Robinson
af258efda4
Update alsoftrc.sample with the new channel configurations
2016-07-30 16:24:46 -07:00
Chris Robinson
e4380ece5e
Update alsoftrc.sample for proper txt filenames
2016-07-30 15:56:22 -07:00
Chris Robinson
0c5985374a
Simplify a format check
2016-07-30 10:16:29 -07:00
Chris Robinson
d253719ead
Rename ambisonic channel config values to be shorter
2016-07-30 09:35:54 -07:00
Chris Robinson
33a84f17ac
Add a stand-alone upsampler for higher-order ambisonic oputput
2016-07-30 09:29:21 -07:00
Chris Robinson
b5b3ea95f8
Add a config to output first-, second-, or third-order ambisonics
...
Currently incomplete, as second- and third-order output will not correctly
handle B-Format input buffers. A standalone up-sampler will be needed, similar
to the high-quality decoder.
Also, output is ACN ordering with SN3D normalization. A config option will
eventually be provided to change this if desired.
2016-07-29 21:55:43 -07:00
Chris Robinson
96e83f95ee
Don't try freeing the context in ReleaseThreadCtx
...
Unfortunately on certain systems, the TLS callback is called in a restricted
context, and isn't allowed to access certain messaging sub-systems. Such sub-
systems may be used if the thread's context is freed, in turn freeing the
device, which it tries to close.
Ideally, the app shouldn't have tried to destroy a context while it was still
current on a thread, or even leave a context current on a thread that's being
destroyed,. So for now, release the context ref and print an ERR that it might
be leaked.
2016-07-29 08:02:02 -07:00
Chris Robinson
5e11a738c6
Combine VECTOR_RESIZE and VECTOR_RESERVE
2016-07-26 12:02:03 -07:00
Chris Robinson
d2eb866abe
Avoid a NULL deref when creating 0 auxiliary effect slots
2016-07-26 04:54:27 -07:00
Chris Robinson
b047eda1cb
Avoid passing NULL to a parameter that must not be NULL
2016-07-26 04:53:25 -07:00
Chris Robinson
a6f41e4cb0
Remove the last use of ALfilterState_processSingle
2016-07-26 04:09:01 -07:00
Chris Robinson
25d1b7bdba
Remove broken autowah effect code
...
It's been disabled forever, and I have no idea how to make it work properly.
Better to just redo it when making something that works.
2016-07-26 03:45:25 -07:00
Chris Robinson
45514ee32f
Add some more restrict keywords
2016-07-26 00:07:39 -07:00
Chris Robinson
11b38e1190
Rename input_gain to b0
2016-07-26 00:03:44 -07:00
Chris Robinson
0a693d039a
Avoid more uses of ALfilterState_processSingle
...
It's a horriobly inefficient way to process multiple samples through the
filter.
2016-07-25 23:51:37 -07:00
Chris Robinson
8fcc4afd2d
Fix use of a loop var
2016-07-25 22:20:47 -07:00
Chris Robinson
e4bbbe06fa
Avoid manual loops for ALfilterState processing
2016-07-25 19:04:54 -07:00
Chris Robinson
94dd34fb4b
Increase the default thunk array size
...
This value should be enough to hold IDs for most apps without needing to
reallocate it, while not being unnecessarily large (4KB).
2016-07-25 06:29:08 -07:00
Chris Robinson
c0e7aab823
Properly skip loading of already-loaded HRTF data sets
...
Previously, if an HRTF file was loaded it would not only skip loading it, but
it would also skip adding it to the output enumeration list. Now it properly
skips loading it when it's already loaded, but still adds it to the enumeration
list if it's not already in it.
2016-07-24 21:59:02 -07:00
kcat
9f2e416bbd
Merge pull request #49 from ryanpcmcquen/patch-1
...
Fix for ffmpeg.
2016-07-21 16:42:21 -07:00
Ryan P.C. McQuen
69af50cadb
Fix for ffmpeg.
...
Closes https://github.com/kcat/openal-soft/issues/48 .
2016-07-21 08:09:31 -07:00
Chris Robinson
fbba2828cd
Update the default quad decoder matrix
2016-07-18 19:42:11 -07:00
Chris Robinson
dc8bbca7f1
Constify and use the correct size for an array
2016-07-17 15:38:39 -07:00
Chris Robinson
84ca38ba95
Make a MAX_AMBI2D_COEFFS macro instead of a magic number
2016-07-17 00:46:18 -07:00
Chris Robinson
35cbecabf9
Repack the ambisonic dual-band decoder matrices
...
The decoders use a row of the HF decoder matrix followed by a row of the LF
decoder matrix, for each given output channel in turn. Packing the two matrices
accordingly results in less memory hopping.
2016-07-17 00:29:43 -07:00
Chris Robinson
2f3cffa517
Improve the UHJ encoder's allpass processing loops
2016-07-14 01:42:02 -07:00
Chris Robinson
470f454c53
Modify bs2b_cross_feed to do multiple samples at once
2016-07-13 23:08:11 -07:00
Chris Robinson
5106f035df
Move the input channel array out of the DirectParams and SendParams
2016-07-13 01:39:44 -07:00
Chris Robinson
e8202b915d
Fix indentation
2016-07-12 19:05:56 -07:00
Chris Robinson
b4cb0e9bf5
Fix a copy-paste message error
2016-07-12 19:05:21 -07:00
Chris Robinson
ee929a2eea
Enumerate the embedded HRTF resources when available
2016-07-12 19:02:19 -07:00
Chris Robinson
4898234da8
Add a cmake option to embed the HRTF data
2016-07-12 14:22:17 -07:00
Chris Robinson
14166264d6
Store the voice output buffers separate from the params
2016-07-11 23:30:32 -07:00
Chris Robinson
e4039cb9ae
Update comment about the source radius calculations
2016-07-10 22:11:11 -07:00
Chris Robinson
fe2fb81047
Fix a direct access to a UIntMap
2016-07-09 16:42:36 -07:00
Chris Robinson
0aae992f94
Reorder some source fields
2016-07-07 19:48:21 -07:00
Chris Robinson
745cad5231
Avoid standard malloc/free for Hrtf allocation
2016-07-07 10:31:43 -07:00
Chris Robinson
7ec89b4b6e
Avoid function calls to get the HRTF sample rate and IR size
2016-07-07 10:26:42 -07:00
Chris Robinson
b495d80f56
Avoid using memcpy to copy a single struct
2016-07-06 13:33:40 -07:00
Chris Robinson
d096e183a8
Remove a slightly outdated comment
2016-07-06 09:52:42 -07:00
Chris Robinson
d340d50d49
Remove the VirtOut buffer alias
2016-07-05 14:18:17 -07:00
Chris Robinson
8f4d6c48ce
Use separate arrays for UIntMap keys and values
2016-07-04 20:35:32 -07:00
Chris Robinson
f0cbcdc928
Use al_malloc/al_free for the UIntMap array
2016-07-04 10:26:46 -07:00
Chris Robinson
80da138d7f
Ensure voices has been updated once before mixing them
...
Sometimes the mixer is temporarily prevented from applying updates, when
multiple sources need to be updated simultaneously for example, but does not
prevent mixing. If the mixer runs during that time and a voice was just
started, it would've mixed the voice without any internal properties being set
for it.
2016-06-16 18:29:18 -07:00
Chris Robinson
697ee19f71
Rename MaxNoOfSources for consistency
2016-06-08 11:19:33 -07:00
Chris Robinson
a49db89d7a
Remove an IN_IDE_PARSER hack
...
Not all IDE parsers necessarily choke on restrict, and even those that do can
probably have their own configuration to define macros that can hide the
parsing errors caused by it.
2016-06-07 16:11:50 -07:00
Chris Robinson
0477d61599
Look in the executable's dir for another config file
...
On Windows it'll look for alsoft.ini, and elsewhere is alsoft.conf. This
applies after the user-local settings and before ALSOFT_CONF.
2016-06-04 10:45:44 -07:00
Chris Robinson
b2041a5ddf
Only define 8 HRTF filter states and params for the device
...
It will only be used with a cube channel setup, so there's no need to have one
for every possible output channel.
2016-06-04 08:40:06 -07:00
Chris Robinson
2c402e1ab5
Add property queries to get the device latency with the clock
2016-06-03 09:40:30 -07:00
Chris Robinson
e38a81c5b6
Improve the filter processing function
2016-06-03 06:55:54 -07:00
Chris Robinson
ce676ab70a
Remove some unnecessary volatile keywords
2016-06-03 05:46:29 -07:00
Chris Robinson
b7da69510c
Implement a Neon-enhanced MixRow
2016-06-01 23:39:13 -07:00
Chris Robinson
a16d0b192e
Make a function static
2016-06-01 10:21:16 -07:00
Chris Robinson
c63d468d4c
Use a macro to specify the ambisonic periphonic channel mask
2016-06-01 05:30:06 -07:00
Chris Robinson
5e64882be9
Use SSE for applying the HQ B-Format decoder matrices
2016-05-31 10:18:34 -07:00
Chris Robinson
72d2febccb
Don't access the band splitter fields in the processing loops
...
perf shows a 5% drop in relative execution time on the alffplay example with an
audio-only file (20% to 15%). Kinda figured the optimizer would handle it
better, but I guess not.
2016-05-31 07:50:23 -07:00
Chris Robinson
d1c4fb6364
Don't try to emulate almtx_timedlock
2016-05-30 05:04:49 -07:00
Chris Robinson
612b24fa91
Clean up a couple variable names and declarations
2016-05-30 02:10:06 -07:00
Chris Robinson
70a105c22c
Remove unnecessary VECTOR_INSERT
2016-05-30 00:05:10 -07:00
Chris Robinson
4802465f1a
Hold the effectslot map lock while handling it
2016-05-29 02:47:54 -07:00
Chris Robinson
8aa4a74a7b
Use a linked list for active effect slots
2016-05-29 01:40:16 -07:00
Chris Robinson
4b8aa9caf1
Avoid the mixer lock when getting the plain source offset
...
i.e. without the latency
2016-05-28 06:23:55 -07:00
Chris Robinson
9025e42afd
Avoid an explicit mixer lock for getting the source offset and latency
...
The only mixer locking involved is with the backend, as determined by it's
ability to get the device clock and latency atomically.
2016-05-28 04:11:57 -07:00
Chris Robinson
6d4380a48c
Change the backend getLatency method to return the clock time too
...
This will also allow backends to better synchronize the tracked clock time with
the device output latency, without necessarily needing to lock if the backend
API can allow for it.
2016-05-28 00:43:14 -07:00
Chris Robinson
800e38bac6
Use the backend lock for the effectstate's deviceUpdate call
2016-05-27 19:40:54 -07:00
Chris Robinson
c837484015
Use a specific lock for the backend's stop/reset/play calls
...
This helps protect against the device changing unexpectedly from multiple
threads, instead of using the global list/library lock.
2016-05-27 19:23:39 -07:00
Chris Robinson
01f3e33df9
Remove a couple unneeded functions
2016-05-25 06:45:56 -07:00
Chris Robinson
ea83c959ca
Increment the device's mix count closer to the mixing loops
2016-05-23 01:03:37 -07:00
Chris Robinson
e8b274d349
Properly pluralize some messages
2016-05-22 21:03:16 -07:00
Chris Robinson
ea3fa06bc5
Improve locking for device attribute queries
...
Avoids the backend device lock, instead using the list lock to prevent the
device from changing while being queried, and adds some missing locks.
2016-05-22 20:42:00 -07:00
Chris Robinson
2e7ec3979a
Avoid using realloc in a number of places
2016-05-21 03:27:51 -07:00
Chris Robinson
7bf64eaee0
Make the source position calues atomic
2016-05-19 20:50:55 -07:00
Chris Robinson
d80f00173f
Copy the source's Looping property into the voice
2016-05-18 12:15:19 -07:00
Chris Robinson
aff725cba3
Avoid redundantly storing distance model settings
2016-05-17 20:02:46 -07:00
Chris Robinson
82675c018d
Update the right effect state when the device is reset
2016-05-17 18:23:41 -07:00
Chris Robinson
82720c4759
Don't assume the "real" output buffer follows the dry buffer
2016-05-17 15:03:56 -07:00
Chris Robinson
2172f974e7
Improve reverb panning gains for "3D" output.
2016-05-17 14:28:30 -07:00
Chris Robinson
51e4aa7fc6
Ignore the listening angle for the wet path sound cones
...
Since the wet path is essentially the room response to a sound, the direction
of the sound to the listener doesn't change the amount of energy the room
receives. Instead, the surface area defined by the cones dictate the volume the
room gets for the sound.
2016-05-16 22:42:41 -07:00
Chris Robinson
aea7c85daa
Use floats for the listener transforms
2016-05-16 18:28:46 -07:00
Chris Robinson
56c6b3f56c
Don't store the source's update method with the voice
2016-05-16 14:46:06 -07:00
Chris Robinson
945fd022d6
Avoid separate updates to sources that should apply together
2016-05-15 22:16:27 -07:00
Chris Robinson
63e98481ee
Allocate context storage before starting/resetting the device
...
In case allocation fails, we don't have to worry about the playing status of
the backend.
2016-05-15 14:12:56 -07:00
Chris Robinson
c522658d19
Avoid duplicate effect state objects in the freelist
...
If an unapplied update was superceded, it would be placed in the freelist with
its effect state object intact. This would cause another update with the same
effect state object to be placed into the freelist as well, or worse, cause it
to get deleted while in use when the container had its effect state cleared.
2016-05-15 13:50:56 -07:00
Chris Robinson
576c1116a6
Avoid using a flag to specify if the effect state needs to be updated
...
This fixes a potential missed state change if an update with a new state got
replaced with one that doesn't.
2016-05-15 01:19:05 -07:00
Chris Robinson
b3338d25f6
Provide asynchronous property updates for sources
...
This necessitates a change in how source updates are handled. Rather than just
being able to update sources when a dependent object state is changed (e.g. a
listener gain change), now all source updates must be proactively provided.
Consequently, apps that do not utilize any deferring (AL_SOFT_defer_updates or
alcSuspendContext/alcProcessContext) may utilize more CPU since it'll be
filling out more update containers for the mixer thread to use.
The upside is that there's less blocking between the app's calling thread and
the mixer thread, particularly for vectors and other multi-value properties
(filters and sends). Deferring behavior when used is also improved, since
updates that shouldn't be applied yet are simply not provided. And when they
are provided, the mixer doesn't have to ignore them, meaning the actual
deferring of a context doesn't have to synchrnously force an update -- the
process call will send any pending updates, which the mixer will apply even if
another deferral occurs before the mixer runs, because it'll still be there
waiting on the next mixer invocation.
There is one slight bug introduced by this commit. When a listener change is
made, or changes to multiple sources while updates are being deferred, it is
possible for the mixer to run while the sources are prepping their updates,
causing some of the source updates to be seen before the other. This will be
fixed in short order.
2016-05-14 23:43:40 -07:00
kcat
0f7e499323
Merge pull request #41 from ColdPie1/source_limit
...
alsoft-config: Raise source limit to 4096
2016-05-14 12:44:58 -07:00
Chris Robinson
f751f5e25e
Store the remaining context properties with the listener properties
2016-05-13 20:21:20 -07:00
Chris Robinson
93a94d177c
Get rid of an unnecessary copy of ALeffectProps
2016-05-13 18:28:01 -07:00
Andrew Eikum
d89043b88e
alsoft-config: Raise source limit to 4096
2016-05-13 09:04:26 -05:00
Chris Robinson
59cd6230a6
Properly load the effect state pointer from the property container
2016-05-13 00:24:26 -07:00
Chris Robinson
770bdcc108
Recognize AUX0...AUX15 for decoder speaker labels
2016-05-12 23:41:23 -07:00
Chris Robinson
9e6d8342de
Hold the effect and filter maps while handling effects and filters
2016-05-12 23:12:11 -07:00
Chris Robinson
8d14824c65
Call the effect state update method after "returning" the container object.
2016-05-12 19:17:08 -07:00
Chris Robinson
210e150601
Avoid updating the effect state object if it's not changed
2016-05-12 19:05:06 -07:00
Chris Robinson
ef0d4f8210
Provide (mostly) lockless updates for effect slots
...
Similar to the listener, separate containers are provided atomically for the
mixer thread to apply updates without needing to block, and a free-list is used
to reuse container objects.
A couple things to note. First, the lock is still used when the effect state's
deviceUpdate method is called to prevent asynchronous calls to reset the device
from interfering. This can be fixed by using the list lock in ALc.c instead.
Secondly, old effect states aren't immediately deleted when the effect type
changes (the actual type, not just its properties). This is because the mixer
thread is intended to be real-time safe, and so can't be freeing anything. They
are cleared away when updates reuse the container they were kept in, and they
don't incur any extra processing cost, but there may be cases where the memory
is kept around until the effect slot is deleted.
2016-05-12 18:41:33 -07:00
Chris Robinson
186b54aa3d
Use a lockless method for updating listener and context properties
...
This uses a separate container to provide the relevant properties to the
internal update method, using atomic pointer swaps. A free-list is used to
avoid having too many individual containers.
This allows the mixer to update the internal listener properties without
requiring the lock to protect against async updates. It also allows concurrent
read access to the user-facing property values, even the multi-value ones (e.g.
the vectors).
2016-05-11 21:02:11 -07:00
Chris Robinson
21bc0f5ef8
Hold the buffer map lock while handling the buffer
2016-05-10 23:42:44 -07:00
Chris Robinson
906a4bb22d
Hold the source map lock while handling it
2016-05-10 22:49:24 -07:00
Chris Robinson
c026f44a09
Add a comment about CoeffCount being 0
2016-05-10 17:07:44 -07:00
Chris Robinson
7dac02148b
Use the source's offset type to determine if there's an offset
2016-05-09 17:01:18 -07:00
Chris Robinson
182c0cb61a
Find a valid source buffer before updating the voice
2016-05-09 14:22:26 -07:00
Chris Robinson
c2611f10ab
Store more "active" listener and context properties separately
...
This helps ensure async listener/context property changes affect all playing
sources at the same time.
2016-05-09 11:26:49 -07:00
kcat
dcdeb8d1a6
Merge pull request #40 from rdb/master
...
Fix placement of alignas - fixes Mac OS X build
2016-05-03 03:03:51 -07:00
rdb
b0224485aa
Fix placement of alignas - fixes Mac OS X build
2016-05-03 05:38:36 -04:00
Chris Robinson
d1e98c36d3
Don't crash when there's no backend to probe
2016-04-30 17:20:25 -07:00
Chris Robinson
3556da0d02
Start AL_SOFT_buffer_samples2 as a replacement for AL_SOFT_buffer_samples
2016-04-25 18:56:59 -07:00
Chris Robinson
b9eacf4641
Remove unnecessary code for the now-unused write offset
2016-04-25 02:22:54 -07:00
Chris Robinson
0ed6791a58
Add support for AL_EXT_SOURCE_RADIUS
2016-04-25 00:30:47 -07:00
Chris Robinson
7555c86e7d
Drop support for AL_SOFT_buffer_samples and AL_SOFT_buffer_sub_data
...
Unfortunately they conflict with AL_EXT_SOURCE_RADIUS, as AL_SOURCE_RADIUS and
AL_BYTE_RW_OFFSETS_SOFT share the same source property value. A replacement for
AL_SOFT_buffer_samples will eventually be made.
2016-04-24 23:58:11 -07:00
Chris Robinson
574ec13e5b
Avoid an unnecessary aluVector
2016-04-24 23:35:11 -07:00
Chris Robinson
f0871c8cfc
Improve radius behavior with scaling of ambisonic coefficients
2016-04-24 21:42:59 -07:00
Chris Robinson
fdee577940
Provide a decoder preset for 5.1 Surround output
2016-04-24 21:11:24 -07:00
Chris Robinson
c796f99d36
Open the file selector to an existing path for presets
2016-04-23 17:31:34 -07:00
Chris Robinson
c2dec5008b
Install the ambdec preset files
2016-04-23 17:29:51 -07:00
Chris Robinson
c6a11770c5
Add some general info about how ambdec works to ambdec.txt
2016-04-23 15:01:44 -07:00
Chris Robinson
be7938ed38
Move some docs to the docs directory
2016-04-23 14:54:37 -07:00
Chris Robinson
80c9008798
Add docs for OpenAL Soft and standard decoder presets
2016-04-23 14:12:43 -07:00
kcat
1c736f4eb9
Merge pull request #38 from geron-cn/patch-1
...
fix audio play error in sample alffplay
2016-04-22 02:57:50 -07:00
gero
cec03f39ae
fix audio play error in sample
...
fix audio play error in sample
2016-04-22 17:33:00 +08:00
Chris Robinson
3387f23074
Update a config option comment
2016-04-22 02:19:43 -07:00
Chris Robinson
42531703cc
Increase max output channels to 16
...
This also enables fully periphonic 3rd order HQ decoding.
2016-04-19 18:58:19 -07:00
Chris Robinson
a59332f622
Combine two if checks into one
2016-04-19 13:58:33 -07:00
Chris Robinson
cd2e9114e8
Remove unneeded ChannelMaps for BFormat formats
2016-04-17 22:11:15 -07:00
Chris Robinson
894c7d0f7e
Trace the requested attribute values
2016-04-17 17:22:03 -07:00
Chris Robinson
3b571e03ab
Avoid storing channel names for the dry buffer
2016-04-16 17:21:31 -07:00
Chris Robinson
d2e8fae005
Don't look up the dry buffer's FrontCenter in the Dedicated effect
...
The real FrontCenter output is used if it exists, and if it doesn't, it's
unlikely the dry buffer will have it (and even if it does, it won't be any
better than panning).
2016-04-16 14:11:10 -07:00
Chris Robinson
d1f3a15470
Reorganize a bit of aluInitRenderer code
2016-04-16 14:00:22 -07:00
Chris Robinson
325245f4b8
Silence possible out-of-bounds warning again
2016-04-16 01:24:37 -07:00
Chris Robinson
a6c70992b0
More directly map coefficients for ambisonic mixing buffers
...
Instead of looping over all the coefficients for each channel with multiplies,
when we know only one will have a non-0 factor for ambisonic mixing buffers,
just index the one with a non-0 factor.
2016-04-15 22:05:47 -07:00
Chris Robinson
e16032e1f0
Update some comments
2016-04-15 18:14:19 -07:00
Chris Robinson
bd65f64d05
Avoid mixing all coefficients together when only some are used
2016-04-15 17:31:04 -07:00
Chris Robinson
e27fad90de
Fix possible out-of-bounds warning
2016-04-15 12:33:42 -07:00
Chris Robinson
f4ff5fc106
Shorten VECTOR_ITER_ macros to VECTOR_
2016-04-15 12:22:54 -07:00
Chris Robinson
d5e624391b
Update a comment
2016-04-15 10:50:46 -07:00
Chris Robinson
fb97822d8c
Avoid unnecessary loops for setting up effect slot b-format buffer mixing
2016-04-14 21:50:36 -07:00
Chris Robinson
21921cdaff
Prepare the custom decoder in aluInitRenderer
2016-04-14 16:42:32 -07:00
Chris Robinson
65a9b97e46
Move the InitRenderer method to panning.c
2016-04-14 15:27:19 -07:00
Chris Robinson
221281688f
Separate some long if-else blocks into a separate function
2016-04-14 14:24:52 -07:00
Chris Robinson
d924e3d6c4
Split aluInitPanning into separate functions for HRTF or UHJ
2016-04-14 10:44:57 -07:00
Chris Robinson
38247e021a
Put the decoder options in a group box
2016-04-10 13:48:26 -07:00
Chris Robinson
695cfa50b2
Improve error trace for bad matrix definitions
2016-04-10 13:06:36 -07:00
Chris Robinson
1faa7b536d
Fix xover_freq type in the ambdec doc
2016-04-10 13:03:00 -07:00
Chris Robinson
7bdd68ddbe
Use frequency-dependent processing for the ambisonic up-sampler
2016-04-09 13:10:52 -07:00
Chris Robinson
a8101da956
Use the correct slot callback for the 6.1 and 7.1 decoder buttons
2016-04-08 00:52:08 -07:00
Chris Robinson
f7efa0aff7
Avoid double slashes when constructing paths
2016-04-07 02:59:26 -07:00
Chris Robinson
e127072b41
Use al_malloc/al_free for allocations
2016-04-05 20:51:38 -07:00
Chris Robinson
071f8a7b18
Also disable ALSA's resampler when not requesting a sample rate
2016-04-05 19:35:03 -07:00
Chris Robinson
8145a26d07
Add a hack to workaround erroneous prebuf values from pulse
2016-03-31 16:21:49 -07:00
Chris Robinson
93047e2a7a
Use the 3D panned output for reverb with HQ decoding
...
This is less than ideal, but matching each reverb line to a speaker with
surround sound output is way too loud without the ambient volume scaling
offered by the "direct" panning.
2016-03-31 02:14:13 -07:00
Chris Robinson
2cd73a8d97
Allow dual-band decoders for basic rendering
...
Since the basic renderer does not do frequency-dependent processing, the high-
frequency matrix is used for panning.
2016-03-30 02:25:59 -07:00
Chris Robinson
df0d225dbf
Properly make hq-mode default to off
2016-03-30 01:49:58 -07:00
Chris Robinson
b3e500be32
Remove the old ringbuffer implementation
2016-03-30 01:12:02 -07:00
Chris Robinson
d6163fe570
Convert remaining ringbuffers to the lockless variant
2016-03-29 23:48:36 -07:00
Chris Robinson
2ccc1d1d8a
Move the aligned malloc functions to the common lib
2016-03-29 00:44:58 -07:00
Chris Robinson
ca309e685e
Add a config dialog tab for decoder options
2016-03-28 16:35:42 -07:00
Chris Robinson
34539bc973
Skip unused output channels for the HQ decode
2016-03-28 14:50:18 -07:00
Chris Robinson
33cd3834ac
Align the ChannelMix buffer and use it for up-sampling
2016-03-27 13:23:37 -07:00
Chris Robinson
91d53560d6
Add a text file describing AmbDec config file support.
2016-03-27 01:57:28 -07:00
Chris Robinson
764d580100
Document the ambisonic decoder options
2016-03-26 21:39:12 -07:00
Chris Robinson
6aaa11df30
Use the same option for decoder configs
2016-03-26 21:02:10 -07:00
Chris Robinson
ad7ad48bd1
Don't use custom decoder configurations with mono or stereo
...
By default, stereo outputs using UHJ, which renders to a B-Format buffer that
gets run through a UHJ encoder for output. It may also output using pair-wise
panning, which pans between -30 and +30 degrees with the speakers at the two
ends. In both cases, the stereo coefficients are ignored.
Mono, having only one output channel, can realistically only attenuate its
channel. Turning the volume up and down accomplishes the same result.
2016-03-26 20:23:20 -07:00
Chris Robinson
b4a1ba9d3f
Include the distance gain compensation in the decoder matrix
2016-03-26 18:06:36 -07:00
Chris Robinson
1dcb04157c
Add a config option for distance compensation
2016-03-26 17:52:42 -07:00
Chris Robinson
67db77452f
Add distance compensation to the HQ decoder
...
This only compensates for timing and gain differences caused by differences in
the physical speaker distances. It's not near-field compensation. This also
relies on having proper distance values defined in the ambdec definition file.
2016-03-26 17:33:49 -07:00
Chris Robinson
7f4bd13f60
Allow up to third-order for horizontal-only rendering
2016-03-26 01:50:19 -07:00
Chris Robinson
e0466766d7
Include any first-order scaling in the FOAOut coefficients
2016-03-25 23:25:13 -07:00
Chris Robinson
e23da7a1de
Skip height-related ambisonic channels for 2D rendering
2016-03-25 19:57:25 -07:00
Chris Robinson
05dace6525
Mix Dedicated effects to the real output if possible
2016-03-25 14:47:30 -07:00
Chris Robinson
3148986184
Implement AL_EXT_STEREO_ANGLES support
2016-03-25 14:40:44 -07:00
Chris Robinson
19b130c45d
Use the "decoder" config section instead of "ambisonics"
2016-03-25 13:55:23 -07:00
Chris Robinson
b0acfa1763
Add a cast and a couple float type fixes
2016-03-24 11:11:17 -07:00
Chris Robinson
3646cf817c
Trace the HQ decoder order
2016-03-23 16:00:07 -07:00
Chris Robinson
2847590d45
Simplify setting a custom channel map configuration
2016-03-23 15:11:33 -07:00
Chris Robinson
147274f165
Up-sample first-order content when using a higher order HQ decoder
2016-03-23 15:10:59 -07:00
Chris Robinson
0dc35784db
Allow second-order HQ decoding
...
Could really do with some optimizations to the mixing gain calculations. For
ambisonic targets, the coefficients will only have 1 non-0 entry for each
output, so the double loop in unnecessarily wasteful. Similarly, most uses
won't need a full height encoding either, so a horizontal-only or mixed-order
target could reduce the number of channels.
2016-03-23 10:39:14 -07:00
Chris Robinson
713ac9e679
Add a specific output for first-order sources
2016-03-22 17:52:20 -07:00
Chris Robinson
0a03596af1
Simplify setting the matrix coeffs
2016-03-22 14:42:53 -07:00
Chris Robinson
3877545d8c
Add a workaround for a buggy modff
2016-03-18 14:05:45 -07:00
Chris Robinson
ce575718ef
Store the effect's output buffer in the effect state
2016-03-17 10:10:26 -07:00
Chris Robinson
606402fff0
Make sure enough reverb panning gains are defined
2016-03-16 08:51:12 -07:00
Chris Robinson
55ff0c143e
Rename the BFormat channels to Aux
2016-03-16 06:49:35 -07:00
Chris Robinson
a3863d5834
Add config options to enable the hq ambisonic decoder
2016-03-16 01:36:57 -07:00
Chris Robinson
8ff4a54356
Properly handle negative matrix values and fix decoder initialization
2016-03-15 09:07:03 -07:00
Chris Robinson
3a26d853ba
Replace the custom layout options with an ambdec loader
...
The ambisonic layout options were never very good for clarity or flexibility.
Hopefully using ambdec files will prove to be better.
2016-03-15 08:00:03 -07:00
Chris Robinson
23bce59c66
Rename a couple functions for more informative logging
2016-03-15 07:07:09 -07:00
Chris Robinson
53fadf5497
Add a dual-band ambisonic decoder
...
This uses a virtual B-Format buffer for mixing, and then uses a dual-band
decoder for improved positional quality. This currently only works with first-
order output since first-order input (from the AL_EXT_BFROMAT extension) would
not sound correct when fed through a second- or third-order decoder.
This also does not currently implement near-field compensation since near-field
rendering effects are not implemented.
2016-03-15 05:08:05 -07:00
Chris Robinson
64cb21cb9f
Downgrade some ERRs to WARNs or TRACEs
2016-03-15 04:02:25 -07:00
Chris Robinson
066df88a2c
Always mix to the real output for DirectChannels
2016-03-14 20:25:36 -07:00
Chris Robinson
919b35295e
Add a loader for ambdec files
2016-03-14 20:13:50 -07:00
Chris Robinson
0220404a91
Use second-order coefficients for 5.1
...
Since the panning only drives 5 speakers, it shouldn't use more than 5
ambisonic channels (9 total in second order, minus 4 for unused height).
2016-03-13 03:32:32 -07:00
Chris Robinson
0c4653085c
Don't request a specific HRTF when one isn't specified
2016-03-11 21:01:32 -08:00
Chris Robinson
22abaa287d
Use the real output's left and right channels with HRTF
2016-03-11 20:59:12 -08:00
Chris Robinson
5328972193
Separate writing to the output buffer from HRTF filtering
2016-03-11 20:44:05 -08:00
Chris Robinson
bb03fe227b
Update the current HRTF delays if the stepping is not finished
2016-03-11 19:59:14 -08:00
Chris Robinson
859cc703e7
Use the proper left and right channels for UHJ output
2016-03-10 22:56:44 -08:00
Chris Robinson
d648486bcd
Generalize GetChannelIdxByName
2016-03-10 14:29:44 -08:00
Chris Robinson
da5f75615b
Allocate enough reverb panning gains
2016-03-10 01:45:30 -08:00
Chris Robinson
effb9d1e35
Keep track of the real output's channel names
2016-03-10 01:04:28 -08:00
Chris Robinson
a457157516
Organize the dry buffer properties into a struct
2016-03-09 23:43:57 -08:00
Chris Robinson
3e2672ec9f
Track the virtual and real output buffers ecplicitly
2016-03-09 22:57:38 -08:00
Chris Robinson
3b9fe27cbe
Browse with the current or default device already selected
2016-03-06 12:03:36 -08:00
Chris Robinson
6971e86847
Add a simple About page that shows the library build version
2016-03-06 02:02:37 -08:00
Chris Robinson
101ae7644e
Add a couple helpers for dealing with name-pair lists
2016-03-06 01:50:49 -08:00
Chris Robinson
58aa1751c3
Handle the stereo panning option dynamically
2016-03-05 19:20:38 -08:00
Chris Robinson
1ca45fa3eb
Use the correct index for finding an empty string
2016-03-05 16:45:10 -08:00
Chris Robinson
4e3fdf9f5d
Fix reverb with UHJ encoding
2016-03-03 01:41:42 -08:00
Chris Robinson
457c34c189
Add a backend tab page for JACK options
2016-03-02 23:18:07 -08:00
Chris Robinson
d169fd859d
Use the clicked() signal for the Browse buttons
2016-03-02 15:43:51 -08:00
Chris Robinson
773e2846e7
Add a Wave Writer backend config page
2016-03-02 15:31:14 -08:00
Chris Robinson
71d927333f
Add OSS and Solaris config pages
2016-03-02 12:08:22 -08:00
Chris Robinson
9fdca9e29f
Remove the extra scaling on W for UHJ encoding
...
There seems to be some inconsistent info about whether W should be scaled by
sqrt(2) for encoding. Not applying the scaling results in a wider stereo image,
which seems more appropriate.
2016-03-01 15:48:23 -08:00
Chris Robinson
c89511b95e
Properly remove empty config values
2016-02-28 21:55:58 -08:00
Chris Robinson
abf6a9260a
Add an option to select between UHJ and pair-wise mixing.
2016-02-28 20:55:41 -08:00
Chris Robinson
81384949e2
Properly check for preexisting HRTF names
2016-02-28 18:30:12 -08:00
Chris Robinson
9e3a1942a3
Add an ALSA backend tab
2016-02-28 09:27:52 -08:00
Chris Robinson
11acbfebf7
Hide backend list items for backends that aren't available
2016-02-27 22:12:53 -08:00
Chris Robinson
96520520be
Show the full name in the backend lists
2016-02-27 21:52:36 -08:00
Chris Robinson
6d664367bc
Generalize the backend list
2016-02-27 19:37:42 -08:00
Chris Robinson
a12c420c59
Reorganize the Backends tab and add a PulseAudio section
2016-02-27 19:18:57 -08:00
Chris Robinson
0e1edc151d
Move the Backends tab over
2016-02-27 12:39:25 -08:00
Chris Robinson
adce176a35
Separate the left and right output writes with UHJ encoding
2016-02-27 11:38:40 -08:00
Chris Robinson
99f685d20d
Add an option for pair-wise stereo panning
2016-02-26 21:48:03 -08:00
Chris Robinson
ac91083ceb
Use 2-channel UHJ for stereo output
2016-02-26 16:09:06 -08:00
Chris Robinson
67f086d1d4
Add a function to encode 2-channel UHJ from B-Format
2016-02-26 14:51:56 -08:00
Chris Robinson
3c127dc422
Update and add some tooltips
2016-02-24 05:37:48 -08:00
Chris Robinson
99a49122b8
Sort HRTFs in alsoft-config like in the lib
2016-02-24 05:08:39 -08:00
Chris Robinson
b6824ca716
Add and use a copy-range string function
2016-02-24 04:53:32 -08:00
Chris Robinson
d04970e568
Exclude the file extension from the HRTF name
2016-02-24 04:21:03 -08:00
Chris Robinson
93d73aae4d
Add speed and quality labels for the resampler slider
...
And space out the buffer metric sliders from the edit boxes
2016-02-23 11:12:57 -08:00
Chris Robinson
c9b2a0ae26
Collect HRTF names from the paths list for alsoft-config
2016-02-23 11:03:58 -08:00
Chris Robinson
68a2ae4024
Replace the hrtf_tables option with hrtf-paths
2016-02-23 10:56:06 -08:00
Chris Robinson
e7ed3e2f72
Remove an unused function
2016-02-23 07:41:17 -08:00
Chris Robinson
dea880dbf4
Better handle duplicate HRTF names in alsoft-config
2016-02-23 07:29:07 -08:00
Chris Robinson
ae1a2fa9c0
Allow selecting a preferred HRTF in alsoft-config
...
This currently only checks the default paths when they're being used.
2016-02-23 06:52:13 -08:00
Chris Robinson
6512dcb233
Don't bother with a maximum size for the window
2016-02-23 01:46:38 -08:00
Chris Robinson
2c6e59c4ca
Fix when ESTRPIPE and EPIPE are the same
2016-02-22 08:12:09 -08:00
Chris Robinson
840fa1b5e8
Add a warning if closing alsoft-config with unsaved changes
2016-02-22 07:56:05 -08:00
Chris Robinson
9d94f792de
Restructure alsoft-config UI
...
The HRTF stuff is moved to its own tab, and a Preferred HRTF combo box is added
for future use. The resampler option is moved to the main Playback tab, and
some options are moved to an Advanced Settings section on the tab.
2016-02-22 03:05:13 -08:00
Chris Robinson
bd233c8cdb
Avoid enumerating the same HRTF file twice
2016-02-21 04:46:14 -08:00
Chris Robinson
e6f120df23
Add a config option to specify the preferred HRTF
2016-02-21 02:44:02 -08:00
Chris Robinson
c2dd681940
Remove an unused declaration
2016-02-20 21:01:24 -08:00
Chris Robinson
e2bbee653e
Include the HRTF filename in the HRTF memory chunk
2016-02-20 05:32:42 -08:00
Chris Robinson
e1ce7f9180
Use an 8-channel cube for HRTF's virtual format.
...
There were phase issues caused by applying HRTF directly to the B-Format
channels, since the HRIR delays were all averaged which removed the inter-aural
time-delay, which in turn removed significant spatial information.
2016-02-20 00:53:01 -08:00
Chris Robinson
e90cdbcf98
Reorganize makehrtf's File I/O functions
2016-02-19 22:23:37 -08:00
Chris Robinson
e1c653b571
Reorganize and reformat makehrtf code
2016-02-18 22:55:03 -08:00
Chris Robinson
8575ecf3cb
Cleanup makehrtf type definitions
2016-02-18 16:40:57 -08:00
Chris Robinson
670aeec59a
Fix default makehrtf output name
...
And clean up the parameter processing.
2016-02-18 06:11:54 -08:00
Chris Robinson
7ff5cf7820
Allocate each HRTF as a single chunk
2016-02-16 19:56:44 -08:00
Chris Robinson
ee9917fe96
Remove a dead assignment
2016-02-16 02:42:43 -08:00
Chris Robinson
6b1f322220
Only calculate steps for the used coefficients
2016-02-14 13:30:03 -08:00
Chris Robinson
ecdc93f3ca
Calculate HRTF stepping params right before mixing
...
This means we track the current params and the target params, rather than the
target params and the stepping. This closer matches the non-HRTF mixers.
2016-02-14 03:23:06 -08:00
Chris Robinson
25732d0895
Calculate channel gain stepping just before mixing
2016-02-14 01:22:01 -08:00
Chris Robinson
a9135ec39d
Don't pass the channel count to GetBFormatHrtfCoeffs
...
Since it's hard-coded anyway, there's no need to specify it.
2016-02-09 21:42:24 -08:00
Chris Robinson
000ced3795
Avoid underflow in alcnd_timedwait if the time point is already passed
2016-02-07 17:47:52 -08:00
Chris Robinson
f4fa41487c
Replace some CreateEvent calls with CreateEventW
2016-02-07 16:14:27 -08:00
Chris Robinson
6105d36fd7
Add special HRTF handling for reverb
...
This is pretty hacky. Since HRTF normally renders to B-Format with two "extra"
channels for the real stereo output, the panning interpolates between a panned
reverb channel on B-Format, and two non-panned reverb channels on stereo
output, given the panning vector length.
2016-02-06 23:00:07 -08:00
Chris Robinson
fd54f4f03d
Only apply the +3dB reverb gain boost to the ambient response.
2016-02-06 18:05:27 -08:00
Chris Robinson
3ee42d9826
Avoid an extra sample of delay in the reverb modulator
2016-02-05 15:39:31 -08:00
Chris Robinson
c533060875
Remove an unnecessary variable and move duplicate code to a common spot
2016-02-05 14:21:02 -08:00
Chris Robinson
127c7e3b8c
Don't explicitly check for LFE
...
It's going to be set to 0 gain anyway
2016-02-05 11:06:10 -08:00
Chris Robinson
3cac4dff95
Boost the direct-pan reverb to better match the expected volume
...
Hopefully. Would be nice to have a reference implementation for this style of
reverb to compare with.
2016-02-05 09:55:08 -08:00
Chris Robinson
301d4c158b
Update a couple outdated comments
2016-02-05 09:42:43 -08:00
Chris Robinson
538f2839d1
Apply the early and late reverb gains with the panning gains
2016-02-05 08:43:51 -08:00
Chris Robinson
8627a92ea8
Better organize the reverb code into separate labeled sections
2016-02-05 08:14:41 -08:00
Chris Robinson
b8e74c88cf
Separate early and late reverb output for standard reverb too
2016-02-05 07:46:33 -08:00
Chris Robinson
305ef3215d
Modify how the four output reverb points are calculated
...
For HRTF and B-Format output, the points no longer move but instead scale based
on the desired panning direction.
2016-02-05 07:34:31 -08:00
Chris Robinson
d315ca4139
Try to map reverb outputs directly to output channels
...
HRTF and B-Format output still need to use virtual panning directions, but the
reverb works better when it outputs directly to an output channel. Ambient and
directional panning is used to properly mask and attenuate each output channel.
Note that currently the "direct panning" output is quieter than it should be.
Work is underway to attenuate the early reflections and late reverb better.
2016-02-01 22:24:40 -08:00
Chris Robinson
b4a9b40d68
Apply the main reverb gain with the panning
2016-02-01 01:45:16 -08:00
Chris Robinson
46cae36ef9
Fix an out of date comment
2016-01-31 09:39:07 -08:00
Chris Robinson
7f908d90af
Rename ComputeBFormatGains to ComputeFirstOrderGains
2016-01-31 09:00:23 -08:00
Chris Robinson
d69dd6dc7a
Make the source's buffer queue a singly-linked list
2016-01-31 00:42:58 -08:00
Chris Robinson
063ef9c2fc
Properly silence the LFE input channel gain on the source sends
2016-01-30 07:13:07 -08:00
Chris Robinson
729f213c09
Fix scaling for effect sends of B-Format sources
2016-01-30 07:10:36 -08:00
Chris Robinson
7111322526
Make the modulator effect multichannel
2016-01-29 23:44:43 -08:00
Chris Robinson
a046a951e9
Use separate modulator functions only for the waveform
2016-01-29 23:28:38 -08:00
Chris Robinson
3ac786c6af
Convert the equalizer effect to multichannel
2016-01-29 07:26:19 -08:00
Chris Robinson
210b4c1fcd
Make the compressor effect multichannel
2016-01-28 02:49:40 -08:00
Chris Robinson
c1f87414c5
Mix to multichannel for effects
...
This mixes to a 4-channel first-order ambisonics buffer. With ACN ordering and
N3D scaling, this makes it easy to remain compatible with effects that only
care about mono input since channel 0 is an unattenuated mono signal.
2016-01-28 00:02:46 -08:00
Chris Robinson
2fa3ae85c9
Pass a pointer to the input samples array for effect processing
2016-01-27 08:16:47 -08:00
Chris Robinson
fd387beda1
Avoid passing the device to SetChannelMap
2016-01-27 04:44:21 -08:00
Chris Robinson
f547ef6d39
Separate calculating ambisonic coefficients from the panning gains
2016-01-25 06:11:51 -08:00
Chris Robinson
79e0f3e747
Don't write one byte at a time for the wave writer on big endian
2016-01-25 01:49:28 -08:00
Chris Robinson
0189b923a2
Release 1.17.2
2016-01-24 19:12:39 -08:00
Chris Robinson
4fb2526779
Fix "signed and unsigned type in conditional expression" warning
2016-01-24 02:29:26 -08:00
Chris Robinson
5761aa9400
Remove unneeded check for io.h
2016-01-24 01:51:43 -08:00
Chris Robinson
ddc885604d
Clear SSE3 switch before testing if one's recognized
2016-01-24 01:35:09 -08:00
Chris Robinson
7de8db2960
Replace multiple fputc calls with one fwrite
2016-01-23 21:47:43 -08:00
Chris Robinson
5d552980a4
Move a couple extern inline declarations to the others
2016-01-23 18:19:19 -08:00
Chris Robinson
94816d0073
Reorder filterstate properties
2016-01-23 03:38:15 -08:00
Chris Robinson
352d9afd64
Inline a couple filterstate methods
2016-01-23 01:22:08 -08:00
Chris Robinson
87b6c30932
Reorder some cmake checks
2016-01-21 21:51:20 -08:00
Chris Robinson
fb599b5b83
Lower the _POSIX_C_SOURCE and _XOPEN_SOURCE version requirements
2016-01-21 17:18:08 -08:00
Chris Robinson
26f5d385d5
Only set cmake policy CMP0042 if it's valid
2016-01-21 06:18:54 -08:00
Chris Robinson
0a9e9858f9
Always define _XOPEN_SOURCE if _POSIX_C_SOURCE is too
2016-01-21 06:08:18 -08:00
Chris Robinson
8f26ad4ba2
Avoid using scandir/alphasort
...
They require POSIX 2008, which is a bit too "new" for my current liking. We can
do well enough with opendir/readdir/closedir and qsort.
2016-01-21 04:42:22 -08:00
Chris Robinson
bb0ac26ce1
Explicit check if pthread_setname_np accepts only one parameter
2016-01-21 02:33:45 -08:00
Chris Robinson
9c05a16c9a
Fix for systems that don't have strnlen
2016-01-21 02:09:32 -08:00
Chris Robinson
bbd2876afb
Improve the OSS enumeration code
2016-01-21 01:05:29 -08:00
Chris Robinson
3395b361fa
Silence a CMake warning on OSX about MACOSX_RPATH
2016-01-20 18:42:23 -08:00
Chris Robinson
0eb18e9711
Update ChangeLog
2016-01-17 22:38:27 -08:00
Chris Robinson
0bb838bbaf
Add an option to static-link libgcc
...
Mainly just for MinGW to make OpenAL32.dll not rely on libgcc_s_sjlj-1.dll.
2016-01-17 15:45:42 -08:00
kcat
1930ee3e5f
Merge pull request #29 from olesalscheider/master
...
Allow to override the share install dir
2015-12-20 03:26:20 -08:00
Chris Robinson
3dc5f0bf76
Merge branch 'master' of github.com:/kcat/openal-soft
2015-12-19 14:26:00 -08:00
kcat
78ca33a0c7
Merge pull request #27 from kdhp/master
...
Added device enumeration support for OSSv4
2015-12-19 14:22:36 -08:00
Niels Ole Salscheider
d93398a361
Allow to override the share install dir
...
This is needed for multiarch layouts where the prefix is /usr/${host} but
where arch-independet files are installed to /usr/share.
2015-12-19 17:54:47 +01:00
Keegan Drake H.P
5a73aa2502
Added a check for an empty path
2015-12-17 20:05:21 -06:00
Keegan Drake H.P
df2ee7ba87
Add device enumeration support for OSSv4
2015-12-17 19:20:08 -06:00
Chris Robinson
bce20d1f6b
Don't overwrite the output with the dedicated effect
2015-12-12 13:53:17 -08:00
Chris Robinson
abd568f9d8
Build on Linux and OSX with Travis
2015-12-11 10:34:38 -08:00
Chris Robinson
2850719ea2
Add a .travis.yml for travis-ci
2015-12-11 10:13:02 -08:00
Chris Robinson
e034afe107
Check if _XOPEN_SOURCE needs to be set
2015-12-11 09:41:46 -08:00
Chris Robinson
01e43e5d4d
Add includes to work around broken GNU headers and POSIX-2001
2015-12-11 09:24:40 -08:00
Chris Robinson
d7b2bba2e6
Add missing closing parenthesis
2015-12-11 07:35:39 -08:00
Chris Robinson
13bf636a34
Use Apple's pthread_setname_np before GNU's
2015-12-11 07:26:27 -08:00
Chris Robinson
14df326876
Release 1.17.1
2015-12-10 04:45:30 -08:00
Chris Robinson
e3d2df58b3
Update changelog
2015-12-10 04:01:15 -08:00
Chris Robinson
4612378593
Update alsoft-config tooltip for HRTF tables
2015-12-10 01:58:08 -08:00
Chris Robinson
26f8676b9b
Fix slashes on the local path on Windows
2015-12-08 19:43:00 -08:00
Chris Robinson
f8a4ef6f51
Use the ALSOFT_LOCAL_PATH env var instead of the CWD
2015-12-08 19:17:59 -08:00
Chris Robinson
c08e975aa5
Update changelog
2015-12-06 06:36:00 -08:00
Chris Robinson
455d5f48c0
Use %s.mhr for the default hrtf table list
2015-12-05 17:49:05 -08:00
Chris Robinson
21998924d8
Support %s as a string matching marker
2015-12-05 17:45:56 -08:00
Chris Robinson
48447e2864
Also install the HRTF example
2015-12-04 19:51:48 -08:00
Chris Robinson
482372577e
Avoid using usleep in the examples
...
We already have an al_nssleep wrapper in the common lib we can use.
2015-12-04 19:09:48 -08:00
Chris Robinson
4e6acfa0d5
Only set _POSIX_C_SOURCE if needed
2015-12-04 18:52:46 -08:00
Chris Robinson
675ec99d33
Update changelog
2015-12-04 16:00:53 -08:00
Chris Robinson
e45ff47361
Reformat Windows device name dressing
2015-12-04 15:52:43 -08:00
Chris Robinson
63567526b0
Better handle inexact ALSA period counts
2015-11-23 16:50:31 -08:00
Chris Robinson
c8a3e51296
Fix the allow-resampler check for ALSA
2015-11-23 16:29:32 -08:00
kcat
6bb4bdfa4c
Merge pull request #25 from v4hn/fix-jack-libraries
...
fix-jack-libraries
2015-11-20 12:39:41 -08:00
v4hn
8ac8830478
include correct libraries in case jack support is requested and found
...
It just doesn't make sense to add pulseaudio libraries here...
Also it breaks in case jack is requested, but pulseaudio is disabled :)
2015-11-20 14:33:44 +01:00
kcat
b2b7be6561
Merge pull request #24 from slime73/master
...
CoreAudio: replace deprecated Carbon API calls with AudioComponent APIs
2015-11-13 17:05:12 -08:00
Alex Szpakowski
21c84bcd96
Replace deprecated Carbon API calls with modern AudioComponent APIs in the CoreAudio backend.
...
This prevents a deprecation notice from being output to stdout when alcOpenDevice is called in Mac OS X 10.11.
The new API calls require Mac OS X 10.6 or newer.
2015-11-13 20:11:12 -04:00
Chris Robinson
f903a7aa64
Release 1.17.0
2015-11-12 07:40:17 -08:00
Chris Robinson
5d039309b3
Use doubles for the constructed listener matrix
...
This helps the stability of transforms to local space for sources that are at
or near the listener. With a single-precision matrix, even FLT_EPSILON might
not be enough to detect matching positions.
2015-11-11 08:19:33 -08:00
Chris Robinson
ff62d22d31
Move the bsincTable to a separate file
2015-11-10 18:48:30 -08:00
Chris Robinson
ffcdcbd5fa
Update the bsinc table
...
Precision is increased to cover the full 32-bit float range.
2015-11-10 18:40:33 -08:00
Chris Robinson
a37cda0214
Add a tool to generate the bsinc tables
2015-11-10 18:40:11 -08:00
Chris Robinson
10bcda27a9
Remove autowah from the excludefx list
...
The autowah effect hasn't been enabled for some time due to issues with it
breaking output, and doesn't seem likely to get fixed any time soon.
2015-11-09 14:25:20 -08:00
Chris Robinson
062d7e3487
Update the fix-rate config option description
2015-11-09 11:47:56 -08:00
Chris Robinson
de53ff4aff
Build with -std=c11 if possible
2015-11-09 11:36:02 -08:00
Chris Robinson
ceee5c8ffb
Remove some unused function checks
2015-11-08 00:19:55 -08:00
Chris Robinson
9891d61206
Add options to disable Pulse's and ALSA's resamplers
2015-11-07 23:05:45 -08:00
Chris Robinson
fe00b65d9a
Correct a comment about the new bsinc resampler
...
It always performs anti-aliasing, even when up-sampling.
2015-11-07 06:16:54 -08:00
Chris Robinson
91258cc192
Simplify reverb panning rotations
2015-11-07 06:15:29 -08:00
Chris Robinson
ec7b21cd14
Remove a const to silence some warnings
2015-11-06 22:17:15 -08:00
Chris Robinson
de74498cd9
Use more accurate floating point literals
2015-11-06 10:27:28 -08:00
Chris Robinson
858230f452
Include float.h if present before defining math stuff
2015-11-06 02:38:34 -08:00
Chris Robinson
d6f4e5139f
Add another cast for MSVC
2015-11-06 02:23:42 -08:00
Chris Robinson
368f2d6907
Use ALuint instead of size_t for a loop iterator
2015-11-06 02:21:24 -08:00
Chris Robinson
16a6e010fd
Add a cast to silence an MSVC warning
2015-11-06 02:18:42 -08:00
Chris Robinson
3e992309a5
Use a more appropriate type in MatchFilter
2015-11-06 02:13:28 -08:00
Chris Robinson
b6682ede61
Cast a double->float return to silence MSVC
2015-11-06 02:05:22 -08:00
Chris Robinson
203c249bf7
Add missing math.h include for sin()
2015-11-06 00:13:02 -08:00
Chris Robinson
8c6d891694
Pan each early/late delay line separately
2015-11-05 23:46:39 -08:00
Chris Robinson
431c89ece9
Manually inline and condense the bsinc resampler
2015-11-05 21:57:12 -08:00
Chris Robinson
46e72a48ad
Remove an unneeded memset that was overwriting memory
2015-11-05 19:45:04 -08:00
Chris Robinson
b9e192b78a
Implement a band-limited sinc resampler
...
This is essentially a 12-point sinc resampler, unless it's resampling to a rate
higher than the output, at which point it will vary between 12 and 24 points
and do anti-aliasing to avoid/reduce frequencies going over nyquist.
Code provided by Christopher Fitzgerald.
2015-11-05 09:42:08 -08:00
Chris Robinson
dce3d0c7bf
Change the Kaiser rippling limit to -60dB
...
This improves the transition cutoff, shortening its width and reducing the
amount of error.
2015-11-04 19:13:25 -08:00
Chris Robinson
bd0acf2843
Replace the Lanczos window with Kaiser for the sinc resampler
2015-11-04 06:40:54 -08:00
Chris Robinson
c57f571920
Pass in the Q parameter for setting the filter parameters
...
Also better handle the peaking filter gain.
2015-11-01 05:41:06 -08:00
Chris Robinson
f094d94608
Remove an unused struct field
2015-11-01 01:01:27 -07:00
Chris Robinson
3121c30396
Fix a comment
2015-11-01 00:13:02 -07:00
Chris Robinson
4a9dd6576f
Add an impulse "waveform" to altonegen
2015-10-31 05:15:13 -07:00
Chris Robinson
0644ebbaa2
Use modff to split the modulation delay components
2015-10-31 01:35:01 -07:00
Chris Robinson
19c437de6d
Add missing config.h entry for modff
2015-10-30 01:37:39 -07:00
Chris Robinson
0713b8c322
Check for modff
2015-10-29 16:38:58 -07:00
Chris Robinson
c3d58947c3
Mix reverb to output in the inner loop
2015-10-29 03:23:50 -07:00
Chris Robinson
79ad54f0c3
Include the echo's attenuation of the late reverb in the late reverb gain
2015-10-29 02:10:07 -07:00
Chris Robinson
62f1df77d7
Do up to 256 samples per reverb inner loop iteration
2015-10-29 01:40:23 -07:00
Chris Robinson
f4a53cf609
Add an HRTF example
...
Doubles as a psuedo-test to play a sound with HRTF.
2015-10-28 18:52:49 -07:00
Chris Robinson
bd73cdab0d
Pass the appropriate BackendInfo explicitly to ProbeDevices
2015-10-28 18:10:12 -07:00
Chris Robinson
59c6fc966d
Print enumerated HRTFs in openal-info
2015-10-28 14:47:58 -07:00
Chris Robinson
35c4aae3d6
Finalize ALC_SOFT_HRTF
2015-10-28 13:38:30 -07:00
Chris Robinson
b7a6a7da6a
Right-align the HRTF Mode label
2015-10-28 03:15:01 -07:00
Chris Robinson
63259872d1
Remove the Reverb Bost option from alsoft-config
...
It's not really an appropriate setting for most users to play with. The option
still exists, but it's no longer editable in the GUI.
2015-10-28 03:09:15 -07:00
Chris Robinson
9ce2b8f9a7
Always update all reverb properties
...
The EAX-only effect properties will be set to compatible defaults when standard
reverb is set, and the EAX-only effects will be skipped during sample
processing.
2015-10-28 02:36:48 -07:00
Chris Robinson
8f8bf1f605
Do multiple samples at once in each reverb component
2015-10-28 01:57:51 -07:00
Chris Robinson
e472cfcc53
Rename ALC_NUM_HRTF_SPECIFIER_SOFT to ALC_NUM_HRTF_SPECIFIERS_SOFT
2015-10-26 22:34:02 -07:00
Chris Robinson
6b627caf52
Add a comment about fegetenv possibly saving the SSE register for us
2015-10-26 01:49:56 -07:00
Chris Robinson
45f11d7b64
Set the current gain immediately if the target is close enough
2015-10-26 01:48:12 -07:00
Chris Robinson
90349b384f
Use the correct position in the SSE resamplers for left-over processing
2015-10-25 14:07:58 -07:00
Chris Robinson
fc03a955e9
Fix the SSE4.1 resamplers
...
Apparently the given _mm_extract_epi32 index obeys memory order, rather than
component order.
2015-10-24 17:37:53 -07:00
Chris Robinson
8d89c8be9e
Remove a couple unused parameters
2015-10-24 16:57:32 -07:00
Chris Robinson
a57fe89050
Lock the source queue for writing when updating the playback offset
2015-10-24 16:31:28 -07:00
Chris Robinson
298fdb220d
Fix usage of modf
2015-10-24 15:13:56 -07:00
Chris Robinson
2a62b38530
Update filter histories even when they're not used
...
If the filter properties are continually updated, and the HF or LF gain goes
from <1, to 1, and later back to <1, the history shouldn't hold stale values
from before it was at 1.
2015-10-24 00:47:58 -07:00
Chris Robinson
714354caee
Set XYZ channel gains for source sends to 0
...
It's cleaner to just set the gains to 0 rather than to special-case B-Format in
the mixer.
2015-10-23 20:16:11 -07:00
Chris Robinson
bca854baac
Use one send gain per buffer channel
2015-10-23 15:11:34 -07:00
Chris Robinson
4813125d31
Return the new vector result from aluMatrixVector
2015-10-22 23:39:56 -07:00
Chris Robinson
6fc8cd3b29
Convert the PortAudio backend to the new backend API
2015-10-22 10:46:36 -07:00
Chris Robinson
6689c61ff4
Remove the MIDI code
...
The extension's not going anywhere, and it can't do anything fluidsynth can't.
The code maintenance and bloat is not worth keeping around, and ideally the AL
API would be able to facilitate MIDI-like behavior anyway (envelopes, start-at-
time, etc).
2015-10-20 18:01:27 -07:00
Chris Robinson
d9a77a7edc
Use NEW_OBJ in a few more places
2015-10-20 11:20:15 -07:00
Chris Robinson
acb37edc4f
Make VerifyDevice and VerifyContext modify its parameter
2015-10-19 18:48:33 -07:00
Chris Robinson
9b6b084d60
Use the correct realignment size for post-stepping mixing
2015-10-18 13:46:52 -07:00
Chris Robinson
fa32093906
Remove unused channel labels
2015-10-18 10:25:56 -07:00
Chris Robinson
c4ba9d21dc
Use the correct array indices for SSE register components
...
SSE uses reverse ordering, such that component 0 is the last in memory.
_mm_load_* and _mm_loadu_*, and the corresponding stores, do not change the
memory ordering.
2015-10-17 09:59:26 -07:00
Chris Robinson
d9e9a7b05f
Include the fractional part with the source sample/sec offset
2015-10-16 10:52:10 -07:00
Chris Robinson
83b41a7676
Update changelog
2015-10-16 08:22:17 -07:00
Chris Robinson
2730d8e76f
Round the calculated stepping value
2015-10-15 15:38:07 -07:00
Chris Robinson
2ff3bf5ab0
Use a constant value for the post-position padding
2015-10-15 15:13:19 -07:00
Chris Robinson
97f53d941c
Store the source's previous samples with the voice
...
This helps avoid different results when looping is toggled within a couple
samples of the loop point, or when a processed buffer is removed while the
source is only a couple samples into the next buffer.
2015-10-15 07:29:25 -07:00
Chris Robinson
3c54ba3901
Fix absolute path detection on Windows
2015-10-14 05:01:34 -07:00
Chris Robinson
f654767395
Silence implicit double-to-float cast MSVC warning
2015-10-14 05:00:11 -07:00
Chris Robinson
98eda6b35b
Properly limit the calculated source offset components
2015-10-14 03:23:19 -07:00
Chris Robinson
d386675efe
Print the wave type being played
2015-10-14 02:41:39 -07:00
Chris Robinson
9012bcf327
Make the tonegen sampling rate match the device rate by default
2015-10-14 01:54:50 -07:00
Chris Robinson
c18e23477c
Add a tone generator test program
...
Currently used to test the general output, particularly the resampler, by
checking the results with a spectrum analyzer and/or oscilloscope (for example
using PulseAudio's "Monitor of ..." devices feeding an external app).
2015-10-13 11:43:25 -07:00
Chris Robinson
d7ec9d355f
Shut GCC up
2015-10-13 11:38:53 -07:00
Chris Robinson
0498a4d35e
Rename a couple HRTF Mode combo box entries
2015-10-13 03:21:00 -07:00
Chris Robinson
2fba5c1f5e
Properly apply fractional source offsets when a user offset is set
2015-10-13 03:01:34 -07:00
Chris Robinson
be2028ba4a
Fix HRTF group box size
2015-10-12 06:42:28 -07:00
Chris Robinson
67455c66a1
Replace the resample_fir6 declaration with resample_fir8
2015-10-12 06:34:55 -07:00
Chris Robinson
db4253d3bd
Remove 96khz from the combo box
...
It can still be entered in manually, as can any value between 8khz and 192khz,
but having it selectable can create the mistaken idea that selecting it is
better than picking 44.1khz or 48khz.
2015-10-12 06:23:50 -07:00
Chris Robinson
b4bc36c4a0
Reorganize the HRTF group box
...
The three radio buttons are moved to a combo box, which gives a bit more width
for the file list contents.
2015-10-12 05:52:34 -07:00
Chris Robinson
ed0f3bc1b1
Only show certain options that are available at build-time
2015-10-11 23:56:45 -07:00
Chris Robinson
f33d6a5211
Reformat the CPU Extensions' checkboxes
2015-10-11 12:03:50 -07:00
Chris Robinson
b859f1bdc3
Avoid multiple sin, cos, and sqrt calls for filter calculations
2015-10-11 10:21:37 -07:00
Chris Robinson
db22465c1d
Update changelog
2015-10-11 07:40:09 -07:00
Chris Robinson
00e419e948
Replace the sinc6 resampler with sinc8, and make SSE versions
2015-10-11 07:37:22 -07:00
Chris Robinson
0211831858
Move the FIR4 from SSE2 to SSE3
...
SSE3 can avoid the slow _MM_TRANSPOSE_PS4 call thanks to the inclusion of
horizontal adds.
2015-10-11 06:38:00 -07:00
Chris Robinson
75d8e5989f
Slightly improve the FIR4 SSE resamplers
2015-10-11 05:31:14 -07:00
Chris Robinson
0149dded34
Use doubles to calculate the Lanczos coefficients
2015-10-09 08:30:33 -07:00
Chris Robinson
34e55c0034
Update changelog
2015-10-08 00:41:40 -07:00
Chris Robinson
4f4cadd756
Allow apps to request a specific HRTF
2015-10-07 03:29:53 -07:00
Chris Robinson
0eef6d9d51
Use the enumerated HRTF list for selecting an HRTF
...
Also report the proper specifier of the one currently in use.
2015-10-06 06:48:53 -07:00
Chris Robinson
1b51ee8b87
Store the Hrtf struct with the corresponding HrtfEntry
...
Also store the filename with the Hrtf struct so it can be reused for multiple
HrtfEntry objects.
2015-10-06 04:01:53 -07:00
Chris Robinson
946b3d5746
Try to use the full path for the CWD instead of .
2015-10-06 01:26:15 -07:00
Chris Robinson
a4c378dd00
Enumerate and list HRTFs per-device
2015-10-06 00:23:11 -07:00
Chris Robinson
f590af510d
Skip empty data directory entries
2015-10-04 17:24:12 -07:00
Chris Robinson
074983b19c
Implement SearchDataFiles for Windows
2015-10-04 16:41:54 -07:00
Chris Robinson
70fbc2b1ff
Add a function to get a list of data files
...
The method takes a marked-up filename (e.g. may include %r for a sample rate,
%% for %, etc), and returns a vector of strings of found filenames that match.
It will search the CWD, the local, and global data directories, in that order.
2015-10-03 20:41:18 -07:00
Chris Robinson
aa10068ca2
Add methods to enumerate and query device HRTFs
...
Currently just returns a dummy entry.
2015-10-03 19:59:21 -07:00
Chris Robinson
0fcd497796
Combine two arrays
2015-10-01 01:05:08 -07:00
Chris Robinson
07f80eb4e1
Move the resampler stuff to mixer.c where it's used
2015-10-01 00:34:13 -07:00
Chris Robinson
d5675d5395
Search more aggressively for libs needed by SDL_sound
2015-09-30 21:34:30 -07:00
Chris Robinson
da3b9568dd
Revert "Only use SDL1 with SDL_sound"
...
This reverts commit 8883ce1cef .
2015-09-30 18:45:19 -07:00
Chris Robinson
904cdfda32
Avoid double-checks for the stepping mixer loops
2015-09-30 17:25:28 -07:00
Chris Robinson
b68fbe3628
Replace separate vaddq_f32/vmulq_f32 calls with a vmlaq_f32
2015-09-30 13:34:09 -07:00
Chris Robinson
6d53ffdbf3
Remove the --make-tab option from makehrtf
...
We haven't used a built-in HRTF table for a while now.
2015-09-29 23:09:45 -07:00
Chris Robinson
dc10e56bab
Implement a 6-point sinc-lanczos filter
2015-09-29 20:39:12 -07:00
kcat
e13d553aef
Merge pull request #21 from aaronmjacobs/master
...
Fix resample_fir4 link error
2015-09-29 12:39:48 -07:00
Aaron Jacobs
a7084b1051
Fix resample_fir4 link error
2015-09-29 12:34:03 -07:00
Chris Robinson
8883ce1cef
Only use SDL1 with SDL_sound
2015-09-28 23:29:52 -07:00
Chris Robinson
848a4a0fcc
Auto-replace the "cubic" resampler with "sinc4"
2015-09-28 12:59:52 -07:00
Chris Robinson
9992c4da99
Update changelog
2015-09-27 23:57:50 -07:00
Chris Robinson
ab6622a8d6
Replace the cubic resampler with a 4-point sinc/lanczos filter
2015-09-27 23:57:25 -07:00
Chris Robinson
3e60b18989
Don't keep selecting the mixer to use
2015-09-27 20:55:39 -07:00
Chris Robinson
86ff35bf71
Increase the max pitch to 255
...
Note that this is the multiple above the device sample rate, rather than the
source property limit. It could theoretically be increased to 511 by testing
against UINT_MAX instead of INT_MAX, since the increment and positions are
using unsigned integers. I'm just being paranoid about overflows.
2015-09-26 11:18:30 -07:00
Chris Robinson
30d88cf547
Use the macros to allocate the wrapper backends
2015-09-24 15:54:32 -07:00
Chris Robinson
17e2b4b3a5
Remove unneeded clamping
2015-09-24 13:44:28 -07:00
Chris Robinson
d8e2308adb
Loop over the gain values only once
2015-09-24 12:36:02 -07:00
Chris Robinson
83659db996
Return the number of properties written
2015-09-24 10:45:34 -07:00
Chris Robinson
ef43370927
Use a local var instead of multiple double-dereferencing
2015-09-24 10:18:29 -07:00
Chris Robinson
64858e3e94
Fix B-Format HRTF decoding
2015-09-23 16:02:46 -07:00
Chris Robinson
4bdd58bc83
Use N3D scaling instead of FuMa
2015-09-23 15:03:53 -07:00
Chris Robinson
ba43582278
Use a single enum list for source properties
2015-09-22 08:48:26 -07:00
Chris Robinson
07d0bddb4f
Avoid a potential race condition with NewThunkEntry
...
It's possible for another invocation to increase the array size in between the
ReadUnlock and WriteLock calls, causing the 'i' index to refer to a taken
entry.
2015-09-21 13:51:56 -07:00
Chris Robinson
33ac3095dd
Handle up to 6 values with alSourcedvSOFT and alGetSourcefv
2015-09-21 09:43:51 -07:00
Chris Robinson
a774408753
Get rid of ALCdevice_GetLatency
2015-09-21 05:52:01 -07:00
Chris Robinson
5f5eebc4df
Allow the hrtf_tables option to be device-specific
2015-09-20 08:28:34 -07:00
Chris Robinson
46bbf95bae
Disable mmdevapi capture and update changelog
...
Unfortunately mmdevapi does not do channel remixing or resampling, even for
capture, so the device can only be opened in the mode it's configured for.
For now, fallback to dsound or winmm to get the conversion until we can do it
ourselves.
2015-09-18 03:19:16 -07:00
Chris Robinson
db0f29f6d8
Fix updating listener params when forcing updates
2015-09-18 00:48:43 -07:00
Chris Robinson
2f1bfb5945
Add missing enum values
...
Spotted by Xavier Bouchoux.
2015-09-17 04:01:46 -07:00
Chris Robinson
4570345534
Return the data file handle on Windows if it was opened
2015-09-16 18:20:28 -07:00
Chris Robinson
3c72865775
Use sizeof T for the size of the object type
2015-09-15 19:23:32 -07:00
Chris Robinson
b348abf5c3
Rename F_2PI to F_TAU
2015-09-13 08:46:48 -07:00
Chris Robinson
2763f4096c
Update properties and clear wet buffers before mixing/processing
2015-09-13 06:51:55 -07:00
Chris Robinson
87f3babe2c
Append "on OpenAL Soft" to mmdevapi, dsound, and winmm device names
...
Would be nicer to have a more backend-agnostic method of doing this, Perhaps
even also only when the router is being used.
2015-09-10 22:15:40 -07:00
Chris Robinson
9469c4c79b
Slight changelog update
2015-09-08 15:12:13 -07:00
Chris Robinson
483352f32b
Set both BS2B parameters at once
2015-09-08 15:04:42 -07:00
Chris Robinson
475a566e35
Play a 1khz sine wave for 4 seconds in the loopback example
2015-09-07 21:17:26 -07:00
Chris Robinson
d240077bc5
Explicitly convert to int in the aluF2I/S/B functions
2015-09-07 03:27:25 -07:00
Chris Robinson
5d8a1c11b5
Avoid setting an HRTF-compatible format when it's disabled
2015-09-05 14:33:21 -07:00
Chris Robinson
365a010732
Don't store the HRTF request mode in the device flags
2015-09-05 01:32:12 -07:00
Chris Robinson
804909e1d7
Set a proper HRTF status when non-stereo output is used
2015-09-05 00:42:44 -07:00
Chris Robinson
d6290482cc
Add word wrapping to the changelog
2015-09-05 00:07:05 -07:00
Chris Robinson
703f1fdec2
Specify the pa_channel_map directly instead of through a string
2015-09-04 23:59:24 -07:00
Chris Robinson
28a516e8a5
Change the hrtf config option to expect auto/true/false instead of a bool
2015-09-04 20:16:48 -07:00
Chris Robinson
6fc567f1ab
Reorganize some HRTF config options
2015-09-04 17:06:23 -07:00
Chris Robinson
0eb83fe462
Make option and block names case-sensitive
...
This is to avoid any issues with device names that can be case-sensitive, and
strcasecmp not working properly for non-ASCII-7 uppercase characters.
2015-09-04 16:09:09 -07:00
Chris Robinson
5f40daabc2
Reverse the device and block names for device-specific options
2015-09-04 15:47:48 -07:00
Chris Robinson
30398083f4
Update the changelog for initial 1.17 changes
2015-09-04 14:53:38 -07:00
Chris Robinson
9d6bb05ac6
Reposition the JACK backend entry
2015-09-04 14:52:23 -07:00
Chris Robinson
ce487d1e43
Use the correct device name for PulseAudio too
...
Like mmdevapi. duplicate device names will have a '#2 ' or such appended, so the
device's reported name may be incorrect.
2015-09-03 14:59:59 -07:00
Chris Robinson
23729c2083
Replace another vector loop with VECTOR_FIND_IF
2015-09-03 14:53:46 -07:00
Chris Robinson
87e4ec6620
Use the correct device name when opening a device by name
...
Duplicate device names will have a '#2 ' or such appended, so the device's
reported name may be incorrect.
2015-09-03 11:56:46 -07:00
Chris Robinson
7b4f1cfb4a
Handle the stereo-mode config option with alsoft-config
2015-08-28 22:09:07 -07:00
Chris Robinson
2cb974df40
Document the bformat config option
2015-08-28 15:53:17 -07:00
Chris Robinson
70c63dd576
Allow '#' in config block names
...
Since some devices may have it appended.
2015-08-28 14:59:45 -07:00
Chris Robinson
8fe421cba1
Document device-specific config options
2015-08-28 14:48:33 -07:00
Chris Robinson
e5fa4ee25d
Allow for device-specific config values
2015-08-28 14:10:39 -07:00
Chris Robinson
bbc16e2c15
Use ACN ordering for ambisonics coefficients arrays
...
Note that it still uses FuMa scalings internally. Coefficients loaded from
config files specify if they're FuMa (in both ordering and scaling) or N3D,
and will get reordered or rescaled as needed.
2015-08-28 10:58:30 -07:00
Chris Robinson
d17534332f
Update README acknowledgements
2015-08-26 13:06:19 -07:00
Chris Robinson
762cb00327
Update the hrtf.txt about the 48khz default dataset.
2015-08-26 12:52:18 -07:00
Chris Robinson
01f9cb4072
Update the default value for JACK's spawn-server option
2015-08-26 12:50:54 -07:00
Chris Robinson
baf1bd5b54
Avoid temporary vector objects
2015-08-24 03:02:58 -07:00
Chris Robinson
c292b9e4ff
Revert "Fix B-Format rotation"
...
This reverts commit 7ffb9b3056 .
It was behaving as appropriate before (orienting left did pan it left for the
listener), I was apparently just misinterpreting the matrix.
2015-08-24 00:19:47 -07:00
Chris Robinson
7ffb9b3056
Fix B-Format rotation
...
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.
2015-08-23 22:01:29 -07:00
Chris Robinson
8559af5d48
Minor reformating
2015-08-22 07:23:43 -07:00
Chris Robinson
6f59ebab27
Don't explicitly store first-order coefficients
...
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.
2015-08-18 07:44:17 -07:00
Chris Robinson
53f6590b17
Set the WAVEFORMATEX cbSize field for mmdevapi capture
2015-08-18 00:19:22 -07:00
Chris Robinson
d5ab883da2
Define MixHrtf directly instead of through a SUFFIX macro
2015-08-15 01:37:46 -07:00
Chris Robinson
f6e52debb5
Fix handling of PulseAudio devices that have the same description
2015-08-14 19:05:16 -07:00
Chris Robinson
c1146d27c6
Also recognize "DirectSound" and "MMSYSTEM" on Windows
2015-08-14 17:02:11 -07:00
Chris Robinson
a5aaa3c9aa
Recognize "DirectSound3D" as a device name on Windows
2015-08-13 21:18:39 -07:00
Chris Robinson
7d4e3688e1
Wait for the OpenSL buffer queue to empty when stopping
2015-08-13 16:01:31 -07:00
Chris Robinson
f134fbac5c
Check for pthread_*_np functions in pthread_np.h when it exists
2015-08-13 15:20:34 -07:00
kcat
c2f88ffad6
Merge pull request #15 from aaronmjacobs/master
...
Make installation of headers and libraries optional
2015-08-12 15:23:30 -07:00
Aaron Jacobs
11e6e07a72
Make installation of headers and libraries optional
2015-08-12 15:08:14 -07:00
Chris Robinson
8fa4f276f8
Allow specifying ALC_DONT_CARE_SOFT for ALC_HRTF_SOFT
...
ALC_FALSE now indicates explicitly no HRTF mixing, while ALC_DONT_CARE_SOFT
is autodetect.
2015-07-06 12:37:21 -07:00
Chris Robinson
f58d985789
Change source radius behavior
...
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.
2015-07-05 08:54:29 -07:00
Chris Robinson
4efe0d8696
Update a couple comments
2015-07-04 10:12:57 -07:00
Chris Robinson
d90dfc8d1f
Check for duplicate device names in the mmdevapi backend
2015-06-30 07:44:56 -07:00
Chris Robinson
c24f4f230f
Use the lockless ringbuffer for mmdevapi capture
...
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.
2015-06-30 07:42:09 -07:00
Chris Robinson
e5964d6dc4
Double check the mmdevapi capture format
...
This isn't a real solution, but it should get IAudioClient_IsFormatSupported to
stop failing.
2015-06-07 13:05:07 -07:00
Chris Robinson
ed3f32b087
Don't define struct timespec with VS2015
2015-06-07 12:01:15 -07:00
Chris Robinson
5543000c5b
Check for snprintf in stdio.h
...
This works better for VS2015, which adds support for the function.
2015-06-07 11:16:11 -07:00
Chris Robinson
9f49ac0fda
Add a macro to simplify allocating and constructing an object
2015-05-18 16:39:44 -07:00
Chris Robinson
9479ea656b
Convert the solaris backend to the new API
2015-05-17 04:18:38 -07:00
Chris Robinson
3058205963
Add a method to reset the device
...
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.
2015-05-16 02:18:09 -07:00
Chris Robinson
80f0b5e736
Add a few more HRTF status values
...
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
2015-05-16 01:06:26 -07:00
Chris Robinson
0f51b6df4b
Add an HRTF status query
...
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).
2015-05-15 23:28:03 -07:00
kcat
c6dc1376e4
Merge pull request #11 from alexxvk/master
...
Fix mingw build
2015-05-03 16:08:33 -07:00
alexxvk
8846ad967f
Fix mingw64 build
2015-05-02 17:44:06 +06:00
Chris Robinson
8dfb1bc9db
Fix EFX_REVERB_PRESET_DRIVING_COMMENTATOR
2015-04-04 03:29:57 -07:00
Chris Robinson
19f79be57b
Fix static_assert when __COUNTER__ isn't available
2015-03-02 23:05:25 -08:00
Chris Robinson
6fcaccc964
Don't assert the increment value in the copy32 resampler
2015-02-15 13:15:49 -08:00
Chris Robinson
b4c9744d6a
Fix the HRTF B-Format decoder's W coefficient
...
And limit it to first-order again, since there will likely need to be extra
scalings applied.
2015-02-14 12:11:50 -08:00
Chris Robinson
18fed4e79a
Cheange some more unnecessarily small coefficients to 0
2015-02-11 22:23:33 -08:00
Chris Robinson
71b6e9bfe0
Add an option for "basic" HRTF rendering
...
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.
2015-02-11 09:32:05 -08:00
Chris Robinson
a6e574ba9e
Calculate HRTF coefficients for all B-Format channels at once
...
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.
2015-02-10 11:22:28 -08:00
Chris Robinson
3ed79cc229
Use a single statement to declare the buffer format channel maps
2015-02-10 10:04:59 -08:00
Chris Robinson
b9e81794e4
Pass the (FuMa) channel number to GetBFormatHrtfCoeffs
2015-02-10 06:46:02 -08:00
Chris Robinson
cf5856ed48
Correct conversion from polar to cartesian coords for HRTF
...
A functional no-op (cos(a) == cos(-a), -sin(a) == sin(-a)), but Ambisonics
expects the azimuth angle to go counter-clockwise.
2015-02-10 05:38:16 -08:00
Chris Robinson
a1d4847d07
Use B-Format for HRTF's virtual output format
...
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.
2015-02-09 15:59:29 -08:00
Chris Robinson
8933e21ef2
Properly handle a mono output buffer with the MIDI synths
2015-02-09 08:47:48 -08:00
Chris Robinson
1393af4f9f
Add a comment detailing how the HRTF channel buffer is set up
2015-02-09 08:11:07 -08:00
Chris Robinson
a925fb8111
Make sure the BS2B filter is freed if HRTF is enabled
2015-02-09 05:56:37 -08:00
Chris Robinson
61755f35c1
Move HRTF params and state closer together
2015-02-09 05:54:14 -08:00
Chris Robinson
c297b51a6e
Add a note to the JACK backend about a (minor) race condition
2015-02-07 10:09:01 -08:00
Chris Robinson
f5dd5c1330
Fix some ringbuffer function comments
2015-02-07 10:08:27 -08:00
Chris Robinson
4a5daa2e91
Clean up another vector iterator loop
2015-02-07 04:47:02 -08:00
Chris Robinson
50cdc0ac1e
Avoid tracing wide-char strings
...
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.
2015-02-07 04:19:50 -08:00
Chris Robinson
61743a3a00
Avoid unnecessary uses of ExchangeInt/Ptr
2015-02-04 23:39:51 -08:00
Chris Robinson
efb7b11d7f
Avoid unnecessary ExchangeInt uses
2015-02-04 05:57:54 -08:00
Chris Robinson
33ced1a7c2
Try the JACK backend before PulseAudio
...
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.
2015-02-03 05:11:46 -08:00
Chris Robinson
e6f4648924
Signal the mixer thread outside of the mutex lock
2015-02-03 02:40:22 -08:00
Chris Robinson
12e443d61d
Don't try to spawn a JACK server by default
...
And don't print an error if one couldn't be started when not requested.
2015-02-03 01:23:19 -08:00
Chris Robinson
e53861bfb9
Always use the JACK server buffer size as the update size
...
The buffer-size config option now only specifies an additional mix ahead to
keep ready for audio requests, rather than a pretend period size.
2015-02-03 01:08:38 -08:00
Chris Robinson
290badea95
Ensure PulseAudio's mixing loop is signaled when stopping
2015-01-21 22:02:02 -08:00
Chris Robinson
5cbafaa014
Remove a couple unused variables
2015-01-20 16:44:47 -08:00
Chris Robinson
0b6bb76259
Fix variable check
2015-01-20 16:42:23 -08:00
Chris Robinson
199646ac2b
Fix X7DOT1_NARROW name to X7DOT1_WIDE
2015-01-15 09:27:37 -08:00
Chris Robinson
c1607300bb
Accept a "narrow" layout for 7.1 with mmdevapi
2015-01-15 01:56:04 -08:00
Chris Robinson
205e258d1a
Fix high-pass coefficients
2015-01-13 09:38:13 -08:00
Chris Robinson
f9a9235333
Add missing alignas to CubicLUT declaration
2015-01-13 09:29:03 -08:00
Chris Robinson
ed05c83ee7
Fix the flags type
2015-01-11 15:02:26 -08:00
Chris Robinson
4dc9956a12
Remove some IN_IDE_PARSER uses
2014-12-24 17:15:50 -08:00
Chris Robinson
bc17d6fc45
Remove some unnecessary restrict uses
2014-12-24 17:14:45 -08:00
Chris Robinson
ca28d81b36
Update some function comments (bytes -> elements)
2014-12-24 16:42:57 -08:00
Chris Robinson
c71d8c0fc5
Update a comment
2014-12-24 01:17:55 -08:00
Chris Robinson
ad11a90720
Don't update the channel format if all JACK ports were allocated
2014-12-23 22:02:56 -08:00
Chris Robinson
93b69583d3
Try the device-specified channel configuration first
...
This does basically no checking that the channel config is correct, but should
be good enough for when non-stereo modes are requested.
2014-12-23 21:06:10 -08:00
Chris Robinson
2f162f0fc3
Use the custom ringbuffer instead of JACK's
2014-12-23 20:24:10 -08:00
Chris Robinson
a9cce5de3e
Add a lockless ringbuffer
...
Largely copied from JACK, it's extended to work with user-specified element
sizes instead of bytes. This is necessary to be able to work with 6- and 7-
channel output modes.
2014-12-23 20:17:34 -08:00
Chris Robinson
6ccf10bbde
Don't set unused pointers to NULL, don't try to write 0 samples
2014-12-23 11:56:55 -08:00
Chris Robinson
e84b3f4707
At least measure the ringbuffer size for JACK's latency
...
We should also add the port latency, but there's currently no way to ensure
it's synchronized with the ringbuffer (the ringbuffer will update before the
port latency gets updated).
2014-12-23 11:42:57 -08:00
Chris Robinson
beb670a939
Add an option to prevent spawning a JACK server
2014-12-22 19:29:55 -08:00
Chris Robinson
5e189624b7
Add JACK to the config utility
2014-12-22 18:56:15 -08:00
Chris Robinson
b8d98dd6d0
Add an option for an increased ringbuffer size with JACK
2014-12-22 18:48:54 -08:00
Chris Robinson
7e6d0d6b4f
Fill out the JACK playback backend
...
A few notes about it:
The OpenAL device's requested buffer metrics are ignored, and instead the
device will keep one JACK-sized buffer's worth of audio prepared for JACK's
next process request.
Output is restricted to 32-bit float stereo. Part of this is because JACK
requires a buffer size that's a power of 2 (measured in samples), and the
ringbuffer requires a buffer size that's a power of 2 (measured in bytes). A
channel count of 6 (5.1) or 7 (6.1) will not work without causing a sample to
split over the edge of the ringbuffer. Additioanlly, JACK doesn't provide
information about what channel configuration a device or set of ports has, so
there's no way to know what ports 3 and up map to (even the first two ports are
unknown, but assuming stereo seems to work well enough).
There is no device latency measurement (for AL_SOFT_source_latency) due to the
non-atomicity between the ringbuffer's read size and port latency. A method is
needed to ensure the ringbuffer's read size and port latency can both be
measured between the end of a JACK update cycle (when the port latency has been
updated with the newly-retrieved audio) and the following ringbuffer read
update.
2014-12-22 13:30:35 -08:00
Chris Robinson
23197ddbc3
Add a skeleton backend for JACK
2014-12-21 15:51:16 -08:00
Chris Robinson
f2d59671b2
Add a cmake module to find JACK
2014-12-21 15:48:40 -08:00
Chris Robinson
b56d50912e
Set error if capture device fails to start
2014-12-21 12:46:04 -08:00
Chris Robinson
c2975b5f44
Trace lparam and wparam message values
2014-12-21 12:37:02 -08:00
Chris Robinson
a91bca64f8
Check the PROPVARIANT type before use
2014-12-21 12:20:31 -08:00
Chris Robinson
13092d94b7
Use VECTOR_FOR_EACH instead of a manual loop
2014-12-21 10:45:10 -08:00
Chris Robinson
28a9f0826c
Use a macro for the record thread name
2014-12-21 10:38:40 -08:00
Chris Robinson
6574fa4863
Cast to the pointer-to-type to increment the buffer
2014-12-21 09:48:36 -08:00
Chris Robinson
aa4cf99e63
Fix logging on Windows
2014-12-20 06:24:55 -08:00
Chris Robinson
abf0bd13ca
Support capture with mmdevapi
2014-12-19 15:49:37 -08:00
Chris Robinson
f300be00ae
Handle logging Unicode strings on Windows
2014-12-19 10:14:02 -08:00
Chris Robinson
7f696edf13
Set the right variable when assuming CPU extensions
2014-12-19 08:50:30 -08:00
Chris Robinson
c3a36d9b19
Do up to 256 samples at a time with multi-step loops
2014-12-18 09:23:55 -08:00
Chris Robinson
9897fca794
Inline a couple functions
2014-12-18 08:52:04 -08:00
Chris Robinson
13c2dd7115
Offset to the buffer's channel start first
2014-12-18 08:42:03 -08:00
Chris Robinson
94ad5b289f
Avoid duplicate calculations
2014-12-18 07:42:14 -08:00
Chris Robinson
6086c344dc
Assert that there's a buffer for mixing
...
For Clang's static analysis.
2014-12-17 10:57:35 -08:00
Chris Robinson
4b91d34d58
Set a couple pulse callbacks to NULL during reset, and minor cleanups
2014-12-17 10:10:28 -08:00
Chris Robinson
af193e9fb3
Don't kill pulseaudio's mixer thread if it's already killed
2014-12-17 09:47:58 -08:00
Chris Robinson
c37275efdc
Use aluVector and aluMatrix in a couple more places
2014-12-16 10:36:44 -08:00
Chris Robinson
c48a6196ad
Constify some variables
2014-12-16 09:20:35 -08:00
Chris Robinson
d2adefe063
Pass a vectory to aluMatrixVector
2014-12-16 07:42:17 -08:00
Chris Robinson
3b8f54d572
Use aluVector in some more places
2014-12-16 07:20:27 -08:00
Chris Robinson
97f6d302fe
Add explicit matrix and vector types to operate with
2014-12-16 06:29:31 -08:00
Chris Robinson
1b7c554068
Multiply samples with the cubic coeffs before transposing
...
This avoids having to transpose the cubic coefficients.
2014-12-15 17:13:31 -08:00
Chris Robinson
a0e7ad493b
Load samples with _mm_loadu_ps in the cubic SSE resamplers
2014-12-15 15:27:31 -08:00
Chris Robinson
177dd95686
Add SSE2 and SSE4.1 cubic resamplers
2014-12-15 13:58:41 -08:00
Chris Robinson
a606bbc7f1
Use a lookup table to do cubic resampling
2014-12-15 12:23:28 -08:00
Chris Robinson
4b77f4ef07
Transpose the cubic matrix op
2014-12-15 11:06:44 -08:00
Chris Robinson
e60e0761f5
Use the default channel layout in alffplay if one isn't specified
2014-12-12 06:10:23 -08:00
Chris Robinson
05529d66ae
Don't pass float literals for unsigned ints
2014-12-06 18:58:16 -08:00
Chris Robinson
3d1f1ffd7f
Fix a potential leak when opening a data file on Windows
2014-12-01 19:27:09 -08:00
Chris Robinson
0c74a14543
Remove IrSize from DirectParams
2014-11-29 03:32:25 -08:00
Chris Robinson
cf50f44f4d
Remove an unnecessary maxf()
2014-11-29 02:06:08 -08:00
Chris Robinson
6883619b14
Check mmdevice endpoint for being headphones
2014-11-27 17:43:37 -08:00
Chris Robinson
8d6d2e9a2b
Avoid unnecessary uses of ALCdevice_Lock and ALCdevice_Unlock
2014-11-27 15:27:43 -08:00
Chris Robinson
82780a703b
Set headphones when dsound reports headphones
2014-11-27 02:30:52 -08:00
Chris Robinson
1db8392344
Improve ambient gain calculations
2014-11-25 22:24:29 -08:00
Chris Robinson
bdbf6613ef
Support B-Format output with the wave file writer
2014-11-25 22:20:00 -08:00
Chris Robinson
be476b3729
Halve the gain of the Cube8 coefficients
2014-11-25 18:11:45 -08:00
Chris Robinson
0a3e11b75e
Fix reverb panning direction
2014-11-25 17:55:17 -08:00
Chris Robinson
aa231d25a7
Shorten a couple lines
2014-11-25 16:47:39 -08:00
Chris Robinson
efb5c5eecd
Use linear gain stepping
2014-11-25 02:08:48 -08:00
Chris Robinson
42ef85d3f6
Pass the step count to the Update*Stepping methods
2014-11-25 01:38:27 -08:00
Chris Robinson
70ddca33ba
Fix __ALSOFT_REVERSE_Z with non-HRTF output
2014-11-25 01:15:26 -08:00
Chris Robinson
8e6c131b36
Use a separate method to set initial HRTF coefficients
2014-11-24 22:26:42 -08:00
Chris Robinson
cbe22763ee
Require at least pulse client 0.9.16
2014-11-24 13:15:04 -08:00
Chris Robinson
fc00c1c009
Trace PulseAudio's active port
2014-11-24 12:45:51 -08:00
Chris Robinson
d6ebf5d1b6
Make CalcHrtfDelta more generic
2014-11-24 01:53:45 -08:00
Chris Robinson
13608d4d61
Move the voice's last position and gain out of the Hrtf container
2014-11-24 01:31:38 -08:00
Chris Robinson
c37a971947
Rename step to steps
2014-11-24 00:24:12 -08:00
Chris Robinson
2111fad92f
Use a macro to reduce code duplication
2014-11-23 23:45:30 -08:00
Chris Robinson
391ab19b02
Avoid using ALCdevice_Lock and ALCdevice_Unlock unnecessarily
2014-11-23 21:05:42 -08:00
Chris Robinson
65620e0ae5
Update a comment
2014-11-23 20:43:17 -08:00
Chris Robinson
2c533fdc36
Set headphones when pulse reports using the headphones port
2014-11-23 20:41:29 -08:00
Chris Robinson
033cf3dca9
Add a boolean to specify if a device is headphones
2014-11-23 18:23:24 -08:00
Chris Robinson
837b38b166
Swap delta and step, remove double semicolons
2014-11-23 18:07:19 -08:00
Chris Robinson
5464a5c630
Remove unused channel enums
2014-11-23 14:50:31 -08:00
Chris Robinson
e5601a062e
Remove the cube+diamond virtual layout
2014-11-23 14:43:29 -08:00
Chris Robinson
5796e7eae5
Add an option for a simpler virtual channel setup
...
With HRTF mixing, certain things are mixed to virtual channels to be filtered
with HRTF later. This allows for using an 8-channel cube instead of a 14-
channel cube+diamond.
2014-11-23 13:49:19 -08:00
Chris Robinson
45d6bb58a4
Partially revert "Use a different method for HRTF mixing"
...
The sound localization with virtual channel mixing was just too poor, so while
it's more costly to do per-source HRTF mixing, it's unavoidable if you want
good localization.
This is only partially reverted because having the virtual channel is still
beneficial, particularly with B-Format rendering and effect mixing which
otherwise skip HRTF processing. As before, the number of virtual channels can
potentially be customized, specifying more or less channels depending on the
system's needs.
2014-11-23 10:49:54 -08:00
Chris Robinson
fc3608b381
Handle loopback devices when deciding to use HRTF
2014-11-23 08:38:33 -08:00
Chris Robinson
7e716bfc4a
Remove a couple unnecessary traces
2014-11-22 22:33:19 -08:00
Chris Robinson
4f279557a6
Attempt to use BS2B when using headphones without HRTF
2014-11-22 22:28:36 -08:00
Chris Robinson
ccbb3f069f
Update some config descriptions
2014-11-22 22:00:44 -08:00
Chris Robinson
d77c6153e7
Document the stereo-mode config option
2014-11-22 21:02:25 -08:00
Chris Robinson
312330dbaa
Rework HRTF decision logic
...
This way takes into account a new stereo-mode config option, which when set to
"headphones" will default to using HRTF. Eventually the device will also be
able to specify if headphones are being used.
2014-11-22 20:52:08 -08:00
Chris Robinson
f7d7afb7c1
Remove an unused macro
2014-11-22 16:39:08 -08:00
Chris Robinson
a217be1539
Rename Voice's NumChannels to OutChannels
2014-11-22 16:23:08 -08:00
Chris Robinson
637993a793
Only update the necessary channels
2014-11-22 13:16:24 -08:00
Chris Robinson
4ebf0ad717
Mix DirectChannel sources to the non-virtual channel buffers
2014-11-22 13:10:32 -08:00
Chris Robinson
dece86f61f
Store the number of output channels in the voice
2014-11-22 13:08:19 -08:00
Chris Robinson
fb511351df
Remove an unnecessary union container
2014-11-22 12:58:54 -08:00
Chris Robinson
e41cfeca84
Move a warning check earlier
2014-11-22 04:51:34 -08:00
Chris Robinson
a27e5e1652
Use a different method for HRTF mixing
...
This new method mixes sources normally into a 14-channel buffer with the
channels placed all around the listener. HRTF is then applied to the channels
given their positions and written to a 2-channel buffer, which gets written out
to the device.
This method has the benefit that HRTF processing becomes more scalable. The
costly HRTF filters are applied to the 14-channel buffer after the mix is done,
turning it into a post-process with a fixed overhead. Mixing sources is done
with normal non-HRTF methods, so increasing the number of playing sources only
incurs normal mixing costs.
Another benefit is that it improves B-Format playback since the soundfield gets
mixed into speakers covering all three dimensions, which then get filtered
based on their locations.
The main downside to this is that the spatial resolution of the HRTF dataset
does not play a big role anymore. However, the hope is that with ambisonics-
based panning, the perceptual position of panned sounds will still be good. It
is also an option to increase the number of virtual channels for systems that
can handle it, or maybe even decrease it for weaker systems.
2014-11-22 04:20:17 -08:00
Chris Robinson
38383671d7
Balance the left and right channels for quad output
2014-11-21 14:41:02 -08:00
Chris Robinson
c8d82712da
Reformat a couple lines
2014-11-21 14:40:10 -08:00
Chris Robinson
ccba33169b
Initialize panning after setting up HRTF
2014-11-21 14:35:19 -08:00
Chris Robinson
4ad6905c13
Allocate the DryBuffer dynamically
2014-11-21 13:45:57 -08:00
Chris Robinson
d608f0e9f0
Only warn when no data file could be opened
2014-11-19 13:07:37 -08:00
Chris Robinson
6e198b3476
Align UpdateSize for Neon, too
2014-11-17 21:33:09 -08:00
Chris Robinson
1dcc54c986
Don't force UpdateSize to a multiple of 4 after buffer metrics were set
2014-11-17 21:23:29 -08:00
Chris Robinson
40a08bed4f
Always get the pulseaudio sink info on device reset
2014-11-17 17:57:52 -08:00
Chris Robinson
d4e52b64d8
Mark a function as const
2014-11-15 23:20:38 -08:00
Chris Robinson
308e6b697a
Remove the unused angle and elevation from the device channel config
2014-11-15 04:26:11 -08:00
Chris Robinson
b10085cc63
Slightly increase the ambient gain volume
2014-11-15 04:11:22 -08:00
Chris Robinson
9681c5a2bb
Interpolate directional reverb gains with ambient based on vector length
2014-11-15 00:21:26 -08:00
Chris Robinson
55a13456d4
Add a method to convert channel enums to a label string
2014-11-15 00:19:56 -08:00
Chris Robinson
a095645970
Don't bother with LFE in the channel setup, set the values explicitly
2014-11-12 19:26:53 -08:00
Chris Robinson
283c2b20d4
Add a toolchain for Android cross-compiling
2014-11-10 17:56:48 -08:00
Chris Robinson
e036cca1c9
Add the ability to use custom output channel coefficients
...
I'm not sure exactly how I want to do this yet, but this is a good starting
point.
2014-11-10 17:53:42 -08:00
Chris Robinson
1c4055419e
Don't use the device lock/unlock wrappers needlessly
2014-11-08 18:04:01 -08:00
Chris Robinson
3eab44001d
Remove the unused layout config options
2014-11-08 15:44:07 -08:00
Chris Robinson
a50ba603ab
Remove the unused wide-stereo option
2014-11-08 06:36:45 -08:00
Chris Robinson
c053617066
Reorder some options in the config sample
2014-11-08 05:59:08 -08:00
Chris Robinson
3904a3f033
Allow selecting the 5.1-rear channel config from the config file
2014-11-08 05:53:17 -08:00
Chris Robinson
74994e9d11
Remove the long-deprecated 'format' config option
2014-11-08 05:41:55 -08:00
Chris Robinson
907cd3dd01
Add a workaround for compilers without __COUNTER__
...
This can make GCC pretty noisey, complaining "declaration does not declare
anything" for each static_assert, but it should still function on such older
compilers.
2014-11-07 19:43:14 -08:00
Chris Robinson
b34a374fa7
Only enable the BS2B filter with stereo output
2014-11-07 16:11:47 -08:00
Chris Robinson
35eacf058e
Go to the next voice when a source is stopped
2014-11-07 16:05:06 -08:00
Chris Robinson
1a326c758b
Rename a couple parameters
2014-11-07 16:00:07 -08:00
Chris Robinson
57387505d8
Move a declaration
2014-11-07 15:47:41 -08:00
Chris Robinson
01a1e6f102
Fallback to 16-bit samples in alffmpeg if a float32 format isn't supported
2014-11-07 04:50:16 -08:00
Chris Robinson
3f7cb8392e
Pas the output device channel count to ALeffectState::process
2014-11-07 03:43:33 -08:00
Chris Robinson
713e9dd4cc
Rename speakers to channels, and remove an old incorrect comment
2014-11-07 03:12:32 -08:00
Chris Robinson
4c3f27193f
Use a separate macro for the max output channel count
2014-11-07 02:18:24 -08:00
Chris Robinson
6c954e71db
Use shorter display names for the surround sound config options
2014-11-07 01:13:20 -08:00
Chris Robinson
0051a96376
Fix 5.1 surround sound
...
Apparently, 5.1 surround sound is supposed to use the "side" channels, not the
back channels, and we've been wrong this whole time. That means the "5.1 Side"
is actually the correct 5.1 setup, and using the back channels is anomalous.
Additionally, this means the 5.1 buffer format should also use the the side
channels instead of the back channels.
A final note: the 5.1 mixing coefficients are changed so both use the original
5.1 surround sound set (with the surround channels at +/-110 degrees). So the
only difference now between 5.1 "side" and 5.1 "back" is the channel labels.
2014-11-07 00:54:16 -08:00
Chris Robinson
7a98e92117
Update cross-compiler toolchain to work better with Qt
2014-11-06 23:18:42 -08:00
Chris Robinson
ad247fe5cd
Initialize a couple variables mingw complains about
2014-11-06 23:05:21 -08:00
Chris Robinson
4126ccf744
Use SZFMT for printing size_t
2014-11-06 23:02:39 -08:00
Chris Robinson
61a56ce120
Play zero-distance/zero-radius sources from the front
2014-11-05 04:48:48 -08:00
Chris Robinson
6aed34cfb5
Don't use FrontLeft and FrontRight to reference the dry buffer
2014-11-05 04:11:18 -08:00
Chris Robinson
59a2858239
Don't increment the output buffer in the Write_ methods
2014-11-05 04:07:06 -08:00
Chris Robinson
0185bdd8ca
Support 5.1 and 7.1 in alffplay
2014-11-05 03:55:36 -08:00
Chris Robinson
da765ec53b
Remove the channel name from ChannelConfig
2014-11-05 03:46:00 -08:00
Chris Robinson
e39117467c
Fix panning of multi-channel sources
2014-11-05 03:06:32 -08:00
Chris Robinson
c834c3fae5
Set gains using the device channel index
2014-11-05 02:54:11 -08:00
Chris Robinson
e5016f814a
Add LFE to the speaker arrays
2014-11-04 04:33:35 -08:00
Chris Robinson
6083a684d1
Use a method to set omni-directional channel gains
2014-11-04 03:33:35 -08:00
Chris Robinson
d8cfdb3f34
Use COUNTOF to set the number of speakers
2014-11-04 03:00:15 -08:00
Chris Robinson
deba996769
Add some missing breaks
2014-11-02 02:30:45 -08:00
Chris Robinson
857d68b0ce
Minor update for ambisonics coefficients
...
Small tweaks to balance the left and right speakers, and change
unreasonably small values to 0.
2014-11-02 00:58:48 -07:00
Chris Robinson
9d82ab9d1f
Use the copy resampler only when there's no sub-sample offset
2014-11-02 00:27:26 -07:00
Chris Robinson
c82f39decd
Avoid the ALCdevice_Lock/Unlock wrapper in some places
2014-11-01 15:55:18 -07:00
Chris Robinson
28c1ec830e
Support AL_EXT_MULAW_BFORMAT
2014-10-31 22:52:30 -07:00
Chris Robinson
dd6e622206
Add AL_EXT_MULAW_BFORMAT to alext.h
2014-10-31 22:46:34 -07:00
Chris Robinson
3d2853274d
Support B-Format source rotation with AL_ORIENTATION
2014-10-31 22:43:13 -07:00
Chris Robinson
336aba6f1f
Rename the source's Orientation to Direction
2014-10-31 17:24:46 -07:00
Chris Robinson
ac51c9cce6
Add preliminary AL_EXT_BFORMAT support
...
Currently missing the AL_ORIENTATION source property. Gain stepping also does
not work.
2014-10-31 17:18:45 -07:00
Chris Robinson
1c0596c233
Check the absolute gain value for silence
...
Future B-Format support will be using negative gains, which still need to be
applied.
2014-10-31 16:55:19 -07:00
Chris Robinson
0e09e779f9
Use %zu (C99) for printing size_t
2014-10-30 12:27:59 -07:00
Chris Robinson
3585021a18
Minor clarification for __ALSOFT_SUSPEND_CONTEXT
2014-10-13 10:48:54 -07:00
Chris Robinson
87dcf65013
Use the minimum of the two string lengths for comparison
2014-10-13 07:04:36 -07:00
Chris Robinson
84582ceb03
Use more appropriate size types
2014-10-13 07:00:43 -07:00
Chris Robinson
f05a2b86cd
Don't attempt to match a channel input to output
...
I don't like this, but it's currently necessary. The problem is that the
ambisonics-based panning does not maintain consistent energy output, which
causes sounds mapped directly to an output channel to be louder compared to
when being panned. The inconcistent energy output is partly by design, as it's
trying to render a full 3D sound field and at least attempts to correct for
imbalanced speaker layouts.
2014-10-12 12:39:27 -07:00
Chris Robinson
4320a1483b
Make alcSuspendContext and alcProcessContext batch updates
...
This behavior better matches Creative's hardware drivers and Rapture3D's OpenAL
driver. A compatibility environment variable is provided to restore the old
no-op behavior for any app that behaves badly from this change (set
__ALSOFT_SUSPEND_CONTEXT to "ignore").
If too many apps have a problem with this, the default behavior may need to be
changed to ignore, with the env var providing an option to defer/batch instead.
2014-10-12 09:17:13 -07:00
Chris Robinson
a77387b549
Avoid taking the square-root of the ambient gain
...
Although it is more correct for preserving the apparent volume, the ambisonics-
based panning does not work on the same power scale, making it louder by
comparison.
2014-10-11 09:35:32 -07:00
Chris Robinson
79163b0755
Fix stereo device configuration
2014-10-11 04:07:33 -07:00
Chris Robinson
70b23ab77f
Add a helper to search for a channel index by name
2014-10-02 21:19:34 -07:00
Chris Robinson
79fb86d8f7
Store default speaker configurations in a struct
2014-10-02 20:25:30 -07:00
Chris Robinson
95ba18cf4e
Make ComputeAngleGains use ComputeDirectionalGains
2014-10-02 18:05:42 -07:00
Chris Robinson
9377d0f237
Don't use ComputeAngleGains for SetGains
2014-10-02 01:02:25 -07:00
Chris Robinson
918c773a59
Use helpers to set the gain step values
2014-10-02 00:56:29 -07:00
Chris Robinson
3aa63e3e9b
Use VECTOR_FIND_IF instead of manual loops
2014-09-30 22:42:07 -07:00
Chris Robinson
2d89d33dd1
Add a cast for MSVC
2014-09-30 21:50:29 -07:00
Chris Robinson
af7330de88
Copy the null terminator from the string instead of appending it
2014-09-30 21:49:29 -07:00
Chris Robinson
d82d6c701d
Use size_t for the vector size and capacity
2014-09-30 21:47:22 -07:00
Chris Robinson
4d36ef65b2
Use an ambisonics-based panning method
...
For mono sources, third-order ambisonics is utilized to generate panning gains.
The general idea is that a panned mono sound can be encoded into b-format
ambisonics as:
w[i] = sample[i] * 0.7071;
x[i] = sample[i] * dir[0];
y[i] = sample[i] * dir[1];
...
and subsequently rendered using:
output[chan][i] = w[i] * w_coeffs[chan] +
x[i] * x_coeffs[chan] +
y[i] * y_coeffs[chan] +
...;
By reordering the math, channel gains can be generated by doing:
gain[chan] = 0.7071 * w_coeffs[chan] +
dir[0] * x_coeffs[chan] +
dir[1] * y_coeffs[chan] +
...;
which then get applied as normal:
output[chan][i] = sample[i] * gain[chan];
One of the reasons to use ambisonics for panning is that it provides arguably
better reproduction for sounds emanating from between two speakers. As well,
this makes it easier to pan in all 3 dimensions, with for instance a "3D7.1" or
8-channel cube speaker configuration by simply providing the necessary
coefficients (this will need some work since some methods still use angle-based
panpot, particularly multi-channel sources).
Unfortunately, the math to reliably generate the coefficients for a given
speaker configuration is too costly to do at run-time. They have to be pre-
generated based on a pre-specified speaker arangement, which means the config
options for tweaking speaker angles are no longer supportable. Eventually I
hope to provide config options for custom coefficients, which can either be
generated and written in manually, or via alsoft-config from user-specified
speaker positions.
The current default set of coefficients were generated using the MATLAB scripts
(compatible with GNU Octave) from the excellent Ambisonic Decoder Toolbox, at
https://bitbucket.org/ambidecodertoolbox/adt/
2014-09-30 07:33:13 -07:00
Chris Robinson
4955824c2d
Use better GUI item names for the resampler option
2014-09-26 20:45:46 -07:00
Chris Robinson
57623741f6
Show prettier names in the alsoft-config sample format combo boxes
2014-09-13 23:12:40 -07:00
Chris Robinson
4e66224d6c
Combine some fields into a struct
2014-09-10 17:53:01 -07:00
Chris Robinson
01adfde199
Invert the ChannelOffsets array
2014-09-10 16:52:54 -07:00
Chris Robinson
49cb2421c7
Use a wave file channel mask based on the actual format
2014-09-10 08:30:07 -07:00
Chris Robinson
d714b90962
Add AL_EXT_BFORMAT to alext.h
2014-09-09 21:40:06 -07:00
Chris Robinson
4a712dc612
Remove some unnecessary config options
2014-09-08 15:29:07 -07:00
Chris Robinson
7a31847f7d
Use a vector instead of a manual dynamic array
2014-09-08 15:24:27 -07:00
Chris Robinson
5ff1730e02
Don't modify a capture device's format
...
OpenAL's capture API guarantees the application gets the format requested, or
else the device will fail to open. The only valid change is that the capture
buffer can be larger than requested.
2014-09-08 14:29:59 -07:00
Chris Robinson
a234fc11e5
Remove the GetLatency method from the old BackendFuncs
2014-09-08 06:59:58 -07:00
Chris Robinson
9dacd89a02
Convert the winmm backend to the new backend API
2014-09-08 06:46:20 -07:00
Chris Robinson
2be33d8a77
Only pass nano seconds to al_nssleep
2014-09-08 04:37:52 -07:00
Chris Robinson
f38e88bc29
Allow optional memory ordering to atomic methods
...
Currently only C11 atomics make use of the memory order. If not
specified, it defaults to almemory_order_seq_cst.
2014-09-07 00:42:50 -07:00
Chris Robinson
4d19d4f416
Check that atomic_load works with a const _Atomic
...
The original C11 spec does not allow atomic_load to work on const _Atomic
variables, which we sometimes do in alGet* methods, despite the fact that it
does not modify the variable. An update to the C spec corrects this oversight,
and GCC 4.9 has allowed it anyway, while Clang 3.4 does not.
2014-09-05 17:47:32 -07:00
Chris Robinson
ab829fd906
Fix the __get_cpuid cmake check
2014-09-05 02:57:24 -07:00
Chris Robinson
0b250b246d
Use a standard pointer-sized integer type
2014-09-04 23:23:48 -07:00
Chris Robinson
4b53d0e90c
Make ExchangeInt and ExchangePtr non-atomic
2014-09-03 17:37:07 -07:00
Chris Robinson
2f2768e7c3
Make the fontsound's buffer and link fields atomic
2014-09-03 16:29:17 -07:00
Chris Robinson
30e01a7dba
Protect alProcessUpdatesSOFT with a lock
2014-09-03 16:02:00 -07:00
Chris Robinson
7f5497b863
Use proper atomics for the thunk array
2014-09-03 15:49:31 -07:00
Chris Robinson
5840f5e76f
Make the buffer's pack and unpack properties atomic
2014-09-03 15:40:15 -07:00
Chris Robinson
ba827cdfff
Fix Neon mixer definition
2014-08-31 23:46:43 -07:00
Chris Robinson
705c60d924
Use al_calloc/al_free to allocate contexts and voices
2014-08-30 20:59:46 -07:00
Chris Robinson
f04b15692e
Setup the HRTF format before tracing the pre-reset format
2014-08-29 19:34:20 -07:00
Chris Robinson
f18d2f2445
Check mmdevapi device ids to match the default device
...
Seems Windows can return different IMMDevice object pointers for the same
endpoint.
2014-08-28 18:22:17 -07:00
Chris Robinson
2b87ffece5
Return the correct default capture device name
2014-08-26 14:52:36 -07:00
Chris Robinson
368bf037dd
Check the given CoreAudio capture device name
2014-08-26 14:50:14 -07:00
Chris Robinson
99b71278db
Remove a couple unnecessary typedefs
2014-08-24 23:48:42 -07:00
Chris Robinson
a3bba200c0
Convert the wave writer backend to the new API
2014-08-24 22:20:02 -07:00
Chris Robinson
4f7b3f0c38
Use al_malloc/al_free for default allocators
2014-08-24 20:16:28 -07:00
Chris Robinson
0d0222e91b
Include the common sources when building statically
2014-08-23 13:37:14 -07:00
Chris Robinson
259e265920
Rename activesource to voice
2014-08-21 03:41:13 -07:00
Chris Robinson
65d2e0eb8d
Use an array of objects for active sources instead of pointers
2014-08-21 02:27:56 -07:00
Chris Robinson
b92e643e97
Use a NULL source for inactive activesources
...
Also only access the activesource's source field once per update.
2014-08-21 00:29:42 -07:00
Chris Robinson
3a6baab495
Use the current binary dir for shared function checks too
2014-08-20 13:47:56 -07:00
Jesper Särnesjö
ba9995a8de
Use directories relative to current project in CheckFileOffsetBits.cmake
...
Enables building OpenAL Soft in a subdirectory of another project.
2014-08-20 13:31:24 -07:00
Chris Robinson
e3d72ccd15
Support brace-enclosed environment variable names
...
This makes it possible to append alpha-numeric characters directly to an
environment variable value, e.g. ${FOO}bar will use "FOO" as the variable name
and keep the "bar" as-is, whereas $FOObar will take "FOObar" as the variable
name.
2014-08-19 16:54:53 -07:00
François Cami
3c13e1e333
Update COPYING to the latest https://www.gnu.org/licenses/old-licenses/lgpl-2.0.txt to fix the FSF' address Fix the FSF' address in the source
2014-08-18 11:34:29 -07:00
Chris Robinson
864528bb7b
Use the POSITION_INDEPENDENT_CODE target property when available
2014-08-16 20:46:55 -07:00
Chris Robinson
4a7e04add3
Don't force specific compile flags for the different build types
2014-08-16 19:57:56 -07:00
Chris Robinson
8630e8c7fc
Don't try to include stdalign.h if C11 _Alignas isn't available
...
Some compilers will allow including stdalign.h, and even define alignas to
_Alignas, even if that C11 feature is unavailable (e.g. because it requires a
suitable -std= setting).
2014-08-16 10:17:30 -07:00
Chris Robinson
dd1df64537
Search for the correct include and lib directories for the DX SDK
...
And only set them when needed.
2014-08-15 14:26:06 -07:00
Chris Robinson
d60ce35846
Add a changelog, detailing notable changes for each release
2014-08-15 00:06:59 -07:00
Chris Robinson
b907c21f48
Release 1.16.0
2014-08-14 17:30:11 -07:00
Chris Robinson
8364aa5f6f
ALC_SOFT_pause_device is finished
2014-08-12 08:45:11 -07:00
Chris Robinson
ba3f1e7468
Assume SSE is available if building with support and no run-time checking
2014-08-11 14:45:28 -07:00
Chris Robinson
74c8de6372
Try the __cpuid intrinsic if GCC's __get_cpuid isn't available
2014-08-11 14:19:15 -07:00
Chris Robinson
e3ee534c39
Check for GCC's __get_cpuid before using it
2014-08-11 13:38:43 -07:00
Chris Robinson
8ecbeb4945
Only support dsound and mmdevapi on Windows
2014-08-11 09:13:08 -07:00
Chris Robinson
960cdec0b5
Remove a couple unnecessary HAVE_*_H header defines
...
The xmmintrin.h and arm_neon.h headers are always available with SSE and Neon
support, respectively.
2014-08-11 09:09:00 -07:00
Chris Robinson
4a9545affa
Don't try to generate .def or .lib files when building statically
2014-08-10 19:48:53 -07:00
Chris Robinson
6273a18de5
Add an option to build an import .lib with dlltool on mingw
...
Also make sure the ordinals are stripped from the .def file (using sed), so
that the generated .lib will link apps to the DLL using function names instead
of ordinals.
2014-08-10 19:40:29 -07:00
Chris Robinson
a3c236598a
Simplify some vector size range checks
2014-08-10 10:52:08 -07:00
Chris Robinson
936a79da7d
Give NULL for null-vector iterators
2014-08-10 09:12:08 -07:00
Chris Robinson
94013216b6
Pass pointer-to-vector types as char* instead of void*
...
C aliasing rules only allow char* to alias an otherwise-incompatible type,
rather than void*.
2014-08-10 08:46:55 -07:00
Chris Robinson
22856844c6
Properly set FluidSynth's include dir for older cmake versions
2014-08-10 05:50:19 -07:00
Chris Robinson
357beb0570
Create a .def file when building with MinGW
...
Preferably we'd tell CMake to make it itself instead of specifiying compiler-
specific flags, but there doesn't seem to be a way to.
2014-08-10 05:10:11 -07:00
Chris Robinson
f173a67870
Use VECTOR_FIND_IF and VECTOR_FOR_EACH instead of manual loops
2014-08-09 06:15:11 -07:00
Chris Robinson
1692dda4b9
Use the default input device for portaudio's default capture device
2014-08-08 19:48:45 -07:00
Chris Robinson
10c01110f3
Modify CPU extensions and effect options to be enabled when checked
...
It looks nicer and more featured for options to be checked when they're
allowed, rather than when disallowed.
2014-08-07 05:16:05 -07:00
Chris Robinson
6048d70232
Add a 48khz HRTF data set
...
Made by simply using makehrtf's resampling option with the 44.1hz KEMAR data
set.
2014-08-07 04:26:06 -07:00
Chris Robinson
e64d0f83cd
Disable the autowah effect
...
There's apparently some issues with it causing noise or killing the output. It
might be due to the per-sample changes being too harsh for the filter to keep
up with, but it's not something I can take care of in time for release.
This commit should be reverted after release when work on fixing it can resume.
2014-08-06 23:38:05 -07:00
Chris Robinson
23441be474
Make the DYNLOAD LoadFSynth function non-inline
2014-08-05 19:38:33 -07:00
Chris Robinson
951870b189
Enable large file support
2014-08-05 05:05:05 -07:00
Chris Robinson
bda39c5038
Filter for relative HRTF data paths and add Add/Remove label texts
2014-08-05 04:56:51 -07:00
Chris Robinson
066a48c5fb
Update alsoft-config
...
Adds Compressor effect and SSE 4.1 for exclusion, and alters the HRTF tables
tooltip to refer the the default data sets instead of the built-in set.
2014-08-05 02:43:04 -07:00
Chris Robinson
7b4a2335eb
Load fluidsynth dynamically when possible
2014-08-05 01:48:30 -07:00
Chris Robinson
451b780e08
Fix some lock ordering to avoid potential deadlocks
2014-08-03 00:56:58 -07:00
Chris Robinson
f5194a9d8e
Use an ATOMIC_INIT macro instead of ATOMIC_LOAD_UNSAFE
2014-08-03 00:26:21 -07:00
Chris Robinson
659b340716
Use the right type for atomic compare-exchange
2014-08-01 02:47:46 -07:00
Chris Robinson
1c1e878be7
Add some casts for inline assembly atomics
...
And remove an unnecessary void cast
2014-08-01 02:40:25 -07:00
Chris Robinson
87423f046e
Use atomics for the device and context list heads
2014-08-01 02:04:40 -07:00
Chris Robinson
15a58eb383
Make the source's buffer queue head and current queue item atomic
2014-07-31 07:20:36 -07:00
Chris Robinson
cdfc5a4d31
Remove an unused function
2014-07-31 04:44:39 -07:00
Chris Robinson
ce046d2f03
Rename ATOMIC_COMPARE_EXCHANGE to ATOMIC_COMPARE_EXCHANGE_STRONG
2014-07-31 04:34:46 -07:00
Chris Robinson
6ce464aed8
Avoid a CPU memory fence, and better order memory barriers to accesses
...
Code produced by GCC 4.9's C11 atomic implementation does not seem to add a
CPU memory fence even with memory_order_seq_cst. Unnecessary memory fences
will be a detriment to performance, so they should only be added if needed.
2014-07-31 04:19:33 -07:00
Chris Robinson
7c847e62c3
Change Windows-based atomics for non-C99 compilers
2014-07-27 19:34:32 -07:00
Chris Robinson
38e8dc8540
Use a full memory barrier for Windows
2014-07-27 18:31:10 -07:00
Chris Robinson
6864053eee
Use pulseaudio's write callback to signal a mixer proc wakeup
2014-07-26 22:04:26 -07:00
Chris Robinson
0ad3f61351
Don't try to use internal visibility
...
A number of functions are passed as callbacks to external libraries, which
internal visiiblity doesn't allow.
2014-07-26 17:48:36 -07:00
Chris Robinson
d3980bdebc
Always set the active source's update method
...
If the source is stopped, changes its buffer, then played again quickly, the
source will never be removed from the active source list causing the update
method to remain as it was. If the buffer was changed between mono and multi-
channel, this causes it to use the wrong method.
2014-07-26 16:41:39 -07:00
Chris Robinson
531c0d8e6b
Explicitly pass the address of atomics and parameters that can be modified
2014-07-26 03:00:49 -07:00
Chris Robinson
a3dbe08c8b
Support C11 atomics
2014-07-23 06:36:34 -07:00
Chris Robinson
e4b779c492
Use generic atomics in more places
2014-07-22 18:57:51 -07:00
Chris Robinson
a3b1d4a5e2
Implement RefCount as a generic atomic type
2014-07-22 18:18:14 -07:00
Chris Robinson
5a339a2a5b
Add macros for generic atomic functionality
2014-07-22 00:20:28 -07:00
Chris Robinson
7b41ed7ec4
Check the current directory first for data files
2014-07-21 04:42:45 -07:00
Chris Robinson
0ff4a91442
Make some functions static
2014-07-20 01:27:33 -07:00
Chris Robinson
8592b9371a
Use the UNUSED macro instead of a void cast
2014-07-19 20:46:41 -07:00
Chris Robinson
0c31ccd456
Stop trying to read samples if there was an error
2014-07-19 20:46:12 -07:00
Chris Robinson
9370fea359
Trace when a soundfont buffer goes unused
2014-07-19 14:18:52 -07:00
Chris Robinson
36381f3164
Load the default soundfont as a comma-separate list of filename
...
This allows multiple soundfont files to be "patched" together to create a
single soundfont. For instance a GM soundfont with a separate soundfont for
GS-only additions.
2014-07-19 13:44:02 -07:00
Chris Robinson
994c3f00e5
Keep existing presets when loading in a new soundfont
...
Note that alLoadSoundfontSOFT doesn't currently allow using a soundfont with
existing presets. This is for being able to load and stack multiple soundfonts
for the default soundfont.
2014-07-19 12:42:52 -07:00
Chris Robinson
85e135beea
Use a macro to specify the fourcc formatters
2014-07-18 18:56:26 -07:00
Chris Robinson
17682cb0ce
Explicitly include libavutil/channel_layout.h for the channel layout stuff
2014-07-18 01:21:42 -07:00
Chris Robinson
23cae7783d
Properly scale the first HRTF pass-through coefficient
...
Coefficients are scaled by 32767. For pass-through, this is attenuated by
sqrt(0.5) to maintain a consistent perceived volume.
2014-07-17 18:02:23 -07:00
Chris Robinson
8635733d59
Fix typo (overriden -> overridden)
2014-07-17 10:22:58 -07:00
Chris Robinson
15d7ed2f0d
Cleanup some HRTF code
...
Use loops instead of duplicating code, rewrite some lines to be clearer.
2014-07-16 13:26:47 -07:00
Chris Robinson
0d3b18b17d
Fix omni-directional moving HRTF coeffs
2014-07-14 09:15:12 -07:00
Chris Robinson
f4cdecebcf
Add a source radius property that determines the directionality of a sound
...
At 0 distance from the listener, the sound is omni-directional. As the source
and listener become 'radius' units apart, the sound becomes more directional.
With HRTF, an omni-directional sound is handled using 0-delay, pass-through
filter coefficients, which is blended with the real delay and coefficients as
needed to become more directional.
2014-07-11 00:03:13 -07:00
Chris Robinson
c5af088b5f
Access the result macro parameter only once
2014-07-06 22:11:29 -07:00
Chris Robinson
f4f1c1eeed
Rename some functions
2014-07-06 09:21:38 -07:00
Chris Robinson
8dec92531b
Store 4 modulators per map entry
2014-07-06 09:06:35 -07:00
Chris Robinson
dc76013126
Regroup and reorganize some macros
2014-07-06 08:05:35 -07:00
Chris Robinson
23979ac648
Use VECTOR_FIND_IF instead of a manual loop
2014-07-06 05:16:44 -07:00
Chris Robinson
f809d3c81a
Allow ALsoundfont_deleteSoundfont to handle multiple buffers
2014-07-06 05:00:05 -07:00
Chris Robinson
d0a64fe191
Don't require pre-declaring vector types
2014-07-06 03:27:39 -07:00
Chris Robinson
5de7271bcd
AL_SOFT_source_length is complete
2014-07-05 04:25:37 -07:00
Chris Robinson
ad92181a26
Don't set modulators that have no destination
2014-07-05 03:55:45 -07:00
Chris Robinson
ff915534cd
Avoid aliasing an int array
2014-07-05 02:01:36 -07:00
Chris Robinson
b88aaaf1bc
Fix a couple checks
2014-07-05 01:47:08 -07:00
Chris Robinson
47f5e710c2
Make some more functions static
2014-07-05 01:23:06 -07:00
Chris Robinson
5afc29f65d
Use a helper function to check valid MIDI controller inputs
2014-07-04 22:08:24 -07:00
Chris Robinson
f667782df2
Set the 'valid' field when we have a valid buffer pointer
2014-07-04 06:57:58 -07:00
Chris Robinson
3f45c00779
Move an inline definition to a more appropriate source
2014-07-04 00:22:27 -07:00
Chris Robinson
17f79ea43e
Make a function static
2014-07-04 00:00:39 -07:00
Chris Robinson
fda5bc2bd2
AL_SOFT_MSADPCM is functionally complete
2014-07-03 20:59:44 -07:00
Chris Robinson
5303ee2588
Avoid an undefined allocation of 0 bytes
2014-07-01 23:32:06 -07:00
Chris Robinson
cb726d87ce
Simplify setting a fontsound link
2014-07-01 23:24:11 -07:00
Chris Robinson
fec1fec373
Check that a fontsound is NOT null before deleting it
2014-07-01 22:52:29 -07:00
Chris Robinson
347d8f94e8
Remove an unused variable
2014-07-01 22:52:06 -07:00
Chris Robinson
8b1b52a687
Remove an unnecessary cast
2014-07-01 22:27:53 -07:00
Chris Robinson
56bb8689d4
Fix preset zone instrument header check
2014-07-01 19:43:20 -07:00
Chris Robinson
3c6752e765
Print SF2 text INFO chunks
2014-07-01 00:36:44 -07:00
Chris Robinson
c06bb88756
Warn about all unhandled soundfont generators
2014-06-30 04:03:50 -07:00
Chris Robinson
8577df76c4
Check the last preset and instrument properties within the loop
2014-06-30 03:52:10 -07:00
Chris Robinson
22982948cf
Standardize some New/Delete methods
2014-06-30 00:10:40 -07:00
Chris Robinson
8f8898b7b0
Remove an unused macro
2014-06-29 04:35:35 -07:00
Chris Robinson
8176d2c058
Load soundfont samples into an ALbuffer
...
Also remove ALsoundfont's now-unneeded sample storage functions and struct
fields.
2014-06-29 02:04:05 -07:00
Chris Robinson
389a2f7b4b
Store and use an ALbuffer for samples in an ALfontsound
...
The fontsound still maintains its own start, end, and loop offsets, so that the
same buffer may be shared between multiple/all fontsounds. Ideally a single
buffer should be used for all fontsounds to avoid memory fragmentation and help
CPU caching, although higher quality soundfonts may need more memory than a
single buffer can hold.
2014-06-29 00:47:29 -07:00
Chris Robinson
d19e42a723
Don't require MIDI sysex data to have the high bit clear
2014-06-26 04:35:51 -07:00
Chris Robinson
b9462bbe3c
Only set the needed HRTF coefficients
2014-06-21 19:17:39 -07:00
Chris Robinson
81b3395b41
Avoid negating 'negative' variable names
2014-06-20 23:48:58 -07:00
Chris Robinson
be903d67b8
Don't pass the device to HRTF methods
2014-06-20 16:43:14 -07:00
Chris Robinson
fb25a70f95
Don't overwrite the loopback device format with the HRTF format
2014-06-20 15:48:09 -07:00
Chris Robinson
0fd215cb84
Remove unused variables
2014-06-13 22:50:14 -07:00
Chris Robinson
57c683f822
Get the mixer and resampler functions when needed
2014-06-13 16:07:25 -07:00
Chris Robinson
a8deaf12f4
Combine the direct and send mixers
2014-06-13 13:34:19 -07:00
Chris Robinson
c29eb63489
Combine some dry and wet path types
2014-06-13 11:42:04 -07:00
Chris Robinson
19ec7b2ad2
Pre-apply the crossfeed filter gain to the input sample coefficients
2014-06-12 09:40:30 -07:00
Chris Robinson
4c706f59d9
Use floats for the BS2B filter
2014-06-11 09:57:48 -07:00
Chris Robinson
dfded9595c
Make bs2b_cross_feed inline
2014-06-10 12:46:58 -07:00
Chris Robinson
d0fac3fe1d
Don't try to set fp precision with __control87_2 or _controlfp
2014-06-08 23:39:52 -07:00
Chris Robinson
c07fb7b45c
Print CPU extensions that are unavailable but requested
2014-06-08 06:31:36 -07:00
Chris Robinson
8ca1f4f371
Open and close the file in the main thread in alffplay
...
This avoid problems with the file being closed while a video refresh is still
scheduled.
2014-06-08 03:26:34 -07:00
Chris Robinson
be66692f94
Require SSE for SSE2, and SSE2 for SSE4.1
2014-06-07 23:28:32 -07:00
Chris Robinson
09d5475aa6
Update the disable-cpu-exts config option description
2014-06-07 06:08:22 -07:00
Chris Robinson
2ff266ca83
Update a couple sources with the proper author
2014-06-06 07:15:22 -07:00
Chris Robinson
6d1622dc68
Move InitiatePositionArrays to mixer_defs.h
2014-06-06 07:15:22 -07:00
Timothy Arceri
fc0be88c0f
Add SSE2 and SSE4.1 linear resamplers
...
Currently the only way SSE 4.1 is detected is by using __get_cpuid, i.e. with
GCC. Windows' IsProcessorFeaturePresent does not report SSE4.1 capabilities.
2014-06-06 07:15:00 -07:00
Chris Robinson
3b2fcb3ef6
Avoid a loop when updating the source position variables
2014-06-02 19:19:22 -07:00
Chris Robinson
d2c0a43498
Add an ffmpeg-based example player
...
This example shows proper timing and A/V synchronization with an OpenAL stream.
Requires the in-progress AL_SOFTX_source_length extension to avoid manually
keeping track of the buffer queue length.
2014-06-02 17:33:11 -07:00
Chris Robinson
933f51a8bf
Only define struct timespec if _TIMESPEC_DEFINED isn't set
...
This matches what the mingw-w64 headers define with the struct.
2014-05-31 17:41:10 -07:00
Chris Robinson
1d45c439b8
Add extern "C" to common headers.
2014-05-29 04:22:30 -07:00
Chris Robinson
73614f228e
Add methods to exchange and compare-exchange RefCount values
2014-05-27 15:48:15 -07:00
Chris Robinson
fd62868c17
Avoid unnecessary local variables
2014-05-27 15:32:38 -07:00
Chris Robinson
f0b65aa6b7
Implement condition variables for Windows
2014-05-27 05:22:53 -07:00
Chris Robinson
2d2bc25fd0
Add an extension string for the in-progress source length extension
...
This is the extension that allows you to get the full length of the source's
buffer queue.
2014-05-26 04:07:50 -07:00
Chris Robinson
b6e1042e8c
Implement condition variables (POSIX only!)
...
Windows requires Vista or newer to get the CONDITION_VARIABNLE API, but we
currently only require XP.
2014-05-26 03:52:55 -07:00
Chris Robinson
fd5e7f1466
Don't print an ERR if pulse fails to get latency info due to no data
...
It just means it was called too quickly after starting.
2014-05-26 03:41:33 -07:00
Chris Robinson
0ec0f7561c
Add an option to get the length of a source's full queue
...
This simplifies keeping track how much a source has buffered in its queue,
which reduces a bunch of unnecessary book keeping the app would have to do.
2014-05-25 16:16:55 -07:00
Chris Robinson
3d6ffa282d
Don't resume the backend if there's no contexts
2014-05-24 17:19:52 -07:00
Chris Robinson
4ca561acd3
Move the active source's offset out of the direct params
2014-05-24 16:55:10 -07:00
Chris Robinson
13eac2552e
Update the examples to use SDL2
...
This should make it easier to build the examples on 64-bit, where there are no
premade dev libs for SDL1 on 64-bit mingw. FindSDL_sound.cmake has been
updated to accept SDL or SDL2.
2014-05-23 12:14:51 -07:00
Chris Robinson
5ef5d218c4
Mark a few more functions as const
2014-05-23 10:00:58 -07:00
Chris Robinson
3fc9791747
Rename CONST_FUNC and PRINTF_STYLE, and fix non-GNU AL_PRINT
2014-05-23 08:30:33 -07:00
Chris Robinson
7d997277a0
AL_SOFT_block_alignment is now considered done
2014-05-22 12:27:07 -07:00
Chris Robinson
a48f5d26fd
Ensure a proper amount of new elements are being reserved when inserting
2014-05-22 12:16:22 -07:00
Chris Robinson
9008bcbe54
Include strings.h if it exists for strncasecmp
2014-05-22 11:33:09 -07:00
Chris Robinson
2729a1549b
Add a needed header for the CoreAudio backend
2014-05-22 11:29:26 -07:00
Chris Robinson
e32e3df3aa
Use the first non-0-length buffer when starting a source
2014-05-22 11:08:21 -07:00
Chris Robinson
85e990e915
Don't try to use the non-standard alloca.h
...
Variable-length arrays are C99 standard and are preferred over alloca. The only
compiler that needs alloca (MSVC) has it in malloc.h.
2014-05-22 08:46:13 -07:00
Chris Robinson
2b3550b61c
Use an unsigned type for the win32 size_t formatter
2014-05-22 08:02:39 -07:00
Chris Robinson
100c059157
Mark some functions as const
2014-05-22 07:40:22 -07:00
Chris Robinson
ecdfcdbfa5
The lower value of the gain vector contains the closest target value
2014-05-21 21:20:44 -07:00
Chris Robinson
2e38de349c
Don't clear the current and step gain values when updating a source
2014-05-21 16:32:24 -07:00
Chris Robinson
6ea050cc6c
Use the current buffer item for static sources too
2014-05-21 15:37:22 -07:00
Chris Robinson
4b433c900e
Copy samples if needed in the 'copy' resampler
2014-05-21 15:24:40 -07:00
Chris Robinson
dd2e6b7902
Properly process all samples with a bandpass filter
2014-05-21 14:59:21 -07:00
Chris Robinson
e650db98f7
Use the correct input for HRTF mixing
2014-05-21 14:48:46 -07:00
Chris Robinson
4a8d38c19a
Update the active source's direct and send properties after each mix
2014-05-21 14:47:25 -07:00
Chris Robinson
f313ce2a96
Add some asserts to verify block alignment for conversion
2014-05-20 09:16:54 -07:00
Chris Robinson
cd983245f1
Return a sample pointer from resamplers
...
Both resampling and filtering now avoid copying samples when they no-op.
2014-05-19 05:46:01 -07:00
Chris Robinson
8e04a8a022
Put per-channel filter properties together
2014-05-19 02:24:31 -07:00
Chris Robinson
7b782f6afa
Return a sample pointer from DoFilters
...
This allows us to avoid copying samples when no filtering is needed. Doing the
same for resampling would require another temporary buffer in the device.
2014-05-19 01:54:52 -07:00
Chris Robinson
ef9dfe3772
Move an HRTF mixer parameter and shorten a couple variable names
2014-05-18 11:05:38 -07:00
Chris Robinson
9317ec59b9
Don't pass the SendParams to the wet-path mixer
2014-05-18 10:35:11 -07:00
Chris Robinson
c9083d04fa
Don't pass the DirectParams to the dry-path mixer
2014-05-18 10:24:07 -07:00
Chris Robinson
5a1abf6918
Use different parameters for HRTF mixers
2014-05-18 09:31:08 -07:00
Chris Robinson
29b5dae6aa
Pass some DirectParams as function parameters
2014-05-18 08:59:10 -07:00
Chris Robinson
bd2721dc7a
Use _mm_setr_ps instead of _mm_set_ps
...
Apparently _mm_set_ps loads in reverse order compared to _mm_load_ps, so
_mm_setr_ps should give what we really want.
2014-05-18 06:35:33 -07:00
Chris Robinson
a5631e05cc
Add a ALfilterState method to process multiple samples at once
2014-05-18 06:23:20 -07:00
Chris Robinson
cd53a4b74c
Reset filter properties when setting a null filter type
2014-05-17 08:05:49 -07:00
Chris Robinson
190ab90c0d
Support the band-pass filter
2014-05-17 08:04:14 -07:00
Chris Robinson
82dd2d875e
Apply high-pass source filters as needed
2014-05-17 07:54:25 -07:00
Chris Robinson
3a26ebef0b
Implementing handling high-pass filter properties
2014-05-17 07:29:50 -07:00
Chris Robinson
0b5b39d5e6
Add a flag to specify when the low-pass filter needs to apply
2014-05-17 07:17:48 -07:00
Chris Robinson
70f1e54068
Use logarithmic adjustment for the gain in the autowah effect
2014-05-17 03:08:04 -07:00
Chris Robinson
1efddac3db
Document the different filter types, and combine some split lines
2014-05-17 02:09:43 -07:00
Chris Robinson
c5b25ba2a7
Rename freq_scale parameter to freq_mult
2014-05-17 01:32:55 -07:00
Chris Robinson
a11e1c0858
Ensure that LoopEnd > LoopStart
...
For the benefit of Clang's static analysis, which doesn't know that a
static source will always have a valid buffer and a buffer must have a
non-0 loop range.
2014-05-15 01:44:29 -07:00
Chris Robinson
fdcdda2ed3
Initialize a pointer to NULL instead of a string
2014-05-15 01:39:42 -07:00
Chris Robinson
028bd9767c
Don't bother stripping whitespace from comments
2014-05-15 01:37:01 -07:00
Chris Robinson
042003896f
Early-out when outN is 0
2014-05-15 01:32:32 -07:00
Chris Robinson
6dcd4fec7d
Remove some unnecessary casts
2014-05-15 01:21:22 -07:00
Chris Robinson
ef1b34dcd2
Initialize some variables when declaring them
2014-05-15 01:14:31 -07:00
Chris Robinson
f0797e27f3
Initialize newformat to AL_NONE instead of a valid format
2014-05-15 01:11:38 -07:00
Chris Robinson
16d3316f70
Use an enum for the chorus and flanger waveforms
2014-05-14 23:51:24 -07:00
Chris Robinson
a6974a6c83
Don't try to read the internal capture buffer into itself
2014-05-14 21:20:28 -07:00
Chris Robinson
a1fbb434e8
Remove a dead assignment
2014-05-14 05:27:16 -07:00
Chris Robinson
debd5346fb
Add a couple asserts to ensure a proper buffer
...
It should not be possible for a playing or paused source to not have a
valid buffer, but Clang's static analyzer doesn't know that. Hopefully
an assert will convince it.
2014-05-14 03:40:01 -07:00
Chris Robinson
f311f74001
Avoid freeing an in-use capture buffer
...
When stopping, ALSA may capture into its own storage buffer. Do not free
the storage buffer if it first reads from it.
2014-05-14 03:22:42 -07:00
Chris Robinson
1d2504d12e
Make RefCount a non-integer type
...
It should only be accessed through the appropriate functions to ensure proper
atomicity.
2014-05-14 02:47:07 -07:00
Chris Robinson
4454ae25c7
Add HF Reference as a filter property
2014-05-14 01:24:18 -07:00
Chris Robinson
3582a44dff
Make LOWPASSFREQREF a float value
2014-05-11 10:09:52 -07:00
Chris Robinson
343200d229
Store the filter reference frequency in the source
2014-05-11 10:07:17 -07:00
Chris Robinson
58235bec17
Update the source send target gains properly
2014-05-11 09:45:07 -07:00
Chris Robinson
b89cc3417b
Avoid locking the mixer when unqueueing buffers
2014-05-11 03:52:22 -07:00
Chris Robinson
9f8615c670
Avoid accessing the source's buffer queue head multiple times
2014-05-11 03:11:35 -07:00
Chris Robinson
851a917b03
Use a struct to store the source's direct gain/gainhf properties
2014-05-11 01:40:44 -07:00
Chris Robinson
e78acce652
Don't mix old- and new-style FIND_PACKAGE_HANDLE_STANDARD_ARGS calls
...
Some (all?) versions of cmake seem to get a bit confused when an old-style
FIND_PACKAGE_HANDLE_STANDARD_ARGS call fails, and the scripts attempt a new-
style call later on. It continues to think it's using old-style, acting as if
REQUIRED_VARS is the message and looks for a VERSION_VAR variable.
2014-05-10 09:34:16 -07:00
Chris Robinson
ddd1550a8b
Avoid locking the mixer while queueing buffers onto a source.
2014-05-10 08:55:28 -07:00
Chris Robinson
e9297d9744
Mark the buffer queue pointers volatile
2014-05-10 08:03:53 -07:00
Chris Robinson
3e28fb33a3
Add a missing pointer init
2014-05-10 07:57:35 -07:00
Chris Robinson
9e25ea8666
Update the output buffer pointer in the Write_* methods
2014-05-10 07:52:02 -07:00
Chris Robinson
67b4bd1031
Add a couple consts
2014-05-10 07:25:05 -07:00
Chris Robinson
9642bf637d
Explicit init the source queue and current_buffer pointers
2014-05-10 06:32:39 -07:00
Chris Robinson
a455704148
Use a RWLock to help protect the source's buffer queue
...
In some instances this allows to to remove the device/mixer lock, or reduce how
long it's held.
2014-05-10 05:07:13 -07:00
Chris Robinson
eebde08e65
Don't explicitly store the BuffersInQueue
2014-05-10 03:33:41 -07:00
Chris Robinson
c4383b65e2
Store the current buffer queue item, rather than played buffer count
2014-05-10 03:21:40 -07:00
Chris Robinson
eea46f268d
Avoid checking the previous buffer multiple times
2014-05-10 02:01:38 -07:00
Chris Robinson
bf97f58edb
Append the number of bits, not bytes, to types
...
Also use ALuint64SOFT from alext.h for uint64
2014-05-08 00:28:34 -07:00
Chris Robinson
8b7c71e20e
Always use unsigned int for RefCount
2014-05-07 23:49:06 -07:00
Chris Robinson
bd88e1743a
Build a common static lib for reusable code
2014-05-07 19:51:42 -07:00
Chris Robinson
a2bddb7b40
Move RWLock and UIntMap implementations to common
...
This should make the code in common completely self-reliant.
2014-05-07 19:16:49 -07:00
Chris Robinson
3e274c3a57
Make sure FILETIME and ULARGE_INTEGER sizes match
2014-05-07 16:12:34 -07:00
Chris Robinson
1c01e94237
Move the static_assert definition to its own header
2014-05-07 02:28:25 -07:00
Chris Robinson
d8d609b940
Use standard types for the RWLock
2014-05-07 01:03:06 -07:00
Chris Robinson
38b98de78e
Check for C99 _Bool support
2014-05-06 23:10:50 -07:00
Chris Robinson
1aff37114a
Move atomic method definitions to a separate common source
2014-05-06 19:07:40 -07:00
Chris Robinson
fa12855d19
Move threads.c to a separate source dir
...
This will eventually serve to build a static lib of common wrapper methods,
such as threads, mutexes, atomics, etc.
2014-05-06 18:57:42 -07:00
Chris Robinson
0ea979a262
Move some headers to include/
...
Note, these are not installed. Only headers in include/AL/ are installed.
2014-05-06 18:29:53 -07:00
Chris Robinson
1a76a3238c
Use gettimeofday if clock_gettime isn't available
2014-05-06 17:46:17 -07:00
Chris Robinson
cbb94405db
Test _Alignas with 16 instead of 4
2014-05-05 14:21:09 -07:00
Chris Robinson
2edd047178
C11's alignas is also sufficient for SSE aligning
2014-05-05 13:53:07 -07:00
Chris Robinson
2bc16e9947
Add a cast to silence an MSVC warning
2014-05-04 11:50:58 -07:00
Chris Robinson
a48d235ef4
Trace skipped info sub-chunks
2014-05-04 01:19:09 -07:00
Chris Robinson
bca7c682f1
Use ALuint for the amount to skip
2014-05-04 01:00:21 -07:00
Chris Robinson
2a7f3c015e
Don't use the next power of two when duplicating config values
...
Speed isn't terribly important here, and reallocs should be extremely rare.
2014-05-04 00:37:25 -07:00
Chris Robinson
db90985f6a
Remove unnecessary ifdefs
...
mixer_sse.c and mixer_neon.c are only compiled when the relavent headers are
found anyway.
2014-05-04 00:19:55 -07:00
Chris Robinson
a2bb4c3f13
Always use the current gains when mixing
...
The current gain gets explicitly set to the target when the stepping is
finished to ensure the target is still used. This way, however, will allow for
asynchronously 'canceling' a fade by setting the counter to 0.
2014-05-04 00:13:19 -07:00
Chris Robinson
d066c7b124
Better pack HRTF mixing properties
2014-05-03 18:59:26 -07:00
Chris Robinson
b2e533fbfc
Clamp the current and target gain lower bound to epsilon
...
Should give a bit more wiggle room for the gain stepping to get lower than the
silence threshold.
2014-05-03 17:51:06 -07:00
Chris Robinson
34e96aef60
Make sure all gain steps are applied with the SSE and Neon mixers
2014-05-03 17:24:46 -07:00
Chris Robinson
2660ecfd4a
Revert e9aee578a7
...
The vector iterator needs to be the start of the Data array even if the vector
itself is NULL, or else insertion can have a negative insert position.
2014-05-02 11:48:55 -07:00
Chris Robinson
3bdb3f9db7
Iniitialize some mmdevapi backend fields in the constructor
2014-05-02 10:47:31 -07:00
Chris Robinson
d90f684f16
Use a backup in case pthread_mutex_timedlock isn't available
2014-05-01 14:15:31 -07:00
Chris Robinson
804b08e0ca
Use ALboolean for al_string_empty's return type
2014-04-30 12:53:52 -07:00
Chris Robinson
f150676873
Add a helper VECTOR_FOR_EACH macro
2014-04-30 12:30:02 -07:00
Chris Robinson
f9d70aa9ef
Use _mm_set_ps() to set an __m128 instead of {}
2014-04-26 06:31:31 -07:00
Chris Robinson
149df6d4db
Convert the mmdevapi backend to the new backend API
2014-04-25 09:26:53 -07:00
Chris Robinson
28e9f0db8c
Use a vector for mmdevapi device lists
2014-04-24 04:02:05 -07:00
Chris Robinson
83970369e0
More device list cleanup cleanup
2014-04-24 02:33:54 -07:00
Chris Robinson
7dd4a2348f
Use a helper function to clear PulseAudio device lists
2014-04-24 01:38:24 -07:00
Chris Robinson
a4cf378af8
Use a helper method to clear winmm device lists
2014-04-24 01:25:26 -07:00
Chris Robinson
9af8e10c20
Avoid using superfluous LP* types
2014-04-23 10:08:33 -07:00
Chris Robinson
0b527621a5
Use a RefCount for counting committed winmm buffers
2014-04-23 05:08:17 -07:00
Chris Robinson
8fd224f841
Avoid forward-declaring backend vtables
2014-04-23 03:52:05 -07:00
Chris Robinson
420599f8e3
Avoid using assert() in createBackend
2014-04-23 02:18:07 -07:00
Chris Robinson
7fed6383c0
Include FindALSA.cmake
...
Older versions of CMake don't seem to have it.
2014-04-23 02:12:34 -07:00
Chris Robinson
ada4868d86
Properly handle HAVE_DYNLOAD in the dsound backend
2014-04-22 08:55:17 -07:00
Chris Robinson
a4fbe158d4
Avoid some superfluous types
2014-04-22 08:44:06 -07:00
Chris Robinson
84afe4fb40
Simplify the cmake backend handling a bit
2014-04-22 07:58:25 -07:00
Chris Robinson
d5ac11c87f
Fix adding backend include directories
2014-04-22 07:21:19 -07:00
Chris Robinson
f6ad3ef221
Use a helper to return mmdevapi message thread responses
2014-04-22 06:13:49 -07:00
Chris Robinson
e9aee578a7
Avoid dereferencing a NULL pointer
2014-04-21 23:10:09 -07:00
Chris Robinson
0d2521e30e
Use a vector to store the ALSA device lists
2014-04-21 23:01:50 -07:00
Chris Robinson
df3c54a4bf
Use al_string for ALSA's device map
2014-04-21 20:53:27 -07:00
Chris Robinson
ad71565e45
Trace the device name being opened in ALSA and PulseAudio
2014-04-21 20:26:29 -07:00
Chris Robinson
ca1008571e
Use the althrd methods in winmm
2014-04-21 09:35:17 -07:00
Chris Robinson
d856183c4b
Only declare backend options when the backend is available
2014-04-20 22:42:53 -07:00
Chris Robinson
dbe0897c7f
Use the stored format block align instead of calculating it
2014-04-20 22:29:54 -07:00
Chris Robinson
5215b9cad2
Use a vector for the PulseAudio DevMaps
2014-04-20 06:29:36 -07:00
Chris Robinson
b435a8e01b
Use an al_string in the PulseAudio backend instead of char*
2014-04-20 05:55:52 -07:00
Chris Robinson
32a2f95885
Convert the DSound backend to the new API
2014-04-19 22:54:21 -07:00
Chris Robinson
bb969c3ccc
Add a SZFMT macro for a size_t string formatter
2014-04-19 09:42:03 -07:00
Chris Robinson
043e25b602
Don't link with libwinmm unless WinMM is enabled
...
We don't use timeGetTime for timing anymore, so winmm only needs to be linked
when the winmm backend is enabled.
2014-04-19 08:50:41 -07:00
Chris Robinson
96c559fbef
Use a find module to look for DirectSound
2014-04-19 07:49:27 -07:00
Chris Robinson
887763e41c
Use find cmake modules for more backends
2014-04-19 06:35:14 -07:00
Chris Robinson
1d266aa834
Add a GCC-specific STATIC_UPCAST macro that checks the object type
...
The check is compile time, and is functionally identical to the old/alternate
version.
2014-04-19 03:11:23 -07:00
Chris Robinson
59fc9aac0e
Use C11 alignas when available
2014-04-19 02:11:04 -07:00
Chris Robinson
8badd3740e
Dont bother trying _alloca
...
We prefer C99 variable-length arrays, and other systems (including MSVC9) don't
have an issue with alloca.
2014-04-19 01:10:12 -07:00
Chris Robinson
1d69ec9ce1
Set -D_GNU_SOURCE=1 -D_POSIX_C_SOURCE=200809L -D_XOPEN_SOURCE=700 earlier
2014-04-19 01:02:36 -07:00
Chris Robinson
9b685bace5
Use FindALSA.cmake to look for ALSA
...
Also, only provide the ALSA_BACKEND_ALSA option if it's available
2014-04-19 00:52:19 -07:00
Chris Robinson
2eda15fc77
Only define SSE, Neon, and FluidSynth options if they're available
2014-04-18 23:20:27 -07:00
Chris Robinson
c041a99f72
Simplify some error checking
2014-04-18 06:54:18 -07:00
Chris Robinson
b8d56190d1
Check pthread_mutex_unlock for errors
2014-04-18 06:39:46 -07:00
Chris Robinson
cb3315f9d3
Remove unnecessary includes
2014-04-18 02:35:16 -07:00
Chris Robinson
b979a8005f
Alter the al_fopen macro to not directly take parameters
2014-04-18 02:25:07 -07:00
Chris Robinson
1353cb0d88
Rename AL_ONCE_INIT to AL_ONCE_FLAG_INIT
2014-04-18 02:21:58 -07:00
Chris Robinson
579e7c10c2
Check TlsSetValue for error
2014-04-17 22:57:16 -07:00
Chris Robinson
6c8bf9ec42
Rename althread_once to be more C11-like
2014-04-17 21:39:51 -07:00
Chris Robinson
20e5ec18e1
Handle the lib name as UTF-8
2014-04-17 21:17:48 -07:00
Chris Robinson
5abefaed0a
Use the thread ID for althrd_t on Windows
2014-04-17 21:01:54 -07:00
Chris Robinson
36df67f546
Rename SetThreadName to althrd_setname
2014-04-17 20:41:32 -07:00
Chris Robinson
528c8c5e77
Check explicitly for pthread_mutexattr_setkind_np before use
2014-04-17 19:01:12 -07:00
Chris Robinson
8a00c24012
Fix SetThreadName for 64-bit MSVC builds
2014-04-17 09:22:57 -07:00
Chris Robinson
4b5e8b8c40
Don't inline al_nssleep
2014-04-17 09:14:03 -07:00
Chris Robinson
d1f1a1d056
Make and use a C11-like altimespec_get wrapper function
2014-04-17 09:03:57 -07:00
Chris Robinson
47f5c436c8
Fix a signed-unsigned comparison warning and clarify a comment
2014-04-17 01:24:03 -07:00
Chris Robinson
fbb4cbbe01
Keep TlsDestructors within threads.c
...
This basically makes the threads implementation self-contained in threads.c and
threads.h, except for the UIntMap/RWLock implementations.
2014-04-17 01:09:25 -07:00
Chris Robinson
e5d39a5f4c
Don't use DllMain to call altss destructors
2014-04-17 00:56:02 -07:00
Chris Robinson
c3b1c31d9b
Rename althread_key_ wrappers to altss_ and move it to threads.h/c
2014-04-17 00:11:12 -07:00
Chris Robinson
8cc3d05949
Fix some almtx_ return values
2014-04-16 08:21:45 -07:00
Chris Robinson
2149ccd985
Remove almtx_normal and almtx_errorcheck
2014-04-16 08:00:54 -07:00
Chris Robinson
c6dd479229
Make sure the duration given to althrd_sleep is valid
2014-04-16 07:52:43 -07:00
Chris Robinson
8a51995cfa
Bump _WIN32_WINNT to 0x0502 (XP SP2) for GetThreadId
2014-04-16 07:30:18 -07:00
Chris Robinson
959d75edc8
Fix althrd_sleep return value
2014-04-16 07:18:28 -07:00
Chris Robinson
b020dd13fd
Avoid using a Sleep() wrapper
2014-04-16 06:59:44 -07:00
Chris Robinson
184cf30cf7
Use althrd_yield instead of alsched_yield
2014-04-16 06:18:24 -07:00
Chris Robinson
d124aee4d7
Remove the old thread wrappers for the new ones
2014-04-16 06:11:40 -07:00
Chris Robinson
505ef82246
Move the threads and mutex wrappers to threads.c
2014-04-16 05:40:40 -07:00
Chris Robinson
e8517d8600
Fix Windows' almtx_timedlock
2014-04-16 05:32:55 -07:00
Chris Robinson
18ab9cbbdd
Implement a C11-like thread wrapper and use it in mmdevapi and pulseaudio
2014-04-16 05:19:34 -07:00
Chris Robinson
29cb5058c0
Use a C11-like mutex wrapper instead of CRITICAL_SECTIONs
2014-04-16 01:39:11 -07:00
Chris Robinson
9c70ca9da6
Avoid memory leak if preset ID lookup fails
2014-04-14 01:33:31 -07:00
Chris Robinson
7bc08bb08c
Ensure VECTOR_ITER_BEGIN gives a pointer-to-type instead of an array-of-type
2014-04-14 00:58:45 -07:00
Chris Robinson
e0d24f9da4
Use a helper to detect a path slash on Windows
2014-04-13 21:44:13 -07:00
Chris Robinson
e615ea3cf9
Use VECTOR_INSERT to copy and append strings
2014-04-13 20:54:12 -07:00
Chris Robinson
219a0e6352
Add a GCC-specific VECTOR_INSERT
...
This version is capable of doing a compile-time type checks, to ensure the
objects being inserted are compatible with the vector data type. It should
otherwise be functionally identical.
2014-04-13 20:26:04 -07:00
Chris Robinson
0ef87227c1
Pass in the vector insertion point as a pointer
2014-04-13 18:42:41 -07:00
Chris Robinson
cce9609b9e
Avoid referencing the start iterator twice for vector insertion
2014-04-13 17:06:18 -07:00
Chris Robinson
e76bc53d37
Insert all new effect slots into the active effect slots at once
2014-04-10 20:49:01 -07:00
Chris Robinson
90ae4b7c0f
Add a VECTOR_INSERT method to insert a range of elements at once
2014-04-09 22:50:28 -07:00
Chris Robinson
023981acb9
Fix a NULL deref when cloning a 0-sized vector
2014-04-09 20:14:45 -07:00
Chris Robinson
1290f37750
Silence an MSVC warning about -1u
2014-04-07 13:55:22 -07:00
Chris Robinson
add3013234
Fix the default XDG_DATA_DIRS paths
2014-04-07 13:24:51 -07:00
Chris Robinson
4f1104125b
Use an al_string vector for winmm device names
...
Also now gets wchar device names, to properly convert to UTF-8
2014-04-07 12:43:19 -07:00
Chris Robinson
c6821e5dd1
Use C11's static_assert when available
2014-04-07 11:48:28 -07:00
Chris Robinson
f1a4b95b8c
Use FIND_LIBRARY to look for the CoreAudio framework
2014-04-05 17:43:35 -07:00
Chris Robinson
5e0fc84f49
Make HRTF stepping values per-channel
2014-04-05 10:24:13 -07:00
Chris Robinson
569374da2c
Properly compare al_strings
2014-04-03 13:46:09 -07:00
Chris Robinson
482fb37b68
Recognize NULL as an empty vector/string
2014-04-03 11:13:12 -07:00
Chris Robinson
570eb4e1a7
Don't pass the vector's capacity as a parameter to vector_reserve
2014-03-31 06:13:56 -07:00
Chris Robinson
48b472abb7
Use vectors for the dsound device lists
2014-03-31 02:48:01 -07:00
Chris Robinson
7b93e10f7a
Use an al_string for the device name
2014-03-28 22:11:34 -07:00
Chris Robinson
7570195b09
strlen returns size_t
2014-03-28 08:19:45 -07:00
Chris Robinson
d997be67fd
Use al_string to handle mmdevapi and dsound device names
2014-03-28 07:59:47 -07:00
Chris Robinson
af8fda8a4a
Add an al_string type and use it for the device lists
2014-03-28 05:44:19 -07:00
Chris Robinson
2ca673cca2
Properly handle special folder names with extended characters
2014-03-28 01:21:05 -07:00
Chris Robinson
20886059fd
Wrap fopen calls under Windows
...
The idea is that all filenames we deal with are encoded as UTF-8, but the
Windows functions that take a char string interpret it using the ANSI codepage.
So instead, we convert the UTF-8 string to a wchar string, and then use the
wchar functions for proper extended character filename support.
2014-03-28 00:37:42 -07:00
Chris Robinson
18620ab5e0
Check for ftw and _wfindfirst
2014-03-27 22:21:37 -07:00
Chris Robinson
d11d061b2c
Don't have VECTOR_INIT "return" anything
2014-03-27 17:21:23 -07:00
Chris Robinson
4f3e71e5b7
Reactivate the mmdevapi audio client and set the event handle on reset
2014-03-27 17:17:35 -07:00
Chris Robinson
045959e9c0
Use C99 VLA instead of alloca when available
2014-03-25 18:16:03 -07:00
Chris Robinson
03fd2b8266
Remove setState from the MidiSynth vtable
2014-03-23 18:34:49 -07:00
Chris Robinson
de5c54db09
Remove an unused method
2014-03-23 17:47:58 -07:00
Chris Robinson
cbb82647fb
Remove an unnecessary conditional
2014-03-23 17:44:26 -07:00
Chris Robinson
e2cb41dc61
Remove the last bits of the predictive sample processing
2014-03-23 17:33:57 -07:00
Chris Robinson
72986882f5
Remove the click removal buffers for auxiliary effect slots
2014-03-23 16:28:55 -07:00
Chris Robinson
a25260ea8a
Identity gain step is 1, not 0
2014-03-23 16:13:46 -07:00
Chris Robinson
f5e10b9945
Fix Neon gain step loops
2014-03-23 16:13:13 -07:00
Chris Robinson
52deb557d5
Add gain stepping to the send mixers
2014-03-23 16:11:21 -07:00
Chris Robinson
83038c0dab
Add some integer casts, and a range check
2014-03-23 15:22:37 -07:00
Chris Robinson
55f851093f
Remove the now-unneeded click removal buffers for the device
...
They are still there for auxiliary sends. However, they should go away soon
enough too, and then we won't have to mess around with calculating extra
"predictive" samples in the mixer.
2014-03-23 07:31:33 -07:00
Chris Robinson
92433532fe
Don't feed the HRTF mix to the click removal and pending click buffers
...
The coefficients (which control the volume and panning) already use stepping to
non-abruptly fade the mix.
2014-03-23 07:18:49 -07:00
Chris Robinson
81e049bd47
Step mixing gains per-sample for non-HRTF mixing
...
This fades the dry mixing gains using a logarithmic curve, which should produce
a smoother transition than a linear one. It functions similarly to a linear
fade except that
step = (target - current) / numsteps;
...
gain += step;
becomes
step = powf(target / current, 1.0f / numsteps);
...
gain *= step;
where 'target' and 'current' are clamped to a lower bound that is greater than
0 (which makes no sense on a logarithmic scale).
Consequently, the non-HRTF direct mixers do not do not feed into the click
removal and pending click buffers, as this per-sample fading would do an
adequate job of stopping clicks and pops caused by extreme gain changes. These
buffers should be removed shortly.
2014-03-23 06:57:00 -07:00
Chris Robinson
0ce0a88fd6
Move the step counter and moving flag to DirectParams
2014-03-23 03:03:03 -07:00
Chris Robinson
b0d511a860
Store the HrtfState directly in the DirectParams
2014-03-23 02:45:50 -07:00
Chris Robinson
cc599333a8
Don't try to use __restrict as a replacement for restrict
...
The compiler it's intended for, MSVC, can't use it anyway because of problems
it causes with __declspec(restrict).
2014-03-23 01:35:15 -07:00
Chris Robinson
9959972c7e
Add a stub 'soft' MIDI synth handler
...
Eventually this one will be used to handle MIDI internally, using our own
mixers and resamplers.
2014-03-22 21:53:00 -07:00
Chris Robinson
842aeb888b
Move some HRTF and mixer structs to alu.h
2014-03-22 02:39:57 -07:00
Chris Robinson
22f6eb18a2
Use a void* for the MidiSynth Delete method param
2014-03-22 01:49:03 -07:00
Chris Robinson
d8bfd12d31
Use a void* for the backend Delete method param
2014-03-22 00:28:55 -07:00
Chris Robinson
0a030c2bd9
Use a void* for the effect state Delete method param
2014-03-21 23:56:18 -07:00
Chris Robinson
f5ce73646c
Avoid a size_t-to-ALuint conversion warning
2014-03-21 17:29:20 -07:00
Chris Robinson
8c33b4d742
Increase the vector reserve as needed when pushing in new items
2014-03-21 16:35:38 -07:00
Chris Robinson
983fa4630a
Rename the vector's Max field to Capacity
2014-03-21 14:03:26 -07:00
Chris Robinson
40a0692a1c
Use vectors for the GenModList
2014-03-21 02:41:46 -07:00
Chris Robinson
ff63188cc2
Add a generic vector interface and use it for the active effect slots
2014-03-21 01:23:01 -07:00
Chris Robinson
e6e3937fa9
Use flexible array members to pad the device and context structs
...
This helps avoid the convoluted math otherwise required to ensure the default
slot and listener, respectively, are aligned.
2014-03-20 14:49:46 -07:00
Chris Robinson
168149ce9d
Keep track of the mix count
...
The purpose of this is to provide a safe way to be able to "swap" resources
used by the mixer from other threads without the need to block the mixer, as
well as a way to track when mixes have occurred. The idea is two-fold:
It provides a way to safely swap resources. If the mixer were to (atomically)
get a reference to an object to access it from, another thread would be able
allocate and prepare a new object then swap the reference to it with the stored
one. The other thread would then be able to wait until (count&1) is clear,
indicating the mixer is not running, before safely freeing the old object for
the mixer to use the new one.
It also provides a way to tell if the mixer has run. With this, a thread would
be able to read multiple values, which could be altered by the mixer, without
requiring a mixer lock. Comparing the before and after counts for inequality
would signify if the mixer has (started to) run, indicating the values may be
out of sync and should try getting them again. Of course, it will still need
something like a RWLock to ensure another (non-mixer) thread doesn't try to
write to the values at the same time.
Note that because of the possibility of overflow, the counter is not reliable
as an absolute count.
2014-03-19 19:00:54 -07:00
Chris Robinson
0c5cbafcd8
Use a union to combine HRTF and non-HRTF mixer params
2014-03-19 17:55:09 -07:00
Chris Robinson
213e3ba4af
Select the mixer when setting the mixer-specific parameters
2014-03-19 16:10:09 -07:00
Chris Robinson
6ee54fb1f3
Store some source mixing parameters in the active source struct
2014-03-19 13:14:11 -07:00
Chris Robinson
d6f7aac1bb
Use a separate struct for tracking active sources
2014-03-18 19:56:25 -07:00
Chris Robinson
71b177918d
Add another directory to .gitignore
2014-03-17 15:20:32 -07:00
Chris Robinson
be2aeeb2fb
Remove some unneeded code and unnecessary macros in the OpenSL backend
2014-03-17 15:17:56 -07:00
Chris Robinson
dc74473025
Store the old-style backend funcs in the wrapper
2014-03-17 10:54:27 -07:00
Chris Robinson
d346038102
Don't define HAVE_DYNLOAD with the IDE parser
2014-03-17 09:46:07 -07:00
Chris Robinson
cf066fd306
Don't assume the default mmdevapi device is in the collection
2014-03-17 09:40:56 -07:00
Chris Robinson
bb787ba8ee
Avoid GCC's macro arg concat extension with IDE parsing
2014-03-17 09:16:33 -07:00
Chris Robinson
308d87b12a
Return the original value from CompExchange*
2014-03-09 03:49:40 -07:00
Chris Robinson
372f3178f8
Remove the Apple-specific atomic function implementations.
...
I'm not sure if they're even used, but they were rather ugly and are set to get
even uglier since they don't follow normal conventions (missing exchange, and
cas not returning the original value).
2014-03-09 03:28:00 -07:00
Chris Robinson
74f2864c74
Update config file comments
2014-03-09 00:32:57 -08:00
Chris Robinson
cde2f825d5
Use the correct array size
2014-03-08 22:48:36 -08:00
Chris Robinson
14a04020ff
Improve int-to-float and uint-to-float conversions
2014-03-08 22:34:07 -08:00
Chris Robinson
2e279684d7
Only require MSADPCM block alignment to be a multiple of 2
2014-03-06 21:42:03 -08:00
Chris Robinson
7657fbb296
Only sign-expand the nibble when needed
2014-03-06 19:14:19 -08:00
Chris Robinson
143f786d1a
Move the sample conversion routines to a separate file
2014-03-05 16:38:02 -08:00
Chris Robinson
bf4ddfef6d
Implement a simplistic MSADPCM encoder
...
It's not particularly good, but it's better than silence.
2014-03-05 07:27:22 -08:00
Chris Robinson
61569e09ed
Allocate enough temp space for the ADPCM decoders and encoders
2014-03-05 06:18:55 -08:00
Chris Robinson
a4126b66d4
Use specialized methods for converting ALshort to IMA4 and MSADPCM
...
As before, to avoid unnecessary direct copies
2014-03-05 06:13:00 -08:00
Chris Robinson
f82f3f10ab
Use specialized methods for converting IMA4 and MSADPCM to ALshort
...
Since the decoder methods already convert to ALshort, there's no need to use a
temp buffer that's just going to copy directly to the destination.
2014-03-05 04:59:24 -08:00
Chris Robinson
15b68fe694
Use maxi to clamp an int to a lower-bound
2014-03-05 04:37:55 -08:00
Chris Robinson
fb1f9aad6e
Expand the sign bit on the initial MSADPCM delta value
2014-03-05 00:30:23 -08:00
Chris Robinson
a1c440bd09
Add an extension to support MSADPCM buffer formats
2014-03-04 22:44:30 -08:00
Chris Robinson
f3a87d72b2
Add an extension to alter the block alignment for buffer unpack/pack ops
...
This is for unpacking (reading, e.g. alBufferData) and packing (writing, e.g.
alGetBufferSamplesSOFT) operations. The alignments are specified in sample
frames, with 0 meaning the default (65 for IMA4, 1 otherwise). IMA4 alignment
must be a multiple of 8, plus 1 (e.g. alignment = n*8 + 1), otherwise an error
will occur during (un)packing. Chenging the block alignment does not affect
already-loaded sample data, only future unpack/pack operations... so for
example, this is perfectly valid:
// Load mono IMA4 data with a block alignment of 1024 bytes, or 2041 sample
// frames.
alBufferi(buffer, AL_UNPACK_BLOCK_ALIGNMENT_SOFT, 2041);
alBufferData(buffer, AL_FORMAT_MONO_IMA4, data, data_len, srate);
alBufferi(buffer, AL_UNPACK_BLOCK_ALIGNMENT_SOFT, 0);
2014-03-04 05:53:35 -08:00
Chris Robinson
b0a6b6427c
Parameterize the block alignment
2014-03-04 04:29:35 -08:00
Chris Robinson
a6eb38ea7f
Use alloca for temp space decoding/encoding IMA4 blocks
2014-03-03 20:02:15 -08:00
Chris Robinson
a2d9133ffc
Reduce explicit template declarations and ignore IMA4-to-IMA4 conversions
...
Since we never store IMA4 data in buffers, we should only ever convert from
(user input) or to (user output) IMA4. Once we allow user-specified pack/unpack
block alignment, this wouldn't be a simple memcpy anyway.
2014-03-03 17:25:46 -08:00
Chris Robinson
c442c93a93
Store the original frame size alignment in the buffer
2014-03-03 17:05:08 -08:00
Chris Robinson
ea8a85b19c
Move PATH_MAX fallback definitions to alMain.h
2014-02-27 18:17:20 -08:00
Chris Robinson
3867e3857d
Add back the missing PATH_MAX fallback
2014-02-27 02:55:43 -08:00
Chris Robinson
6e7c0e15eb
Use OpenDataFile to load soundfonts relative to data directories
2014-02-27 02:20:51 -08:00
Chris Robinson
fd3acf19fe
Add a note that absolute paths may be used for hrtf_tables
2014-02-27 01:54:45 -08:00
Chris Robinson
a8249c3469
Move OpenDataFile to helpers.c so other sources can use it
2014-02-27 01:49:23 -08:00
Chris Robinson
3145bac8c6
Add an explicit cast to make Windows happy
2014-02-26 17:45:18 -08:00
Chris Robinson
99d82690ef
Don't fallback to relative filename handling if opening as absolute fails
2014-02-26 17:38:19 -08:00
Chris Robinson
1b9a722601
Expand environment variables for all config option values when loading
2014-02-26 17:25:05 -08:00
Chris Robinson
89506435fa
Support environment variables in the hrtf_tables config value
2014-02-25 19:18:59 -08:00
Chris Robinson
0ddb9888fe
Fix a config option comment
2014-02-23 21:46:11 -08:00
Chris Robinson
9dd16f8b9c
Attempt to restore the Neon-enhanced ApplyCoeffsStep method
...
Unable to test, but it hopefully works.
2014-02-23 21:28:34 -08:00
Chris Robinson
9a4ded2491
Revert "Apply HRTF coefficient stepping separately"
...
This reverts commit 25b9c3d0c1 .
Conflicts:
Alc/mixer_neon.c
Unfortunately this also undoes the Neon-enhanced ApplyCoeffsStep method.
2014-02-23 21:17:09 -08:00
Chris Robinson
c68ce288d0
Move HRTF macros and function declarations to a separate header
2014-02-23 21:11:01 -08:00
Chris Robinson
5731534e8d
Move the default hrtf table to an external file
2014-02-23 21:02:11 -08:00
Chris Robinson
9f43de62ab
Add a return value to FindHrtfFormat
2014-02-23 20:14:07 -08:00
Chris Robinson
ef8002a832
Check the hrtf config option earlier
...
This is to make sure it tries to find an HRTF-compatible format before reseting
the device, just like when using ALC_HRTF_SOFT.
2014-02-23 20:00:52 -08:00
Chris Robinson
e6e3bdee83
Avoid checking the hrtf config option twice
2014-02-23 19:18:54 -08:00
Chris Robinson
0e51becd58
Search system-dependant data paths for relative hrtf table filenames
2014-02-23 17:58:34 -08:00
Chris Robinson
46b2115bfb
Avoid using a global static buffer for config loading
2014-02-23 14:07:09 -08:00
Chris Robinson
0626a44eb1
Fix indentation
2014-02-23 09:54:26 -08:00
Chris Robinson
29e0af5ef0
Fix a race condition in the mmdevapi message queue thread
2014-02-09 18:55:51 -08:00
Chris Robinson
09d1319e82
Add some extra traces to the mmdevapi backend
...
Trying to track down the cause of some reported errors.
2014-02-09 10:52:12 -08:00
Chris Robinson
ea0aea6508
Change the autowah to have a cutoff range of 20Hz to 20KHz
...
This is the same as allowed in the SF2 spec for its filter cutoff generator,
which can be used for a wah effect in MIDI. It makes sense to use a similar
range here.
2014-02-07 03:23:49 -08:00
Chris Robinson
6f711c32ba
Fix some types
2014-02-07 03:20:27 -08:00
Chris Robinson
926ecc2dbe
Slightly shorten a long line
2014-02-02 16:11:53 -08:00
Chris Robinson
7c4339c195
Rework MIDI clock timing
...
It's best to avoid using doubles in the mixer since the FPU's set to single-
precision mode. The new clock timing is similar to the device clock timing, and
should hopefully be less prone to drift caused by fp rounding errors.
2014-02-02 02:39:56 -08:00
Chris Robinson
755f161fc5
Use nanosecond resolution for MIDI
...
This makes the MIDI clock use the same resolution as the device clock and
source latency and the device clock.
2014-02-01 23:01:06 -08:00
Chris Robinson
7bfea9087e
Remove an unnecessary special-case for the click removal
2014-02-01 19:31:05 -08:00
Chris Robinson
11a7b3e8f8
Avoid duplicating code in alcGetIntegerv
2014-02-01 18:40:36 -08:00
Chris Robinson
112b0f166f
Add an alcGetInteger64vSOFT method and a way to get the device clock
2014-02-01 17:55:42 -08:00
Chris Robinson
69f3a7da6d
Keep track of a device clock time, based on the number of samples processed
2014-02-01 16:37:11 -08:00
Chris Robinson
9e2a8843a8
Properly fill the SF2 sample buffer on big endian
2014-02-01 14:33:57 -08:00
Chris Robinson
68a32a3486
Fix an infinite loop when loading SF2 samples on big endian machines
2014-02-01 14:29:47 -08:00
Chris Robinson
a4bc0a46e9
Implement dry and wet mixers for Neon
...
Code provided by Philippe Simons <simons.philippe@gmail.com >.
2014-01-26 01:34:39 -08:00
Chris Robinson
49baa9128d
bufferQueue's Clear method doesn't take any parameters
2014-01-19 17:26:51 -08:00
Chris Robinson
f193b539ce
Clear the OpenSL buffer queue when stopping
2014-01-19 02:45:51 -08:00
Chris Robinson
35fd4dcf77
Check and trace INFO properties when reading them
2014-01-19 02:44:55 -08:00
Chris Robinson
748be9a97d
Include sys/sysconf.h if available for sysconf()
2014-01-18 19:16:46 -08:00
Chris Robinson
1a90c7f498
Check for 0-sized sf2 structure arrays
2014-01-17 06:48:40 -08:00
Chris Robinson
be883131a7
Remove redundancy in a couple error messages
2014-01-17 06:33:23 -08:00
Chris Robinson
658d35a1b0
Put the version and irom storage into the Soundfont struct
2014-01-17 06:20:39 -08:00
Chris Robinson
d387deb3e8
Fix a couple warning messages to show the correct instrument ID
2014-01-17 06:10:29 -08:00
Chris Robinson
7206f5873c
Partially handle the irom sub-chunk
...
Reject soundfonts that have ROM sample types without a valid irom sub-chunk.
2014-01-17 06:03:53 -08:00
Chris Robinson
05e9c824d5
Better handle original key and overriding root key
2014-01-17 05:14:58 -08:00
Chris Robinson
65a5311449
Rename aftertouch to keypressure
2014-01-17 04:18:49 -08:00
Chris Robinson
d65279ac2a
Update MIDI config option texts
2014-01-17 01:24:18 -08:00
Chris Robinson
50c8d9181a
Add a config option to specify the extra MIDI volume scaling
...
The value specified is in decibels.
2014-01-17 00:58:47 -08:00
Chris Robinson
08ba5d9dba
Use a proper struct for envelope properties
2014-01-17 00:36:33 -08:00
Chris Robinson
e118ac93a0
Handle fontsound sample types using explicit enum values
...
Uses AL_MONO_SOFT, AL_RIGHT_SOFT, and AL_LEFT_SOFT. "Linked" samples types
aren't explicitly supported due to being under-defined in the SF2 spec, nor are
ROM samples currently.
2014-01-15 22:18:07 -08:00
Chris Robinson
9ebeae6228
Use ALfontsound_setPropi to set fontsound sample properties
...
And make sure the loop mode is properly translated for FluidSynth.
2014-01-15 21:17:46 -08:00
Chris Robinson
50b74629dd
Add a flag to specify the device being paused
...
Used to prevent UpdateDeviceParams from restarting the device, if a new context
is created while paused.
2014-01-15 16:44:12 -08:00
Chris Robinson
8d7559d9d0
Stop the device when updating parameters, don't close it
2014-01-15 16:30:23 -08:00
Chris Robinson
56899716d6
Add an extension to pause audio processing
2014-01-15 16:27:17 -08:00
Chris Robinson
443e6b73b2
Use the 64-bit clamp method when getting the MIDI clock time
2014-01-15 15:38:54 -08:00
Chris Robinson
5fdc3c093e
Don't use the same buffer segment for enqueueing in OpenSL
2014-01-15 15:27:38 -08:00
Chris Robinson
1739998045
Stop the OpenSL buffer queue when stopping the device
2014-01-15 15:14:25 -08:00
Chris Robinson
bdc5850120
Don't reset presets when loading/unloading soundfonts
2014-01-13 16:57:56 -08:00
Chris Robinson
24ffb5b464
Be more thorough when converting sf2 modulator properties
2014-01-13 16:50:12 -08:00
Chris Robinson
90fd92628d
Use FluidSynth enums when handling generators
2014-01-13 16:15:56 -08:00
Chris Robinson
0c80f62de7
Add a method to get soundfont samples
2014-01-13 00:20:14 -08:00
Chris Robinson
6f3dac6f58
Allow getting preset properties even when referenced
2014-01-12 23:57:44 -08:00
Chris Robinson
e252a100f7
Minor non-functional cleanup
2014-01-12 16:27:21 -08:00
Chris Robinson
a5bfc1e30b
Add a method to get the current MIDI state
2014-01-12 12:27:46 -08:00
Chris Robinson
9a57aca8d4
Add an option to make HRTFs with a custom head radius
2014-01-11 02:24:20 -08:00
Rupert Steel
2aa95db5b9
Fixed compile error in Visual Studio 2013 by not redefining symbols that are now defined in the VS2013 math.h file.
2014-01-09 10:49:31 -08:00
Chris Robinson
da2c9732da
Don't break with an override root key generator value of -1
...
An accidental hold-over from when it was using a switch.
2014-01-06 13:21:08 -08:00
Chris Robinson
cf66516a27
Load soundfont modulators into FluidSynth
2014-01-06 13:07:12 -08:00
Chris Robinson
4079ee2200
Add methods to get and set modulator properties on fontsounds
2014-01-05 17:21:34 -08:00
Chris Robinson
5f961a392e
Move some soundfont methods to ALsoundfont
2014-01-05 05:11:07 -08:00
Chris Robinson
540a99e71f
Allow "deleting" the default soundfont
...
The ID remains valid and the soundfont will be reloaded as needed, but this
provides a way for the application to clear up the soundfont memory.
2014-01-04 05:30:57 -08:00
Chris Robinson
bb54743425
Allow querying default soundfont properties
...
Any attempts to modify it or its held objects will result in an
AL_INVALID_OPERATION error.
2014-01-04 04:49:10 -08:00
Chris Robinson
86f250a3f5
Trace preset, instrument, and sample names with invalid key and velocity ranges
2014-01-04 04:34:32 -08:00
Chris Robinson
4834f56779
Don't create presets that don't have any usable sounds
2014-01-04 03:20:17 -08:00
Chris Robinson
2dd87946fd
Update some trace messages to be more useful
2014-01-03 23:19:52 -08:00
Chris Robinson
355b8db915
Don't allow min key/vel ranges to exceed max range
2014-01-03 23:19:14 -08:00
Chris Robinson
13066bbf87
Allow selecting the default soundfont using ID 0
2014-01-03 22:58:51 -08:00
Chris Robinson
42a67731c4
Add storage for a default soundfont object
2014-01-03 20:21:12 -08:00
Chris Robinson
3a31402b1e
Remove an unused method
2014-01-03 19:35:55 -08:00
Chris Robinson
d9846f3219
Move ALsoundfont methods to the right source file
2014-01-03 19:18:06 -08:00
Chris Robinson
e6e7e461c0
Avoid using alFontsoundiSOFT when loading a soundfont
...
This should now make the soundfont loader thread-safe.
2014-01-03 18:52:17 -08:00
Chris Robinson
5dc4ea15bb
Don't handle the list type in the RiffHdr struct
2014-01-03 18:09:51 -08:00
Chris Robinson
f790d0e91f
Use a uint map for modulators
2014-01-02 14:43:44 -08:00
Chris Robinson
49c17ad520
Mostly load into fontsound objects directly
...
This leaves only one unsafe alFontsoundiSOFT call.
2014-01-02 13:53:16 -08:00
Chris Robinson
fcf9e72202
Load presets directly into objects
2014-01-02 11:40:30 -08:00
Chris Robinson
5f85a1dcf0
Move some error macros to alError.h
2014-01-02 10:42:00 -08:00
Chris Robinson
01f547b93e
Move some preset alloc/dealloc code to separate functions
2014-01-02 10:39:21 -08:00
Chris Robinson
3ff33e2f79
Update the soundfont preset count after loading a soundfont
2014-01-02 09:09:57 -08:00
Chris Robinson
e74e3e2b23
Move alLoadSoundfontSOFT to alSoundfont.c
2014-01-02 09:06:28 -08:00
Chris Robinson
7d94e9c52f
Don't allow soundfonts with existing presets in alLoadSoundfontSOFT
2014-01-01 07:33:48 -08:00
Chris Robinson
0a5a08c0fb
Pass the ALsoundfont object to loadSf2, rather than its ID
2014-01-01 07:25:23 -08:00
Chris Robinson
e699ab8614
Force all FluidSynth sounds off when changing soundfonts
...
Selecting soundfonts should only happen when the MIDI engine is stopped or
reset. When stopped some notes may be left in a release phase, but we need to
ensure all fluid_sample_t objects are finished before unloading since the
soundfont (and associated sample memory) may be deleted at any time afterward.
2013-12-31 00:49:43 -08:00
Chris Robinson
6b2d3c3cfa
Remove some unused MIDI backend methods
2013-12-29 06:02:48 -08:00
Chris Robinson
396a2f1595
Don't destroy the fluid_sfont_t if any of its samples are still playing
...
FluidSynth apparently doesn't check for this itself before calling the free
callback.
2013-12-29 05:58:40 -08:00
Chris Robinson
7640c658ee
Remove explicit locking from alMidiSoundfontvSOFT.
...
The MIDI backend can lock as it needs.
2013-12-29 05:48:30 -08:00
Chris Robinson
37d183efc0
Update soundfont selection functions
...
A filename is no longer specified, and alMidiSoundfontsSOFT is renamed to
alMidiSoundfontvSOFT.
2013-12-29 05:44:18 -08:00
Chris Robinson
06dd9f9b8c
Lock the device while selecting soundfonts
2013-12-29 05:36:05 -08:00
Chris Robinson
4e73b95fc0
Add the last remaining "real-time" properties
2013-12-29 05:09:50 -08:00
Chris Robinson
4c35f7c632
Add chorus and reverb send properties
2013-12-29 04:36:01 -08:00
Chris Robinson
15aa12847d
Check for negative soundfont indices getting passed to the loader
2013-12-29 04:25:28 -08:00
Chris Robinson
699d84491f
Add pan and attenuation properties
2013-12-29 04:24:32 -08:00
Chris Robinson
d030e07879
Add tuning properties
2013-12-29 03:43:00 -08:00
Chris Robinson
1d41122372
Add filter properties
2013-12-29 03:18:31 -08:00
Chris Robinson
deecbbc55d
Add modulation envelope properties
2013-12-29 02:40:12 -08:00
Chris Robinson
d9aedc1416
Add a few more pitch properties
2013-12-29 02:25:40 -08:00
Chris Robinson
fc928bb75a
Add volume envelope properties
2013-12-29 02:14:10 -08:00
Chris Robinson
4659669a74
Fix copy-paste errors in error messages
2013-12-29 00:56:01 -08:00
Chris Robinson
5aa274999c
Accumulate with default modulator amounts
2013-12-29 00:52:03 -08:00
Chris Robinson
09665715ed
Add support for the fontsound loop mode
2013-12-29 00:34:58 -08:00
Chris Robinson
0d7996409e
Ensure the soundfont version is 2.x
2013-12-28 10:34:26 -08:00
Chris Robinson
fe55cd6de8
Add alLoadSoundfontSOFT to load a soundfont via callback
...
Some hefty caveats:
This function is not thread-safe. In particular, the current context affecting
the thread must not be changed, and the provided soundfont must not be
altered while the function is executing. Ideally, this will be fixed.
Error handling is poor. Some RIFF structure errors may not be caught (e.g. sub-
chunks with sizes greater than the parent chunk allows for), and generated AL
errors are ignored, possibly leading to resource leaks in certain situations.
These should be fixed in time.
There is minimal error checking on the provided soundfont ID. It does not
ensure a valid ID has been provided, nor does it ensure the provided soundfont
can be modified. These short-comings should be fixed eventually.
Proper cleanup is the responsibility of the caller. The caller must get the
preset objects from the soundfont before deleting it, and the fontsound objects
from each preset before deleting them, to make sure all resources are properly
deleted.
2013-12-28 09:58:55 -08:00
Chris Robinson
7156f4439c
Allow loading multiple soundfonts with FluidSynth
2013-12-27 06:41:57 -08:00
Chris Robinson
0678e3fc2b
Create a custom fluid_sfloader_t loader
...
This allows us to load and use soundfont objects the app specifies (the first
one, at least), rather than having to load from a file. It doesn't sound that
good since modulators and most generators aren't yet available, but this will
steadily improve.
2013-12-27 06:23:07 -08:00
Chris Robinson
f85d733f9d
Add a method to set and get soundfonts
...
The main purpose of this is to select soundfonts for playback, eventually,
instead of the existing method that takes a filename.
2013-12-27 02:59:50 -08:00
Chris Robinson
2b772a5607
Allow specifying all 4 sample types
...
ROM-based types will be specified with a separate property
2013-12-27 01:08:48 -08:00
Chris Robinson
307ac564ca
Allow specifying some fontsound sample properties
2013-12-26 23:37:22 -08:00
Chris Robinson
cc30c5754f
Remove the generator list
2013-12-26 22:10:41 -08:00
Chris Robinson
d5f687b2fa
Allow specifying key and velocity ranges on fontsounds
2013-12-26 21:45:16 -08:00
Chris Robinson
35f9e35aa3
Add methods to set and get sounds on a preset
2013-12-25 22:39:38 -08:00
Chris Robinson
b5ae424dbd
Store a list of sounds in the preset
2013-12-25 19:50:46 -08:00
Chris Robinson
677b864565
Remove the zone, sample, and instrument object types
2013-12-25 19:35:43 -08:00
Chris Robinson
b650ecbc23
Add methods to add generators and modulators to fontsounds
2013-12-25 19:23:34 -08:00
Chris Robinson
94ddc5cb18
Add a new fontsound object type
...
This is basically a combined preset and intrument zone with sample header.
2013-12-25 19:13:59 -08:00
Chris Robinson
cb3f82a4bf
Do not allow deleting preset or instrument ID 0
2013-12-24 21:23:51 -08:00
Chris Robinson
f7556b827a
Allow querying the soundfont sample length and format type
2013-12-24 02:55:11 -08:00
Chris Robinson
b0878fe609
Do not accept preset or instrument ID 0 as valid
2013-12-23 23:42:21 -08:00
Chris Robinson
c911ca89a3
Unlock the soundfont earlier after switching preset lists
2013-12-23 23:31:47 -08:00
Chris Robinson
a43b296c60
Add methods to get and set presets on a soundfont
2013-12-23 04:07:53 -08:00
Chris Robinson
d7de86966d
Add methods to get and set a preset object's preset and bank numbers
2013-12-23 03:23:42 -08:00
Chris Robinson
0df5eb90ea
Make sure key and velocity ranges are the first two generators
2013-12-21 15:28:46 -08:00
Chris Robinson
ede3c20880
Free thunk entry in the object destructor
2013-12-20 01:04:38 -08:00
Chris Robinson
5dc3f3626d
Better protect against improper alSoundfontSamplesSOFT calls
2013-12-20 00:50:43 -08:00
Chris Robinson
d596cf9cf3
Use a different autowah filter range
...
Still just guesses, but this seems to avoid math problems with low peak gains.
2013-12-20 00:16:23 -08:00
Chris Robinson
1bd828603e
Add functions to set a soundfont's sample data
2013-12-19 04:19:03 -08:00
Chris Robinson
03a6bf22a5
Fix compiling without FluidSynth
2013-12-19 02:12:01 -08:00
Chris Robinson
99933fac49
Allow creating instrument objects
2013-12-19 00:57:07 -08:00
Chris Robinson
57491bf14c
Call the right delete method when generating presets fails
2013-12-19 00:56:12 -08:00
Chris Robinson
666acb314b
Rename some ALsoundfont fields
2013-12-19 00:37:56 -08:00
Chris Robinson
4288d3cd01
Move the soundfont and preset extension functions to separate sources
2013-12-19 00:27:11 -08:00
Chris Robinson
1b5c3495c9
Add methods to create and destroy presets
2013-12-19 00:09:55 -08:00
Chris Robinson
1e536cf7ca
Properly initialize and cleanup the soundfont map
2013-12-18 23:21:59 -08:00
Chris Robinson
73fc4592ab
Make alIsSoundfontSOFT check soundfont IDs
2013-12-18 23:12:44 -08:00
Chris Robinson
8083fb5be7
Add a new ALsoundfont object type
...
Includes a basic hierarchy for presets, instruments, samples, zones,
generators, and modulators.
2013-12-18 22:51:53 -08:00
Chris Robinson
b9468dc917
Fix header guard and remove duplicate code
2013-12-18 19:17:03 -08:00
Chris Robinson
cd90bdd9bd
Add an option to use the HRTF time delay measured from the dataset
2013-12-18 12:43:59 -08:00
Chris Robinson
0653680690
Move the base MidiSynth to a separate file
2013-12-17 23:03:34 -08:00
Chris Robinson
0095a59fc9
Move the dummy MIDI handler to a separate file
2013-12-17 22:43:10 -08:00
Chris Robinson
ee92b3142d
Move FluidSynth to its own file
2013-12-17 22:36:25 -08:00
Chris Robinson
ef0341c180
Make MidiSynth's methods non-static
2013-12-17 21:56:28 -08:00
Chris Robinson
7f51569186
Update the midi soundfont config option
2013-12-16 15:05:53 -08:00
Chris Robinson
189d73dd87
Render some MIDI samples even when stopped
...
Because stopping MIDI playback puts any playing notes into release phase, they
should be rendered. Ideally it could stop rendering once output goes silent.
2013-12-15 21:03:23 -08:00
Chris Robinson
f244ef6f82
Use macros for MIDI controller values
2013-12-15 20:15:30 -08:00
Chris Robinson
bcc2b9a490
Don't explicitly set reverb or chorus
2013-12-13 16:14:50 -08:00
Chris Robinson
1dd05bac5c
Add a alMidiResetSOFT method to reset the synth
...
Playback is stopped, the queue is flushed, the clock is reset to 0, and the
MIDI system is reset to power-up status.
2013-12-13 14:15:01 -08:00
Chris Robinson
a343d78724
Update behavior for alMidiStopSOFT
...
alMidiStopSOFT now has the following behavior:
* All pending MIDI events up to the current time are processed first, before
the queue is flushed.
* All channels then receive an All Notes Off event so that notes go through
their release phase. Controllers are *NOT* reset.
* Clock time is reset to 0, like before.
2013-12-13 13:40:53 -08:00
Chris Robinson
57eef756c3
Fix retrieving source properties
2013-12-09 13:04:16 -08:00
Chris Robinson
5349b90a48
Fix leak if inserting a sysex event fails
2013-12-08 06:20:44 -08:00
Chris Robinson
ac525db845
Fix numeric constant type (double->float)
2013-12-08 05:01:06 -08:00
Chris Robinson
a846418964
Rename pthread wrappers used for Windows to althread
2013-12-06 02:12:45 -08:00
Chris Robinson
3f5914e094
Simplify dummy synth processing loop
2013-12-01 01:03:55 -08:00
Chris Robinson
517be463ae
Minor comment update
2013-12-01 00:31:39 -08:00
Chris Robinson
dc13ce7a0a
Use a method to get the default soundfont filename
2013-12-01 00:22:20 -08:00
Chris Robinson
c834713526
Add methods to set and get the MIDI gain
2013-11-30 23:47:42 -08:00
Chris Robinson
2633fbfc4b
Add a method to check if a file is a soundfont
2013-11-30 20:37:37 -08:00
Chris Robinson
e0babed29b
Add a workaround for allowing GM2 bank selection with a GM2 On SysEx
2013-11-29 23:57:32 -08:00
Chris Robinson
be446366fb
Add a method to specifying MIDI SysEx messages
2013-11-29 05:37:45 -08:00
Chris Robinson
ea1d7d56d3
Add infrastructure for handling SysEx MIDI events
2013-11-29 04:56:33 -08:00
Chris Robinson
82d4e69da1
Don't force MMA bank selection mode
2013-11-29 00:42:27 -08:00
Chris Robinson
f4cf84e72d
Combine duplicate soundfont loading code
2013-11-28 05:30:48 -08:00
Chris Robinson
8615a109ce
Remove an unneeded MidiSynth field
2013-11-28 05:06:40 -08:00
Chris Robinson
f8c68291d3
Add a method to stop MIDI playback
...
Unlike pausing, this resets the MIDI clock time to 0, clears the existing event
queue, stops all MIDI sounds, and resets MIDI controllers.
2013-11-28 04:52:53 -08:00
Chris Robinson
29a4ac329a
Move MidiSynth locking out of the setState method
2013-11-28 04:29:38 -08:00
Chris Robinson
5dad1688d4
Fix building without FluidSynth
2013-11-28 04:21:39 -08:00
Chris Robinson
98b0a3187e
Add a config option for specifying the default MIDI soundfont
2013-11-28 04:16:46 -08:00
Chris Robinson
7794e53667
Be a bit safer with MIDI state changes
2013-11-28 03:57:45 -08:00
Chris Robinson
bb0207d784
Add a method to load a soundfont
2013-11-28 03:38:17 -08:00
Chris Robinson
a3c76c3274
Add an option for FLuidSynth to handle MIDI
2013-11-28 03:08:28 -08:00
Chris Robinson
a48f362d28
Start a MIDI interface extension
2013-11-28 01:53:05 -08:00
Chris Robinson
489723723c
Cleanups for MidiSynth
...
Remove an unneeded field, make MidiSynth_getTime public, and properly return a
64-bit time from it.
2013-11-27 19:41:52 -08:00
Chris Robinson
182b08d8bc
Create and use a MidiSynth on playback devices
2013-11-27 18:52:56 -08:00
Chris Robinson
5554b8cfc9
Add a MidiSynth interface for devices
2013-11-27 18:45:02 -08:00
Chris Robinson
3a1613253b
Add a base MidiSynth struct
2013-11-27 05:12:11 -08:00
Chris Robinson
6a76f50fa3
Ensure UINT64_MAX is defined
2013-11-27 05:09:33 -08:00
Chris Robinson
37fa82f138
Use a 64-bit uint for MIDI event times
2013-11-27 04:33:33 -08:00
Chris Robinson
d315feae40
Add a MIDI event queue
...
In preparation for a MIDI extension.
2013-11-27 03:49:26 -08:00
Chris Robinson
08dfbcfd5c
Add min/max/clamp methods for doubles
2013-11-27 00:30:13 -08:00
Chris Robinson
d339120145
Move ALfloatBUFFERSIZE to a common location
2013-11-27 00:16:30 -08:00
Chris Robinson
80ea801204
Add a macro for GCC to ensure stack alignment
2013-11-25 17:29:39 -08:00
Chris Robinson
191e8172f0
Use a macro to help condense some repeated code
2013-11-24 18:11:45 -08:00
Chris Robinson
b029b77784
Add some missing 'static's
2013-11-24 17:43:20 -08:00
Chris Robinson
4830b1afe7
Try to make sure GCC is providing C99 inline semantics
2013-11-24 17:37:48 -08:00
Chris Robinson
25b9c3d0c1
Apply HRTF coefficient stepping separately
2013-11-10 05:52:22 -08:00
Chris Robinson
4386ee32ce
Use one long buffer for the chorus and flanger delay lines
2013-11-10 02:48:03 -08:00
Chris Robinson
a603dd55ff
Rename lfo_coeff to lfo_scale
2013-11-08 16:54:45 -08:00
Chris Robinson
9228d13333
Use integer modulo for chorus and flanger
...
Also simplify LFO coefficient calculations.
2013-11-08 16:33:42 -08:00
Chris Robinson
bca959f372
Only use the inner loop for the chorus/flanger template method
2013-11-08 05:26:43 -08:00
Chris Robinson
d6eff654be
Redo the autowah effect
...
It's now a low-pass filter with a cutoff that varies according to the input
signal amplitude.
There remains issues with apparent feedback in the resonant frequency with high
resonance values. The actual cutoff range for the filter is also a guess.
2013-11-07 17:46:14 -08:00
Chris Robinson
e0fecdcaaa
Reimplement the compressor to work per-sample
2013-11-06 23:39:41 -08:00
Chris Robinson
414a9edc6e
Explicitly define _POSIX_C_SOURCE and _XOPEN_SOURCE
...
Set them to 200809L and 700 respectively, instead of assuming _GNU_SOURCE will
do it.
2013-11-06 01:41:12 -08:00
Chris Robinson
b84f6d100f
Set -D_GNU_SOURCE=1 earlier
2013-11-05 22:49:16 -08:00
Chris Robinson
801b7cb059
Include strings.h when available
2013-11-05 13:07:46 -08:00
Chris Robinson
10dbb1bc9b
Remove the Lock and Unlock methods from BackendFuncs
...
All backends that still use the old interface use the default locking methods,
which is also used by the ALCbackend base.
2013-11-04 23:34:18 -08:00
Chris Robinson
ca83629e4e
Forward some wrapper functions to the base method
2013-11-04 23:19:30 -08:00
Chris Robinson
5874e387a8
Move some inline methods to their appropriate headers
2013-11-04 13:51:19 -08:00
Chris Robinson
d3c70e63b4
Use C99 inline in more places
2013-11-04 13:44:46 -08:00
Chris Robinson
551f893ae9
Use C99 inline semantics
2013-11-04 12:12:31 -08:00
Chris Robinson
692ab1085d
Only set device functions when needed
2013-11-04 10:52:03 -08:00
Chris Robinson
94aeb5f52e
Use a unique backend type for loopback
2013-11-04 10:51:22 -08:00
Chris Robinson
9760a592b2
Rename VCALL and VCALL0 to V and V0
2013-11-02 17:30:28 -07:00
Chris Robinson
f868d881d9
Constify some function pointers
2013-11-02 16:58:26 -07:00
Chris Robinson
3d921e0e6f
Make backend factory methods static as needed
2013-11-02 16:35:05 -07:00
Chris Robinson
a1a3f51be2
Convert the OSS backend to the new interface
2013-11-02 15:42:45 -07:00
Chris Robinson
c851e2c611
Set vtables in the constructor
2013-11-02 13:23:20 -07:00
Chris Robinson
ddf521eddc
Make LockContext and UnlockContext inline again
2013-11-02 12:05:02 -07:00
Chris Robinson
7142e3828f
Rename alcGetLatency to ALCdevice_GetLatency
2013-11-02 12:01:58 -07:00
Chris Robinson
426429279b
Use the existing ALint64SOFT/ALuint64SOFT types for ALint64/ALuint64
2013-11-01 16:49:05 -07:00
Chris Robinson
7460dd1b08
Prefer long as a 64-bit type instead of long long
2013-10-30 12:29:53 -07:00
Chris Robinson
90a51d7897
Move a macro definition up nearer to where it's used
2013-10-29 23:54:10 -07:00
Chris Robinson
bc9c3de969
Use a helper macro for making vtable thunks
2013-10-29 20:13:42 -07:00
Chris Robinson
9f0e49917d
Add default handlers for reset, captureSamples, and availableSamples
2013-10-29 15:07:13 -07:00
Chris Robinson
779eb4b82b
Convert the PulseAudio backend to the new interface
2013-10-29 14:44:07 -07:00
Chris Robinson
6e43757fed
Remove the cmake option to use wine headers
2013-10-29 11:38:37 -07:00
Chris Robinson
a507d0aa75
Disable MSVC warning 4098
...
a.k.a. "'void' function returning a value", caused by returning a void in a
function that returns void. Such as:
void foo() { }
void bar()
{
return foo();
}
Which can happen due to some generalized macros that generate wrappers.
2013-10-29 11:27:06 -07:00
Chris Robinson
d4aa4e16a0
Add a macro to forward methods to a base type
2013-10-29 11:22:18 -07:00
Chris Robinson
d2b3615943
Convert the loopback backend to the new interface
2013-10-29 10:38:55 -07:00
Chris Robinson
3437769ba0
Remove a couple unnecessary (and incorrect) parameter names
2013-10-28 22:29:59 -07:00
Chris Robinson
3c65c946d4
Fix capture with the new backend interface
2013-10-28 22:03:54 -07:00
Chris Robinson
16d5d5760c
Convert ALSA to the new backend interface
2013-10-28 21:56:14 -07:00
Chris Robinson
7a424ab4bf
Don't return a void
2013-10-28 20:23:41 -07:00
Chris Robinson
823782a33f
Declare LoadLib functions in one place
2013-10-28 17:48:48 -07:00
Chris Robinson
321644de7c
Add a missing compat.h include for portaudio
2013-10-28 17:48:03 -07:00
Chris Robinson
a407d57639
Rename the support method to querySupport
2013-10-28 17:23:19 -07:00
Chris Robinson
0a6eff6a89
Add a GNU-specific AL_PRINT
...
This one makes use of the ', ## __VA_ARGS__' construct to avoid
splitting the output into two *printf calls.
2013-10-28 17:09:52 -07:00
Chris Robinson
6fd857739c
Support capture backends with the new interface
2013-10-28 17:04:44 -07:00
Chris Robinson
21f1e54cb9
Create and use a backend wrapper for capture
2013-10-28 14:38:55 -07:00
Chris Robinson
f8c95f1e90
Add audio capture methods to ALCbackend
2013-10-28 13:51:55 -07:00
Chris Robinson
8d9fb5109b
Move some stuff out of alMain.h
2013-10-28 12:48:13 -07:00
Chris Robinson
20bcb68ad6
Move ALCbackend base stuff to a separate file
2013-10-28 12:30:57 -07:00
Chris Robinson
0617df9b5f
Fix a couple casts
2013-10-28 12:12:26 -07:00
Chris Robinson
f24cb44781
Move the device mutex to the backend
2013-10-28 12:05:33 -07:00
Chris Robinson
2912d130c2
Separate compatibility declarations
2013-10-28 11:26:26 -07:00
Chris Robinson
034935b2e1
Modify how VCALL is handled
...
Now instead of specifying the arguments as a third argument to the macro, like
VCALL(object,function,(arg1, arg2));
they are specified separately after the macro, like
VCALL(object,function)(arg1, arg2);
Also, VCALL_NOARGS has been removed in favor of VCALL0, which behaves like
above but expects an empty argument list (a separate macro is needed to work
around preprocessor limitations).
2013-10-28 11:06:04 -07:00
Chris Robinson
c1cdd3095b
Convert the Null backend to the ALCbackend style
2013-10-28 08:29:19 -07:00
Chris Robinson
dc7ed39fa7
Add a backend factory base type
2013-10-28 07:27:35 -07:00
Chris Robinson
c8603092d3
Add a default getLatency to ALCbackend
...
And make sure the backend is properly deleted.
2013-10-28 05:57:07 -07:00
Chris Robinson
f065700ef9
Move the lock/unlock methods to the backend
2013-10-28 05:10:28 -07:00
Chris Robinson
e54983694b
Add missing header to git
2013-10-27 16:37:40 -07:00
Chris Robinson
3ed425d7ef
Move the ALCdevice handle to the ALCbackend base
2013-10-27 16:20:47 -07:00
Chris Robinson
af8be56f17
Use an ALCbackend object to access playback backends
...
This is the start of a backend redesign. Currently, a wrapper object is used to
avoid having to redo all the backends at once, but they should slowly be
converted to derive from ALCbackend instead. The ALCbackend interface can
change as needed.
2013-10-27 14:24:55 -07:00
Chris Robinson
bf465eb2eb
Move SetThreadName to threads.c
2013-10-27 08:32:58 -07:00
Chris Robinson
8ceb800def
Rework threading functions
2013-10-27 08:14:13 -07:00
Chris Robinson
b9e30f7604
Add a cmake option to disable building only alsoft-config
2013-10-27 07:03:58 -07:00
Chris Robinson
f93bfab824
Set a name for the mixer and recording threads
2013-10-27 07:00:44 -07:00
Chris Robinson
ff5277f4d7
Add a method to set the running thread's name
2013-10-26 12:39:19 -07:00
Chris Robinson
6617985a4e
Link to the correct sdl library for the loopback example
2013-10-26 08:52:07 -07:00
Chris Robinson
54b8690781
Fix a comment
2013-10-26 08:49:37 -07:00
Chris Robinson
959b768911
Use SET_VTABLE1 to set the ALeffect vtables
2013-10-08 18:58:44 -07:00
Chris Robinson
a421e515be
Use a helper macro for pi*2
2013-10-08 16:31:23 -07:00
Chris Robinson
11365b42c7
Use helper macros to convert between degrees and radians
2013-10-08 12:39:22 -07:00
Chris Robinson
b42fcce014
Use inline initialization for effect state factory vtables
2013-10-07 14:49:36 -07:00
Chris Robinson
fc31a41473
Constify the effect parameter of effect getters
2013-10-07 12:56:41 -07:00
Chris Robinson
b3841653c6
Remove the last of the al_try code
2013-10-07 12:05:39 -07:00
Chris Robinson
32d3bde261
Use inline functions to lookup and remove objects
2013-10-07 11:39:32 -07:00
Chris Robinson
c787a9bf74
Remove al_try from alAuxEffectSlot.c
2013-10-07 11:30:11 -07:00
Chris Robinson
4f72da0005
Return only true or false from the source getters and setters
2013-10-07 11:10:49 -07:00
Chris Robinson
69d373db78
Remove al_try from alSource.c
2013-10-07 09:24:50 -07:00
Chris Robinson
0803f1b2f1
Remove al_try from alListener.c
2013-10-07 09:04:52 -07:00
Chris Robinson
c080dcae8d
Remove al_try from alState.c
2013-10-07 08:50:17 -07:00
Chris Robinson
997f6228de
Use the UNUSED macro in the effects
2013-10-07 08:34:54 -07:00
Chris Robinson
32e85d469b
Use the UNUSED macro in the backends
2013-10-07 08:00:18 -07:00
Chris Robinson
1518895e15
Use an UNUSED macro instead of void-tagging unused parameters
2013-10-07 07:44:09 -07:00
Chris Robinson
44172f701c
Remove a duplicate and unused macro
2013-10-07 07:32:45 -07:00
Chris Robinson
e1d5be570e
Remove al_try usage from alBuffer.c
2013-10-07 07:06:01 -07:00
Chris Robinson
b5fece0381
Add a CMake option to not define the IDs used on Windows
...
This includes the GUIDs, IIDs, CLSID, and PropertyKeys. It is up to the user
to ensure the appropriate IDs are defined when linked.
2013-10-07 06:36:58 -07:00
Chris Robinson
1461903e0d
Add a workaround for KDevelop not recognizing the ALIGN macro
2013-10-07 06:05:42 -07:00
Chris Robinson
8aa237ac23
Fix effect slot struct declarations so KDevelop doesn't barf on them
2013-10-07 05:41:41 -07:00
Chris Robinson
5d014ba85f
Start using a simpler method for error handling
...
This helps avoid the al_try/al_throwerr/al_endtry stuff.
2013-10-06 18:01:01 -07:00
Chris Robinson
79edd2cf3b
Use a macro for the silence threshold
2013-10-06 17:25:47 -07:00
Chris Robinson
6425480d40
Don't store the effect slot in SendParams
...
This makes it much more like DirectParams.
2013-10-06 10:11:01 -07:00
Chris Robinson
8448b94c0b
Rename Filter param member to LpFilter
2013-10-06 09:33:02 -07:00
Chris Robinson
9ee3d01f6e
Use a simpler U64 macro to make 64-bit constants
2013-10-06 04:21:03 -07:00
Chris Robinson
69e64e1ed2
Add a workaround for KDevelop not recognizing 'restrict'
2013-10-06 03:53:20 -07:00
Chris Robinson
ba52ac9bcd
Finalize AL_SOFT_deferred_updates
2013-10-05 06:14:04 -07:00
Chris Robinson
43c375716a
Only rest as long as needed in the Null renderer
2013-10-05 00:33:56 -07:00
Chris Robinson
ead8573aaf
Add some more missing enums
2013-10-03 07:57:54 -07:00
Chris Robinson
41175ec84c
Implement the Compressor effect
2013-10-03 07:55:12 -07:00
Chris Robinson
b9fd3f9eb4
Add missing enum to the list
2013-10-03 07:32:01 -07:00
Chris Robinson
01a5946a2e
Compile using -std=c99 when available
2013-10-03 05:45:12 -07:00
Chris Robinson
2e605590a2
Convert autowah.c line-endings
2013-10-03 05:04:39 -07:00
Chris Robinson
764ea95781
Use helpers to set channel gain arrays
...
Also avoid unnecessary clearing.
2013-10-03 05:02:16 -07:00
Chris Robinson
99fa5911bc
Implement the Autowah effect.
2013-10-03 03:37:03 -07:00
Chris Robinson
2f676832bc
Avoid a divide-by-0 when distortion edge is 1
2013-09-04 15:46:05 -07:00
Chris Robinson
94884ed04b
Use a separate value for the maximum buffer channels
...
Unlike the device, input buffers are accessed based on channel numbers
instead of enums. This means the maximum number of channels they hold
depends on the number of channels any one format can have, rather than
the total number of recognized channels. Currently, this is 8 for 7.1.
2013-07-23 00:13:15 -07:00
Chris Robinson
2219ce2475
Implement master high-pass filter for EAXREVERB
2013-07-21 22:12:50 -07:00
Chris Robinson
393d0eb138
Limit lower filter gain to -100dB
2013-07-21 18:42:14 -07:00
Chris Robinson
51791e6a54
Remove an unused function
2013-07-21 03:22:14 -07:00
Chris Robinson
d85f0c0bb2
Improve the source's low-pass filter response
2013-07-20 22:18:44 -07:00
Chris Robinson
0a95c470b0
Some .ui changes that Qt Designer insists on
2013-07-10 10:53:01 -07:00
Chris Robinson
7ebc1bb69e
Use OpenAL_SOURCE_DIR for the CMake module path and declare the project earlier
...
The minimum CMake version required is also bumped to 2.6. Patch by Andrew West,
allows OpenAL Soft to be properly built as a sub-project.
2013-07-10 10:46:07 -07:00
Chris Robinson
52096234e1
Limit the source step to 10
...
This means the combination of the buffer frequency, source pitch, and
doppler shift can't exceed 10x the device playback frequency.
This is needed to keep the mixer from starving with a really high
increment, causing small DstBufferSize values that require a lot of
iterations.
2013-07-02 06:57:27 -07:00
Chris Robinson
61c6a38f04
Don't have ../../ as part of the target name
2013-07-02 02:02:57 -07:00
Chris Robinson
f23a28e8f3
Disable HRTF remove button when no files selected
2013-06-28 00:08:57 -07:00
Chris Robinson
314f9e2686
Update the period size/count sliders when loading
2013-06-27 23:31:51 -07:00
Chris Robinson
2c7f94e285
Remove the unused menu bar and status bar from alsoft-config
2013-06-27 21:42:38 -07:00
Chris Robinson
a375104826
Make sure SDL_sound was found before setting the includes
2013-06-25 03:53:48 -07:00
Chris Robinson
62dd5f33b2
Better handle the INCLUDE_DIRECTORIES property
...
Older cmake verions (prior to 2.8.8) don't have a per-target
INCLUDE_DIRECTORIES property, so the directories have to be
added using the INCLUDE_DIRECTORIES command.
2013-06-25 03:14:04 -07:00
Chris Robinson
77a2c8bcf0
Check for Qt4 earlier
2013-06-24 18:38:26 -07:00
Chris Robinson
d984cec3a1
Properly check that Qt4 4.8+ was found
2013-06-24 17:40:41 -07:00
Chris Robinson
5c7680ec84
Use the COMPILE_DEFINITIONS property instead of DEFINE_SYMBOL
2013-06-24 17:40:03 -07:00
Chris Robinson
18157bc331
Better specify include directories and defines needed for various targets
2013-06-24 16:30:04 -07:00
Chris Robinson
27b66b2008
Specify the required Qt4 version to find_package
2013-06-24 16:28:19 -07:00
Chris Robinson
f48c0c9e0a
Make sure QtCore and QtGui were found and link with the appropriate libs
2013-06-24 05:02:45 -07:00
Chris Robinson
b3f54124bd
Require Qt 4.8 or newer for alsoft-config
2013-06-24 04:47:36 -07:00
Chris Robinson
eebc6c0419
Move alsoft-config to a separate project file
...
This to help avoid FindQt4.cmake from polluting the current project with
defines and include directories, applying them to targets that don't use Qt.
2013-06-24 04:27:35 -07:00
Chris Robinson
144059b062
Add a configuration UI application
...
Not complete, but it's a decent start. Some problems:
* Only some otions are handled (backend-specific options in particular aren't
handled).
* Does not warn when quitting with unsaved changes.
* Some options are missing tooltips.
2013-06-23 22:47:51 -07:00
Chris Robinson
4017e4a96a
Check for MinGW in CMakeLists.txt instead of config.h
2013-06-20 17:17:17 -07:00
Chris Robinson
ed0568bb24
Fix a potential infinite loop.
...
If the first XDG_CONFIG_DIRS entry isn't a proper relative path,
it would never break the loop.
2013-06-19 23:24:06 -07:00
Chris Robinson
160e901381
Handle non-native endian formats with SDL_sound
2013-06-19 22:47:17 -07:00
Chris Robinson
a9fac12969
Work around some problems with KDevelop's parser
2013-06-18 14:33:39 -07:00
Chris Robinson
3c90ed95af
Look for alsoft.conf in the XDG_CONFIG_DIRS and XDG_CONFIG_HOME directories
...
This follows the XDG Base Directory Specification. The old files/locations are
still supported, but configs found in XDG_CONFIG_DIRS take precedence over
/etc/openal/alsoft.conf, and a config found in XDG_CONFIG_HOME takes precedence
over $HOME/.alsoftrc.
2013-06-16 22:55:11 -07:00
Chris Robinson
48d5002190
Trace config file names being loaded
2013-06-16 20:43:31 -07:00
Chris Robinson
784e396cc7
Don't split config sections into separate blocks
2013-06-16 19:52:56 -07:00
Chris Robinson
8bd77be522
Improve parsing of the config files
...
This will also now recognize (and strip) quotation marks from around values.
2013-06-16 18:42:27 -07:00
Chris Robinson
ff44ebfd5b
Add a loopback extension example
2013-06-16 16:10:21 -07:00
Chris Robinson
a5471ce0a4
Better handle spaces between string list entries
2013-06-16 15:44:41 -07:00
Chris Robinson
817ca82e4b
Fix input and feedback in the echo effect
2013-06-10 05:57:27 -07:00
Chris Robinson
68898dad1e
Don't open the log file with both 'truncate' and 'append' flags
2013-06-07 03:38:09 -07:00
Chris Robinson
024374e0ce
Use explicit bit offsets when checking for SSE and SSE2
...
Clang's cpuid.h doesn't contain the bit_* macros.
2013-06-06 19:30:55 -07:00
Chris Robinson
647398d7c6
Use ALfilterState for the distortion effect filters
2013-06-06 03:24:44 -07:00
Chris Robinson
dcefeac6e6
Use a static lib for the common example code
2013-06-05 23:07:33 -07:00
Chris Robinson
9fd8731480
Use SDL_sound for the other examples
2013-06-05 20:12:13 -07:00
Chris Robinson
056fa2a474
Use SDL_sound for the alstream example
2013-06-05 19:50:18 -07:00
Chris Robinson
fe5428dc49
Add a custom FindSDL_sound cmake module
...
The one that comes with CMake is broken, incorrectly setting
SDL_SOUND_LIBRARIES, causing warnings, and not even working if the
project is C only.
2013-06-05 19:21:09 -07:00
Chris Robinson
a371de080b
Silence some clang warnings
2013-06-05 01:52:49 -07:00
Chris Robinson
0e0f70b288
Avoid a NULL dereference
2013-06-04 17:36:54 -07:00
Chris Robinson
7257aa3ed2
Allow enabling HRTF through a context creation attribute
2013-05-31 19:29:32 -07:00
Chris Robinson
69e0c19767
Start an extension that can query the status of HRTF rendering
2013-05-31 16:03:59 -07:00
Chris Robinson
8f14902290
Add ALC_EXT_DEFAULT_FILTER_ORDER to alext.h
2013-05-31 15:40:02 -07:00
Chris Robinson
2290e08053
Make some example function pointers static
2013-05-30 13:29:50 -07:00
Chris Robinson
a7a3d1e194
Avoid an unnecessary loop
2013-05-29 22:34:57 -07:00
Chris Robinson
9c3f1d11f0
Check the right flag for tracing SSE2 support
2013-05-29 21:28:27 -07:00
Chris Robinson
764e3aa496
Fix up the naming convention of effect methods
2013-05-29 11:17:45 -07:00
Chris Robinson
e96cc656e9
Use C99's inline instead of __inline
2013-05-28 22:27:07 -07:00
Chris Robinson
48aa1e10d6
Use the high-shelf filter in place of low-pass
...
They effectively both work to lower (or raise) high frequencies. However, the
high-shelf performs better when gain=1.
2013-05-28 10:57:38 -07:00
Chris Robinson
6556626055
Simplify and fix some filter gain calculations
2013-05-27 21:57:22 -07:00
Chris Robinson
59a38442ac
Use ALfilterState for the modulator high pass filter
2013-05-27 21:24:28 -07:00
Chris Robinson
0c7c5327c9
Use ALfilterState for the master echo and reverb filters
2013-05-27 19:55:00 -07:00
Chris Robinson
3e663d7307
Remove an unused method
2013-05-27 19:33:12 -07:00
Chris Robinson
feeec34333
Use ALfilterState for the source direct and send filters
2013-05-27 19:14:02 -07:00
Chris Robinson
bcf4842eb3
Fix filter coefficient pre-calc
...
a[0] was getting set to 1 before a[1] and a[2] were normalized. a[0] needs to
be done last.
2013-05-27 17:47:13 -07:00
Chris Robinson
b1ae44206f
Move ALEQFilter to alFilter.c/h and rename it to ALfilterState
2013-05-27 15:32:02 -07:00
Chris Robinson
0ad71a67d4
Store pointers to the getFactory funcs in the map
2013-05-27 13:41:16 -07:00
Chris Robinson
334a7c1d59
Cleanup the ALeffectStateFactory_create methods
...
Get rid of the ALeffectStateFactory_create macro, and use the VCALL_NOARGS
helper (requires adding the 'this' factory parameter).
2013-05-27 13:16:17 -07:00
Chris Robinson
8d874512b6
No-op if DELETE_OBJ is given a NULL pointer
2013-05-27 12:07:54 -07:00
Chris Robinson
9e84f38a46
Use generic VCALL[_NOARGS] macros instead of type-specific wrappers
2013-05-27 11:48:29 -07:00
Chris Robinson
06c8442af6
Rename a variable
2013-05-26 17:10:57 -07:00
Chris Robinson
0a4be3470e
Pre-apply the a[0] EQ filter coefficient
...
Saves 20 fp divisions per sample
2013-05-26 17:04:45 -07:00
Chris Robinson
4bf5466f64
Use SET_ERROR_AND_RETURN in a few more places
2013-05-26 16:34:08 -07:00
Chris Robinson
82caba6bbe
Use the helper macros in more places
2013-05-26 08:54:34 -07:00
Chris Robinson
8808159d55
Add helper macros to set an error and return, and use it in a few places
2013-05-26 00:01:07 -07:00
Chris Robinson
2759239754
Define the ALeffect typedef with the struct
2013-05-25 22:31:24 -07:00
Chris Robinson
d1c5599c8e
Use an ALeffectProps union to store the effect properties
2013-05-25 22:07:31 -07:00
Chris Robinson
6571d80540
Use a Delete method for deletable objects
2013-05-25 21:04:00 -07:00
Chris Robinson
2da6caeaa6
Update the Null effect so it can act as a guide to new effects
2013-05-25 17:42:34 -07:00
Chris Robinson
e157238ce7
Use vtables for setting effect properties
2013-05-24 23:26:59 -07:00
Chris Robinson
49446c7b32
Set cmake policy CMP0005 and avoid unnecessary escape sequences
2013-05-24 23:25:35 -07:00
Chris Robinson
f105a8bb4b
Add quotes around an ADD_DEFINITIONS parameter
2013-05-24 10:36:55 -07:00
Chris Robinson
18807e06fe
Check for __restrict in a way to make MSVC happy, hopefully
2013-05-24 00:45:25 -07:00
Chris Robinson
357cf72ab3
Move remaining effects to the effects subdir
2013-05-23 21:33:16 -07:00
Chris Robinson
2376683128
Move reverb to the effects subdir
2013-05-23 19:48:24 -07:00
Chris Robinson
f667c028e6
Move the AL_EFFECT_NULL state into a separate file
2013-05-23 18:50:07 -07:00
Chris Robinson
dbb6da8c47
Reword a couple cmake option names
2013-05-23 17:27:57 -07:00
Chris Robinson
4f068b51e5
Don't explicitly check for fesetround
...
It's C99 standard with fenv.h, which we already check for.
2013-05-22 23:23:45 -07:00
Chris Robinson
be4a4d7468
Use fegetenv/fesetenv to backup and restore the FPU state
2013-05-22 23:05:26 -07:00
Chris Robinson
eb15b13ca1
Merge the fesetround FPU handler with the assembly one
...
The assembly is only needed for SSE since we can't access the intrinsics
without the -msse switch, which itself would cause SSE code to be generated
elsewhere automtically.
2013-05-22 22:21:00 -07:00
Chris Robinson
38a9e642df
Check for SSE2 and set the denormals-are-zero bit for mixing if available
2013-05-22 17:04:37 -07:00
Chris Robinson
b80efeb87d
Set the correct SSE bits for round-to-zero
2013-05-22 16:31:43 -07:00
Chris Robinson
52efb8d7f4
Use restrict instead of RESTRICT
2013-05-22 15:11:39 -07:00
Chris Robinson
a6fa4a8bc2
Recognize DSSPEAKER_5POINT1_SURROUND (and 7POINT1) with DSound
2013-05-22 14:25:33 -07:00
Chris Robinson
1bed3cff21
Remove an unnecessary check for vsnprintf
2013-05-22 14:24:30 -07:00
Chris Robinson
cdbb0722f6
Avoid using a temp buffer for al_print
...
It's now using two *printf calls, which unfortuantely means there could be a
race between the two and cause the message to break up if something else tries
to print to the same file. This shouldn't really be a big deal since al_print
isn't used that often, and it now allows for lines of practically unlimited
length.
2013-05-22 03:02:39 -07:00
Chris Robinson
2eb8a520d4
Add casts to silence MSVC
2013-05-22 00:07:23 -07:00
Chris Robinson
0a07ed14c2
Rename DELETE to DELETE_OBJ
...
Because Windows.
2013-05-21 23:42:40 -07:00
Chris Robinson
604726c639
Add a DELETE macro to help destroy objects
2013-05-21 13:27:27 -07:00
Chris Robinson
eaccaa5028
Rename the effect state's Destroy method to Destruct
2013-05-21 13:02:56 -07:00
Chris Robinson
a5d94f5d09
Use factories to create and destroy effect states
2013-05-21 12:47:18 -07:00
Chris Robinson
af1936be5d
Remove some unused code
2013-05-21 07:24:53 -07:00
Chris Robinson
e4186f4903
Use a properly-defined history for the FILTER struct
2013-05-21 07:10:24 -07:00
Chris Robinson
3ee0f8feb9
Avoid storing the device frequency in the equalizer
2013-05-21 05:33:54 -07:00
Chris Robinson
5c8c40afef
Auto-generate wrappers to upcast objects before calling user methods
2013-05-21 05:02:25 -07:00
Chris Robinson
5516d8df0b
Use macros to help define vtables for effect states
2013-05-21 04:18:02 -07:00
Chris Robinson
fba9ac6db1
Avoid storing the device frequency in the distortion state
2013-05-21 02:43:59 -07:00
Chris Robinson
de387c853f
The effect state being destroyed can't be NULL
2013-05-21 02:37:27 -07:00
Chris Robinson
44da54ec7f
Rename some inheritance macros
2013-05-21 02:30:11 -07:00
Chris Robinson
b6da74b6e2
Pre-scale the chorus and flanger delays to be in samples
2013-05-21 01:59:44 -07:00
Chris Robinson
7e9960f7f1
Avoid storing some chorus and flanger properties in the effect state
2013-05-21 01:38:43 -07:00
Chris Robinson
c6872d4d86
Process 64 samples at a time for chorus and flanger effects
2013-05-20 04:41:03 -07:00
Chris Robinson
5b706f3bdc
Process 64 samples at a time for some effects
...
This should help with the non-interleaved samples of the output, and
allow skipping channels that don't contribute to the output.
2013-05-20 04:16:48 -07:00
Chris Robinson
80459b13e4
Split flanger delay calculation into separate methods
2013-05-20 03:41:32 -07:00
Chris Robinson
012fbc36b9
Split chorus delay calculation into separate methods
2013-05-20 02:38:06 -07:00
Chris Robinson
9dae98071f
Fix possible overflow when converting float to int
...
Same as with the mixer, we can only use 25 bits of precision from
floats.
2013-05-20 01:34:14 -07:00
Chris Robinson
4c436b106d
Use some macros to help with deriving types
2013-05-20 01:32:02 -07:00
Chris Robinson
1c523df160
Remove an unused macro
2013-05-20 00:14:36 -07:00
Chris Robinson
6aa722808e
Clear all the old channel gains to 0 before setting them
2013-05-20 00:02:47 -07:00
Chris Robinson
c693e649e6
Fix a potential leak when mmdevapi fails to open
2013-05-19 03:19:19 -07:00
Chris Robinson
1976d64814
Avoid recalculating the same coefficient
2013-05-19 03:18:21 -07:00
Chris Robinson
78e7c1c27b
Implement distortion and equalizer effects
...
Code provided by Mike Gorchak
2013-05-18 01:33:01 -07:00
Chris Robinson
a7ad6080f0
Modulator fixes
...
Modulator functions return 0..1 instead of -1..+1
Apply high-pass filter before modulation
Increase fractional precision to 24 bits from 16
Thanks to Mike Gorchak
2013-05-18 00:43:09 -07:00
Chris Robinson
563f16dc2a
Fix overflow issues when converting float to int
...
32-bit floats can only reach between -16777215...+16777215 (25 bits) before it
starts losing whole-number accuracy. Some compiler optimizations may break
trying to multiply a float by 2147483647.0 when the result is given right to a
float parameter, causing it instead to multiply by the nearest representable
float value, 2147483648.0.
2013-04-22 00:52:50 -07:00
Chris Robinson
43b406ad9b
Simplify al_try code
2013-03-24 13:55:41 -07:00
Chris Robinson
dd48375bd6
QSA is always build-time linked
2013-03-24 12:45:05 -07:00
Chris Robinson
678ce4109c
Reorder some switch cases
2013-03-24 12:43:53 -07:00
Chris Robinson
b313c881c0
Add a missing cast to silence MSVC
2013-03-22 11:21:21 -07:00
Chris Robinson
2c501f3b28
Document QSA backend options, and move PulseAudio's up
2013-03-22 11:19:50 -07:00
Chris Robinson
e725db4480
Add win64build to .gitignore
2013-03-19 08:36:06 -07:00
Chris Robinson
23703ff40f
Avoid an unnecessary size variable
2013-03-19 07:38:42 -07:00
Chris Robinson
fb11eb1190
Avoid explicitly checking each effect to create
2013-03-19 05:39:34 -07:00
Chris Robinson
061b75b343
Fix MMDevApi backend option text
2013-03-19 05:05:00 -07:00
Chris Robinson
6bf8f01af5
Report the actual ALSA error if setting the buffer metrics fails
2013-03-18 05:21:41 -07:00
Chris Robinson
bf54de4984
Use less math to clamp floats to -1...+1
...
The previous code could have issues as precision lowers. This should hopefully
work better while only using one if check instead of two.
2013-03-17 09:07:55 -07:00
Chris Robinson
eb1080910e
Use force_align_arg_pointer for QSA
2013-03-15 04:32:46 -07:00
Chris Robinson
d237410d1d
Add a QSA backend for QNX
2013-03-14 01:29:20 -07:00
Chris Robinson
2486f13dae
Remove unnecessary NULL checks
2013-03-13 23:36:45 -07:00
Chris Robinson
3fd0f23e48
Add Chorus and Flanger effects
...
Code provided by Mike Gorchak
2013-03-13 23:31:12 -07:00
Chris Robinson
991aba286f
Move the effect-specific get/set methods to where the effect is implemented
2013-03-13 21:53:42 -07:00
Chris Robinson
a3846ba53b
Don't use a custom CheckCCompilerFlag.cmake
2013-03-13 21:29:47 -07:00
Chris Robinson
0423caeb8c
Use CHECK_SYMBOL_EXISTS to check for pthread_setschedparam
2013-03-13 21:20:00 -07:00
Chris Robinson
f1b0f67553
Build an appropriate channel map for PulseAudio
2013-02-08 18:59:48 -08:00
Chris Robinson
89fae876a4
Only print the filename in alstream, without the path
2013-02-03 04:55:44 -08:00
Chris Robinson
ac4930e233
Check the correct CMake CoreAudio option
2013-02-03 04:43:49 -08:00
Chris Robinson
e358882f14
Destroy the ring buffer when closing down a portaudio device
2013-02-01 18:38:44 -08:00
Chris Robinson
564a182259
Avoid an underflow in the SSE mixers if BufferSize is less than 4
2012-12-24 05:49:44 -08:00
Chris Robinson
9cd086a707
Filter unneeded thread messages with MMDevApi
2012-12-24 05:37:53 -08:00
Chris Robinson
c2adea1999
Make the context's LastError volatile
2012-12-24 05:32:15 -08:00
Chris Robinson
7d81d6b24e
Look for /arch:SSE with MSVC for SSE
2012-12-24 05:26:33 -08:00
Chris Robinson
84944af142
Rename cmake options so GUIs order them better
2012-12-24 05:20:04 -08:00
Chris Robinson
be25e6802d
Add support for OpenSL ES 1.0.1 on Android
2012-12-12 14:36:58 -08:00
Chris Robinson
9b6a226da5
Release 1.15.1
2012-12-11 12:35:55 -08:00
Chris Robinson
eb5073a8a7
Properly convert uint values when getting them as int64
2012-12-07 18:43:13 -08:00
Chris Robinson
beb84bdc21
SetSourceiv should never get AL_SAMPLE_OFFSET_LATENCY_SOFT
2012-12-06 09:03:48 -08:00
Chris Robinson
a20f1fa779
Use a helper to count the number of float/double values for a property
2012-12-05 20:51:25 -08:00
Chris Robinson
7445ffe1a6
Use a helper to count the number of int(64) values for a property
2012-12-05 19:58:01 -08:00
Chris Robinson
c225c59b0a
Remove 'v' from the source enum names
2012-12-05 18:27:05 -08:00
Chris Robinson
37a6705556
Add a comment to note the extension for sfvDistanceModel
2012-12-05 13:48:33 -08:00
Chris Robinson
ed5738bfa4
Use an enum to handle int source properties
2012-12-05 09:55:05 -08:00
Chris Robinson
5e14a83030
Use an enum to handle float source properties
2012-12-05 09:22:38 -08:00
Chris Robinson
3b9b176f14
Print an error if trying to handle a missed source property
2012-12-05 08:29:38 -08:00
Chris Robinson
838f0fd71b
Fix retrieving source gain
2012-12-05 08:27:02 -08:00
Chris Robinson
fd83e006ec
Release 1.15
2012-12-04 13:49:16 -08:00
Chris Robinson
e51574c764
Trace the list of supported backends
2012-12-04 13:46:51 -08:00
Chris Robinson
893a1bedbc
Use +/-90 degrees for stereo sources with non-HRTF stereo output.
2012-12-04 05:30:06 -08:00
Chris Robinson
4621a7b426
Add support for float32 output to CoreAudio
2012-12-03 11:50:02 -08:00
Chris Robinson
4808313e70
Use the correct multiplier for int32 output with CoreAudio
2012-12-03 10:44:02 -08:00
Chris Robinson
1fb9311d82
Lock the device before calling aluHandleDisconnect
...
PulseAudio causes an assert if being relocked inside a callback on the worker
thread, where aluHandleDisconnect is called. We can assume it's already locked
there, so just make sure the device is locked before being calling it.
2012-12-02 11:30:23 -08:00
Chris Robinson
dd34daed42
Trace the opened device name in alcCaptureOpenDevice
2012-12-02 06:37:34 -08:00
Chris Robinson
830428fb06
Use WARN when implicitly deleting resources with the context
2012-12-02 01:17:26 -08:00
Chris Robinson
0ca7ab2cf8
Explicitly check for malloc.h
2012-11-25 19:20:35 -08:00
Chris Robinson
a0c39989f5
malloc.h isn't standard, and is only needed for _aligned_malloc
2012-11-25 02:33:20 -08:00
Chris Robinson
209d09ae13
Avoid locking PulseAudio's mainloop when starting and stopping capture
...
The mainloop is already locked by the caller, and double-locking interferes
with the subsequent wait.
2012-11-19 16:50:03 -08:00
Chris Robinson
0c030f7d9c
Fix a comment describing the sinc function
2012-11-18 19:02:50 -08:00
Chris Robinson
2d800e99e2
Fix off-by-one error in the makehrtf dither and add a resample option
...
Also fixes some size_t type warnings
2012-11-18 09:29:58 -08:00
Chris Robinson
0518ecca14
Avoid storing the SSE state if it's not supported
2012-11-13 15:20:36 -08:00
Chris Robinson
43b9027611
Return the integer from fastf2i with MSVC
2012-11-13 15:12:46 -08:00
Chris Robinson
40ea4f4b46
Use int instead of long for the IMA4 tables
2012-11-10 03:40:36 -08:00
Chris Robinson
4f624cb734
Load Int and UInt samples as float with alBufferData
...
This shouldn't really ever happen, as there's no 32-bit (u)int formats
alBufferData can take.
2012-11-10 03:36:37 -08:00
Chris Robinson
b03013d6a7
Specify that the config file being installed is a sample
2012-11-06 03:52:41 -08:00
Chris Robinson
9e79d144de
Install the config sample by default
2012-11-05 04:20:15 -08:00
Chris Robinson
40b3f60cde
Install the config example into share/openal instead of /etc/openal
...
/etc/openal/alsoft.conf is still used for configuration, only the sample's
install placement is changed.
2012-11-05 04:14:05 -08:00
Chris Robinson
2b27d243ca
Use stdout to print alstream information
2012-11-04 22:37:10 -08:00
Chris Robinson
2f07c46e20
Include standard headers before conditional ones
2012-11-04 22:36:34 -08:00
Chris Robinson
3da1b540fd
Use the stored buffer metrics for the mmdevapi buffer size
2012-11-04 22:35:35 -08:00
Chris Robinson
92dde81296
Add rudimentary latency tracking for mmdevapi
...
This won't be as granular as it could be, since it only updates when the wakeup
event trips (which may or may not happen more often than OpenAL's mix updates).
A more correct method would be to query GetCurrentPadding directly, but that
would require sending a message to the processing thread and waiting for a
reply, since we can't guarantee COM on the calling thread.
2012-11-04 08:35:39 -08:00
Chris Robinson
e2368eb960
Use an array to specify the offset for each channel of the device buffer
...
This effectively inverts the DevChannels array
2012-11-04 04:41:11 -08:00
Chris Robinson
3e71a7cb94
Rename some struct fields for DirectSound
2012-11-04 01:18:39 -08:00
Chris Robinson
b92ad830ef
Avoid recreating the DSound primary buffer
2012-11-04 00:37:31 -07:00
Chris Robinson
fc7adccd6f
Fix retrieving the source's write offset
2012-11-01 23:41:18 -07:00
Chris Robinson
97bf718d0e
Pass the offset latency properties to the set handler
2012-11-01 18:35:20 -07:00
Chris Robinson
eb6360e1f8
Set the proper error when trying to set AL_SAMPLE_OFFSET_LATENCY_SOFT or AL_SEC_OFFSET_LATENCY_SOFT
2012-11-01 00:16:44 -07:00
Chris Robinson
41b1ba146a
Add an example to get and show the source latency
2012-10-31 23:53:10 -07:00
Chris Robinson
6450d0cbca
Avoid prefixing function pointers in the streaming example
2012-10-31 22:38:27 -07:00
Chris Robinson
4e281350a0
Print the name of the device when opening it in the example apps
2012-10-31 17:16:56 -07:00
Chris Robinson
e868dad61c
Make a decimal value a float type
2012-10-31 06:58:16 -07:00
Chris Robinson
4a3d36a176
Finalize AL_SOFT_source_latency
2012-10-31 05:09:42 -07:00
Chris Robinson
f3dddb6e63
Add an example program showing how to apply reverb to a source
2012-10-31 04:04:49 -07:00
Chris Robinson
3c3e3b123b
Add a couple comments to the code
2012-10-26 20:11:59 -07:00
Chris Robinson
f02a9935c6
Avoid branching when clamping and converting float samples to integer
2012-10-26 15:31:14 -07:00
Chris Robinson
3711735ed9
Add the AL subdir to the list of include flags in the pkg-config file
...
This allows apps to include "al.h", "alc.h", etc, like with Creative's SDK and
CMake's FindOpenAL module, or as "AL/al.h" and "AL/alc.h" like before.
2012-10-26 00:02:39 -07:00
Chris Robinson
2c802cc10a
Reorder and comment some function in alhelpers.c
2012-10-25 23:53:46 -07:00
Chris Robinson
e2e502970c
Move some math functions to where they're used
2012-10-25 17:24:22 -07:00
Chris Robinson
404d601666
Add a couple missing RESTRICTs
2012-10-25 17:02:21 -07:00
Chris Robinson
252fc40f78
Fix some types
2012-10-25 15:37:52 -07:00
Chris Robinson
fb21a73b4e
Add the RESTRICT keyword to a function pointer definition's parameters
2012-10-25 14:52:09 -07:00
Chris Robinson
138a4c6d92
Add explicit casts for MSVC
2012-10-25 14:46:27 -07:00
Chris Robinson
c802bfccef
Remove the float math wrapper functions
2012-10-25 14:16:35 -07:00
Chris Robinson
fae4959db3
Add retrieval of missing source properties
2012-10-21 11:36:27 -07:00
Chris Robinson
8a67e5cfa2
Use an asterisk to denote a requested format option in the trace
2012-10-16 07:46:04 -07:00
Chris Robinson
617def3ef0
Require an alignment declaration for SSE support
2012-10-15 02:23:08 -07:00
Chris Robinson
4f5aafe59f
Put the HRTF DirectParams into an anonymous struct
2012-10-15 01:37:37 -07:00
Chris Robinson
a14383d6cc
Constify the direct and send parameters given to the mixer
2012-10-15 01:31:58 -07:00
Chris Robinson
fe1903fb56
Use a separate step to deinterlace reverb samples
2012-10-14 11:55:03 -07:00
Chris Robinson
f0d27e5f91
Remove the unused Device parameter
2012-10-14 11:29:28 -07:00
Chris Robinson
a852669dce
Store the output buffers in the DirectParams struct
2012-10-14 11:21:52 -07:00
Chris Robinson
3240894cd5
Remove the now-unused Source parameter from the DryMix methods
2012-10-14 11:04:36 -07:00
Chris Robinson
0b679167c9
Store some more HRTF info in the DirectParams struct
2012-10-14 10:57:11 -07:00
Chris Robinson
5ac0a93fba
Mark some parameters as const and/or RESTRICT
2012-10-14 10:27:15 -07:00
Chris Robinson
f7655d44a2
Move alhelpers and alffmpeg code to a common sub-directory
2012-10-14 01:55:39 -07:00
Chris Robinson
38e6bfb702
Use a helper method to convert i64 values to the proper types
2012-10-14 01:41:49 -07:00
Chris Robinson
20ede6de59
Check i64 property ranges before passing them to the int handlers
...
Note that some properties (e.g. AL_BUFFER, AL_DIRECT_FILTER) actually take
unsigned int values, and so are checked against the unsigned range even though
they eventually get casted to an int. The int handler casts them back as
needed.
2012-10-14 00:55:46 -07:00
Chris Robinson
5c70e6b9ab
Don't add the dry gain to the mixing matrix
2012-10-13 11:10:58 -07:00
Chris Robinson
9bd3b88a58
Silence an implicit int-to-float conversion warning on MSVC
2012-10-13 11:00:43 -07:00
Chris Robinson
e60281c927
Don't use a loop to determine the next power of 2
2012-10-13 08:58:48 -07:00
Chris Robinson
01136ecd51
List the in-progress AL_SOFT_source_latency extension
2012-10-13 00:59:46 -07:00
Chris Robinson
1212523470
Implement the double and int64 source setters
...
Note that currently the int64 setters do not range check before being passed to
the int setters, erroneously chopping off the upper bits.
2012-10-13 00:56:39 -07:00
Chris Robinson
73105b2d4b
Fix copying the listener Up vector
2012-10-12 23:35:00 -07:00
Chris Robinson
06ab9cf70e
Use the enum to set the default distance model
2012-10-12 23:28:51 -07:00
Chris Robinson
a3d4868ef4
Initialize the listener velocity parameter
2012-10-12 08:01:02 -07:00
Chris Robinson
815b03855b
Apply the listener matrix to the listener velocity once
2012-10-12 07:56:37 -07:00
Chris Robinson
6750bbb1d7
Avoid needlessly copying the listener matrix
2012-10-12 07:45:20 -07:00
Chris Robinson
43c8c4fa29
Apply the listener position to the transformation matrix
2012-10-12 07:38:29 -07:00
Chris Robinson
25b8a95987
Check the distance against epsilon to determine if it matches
2012-10-12 07:10:51 -07:00
Chris Robinson
99fcd6f816
Properly scale wide-stereo sources
2012-10-10 04:08:35 -07:00
Chris Robinson
513c6db0d5
Avoid mixing to a send slot if the gain is too low
2012-10-10 03:52:45 -07:00
Chris Robinson
1b7f01b7cc
The max step is no longer dependent on the channel count
2012-10-10 03:40:01 -07:00
Chris Robinson
a4f21aaa64
Set Hrtf.Moving after setting the source params instead of after mixing
2012-10-09 06:54:21 -07:00
Chris Robinson
39bc2ba65c
Build the listener matrix separately
2012-10-09 06:19:36 -07:00
Chris Robinson
d598f82722
Don't include alListener.h from alMain.h
2012-10-09 04:48:12 -07:00
Chris Robinson
c22408cb2a
Store a pointer to the listener in the context
2012-10-09 04:44:27 -07:00
Chris Robinson
8c3419ed48
Define RESTRICT in config.h instead of alMain.h
2012-10-09 01:46:02 -07:00
Chris Robinson
a98361ebbe
Don't assume x86 or x64 to use IsProcessorFeaturePresent
2012-10-08 00:43:51 -07:00
Chris Robinson
999f0783c5
Fix a type conversion warning
2012-10-08 00:32:35 -07:00
Chris Robinson
2a6dd2f243
Fix a type mismatch
2012-10-07 08:19:09 -07:00
Chris Robinson
f3349221c6
Add missing include
2012-10-07 08:18:53 -07:00
Chris Robinson
65c7c468cc
Use IsProcessorFeaturePresent to detect SSE on Windows
2012-10-07 08:18:22 -07:00
Chris Robinson
ebdf636759
Revert "Use __cpuid from intrin.h in Windows when available"
...
This reverts commit 6b870714a9 .
2012-10-07 08:08:11 -07:00
Chris Robinson
6b870714a9
Use __cpuid from intrin.h in Windows when available
2012-10-07 05:36:25 -07:00
Chris Robinson
708f3ccc3d
Add trace, warn, and error markers to logged output
2012-10-07 04:31:31 -07:00
Chris Robinson
84f4afa5f2
Lock the device using the pulseaudio main loop
2012-10-07 02:25:59 -07:00
Chris Robinson
991e21a712
Avoid unnecessarily locking the list lock
2012-10-07 00:13:23 -07:00
Chris Robinson
1a9cf7ab80
Shorten format trace messages
2012-10-06 23:32:36 -07:00
Chris Robinson
9501f1cb9e
Define WIN32_LEAN_AND_MEAN when including windows.h in alMain.h
2012-10-06 21:36:15 -07:00
Chris Robinson
d52cb3708b
Include windows.h before cpuid.h to avoid __cpuid clashes
2012-10-06 21:30:03 -07:00
Chris Robinson
fa8d374613
Rename a couple functions
...
Since they don't use the stack anymore.
2012-10-05 06:44:55 -07:00
Chris Robinson
0d26b0dcc2
Put temporary storage in the device instead of on the stack
2012-10-05 06:42:26 -07:00
Chris Robinson
a6287fd407
Add a special resampler for matching sample rates
2012-10-05 06:03:19 -07:00
Chris Robinson
16bdf79d4c
Round up the device's default slot alignment
2012-10-05 00:32:41 -07:00
Chris Robinson
0b47844606
Fix potential buffer overflow with temp sample space
2012-10-05 00:27:29 -07:00
Chris Robinson
468759e6ab
Scale and round NumUpdates when PulseAudio changes the sample rate
2012-10-04 23:36:59 -07:00
Chris Robinson
f138774d78
Avoid void* arithmetic
2012-10-04 06:16:16 -07:00
Chris Robinson
068da3fe83
Make sure the output buffer pointer is updated in case multiple iterations are needed
2012-10-03 02:35:43 -07:00
Chris Robinson
29b11db13f
Update the example to use avcodec_decode_audio4
2012-10-03 02:01:52 -07:00
Chris Robinson
dca6254b35
Update some ffmpeg functions
2012-10-03 00:29:08 -07:00
Chris Robinson
cccec40e87
Fix some signed/unsigned comparisons
2012-10-02 18:55:39 -07:00
Chris Robinson
b5d9d8e005
Reset maxlength if PulseAudio updates the playback rate
2012-10-02 17:01:35 -07:00
Chris Robinson
825c5b5282
Use lrintf to fast convert floats to ints when possible
2012-09-28 04:20:55 -07:00
Chris Robinson
25ca179389
Decrease the default BUFFERSIZE to 2048
2012-09-28 03:30:57 -07:00
Chris Robinson
8bd0592e3f
Combine early reflections and late reverb in VerbPass
2012-09-27 17:30:35 -07:00
Chris Robinson
06a0d1b86e
Use an unsigned type for the sample position fraction
2012-09-27 13:52:45 -07:00
Chris Robinson
41b2c2f3bb
Remove an unneeded parameter from the resampler
2012-09-27 02:46:15 -07:00
Chris Robinson
68faef5b84
Ensure the device's default effect slot is properly aligned
2012-09-26 18:21:03 -07:00
Chris Robinson
abf1309fb6
Update a comment
2012-09-26 18:04:22 -07:00
Chris Robinson
d3891af36e
Ensure effect slots are aligned
2012-09-26 18:00:38 -07:00
Chris Robinson
ed82194260
Deinterlace audio when loading it into the stack.
...
It may be better to deinterlace it on load into the buffer, though I don't
imagine this will affect much. It could be nice for consistency's sake, though
it would also complicate things if we ever want to support direct access to
buffer data.
2012-09-26 17:16:25 -07:00
Chris Robinson
012e61b105
Round when calculating NumUpdates from PulseAudio's minreq
2012-09-25 11:32:49 -07:00
Chris Robinson
d19d7321d9
Remove an unnecessary include
2012-09-24 20:39:12 -07:00
Chris Robinson
d4e82d441e
Combine multiple loops into one
2012-09-24 19:07:07 -07:00
Chris Robinson
2ceea21f76
Avoid mixing silence to output
...
"Silence" being less than -100dB.
2012-09-24 15:33:44 -07:00
Chris Robinson
12327da4fe
Remove SSE resamplers. They aren't gaining us much this way.
2012-09-24 14:47:06 -07:00
Chris Robinson
52d403b0d1
Make sure PulseAudio sets an update size that's a multiple of 4 samples with SSE
2012-09-20 15:01:49 -07:00
Chris Robinson
ccd35bffe7
Help ensure the update size is a multiple of 4 with SSE
2012-09-20 14:54:28 -07:00
Chris Robinson
d1c93525ed
Fix matrix multiply used by the SSE cubic resampler
...
Also remove the 4-sample loop. It's not terribly effective.
2012-09-18 18:09:43 -07:00
Chris Robinson
f0732426f2
Precision control bits don't exist with SSE
2012-09-18 15:08:36 -07:00
Chris Robinson
eedbd1e81c
Improve a couple error traces with the HRTF loader
2012-09-18 12:15:43 -07:00
Chris Robinson
6005e7f27f
fpu_control.h is no longer used
2012-09-18 11:28:47 -07:00
Chris Robinson
e779e64c95
Win64 doesn't allow _controlfp or __control87_2 to set the precision control bits
2012-09-18 11:20:48 -07:00
Chris Robinson
3baaf99a6e
Fix a typo in a comment
2012-09-17 07:48:57 -07:00
Chris Robinson
4a86983a6f
Avoid correcting for more non-existing clicks
2012-09-16 09:04:37 -07:00
Chris Robinson
c19d9d3452
Don't try to correct for non-existing clicks.
2012-09-16 08:42:36 -07:00
Chris Robinson
79b6d89b3f
Explicitly give the wet buffer 1 channel
2012-09-16 08:27:50 -07:00
Chris Robinson
535e8fd0f7
Check the proper value for setting WetPendingClicks
2012-09-16 08:15:03 -07:00
Chris Robinson
a240abb6c8
Avoid building redundant mixers
2012-09-16 08:14:26 -07:00
Chris Robinson
dd9d30e248
Implement an SSE MixSend method
2012-09-16 06:19:39 -07:00
Chris Robinson
95535ce99e
Properly restore the SSE control word with __control87_2
2012-09-16 06:01:48 -07:00
Chris Robinson
df2e82da78
Properly handle the SSE control word
2012-09-16 05:35:38 -07:00
Chris Robinson
a1daec66e2
Use __control87_2 when available
2012-09-16 01:44:45 -07:00
Chris Robinson
657ee85136
Use a struct to store the FPU mode
2012-09-16 01:35:16 -07:00
Chris Robinson
965306b296
Add missing source property retrievals
2012-09-14 09:02:36 -07:00
Chris Robinson
28086f6cb7
Implement an SSE cubic resampler
2012-09-14 07:01:58 -07:00
Chris Robinson
45bb010b28
Shorten a warning
2012-09-14 05:05:20 -07:00
Chris Robinson
90e0c74721
Implement an SSE linear resampler
2012-09-14 04:48:53 -07:00
Chris Robinson
a20341ac2a
Ensure the ResampledBuffer is aligned
2012-09-14 04:16:49 -07:00
Chris Robinson
7635afcb52
Use a source param for the resampler and move them to the mixer source
2012-09-14 04:13:18 -07:00
Chris Robinson
74aee374a6
Remove an unused header
2012-09-14 03:10:12 -07:00
Chris Robinson
4f70766b95
Move a couple macros to more appropriate headers
2012-09-14 02:52:37 -07:00
Chris Robinson
9f58edd7a8
Fix up some more header includes
2012-09-14 02:42:36 -07:00
Chris Robinson
0f3a575a09
Don't include alu.h in alMain.h
2012-09-14 02:14:29 -07:00
Chris Robinson
ec74fb9ba2
Enable flush-to-zero mode when possible
2012-09-14 01:10:19 -07:00
Chris Robinson
ff809f2271
Move a couple methods to where they're used
2012-09-12 07:57:50 -07:00
Chris Robinson
41f52fdd6a
Restore support for the previous mhr format
2012-09-12 07:25:05 -07:00
Chris Robinson
aa827790bd
Add a note about the hrtf_tables filename markers
2012-09-12 05:34:42 -07:00
Chris Robinson
38e7bd5359
Properly scale the HRTF delays when writing them
2012-09-12 05:11:53 -07:00
Chris Robinson
613ce3f976
Update fnamelist after handling % markers
2012-09-12 04:55:03 -07:00
Chris Robinson
ce8a0a9fd5
Use PATH_MAX for the fname length
2012-09-12 03:45:26 -07:00
Chris Robinson
f59e4ba7c2
Improve parsing hrtf_tables filenames
2012-09-12 03:41:41 -07:00
Chris Robinson
df469bfdea
Fix HRTF data format description
2012-09-11 19:55:45 -07:00
Chris Robinson
f4642953d4
Warn about SSE performance with non-multiple-of-4 update sizes
2012-09-11 11:17:41 -07:00
Chris Robinson
88b0c30152
Use the correct size for defaultCoeffs
2012-09-11 10:43:53 -07:00
Chris Robinson
01183ad93b
Minor cleanups for variable declarations
2012-09-11 09:40:08 -07:00
Chris Robinson
3f97af4c8c
Don't use count-specific functions to write to the output buffer
2012-09-11 06:41:24 -07:00
Chris Robinson
4c5cb2189b
Use a non-interleaved DryBuffer
2012-09-11 06:32:42 -07:00
Chris Robinson
98ff6f990a
Do the filtering separately from the mixing
2012-09-11 05:56:19 -07:00
Chris Robinson
aaa81e00b7
Use HUGE_VAL instead of dividing by 0 for infinity, where possible
2012-09-11 04:45:43 -07:00
Chris Robinson
1c44a96768
Silence a couple MSVC warnings
2012-09-11 03:29:00 -07:00
Chris Robinson
34fef456c8
Add example HRTF definition files for makehrtf
2012-09-11 03:19:03 -07:00
Chris Robinson
7e81918f7b
Update HRTF code
...
This update allows for much more flexibility in the HRTF data. It also allows
for HRTF table file names to include "%r" to represent the device's playback
rate (e.g. if you set hrtf-%r.mhr, then it will try to use hrtf-44100.mhr or
hrtf-48000.mhr depending if the device's output rate is 44100 or 48000,
respectively).
The makehrtf utility has also been updated to support more options and input
file formats, as well as the new mhr format.
2012-09-11 02:11:51 -07:00
Chris Robinson
1b840a3db8
Again try to get _WIN32_IE to behave right with MinGW
2012-09-11 01:39:05 -07:00
Chris Robinson
4e440fff62
Remove a hack for MinGW
2012-09-10 00:19:13 -07:00
Chris Robinson
81208acd6e
Add missing returns
2012-09-09 21:27:54 -07:00
Chris Robinson
af3b5c23c8
Try to ensure mixing samples in multiples of 4
2012-09-09 04:27:47 -07:00
Chris Robinson
9f208417df
Use the right method to clear a __m128 to 0
2012-09-09 04:09:31 -07:00
Chris Robinson
f1ce139997
Use SSE to do 4 samples at once (non-HRTF direct mix), instead of to apply a matrix row
...
MaxCHannels no longer needs to be a multiple of 4 now, either.
2012-09-09 04:02:54 -07:00
Chris Robinson
f56dddfa73
Implement MixDirect_SSE separately from the C and Neon versions
2012-09-09 00:53:54 -07:00
Chris Robinson
2bf1979d4a
Move the target effect slot to the SendParams struct
2012-09-08 22:32:30 -07:00
Chris Robinson
89cab3cd39
Remove STACK_DATA_SIZE in favor of BUFFERSIZE
2012-09-08 22:09:34 -07:00
Chris Robinson
6723d27e06
Remove some unused code
2012-09-08 21:53:04 -07:00
Chris Robinson
1c03025090
Separate the resampling and mixing steps
2012-09-08 21:34:36 -07:00
Chris Robinson
7a37a63b8e
Workaround MinGW __declspec(align(x)) bug
2012-09-08 19:24:07 -07:00
Chris Robinson
2b5fdad2c8
Free the global ALSA config after opening capture devices too
2012-09-02 14:26:46 -07:00
Lauri Kasanen
a6f9ede849
alsa: Free the global config cache to remove a lot of reported leaks
...
Signed-off-by: Lauri Kasanen <curaga@operamail.com >
2012-09-02 14:16:23 -07:00
Chris Robinson
78dac1bf4a
Set the error if setting a new integer source offset fails
2012-09-01 19:31:43 -07:00
Chris Robinson
795909c39e
Minor cleanups for mixer_inc
2012-08-29 02:43:19 -07:00
Chris Robinson
3c042a054d
Add an SSE-enhanced path for applying the mixer matrix
2012-08-29 01:56:04 -07:00
Chris Robinson
332d66c183
Make sure device buffers are 16-byte aligned
2012-08-29 01:40:42 -07:00
Chris Robinson
de006947ac
Increase MaxChannels to be a multiple of 4
2012-08-29 01:11:55 -07:00
Chris Robinson
8a128e5d25
Set an error closer to where it occurs for setting source properties
2012-08-29 00:25:01 -07:00
Chris Robinson
34cbacf424
Add helpers to set source properties
2012-08-28 22:16:55 -07:00
Chris Robinson
f2fa5e7c88
Print the error when reporting snd_pcm_delay failure
2012-08-27 22:52:37 -07:00
Chris Robinson
3b735cc34a
Use _aligned_free for pointers returned by _aligned_malloc
2012-08-24 17:45:16 -07:00
Chris Robinson
238caa1492
Constify some parameters
2012-08-21 16:01:11 -07:00
Chris Robinson
e5ebe345ad
Add the option to retrieve the source offset and latency in seconds
2012-08-20 15:57:27 -07:00
Chris Robinson
965608356f
Fix getting the RW offsets with alGetSourcei64vSOFT
2012-08-20 15:33:28 -07:00
Chris Robinson
bc1ce7b3ac
Add methods to get source properties as doubles
2012-08-20 15:26:35 -07:00
Chris Robinson
6a3619c40f
Fix a parameter name
2012-08-20 14:50:43 -07:00
Chris Robinson
50fa9a44be
Properly export alGetSource3i64SOFT
2012-08-20 14:48:08 -07:00
Chris Robinson
4937a48bd9
Use helper functions to read source properties
...
And make sure the 64-bit int getters to get 32-bit int values
2012-08-20 14:16:58 -07:00
Chris Robinson
987a81c4de
Use the correct 64-bit int type for the extension functions
2012-08-20 12:22:00 -07:00
Chris Robinson
f5e0500df4
Add a macro to help make a 64-bit value
2012-08-19 22:31:55 -07:00
Chris Robinson
37924887e8
Use a default method to provide a dummy latency
2012-08-19 12:31:59 -07:00
Chris Robinson
0db7c4131b
Hold the device lock with PulseAudio between mixing and writing
2012-08-18 17:20:20 -07:00
Chris Robinson
a56a974149
Hold the device lock with ALSA between mixing and writing
2012-08-18 17:18:53 -07:00
Chris Robinson
af7f3768fa
Use non-blocking access for ALSA playback
2012-08-18 17:01:56 -07:00
Chris Robinson
0865db564f
Move the device lock into the backend function table
...
For backend-specific implementations: this should hold the audio mixer loop for
playback devices, and provide recursive mutex behavior.
2012-08-18 15:58:04 -07:00
Chris Robinson
2b020040b4
Keep the backend device open until the last reference is released
...
This should generally happen with the next ALCdevice_DecRef call unless the
device is in the middle of being used in another thread, in which case it's
probably best to not remove the resources.
2012-08-18 14:49:42 -07:00
Chris Robinson
3ae5fcbd7e
Add the start of AL_SOFT_source_latency
...
This extension will provide a way for apps to get accurate latency and playback
position information
2012-08-18 11:06:39 -07:00
Chris Robinson
ac4fc4026c
Add a device method to retrieve the active latency
...
This is effectively the time until the next update will be heard by the user,
or the closest approximation thereof, in nanoseconds.
2012-08-17 13:38:52 -07:00
Chris Robinson
9737f68315
Place the alignment attribute before the variable declaration
2012-08-16 10:42:48 -07:00
Chris Robinson
2a8c26e390
Remove extra parenthesis used in the aligned attribute declaration
2012-08-16 10:33:37 -07:00
Chris Robinson
3c395a82db
Fix aligned allocator fallback
2012-08-16 10:30:13 -07:00
Chris Robinson
15c6b9b165
MSVC wants __declspec(align), not __declspec(aligned)
2012-08-16 10:23:25 -07:00
Chris Robinson
147fd9de4e
Avoid dynamic handling of libsndio
...
This makes it safer and easier to handle as OpenBSD updates it
2012-08-16 10:12:50 -07:00
Chris Robinson
0bca771a88
Apply HRTF mixer coefficients with stepping using SSE
2012-08-15 08:19:04 -07:00
Chris Robinson
f4ff63e271
Check the max CPUID functions before calling them
2012-08-15 06:28:45 -07:00
Chris Robinson
bbcf4e8c1d
Make sure sources are 16-byte aligned
...
They contain fields that require 16-byte alignment for SSE (and Neon?)
acceleration.
2012-08-15 05:54:13 -07:00
Chris Robinson
2859357939
Add wrapper methods to ensure aligned allocations
2012-08-15 05:50:40 -07:00
Chris Robinson
2cbb565d09
Ensure some HRTF-related parameters are aligned
2012-08-15 04:10:41 -07:00
Chris Robinson
4d157d2849
Make sure the working coefficients are aligned for the SSE mixer
2012-08-15 03:43:36 -07:00
Chris Robinson
64cd763e19
Remove unused filter functions
2012-08-15 01:48:47 -07:00
Chris Robinson
c3f387da70
Check for and use the -msse switch when dealing with SSE intrinsics
2012-08-15 01:46:42 -07:00
Chris Robinson
6ebeb3b4f7
Check the correct macro for ARM Neon support
2012-08-15 01:32:17 -07:00
Chris Robinson
2e18baa3c8
Don't bother handling MMX since we don't use it
2012-08-15 01:29:19 -07:00
Chris Robinson
c9e87a19a9
Add cmake options to disable or require support for CPU extensions
2012-08-15 01:24:50 -07:00
Chris Robinson
3b87e29e63
Move mixers into separate source files
2012-08-15 01:01:55 -07:00
Chris Robinson
e9a20cb985
Add an SSE-enhanced HRTF mixer using intrinsics
...
Not as good as it could be, but it's something
2012-08-14 03:53:07 -07:00
Chris Robinson
cfc5205569
Fix a typo
2012-08-13 22:31:58 -07:00
Chris Robinson
17dfaa3aae
Add a config option to disable use of CPU extensions
2012-08-13 10:37:49 -07:00
Chris Robinson
0a3eba08d8
Allow building multiple types of mixers, selecting based on CPU caps
2012-08-13 09:18:46 -07:00
Chris Robinson
add53e28c2
Check for some CPU extensions
2012-08-13 09:07:01 -07:00
Chris Robinson
f42f655ea9
Don't unlock the pulseaudio mainloop when mixing
...
Lock contention could cause a lengthy delay between mixing and writing the
audio. There shouldn't be any risk of dead-locking as the device lock should
never be held when the mainloop gets locked.
2012-08-12 03:52:38 -07:00
Chris Robinson
8304fc1bef
Handle the scalar values a bit better
2012-08-11 06:20:24 -07:00
Chris Robinson
ea84fee952
Use a more efficient method to blend HRTF delays and coefficients
2012-08-11 02:16:34 -07:00
Chris Robinson
d6fd52a0e5
Add an option for wide stereo sources
...
Replaces the old stereodup option
2012-08-09 05:38:07 -07:00
Chris Robinson
0dde7dd88a
Use a more efficient method to offset the speaker angles when computing gains
2012-08-09 02:31:19 -07:00
Chris Robinson
1323e11701
Interpolate between HRTF delay samples using the delay fraction
2012-07-20 15:08:11 -07:00
Chris Robinson
7ac9944bb3
Increase the directional change sensitivity for the HRTF delta
2012-07-20 14:38:49 -07:00
Chris Robinson
e32e2fd6b8
Fix an inadvertent change in the HRTF coefficient stepping value array size
2012-07-19 11:49:43 -07:00
Chris Robinson
6bd535bed0
Use wrappers for float-typed math functions
2012-06-29 02:12:36 -07:00
Chris Robinson
524c88c402
Test the squared length of a vector before normalizing
2012-06-28 20:54:10 -07:00
Chris Robinson
1c096b101d
Minor typo fixes
2012-06-28 19:57:23 -07:00
Chris Robinson
583dc8dbca
Don't use all caps for enum value names
2012-06-28 18:49:49 -07:00
Chris Robinson
befa4e7528
Don't try to set FE_TOWARDZERO when it's not available
2012-06-28 18:27:45 -07:00
Chris Robinson
bc6751237c
Clamp the Y position before trying to get the elevation
2012-06-28 17:26:00 -07:00
Chris Robinson
6f3be31b60
Add some includes
2012-06-20 03:01:19 -07:00
Chris Robinson
8001d86751
Add missing include
2012-06-19 22:15:19 -07:00
Chris Robinson
acca3e5a21
Use a proper method to wait for a PulseAudio operation
2012-06-19 10:37:09 -07:00
Chris Robinson
d17f835e74
Remove an unused include
2012-06-19 04:02:55 -07:00
Chris Robinson
ef1f8aa9a0
Don't needlessly verify a device
2012-06-19 00:25:45 -07:00
Chris Robinson
a5ac6eb524
Remove an outdated comment about _REENTRANT
2012-06-18 02:04:10 -07:00
Chris Robinson
ac84d95c6e
Silence some GCC warnings
2012-06-17 22:17:03 -07:00
Chris Robinson
785f52aa29
Only try float32 with DSound when specifically requested
...
Some hardware drivers seem to have a bug where a buffer descriptor with a
32-bit float sample type ends up creating a non-float32 buffer.
2012-06-17 04:13:01 -07:00
Chris Robinson
051195a991
Avoid failing if ALSA can't set a buffer or period time near to our request
...
These functions should not fail, but there seem to be bugs that cause them to
sometimes. We're flexible enough to handle almost anything it throws back at us
though, so anything is better than nothing here.
2012-06-16 23:02:59 -07:00
Chris Robinson
90ca6675c2
Allow PulseAudio to spawn a server by default
...
Since only one backend is used at a time now, the issues with device ownership
aren't really prevelant anymore. An application that tries to open all
enumerated devices won't run into the problem of spawning a server and end up
preventing other backend devices from working.
2012-06-16 22:37:45 -07:00
Chris Robinson
0db9730a50
Add an option to allow PulseAudio to move streams
...
This could be made the default, if there's a safe way to update the AL device
specifier.
2012-06-16 22:32:19 -07:00
Chris Robinson
ad2643d8af
Clarify some comments, fix some definition ordering, and add some includes
2012-06-15 23:46:09 -07:00
Chris Robinson
46840ee787
Add DEVPKEY_Device_FriendlyName declaration for mingw-w64 compatibility
2012-06-14 18:10:10 -07:00
Chris Robinson
1e0282a238
Add some more entries to .gitignore
2012-05-09 16:30:22 -07:00
Chris Robinson
259e4f5b38
Rename AllDevice -> AllDevices
2012-05-09 16:28:16 -07:00
Chris Robinson
e44229c74e
Clamp the ALSA period time between min and max if setting near fails
2012-05-08 01:23:53 -07:00
Chris Robinson
92827cc467
Clamp the ALSA buffer time between min and max if setting near fails
...
It seems there's some bugs with snd_pcm_hw_params_set_buffer_time_near that
cause it to return "invalid argument" despite a valid nearby buffer time being
available. Clamping the buffer time seems to mitigate the issue a bit.
2012-05-07 11:42:59 -07:00
Chris Robinson
dd3d5bc2d4
Look for libsndio.so.2 instead of libsndio.so
2012-05-05 16:19:51 -07:00
Chris Robinson
b4c7b3309a
Only use _FPU_GETCW and _FPU_SETCW for x86 targets
2012-05-03 12:15:51 -07:00
Chris Robinson
010a66487d
Use 2 chained one-pole filters for the wet path
2012-04-30 09:33:00 -07:00
Chris Robinson
aed35fd811
Use ComputeAngleGains for multi-channel sources and remove the unused lookup table stuff
2012-04-29 05:04:46 -07:00
Chris Robinson
8d9838012d
Remove the stereodup option
...
There's better ways to do it now with "wide" sound sources.
2012-04-29 04:44:53 -07:00
Chris Robinson
57d36ec582
Fix a couple comment typos, and a minor cleanup
2012-04-29 03:39:08 -07:00
Chris Robinson
febc2a50cb
Use ComputeAngleGains for 3D sounds
2012-04-28 13:06:16 -07:00
Chris Robinson
74e128bd0f
Fix ComputeAngleGains
...
The old code would improperly handle speakers just inside or outside the
coverage area if it had to be inverted. It also didn't properly handle when
only one speaker was outside of the covered area.
2012-04-28 12:12:02 -07:00
Chris Robinson
c34d78f417
Use ComputeAngleGains for the echo and dedicated effects
2012-04-28 08:24:09 -07:00
Chris Robinson
611bd0b2d3
Add a method to calculate gains given a sound point and its half-width, and use it for reverb
...
The half-width ranges from 0 to pi, and essentially specifies the coverage area
around the listener. At 0, it's an infinitely small point sound and behaves
like a usual panning sound. At pi/2 it covers half the area, and at pi it
covers the whole area.
2012-04-28 08:21:53 -07:00
Chris Robinson
267d38cf20
Flip the parameters to aluCart2LUTpos, so it behaves a bit more like atan2
2012-04-28 03:58:58 -07:00
Chris Robinson
26456f13e1
Pass the direct/send params to the mixer instead of accessing through the source
2012-04-28 03:31:13 -07:00
Chris Robinson
2484c44db0
Apply the listener gain with the filter
2012-04-28 03:13:37 -07:00
Chris Robinson
a8a13fcbd8
Move the HrtfParams into the DirectParams
2012-04-28 02:23:53 -07:00
Chris Robinson
0a193c5645
Move the direct and send params into separate different types
2012-04-28 01:32:52 -07:00
Chris Robinson
2450ee1723
Use separate methods for the dry and wet mixing loops
2012-04-27 23:46:51 -07:00
Chris Robinson
67f1cdfcbe
Store the speaker angles in the device
2012-04-27 07:38:17 -07:00
Chris Robinson
549d542a31
Reorganize some ALsource fields
2012-04-27 01:36:13 -07:00
Chris Robinson
2cdb58fb85
The mixer always uses floats
2012-04-26 07:50:17 -07:00
Chris Robinson
68ab232364
Use a separate loop to actually update DataPosFrac and DataPosInt
2012-04-26 06:44:37 -07:00
Chris Robinson
871d61f3f9
Add and fixup some ALsource comments
2012-04-26 03:26:22 -07:00
Chris Robinson
b08bd3746e
Add AL_EXT_SOURCE_RADIUS to alext.h
2012-04-26 02:05:49 -07:00
Chris Robinson
39ab0b0aa3
Add AL_EXT_STEREO_ANGLES to alext.h
2012-04-26 01:19:25 -07:00
Chris Robinson
5c70cacc13
Fixup some comments in ALu.c
2012-04-26 00:59:17 -07:00
Chris Robinson
8c2cd057b2
Fix a minor typo
2012-04-25 19:37:12 -07:00
Chris Robinson
fdc4133ac9
Partially convert alEffect.c and alFilter.c to the new error handling
2012-04-25 00:24:02 -07:00
Chris Robinson
3833c021c0
Move a comment
2012-04-25 00:03:01 -07:00
Chris Robinson
cafbd9461e
Fix up alEffect.c and alFilter.c a bit
2012-04-24 23:06:10 -07:00
Chris Robinson
6995ac1ed2
Change alAuxEffectSlot.c to the new error handling
2012-04-24 22:57:23 -07:00
Chris Robinson
58e3dc3d52
Add a SIGTRAP for when alGetError is called without a context
2012-04-24 21:41:01 -07:00
Chris Robinson
3e49e79140
Couple small error handling fixups
2012-04-24 03:52:21 -07:00
Chris Robinson
dec8e81211
Change alState.c to the new error handling
2012-04-24 03:09:28 -07:00
Chris Robinson
4188a5f3f3
Fix compiling al.h with C++
2012-04-24 02:51:23 -07:00
Chris Robinson
31d124582b
Switch alBuffer.c to the new error handling scheme, and get rid of more hungarian notation
2012-04-24 00:17:05 -07:00
Chris Robinson
248e079301
Switch alListener.c to the new error handling scheme, and get rid of more hungarian notation
2012-04-23 21:35:05 -07:00
Chris Robinson
5ce850570f
Add try/catch-like macros to handle errors, and convert alSource.c to use them
2012-04-23 19:46:05 -07:00
Chris Robinson
648464a2da
Check the right playback device file with OSS
2012-04-22 05:06:44 -07:00
Chris Robinson
29f77003c0
Some alSource.c cleanups
2012-04-21 05:56:03 -07:00
Chris Robinson
dfa38ed7a5
Reformat alc/h and al.h, and redo the comments
2012-04-21 04:34:08 -07:00
Chris Robinson
66c918c84b
Remove export pragmas from headers
...
Available information suggests it's only useful for Mac OS9 and earlier (not
OSX).
2012-04-20 22:53:47 -07:00
Chris Robinson
77f55da6c7
Use a macro to declare the function and enum list members
2012-04-20 22:38:03 -07:00
Chris Robinson
d6af7cdcb2
Rename another variable to avoid hungarian notation
2012-04-20 22:37:36 -07:00
Chris Robinson
0ad8047820
Combine ALCenum and ALenum lists
2012-04-20 01:24:58 -07:00
Chris Robinson
2115f578e9
Reorganize ALC functions and fixup some comments
2012-04-20 01:18:38 -07:00
Chris Robinson
511b4790d0
Remove hungarian notation from dsound and mmdevapi
2012-04-19 23:42:02 -07:00
Chris Robinson
d6491e21f9
Remove some more hungarian notation
2012-04-19 23:28:34 -07:00
Chris Robinson
cff0f938e5
Remove hungarian notation from the winmm backend
2012-04-19 23:22:11 -07:00
Chris Robinson
5418519637
Remove some more hungarian notation
2012-04-19 23:00:58 -07:00
Chris Robinson
b023dbe7b8
Remove hungarian notation from the device and context structs
2012-04-19 22:50:11 -07:00
Chris Robinson
8092cd9205
Remove hungarian notation from some function parameters
2012-04-19 22:40:40 -07:00
Chris Robinson
60da5bd338
Remove an unused field
2012-04-19 22:32:04 -07:00
Chris Robinson
c9e64596a4
Use a consistent name for the self-id field
2012-04-19 22:28:01 -07:00
Chris Robinson
08bd5e8b37
Fix comment and rename the buffer's self-id
2012-04-19 22:14:02 -07:00
Chris Robinson
125b743e5c
Remove hungarian notation from sources
2012-04-19 21:46:29 -07:00
Chris Robinson
9a3eb397f4
Print the device name in printALCInfo
2012-04-16 23:27:13 -07:00
Chris Robinson
84c1f2bfd0
Avoid shadowing a couple variables
2012-04-16 23:09:36 -07:00
Chris Robinson
d7ba49ea62
Clear the position fraction when setting a new source offset
2012-04-16 22:13:39 -07:00
Chris Robinson
e47557630e
Use a double to store the source offset and don't use milliseconds for seconds
2012-04-16 22:11:03 -07:00
Chris Robinson
f6a1e53f19
Read ALSOFT_TRAP_*ERROR when reading the config
2012-04-16 20:13:50 -07:00
Chris Robinson
a0a015f19f
Set a 1MB stack size for created threads
2012-04-16 19:15:48 -07:00
Chris Robinson
e3bea63f94
Check for a recent libavutil for the example, too
2012-04-07 12:35:59 -07:00
Chris Robinson
6b154025ab
Release 1.14
2012-03-28 08:55:17 -07:00
Chris Robinson
b9b2bdb37a
Make sure we have a recent-enough ffmpeg
2012-03-27 08:52:21 -07:00
Chris Robinson
7b35c77062
Add a missing round() for MSVC
2012-03-27 08:44:08 -07:00
Chris Robinson
c23cfdcfa1
Make sure M_PI is defined for makehrtf
2012-03-27 08:20:04 -07:00
Chris Robinson
929e9bfac1
Avoid DOS-style line-endings and stdint types for the makehrtf utility
2012-03-25 19:57:40 -07:00
Chris Robinson
b51afb74da
Add a utility to generate OpenAL Soft's HRTF data from the MIT KEMAR data
2012-03-22 22:45:03 -07:00
Chris Robinson
5a43cd3b64
Use avformat_free_context to free a format context that failed to open
2012-03-21 13:54:13 -07:00
Chris Robinson
5d08563975
Handle very small speed of sound values
2012-03-18 08:20:08 -07:00
Chris Robinson
adb83ad3c0
Avoid converting positions to meters
2012-03-18 08:09:59 -07:00
Chris Robinson
2d0e028993
Base the initial reverb decay on the source's dry path attenuation
2012-03-18 08:06:21 -07:00
Chris Robinson
703d72f20e
Use the correct loop count for reading the elevation offsets from external HRTF files
2012-03-17 03:42:07 -07:00
Chris Robinson
b7d67d8bcc
Don't error when querying unknown enums for the channel config and sample format
2012-03-15 15:22:58 -07:00
Chris Robinson
7e5b13aabd
Finalize ALC_SOFT_loopback
2012-03-15 15:21:15 -07:00
Chris Robinson
7fbcb4b9e6
Use the actual distance from the ref distance for air absorption and initial reverb decay
2012-03-14 22:45:52 -07:00
Chris Robinson
767a5b3c73
Mark the GlobalContext pointer as volatile
2012-03-14 00:13:16 -07:00
Chris Robinson
a08080bd82
Avoid modifying the ALCdevice in portaudio's open method
2012-03-13 22:18:51 -07:00
Chris Robinson
415bf58a06
Store the portaudio stream parameters with the device
2012-03-13 21:52:47 -07:00
Chris Robinson
3b517bfa59
Initialize the default effect after opening the device
2012-03-13 19:02:26 -07:00
Chris Robinson
e356527a88
Rename GetReverbEffect to LoadReverbPreset
2012-03-13 15:48:51 -07:00
Chris Robinson
07e34cc3cf
Use enums to specify the default channel configuration and sample type
2012-03-13 15:32:44 -07:00
Chris Robinson
f7f1dd1346
Initialize the default effect when opening the device and update it with the other effect slots
2012-03-13 15:07:38 -07:00
Chris Robinson
92ccacdc77
Pass the device to InitializeEffect and return the error enum from it
2012-03-13 14:58:34 -07:00
Chris Robinson
b5ed2a5351
Pass a device to the effect update functions
2012-03-13 14:49:58 -07:00
Chris Robinson
55c5e4fe92
Rename ForcedEffect to DefaultEffect
2012-03-13 14:38:09 -07:00
Chris Robinson
3b165809cc
Minor coreaudio fix, and make sure to set the device name
2012-03-13 13:48:42 -07:00
Chris Robinson
5c59e6e704
Try to ensure the full mmdevapi buffer is used
2012-03-13 01:39:57 -07:00
Chris Robinson
ef2f237276
Try to ensure at least 2 mmdevapi updates
2012-03-13 01:35:31 -07:00
Chris Robinson
0af14c7a11
Try to find a multiple of mmdevapi's period size nearest to the wanted update size
2012-03-13 01:32:15 -07:00
Chris Robinson
8ef777ebbe
Restore the FPU mode in an error path
2012-03-12 23:58:12 -07:00
Chris Robinson
305d790a19
Revert the default stereo layout back to -90 and +90 degrees
...
For the time being, until better stereo spatialization can be implemented and
headphones can be better detected.
2012-03-12 22:49:10 -07:00
Chris Robinson
1f3c1091d3
Finalize AL_SOFT_direct_channels
2012-03-12 22:46:13 -07:00
Chris Robinson
663b43f4f1
Attempted fix for the coreaudio backend
2012-03-12 21:58:40 -07:00
Chris Robinson
3e0cf0f239
Simply (hopefuly) the explanation about the HRIR set ordering
2012-03-12 18:42:21 -07:00
Chris Robinson
560f34e3df
Channel angle is already in radians, not degrees
2012-03-12 18:29:46 -07:00
Chris Robinson
335232207d
With DirectChannels enabled, don't try to mix channels that have no matching output
2012-03-12 18:27:25 -07:00
Chris Robinson
93e71f0554
Some HRTF clarifications
2012-03-12 17:54:16 -07:00
Chris Robinson
0efbf7bc9e
Fix typo
2012-03-12 17:15:44 -07:00
Chris Robinson
3daaa078fb
Add a note about the HRTF data being minimum-phase reconstructed
2012-03-12 17:14:42 -07:00
Chris Robinson
647448a32b
Reset HAVE_MMDEVAPI before checking the backends
2012-03-12 15:33:56 -07:00
Chris Robinson
f7a8e3db35
Don't assume the calculated HRTF delta for the gain difference is less than 1
2012-03-12 13:31:19 -07:00
Chris Robinson
7747c320a8
Remove an unused property key definition
2012-03-12 12:56:52 -07:00
Chris Robinson
ebc69bc870
Minor corrections to the hrtf.txt
2012-03-12 00:58:14 -07:00
Chris Robinson
10e2b7ecbf
Document the hrtf_tables config option
2012-03-11 19:29:19 -07:00
Chris Robinson
842a698f2b
Add a text file explaining OpenAL Soft's HRTF support and data file format
2012-03-11 19:27:40 -07:00
Chris Robinson
f5f519aa80
Properly make the source velocity relative to the listener velocity
2012-03-09 23:53:45 -08:00
Chris Robinson
7db29a2332
Clamp the upper and lower bound of the doppler velocity scale more like the original
2012-03-09 22:38:26 -08:00
Chris Robinson
6e70ae9958
The listener velocity is specified in world coordinates, too
2012-03-08 18:27:05 -08:00
Chris Robinson
e190fc9416
Refactor the doppler shift calculations
2012-03-08 18:19:15 -08:00
Chris Robinson
1a4a0abd1a
Pin the DLL for Windows
...
The mmdevapi backend does not react well to being unloaded dynamically. It has
a message-handling thread running in the background which can't quit before
DllMain is called with DLL_PROCESS_DETACH, at which point it's too late to
safely message and wait for it shutddown, thus it can continue running after
the DLL is unloaded from memory.
2012-03-08 17:42:16 -08:00
Chris Robinson
dddacc25a5
Store a duplicate of the mmdevapi device ID
2012-03-06 13:15:55 -08:00
Chris Robinson
2ba2da467c
Add a comment explaining the pulseaudio prop_filter
2012-03-06 12:01:15 -08:00
Chris Robinson
f2b64fd111
Update the ALCdevice in winmm's reset method instead of open
2012-03-06 10:14:05 -08:00
Chris Robinson
6623f69476
Mark the device as running for capture, too
2012-03-05 15:10:02 -08:00
Chris Robinson
db36574667
Hold the list lock while calling the backend
...
Pretty ugly, but we mustn't hold the device lock
2012-03-05 14:53:25 -08:00
Chris Robinson
3131104595
Filter out a couple pulseaudio stream properties by setting them to 0-length data
...
It seems Qt/Phonon will globally set media.role and phonon.streamid properties,
causing them to apply even to our streams if they happen to be loaded in the
same process. This is particularly a problem because media.role gets set to
"event", preventing the streams from showing in pavucontrol.
2012-03-05 13:00:51 -08:00
Chris Robinson
f64bdc4bd4
Returned pa_operations can be NULL
2012-03-05 08:37:50 -08:00
Chris Robinson
fe6e532c87
Use a separate backend callback to start playback of the device
...
This allows us to properly update the ALCdevice and its resources with the new
parameters before starting playback, instead of expecting the mixer to block
and wait after it has begun.
This also lets us avoid holding the device lock while resetting and starting
the device, which helps prevent lock inversion on some backends (ie, one thread
locking A then B, and another thread locking B then A), ultimately allowing
certain backends to asynchronously update the ALCdevice without risk of lockup.
Capture still has issues here, however.
2012-03-05 07:11:09 -08:00
Chris Robinson
5cdeeb47f3
Avoid some uninitialized warnings
2012-03-05 00:28:57 -08:00
Chris Robinson
bc1bb7f90f
Print and handle errors from pa_stream_readable_size
2012-03-05 00:11:28 -08:00
Chris Robinson
0f0141b9dd
Set prebuf to 0 since we're handling the stream start manually
2012-03-04 09:24:07 -08:00
Chris Robinson
302c08a14b
Enforce range limits on periods and period_size.
2012-03-04 05:44:37 -08:00
Chris Robinson
b643f13a6e
Make sure the pulse stream is properly started and better handle buffer size changes
2012-03-04 05:30:42 -08:00
Chris Robinson
487d05a73e
Invert a nested loop
2012-03-03 10:31:27 -08:00
Chris Robinson
91ed077eba
Handle BS2B cross-feed right after click removal
2012-03-03 09:41:16 -08:00
Chris Robinson
49433c2074
Slight correction for handling the wave writer backend's timer wrapping
2012-03-03 08:50:15 -08:00
Chris Robinson
a93ff6ef3c
Slight correction for handling the null backend's timer wrapping
2012-03-03 08:47:23 -08:00
Chris Robinson
44e10c4f69
Remove some unneeded pulseaudio calls
2012-03-02 09:46:36 -08:00
Chris Robinson
7a832c4522
Don't unload libpulse
...
This sometimes spawns esoteric errors in dlclose
2012-03-02 09:27:30 -08:00
Chris Robinson
7d0faba424
Remove some unneeded markers
2012-03-02 09:08:17 -08:00
Chris Robinson
01d942628b
Set prebuf to the expected buffer size
...
This is to make sure the stream starts even if PulseAudio increases tlength.
2012-03-02 05:38:11 -08:00
Chris Robinson
2a9012c94d
Don't rely on PulseAudio to wake us up using early requests
2012-03-02 04:51:29 -08:00
Chris Robinson
b571926a6d
Avoid a leak if PortAudio fails to give a usable channel count
2012-03-02 02:14:04 -08:00
Chris Robinson
f784aa704d
Make sure the device gets stopped when closing even if there's no contexts
2012-03-02 00:10:24 -08:00
Chris Robinson
153affac12
Recalculate the new update size using the device's UpdateSize
2012-03-02 00:08:56 -08:00
Chris Robinson
e5d365a3d9
Avoid an unnecessary doCapture check
2012-03-01 20:47:49 -08:00
Chris Robinson
6ffaabeb75
Update the layout config option names
2012-03-01 10:06:55 -08:00
Chris Robinson
06debb153d
Fix a memory leak
2012-03-01 09:56:25 -08:00
Chris Robinson
51e6786f31
Set the func list after successfully connecting to PulseAudio
2012-03-01 09:22:37 -08:00
Chris Robinson
50ef19720d
Make alcLoopbackOpenDeviceSOFT take a standard "device" name for a parameter
2012-03-01 08:30:21 -08:00
Chris Robinson
db4d62d17c
Print out a more descriptive name for the opened device in openal-info
2012-03-01 06:59:51 -08:00
Chris Robinson
8d24bd720f
Don't use GUIDs to ID mmdevapi devices, and don't enumerate if not needed
2012-03-01 06:07:00 -08:00
Chris Robinson
55556f0e6c
Avoid enumerating when opening the default ALSA device
2012-03-01 04:58:28 -08:00
Chris Robinson
7d9cabebff
Use NULL to open the default PulseAudio device, and get the actual device name from the stream
2012-03-01 04:37:40 -08:00
Chris Robinson
9602c46809
Move some function definitions down
2012-03-01 04:12:47 -08:00
Chris Robinson
85daab0d5e
Don't define lib handles when dynamic loading is disabled
2012-03-01 03:46:45 -08:00
Chris Robinson
105faa1935
Only support PA_API_VERSION 12
2012-03-01 03:29:28 -08:00
Chris Robinson
b299b90964
Update the stored buffer attributes if PulseAudio changes it
2012-03-01 03:09:15 -08:00
Chris Robinson
346f1ac293
Don't allow the PulseAudio stream to move
...
Since the device specifier isn't updated to reflect the change, it's best to
not allow it to move. This should be fixed eventually.
2012-03-01 02:52:32 -08:00
Chris Robinson
6e113eea89
Don't force a sample spec when looking for the default device
2012-03-01 01:34:49 -08:00
Chris Robinson
54f906b347
Don't check if the pulseaudio sink is suspended when opening
2012-03-01 01:19:07 -08:00
Chris Robinson
4b252bc494
Constify a couple string pointers
2012-03-01 01:03:37 -08:00
Chris Robinson
b192165fb4
Look for and enumerate the default PulseAudio source first
2012-02-29 23:52:10 -08:00
Chris Robinson
f887f4efdd
Use a separate function to create and connect a PulseAudio record stream
2012-02-29 23:46:30 -08:00
Chris Robinson
b37e54eead
Look for and enumerate the default PulseAudio sink first
2012-02-29 23:35:01 -08:00
Chris Robinson
ea4f458c1d
Avoid enumerating multiple devices with the same name
2012-02-29 23:21:38 -08:00
Chris Robinson
394c76d64f
Avoid passing the ALCdevice to connect_playback_stream
2012-02-29 23:13:09 -08:00
Chris Robinson
d34fc21a50
Print the enumerated devices from PulseAudio
2012-02-29 22:31:51 -08:00
Chris Robinson
f5435aa2de
Minor cleanups for OSS and Solaris
2012-02-29 21:45:44 -08:00
Chris Robinson
e88f954cbf
Allow reading audio from ALSA directly if the requested length is supported
2012-02-29 10:01:45 -08:00
Chris Robinson
fe897f291b
Don't store the frame size with pulse_data
2012-02-29 06:51:21 -08:00
Chris Robinson
fbb6239299
Read capture data from pulseaudio as needed, avoiding a ring buffer
2012-02-29 05:57:54 -08:00
Chris Robinson
ae1633497c
Get and release the mmdevapi render client iface on the message thread
2012-02-29 05:54:58 -08:00
Chris Robinson
00b0e64bd2
Use local variables to determine how much to write to mmdevapi
2012-02-29 00:32:20 -08:00
Chris Robinson
2747c87893
Print out unsupported audio format info from ffmpeg
2012-02-28 04:04:52 -08:00
Chris Robinson
2285c79ded
Give "OpenAL Soft" for the standard device name
2012-02-28 03:36:16 -08:00
Chris Robinson
230e784b9e
Trace the name of the created device
2012-02-27 21:57:33 -08:00
Chris Robinson
4b88168edb
Use a switch to handle the ALSA PCM state
2012-02-27 04:31:03 -08:00
Chris Robinson
f29fbdf088
Print enumerated ALSA devices
2012-02-26 23:02:29 -08:00
Chris Robinson
233acff3c4
Print enumerated dsound devices
2012-02-26 22:55:50 -08:00
Chris Robinson
5e625c9a68
Watch for unsupported sample types for dsound capture
2012-02-26 22:03:27 -08:00
Chris Robinson
da4408835d
Print the mmdevapi device and GUID found
2012-02-26 21:59:27 -08:00
Chris Robinson
b78b8f0c82
Use separate loops for getting and checking device attributes
2012-02-25 18:03:33 -08:00
Chris Robinson
484e8f07a0
Watch for CLSIDFromString errors
2012-02-23 21:41:24 -08:00
Chris Robinson
504cdadd60
Use an enum for the device type
2012-02-23 15:25:30 -08:00
Chris Robinson
45c10229d9
Print a message when loading the "none" reverb preset
2012-02-23 13:49:46 -08:00
Chris Robinson
973b92b8fd
Minor rearrangements for the pulseaudio mixing loop
2012-02-22 18:33:28 -08:00
Chris Robinson
6ba0fd25a2
Remove an unneeded wrapper
2012-02-22 18:08:15 -08:00
Chris Robinson
1dde8ad60b
Use the stored minreq size from PulseAudio for rounding off the length to write
2012-02-21 18:07:20 -08:00
Chris Robinson
45b9cbe2b3
Only probe for devices when a backend is loaded
2012-02-20 22:12:48 -08:00
Chris Robinson
14912229b1
Avoid default names for winmm and dsound
2012-02-20 22:03:08 -08:00
Chris Robinson
2b64df05e6
Avoid using a default name with the MMDevApi backend
2012-02-20 21:46:01 -08:00
Chris Robinson
01d8d956da
Avoid using a default name when opening a PulseAudio device
2012-02-20 21:03:54 -08:00
Chris Robinson
4f0d862cbe
Set the default ALSA device name when probing
2012-02-20 20:59:55 -08:00
Chris Robinson
e2ccc6f98e
Always use "OpenAL Soft" for the short device enumeration list
2012-02-20 20:45:22 -08:00
Chris Robinson
d24ada7ab7
Don't accept the pulseaudio default name for capture
2012-02-20 20:29:20 -08:00
Chris Robinson
54e2316b65
Use a string to report unsupported capture sample types
2012-02-20 20:25:58 -08:00
Chris Robinson
58316a97d5
Override the resampler as needed right after calculating the step value
2012-02-20 20:08:45 -08:00
Chris Robinson
771ef3e8d5
Rename p -> hp for ALSA's hw params
2012-02-20 12:46:09 -08:00
Chris Robinson
65ed18960e
Add a text file describing the available environment variables
2012-02-19 23:03:04 -08:00
Chris Robinson
799f8da333
Recognize "none" to disable the default reverb
2012-02-19 17:41:42 -08:00
Chris Robinson
40bb8bd9dc
Remove the trailing double-underscore from a couple env vars
2012-02-19 17:24:01 -08:00
Chris Robinson
426f0273cb
Remove mention of the environment variables from alsoftrc.sample
...
There will be a separate file to document all of them.
2012-02-19 17:20:02 -08:00
Chris Robinson
03ec2d6fc7
Check for the ALSOFT_DRIVERS env var for a list of backend drivers
...
This overrides the 'drivers' config option
2012-02-19 14:27:00 -08:00
Chris Robinson
e4f14fdc61
Check the pulse spawn-server config option before testing a connection to pulseaudio
2012-02-19 14:07:44 -08:00
Chris Robinson
418c766493
Use memset to clear the bs2b filter's last sample and remove the unused is_clear function
2012-02-19 13:09:29 -08:00
Chris Robinson
4a65747a4b
Add a COUNTOF macro to get the number of entries in a static array
2012-02-19 12:07:40 -08:00
Chris Robinson
6dc194ed1d
Fix a misnamed variable
2012-02-19 11:56:01 -08:00
Chris Robinson
1aa69e77e9
Print a warning if using the 'format' config option
2012-02-19 11:54:24 -08:00
Chris Robinson
6ac16867b4
Only set a default slot for non-NULL effect types
2012-02-18 17:09:08 -08:00
Chris Robinson
bbc679a5db
Minor MMDevApi cleanups
2012-02-18 13:08:54 -08:00
Chris Robinson
592fb2b913
Make sure an ALSA capture device was found before accessing the map
2012-02-18 12:39:17 -08:00
Chris Robinson
f68f3f5f86
Simplify ALSA parameter error checking
2012-02-18 12:34:58 -08:00
Chris Robinson
5f23860880
Rename a couple variables and fix their types
2012-02-18 11:07:54 -08:00
Chris Robinson
faf59a7cba
Fix some comments
2012-02-18 11:03:42 -08:00
Chris Robinson
cc2cb1142b
Remove unused variables
2012-02-17 12:32:43 -08:00
Chris Robinson
eb8be88866
Use the correct type to store the count from IMMDeviceCollection_GetCount
2012-02-17 12:31:53 -08:00
Chris Robinson
e43e1bd7f5
Silence another MSVC warning
2012-02-17 01:32:35 -08:00
Chris Robinson
eb586b0ed7
Initialize a variable before use
2012-02-17 01:30:41 -08:00
Chris Robinson
75aa96a4a6
Silence an MSVC warning
2012-02-17 01:29:23 -08:00
Chris Robinson
10257f485a
Support device enumeration with mmdevapi
2012-02-16 17:04:08 -08:00
Chris Robinson
deee6a73f0
Fix a device count leak and make sure COM is cleaned up if an mmdevice open fails
2012-02-16 10:08:50 -08:00
Chris Robinson
84ba0a94c0
Make sure the source write position is at least 15ms ahead of the read
2012-02-16 00:11:50 -08:00
Chris Robinson
5d17cef55f
Calculate the buffer time before modifying the frequency
2012-02-15 22:54:17 -08:00
Chris Robinson
70f1a7e3ca
Get the mmdevapi device period after initialization
2012-02-15 22:40:01 -08:00
Chris Robinson
60785eab8e
Move the endian test macro to alMain.h
2012-02-15 21:47:35 -08:00
Chris Robinson
7e9af6f406
Use a switch to check the device format with winmm
2012-02-15 21:13:13 -08:00
Chris Robinson
6b272ff585
Add a device parameter to alcLoopbackOpenDeviceSOFT
2012-02-15 20:52:49 -08:00
Chris Robinson
fecd679f33
Add a device request flag for the sample type
2012-02-15 16:26:32 -08:00
Chris Robinson
2ab0e3521c
Remove parameter names from typedefs
2012-02-15 15:23:23 -08:00
Chris Robinson
9afd6b2858
Separate the format config option into channels and sample-type
2012-02-15 15:22:44 -08:00
Chris Robinson
670c88a64c
Define a minimum output sample rate and warn if the config option goes below it
2012-02-15 12:26:19 -08:00
Chris Robinson
425ff7cb00
Combine a couple if checks
2012-02-15 11:28:19 -08:00
Chris Robinson
1140b3ae83
Support signed and unsigned 32-bit int output
2012-02-14 11:44:57 -08:00
Chris Robinson
5e1d1a52ba
Check for each ALSA prefix config option only as needed
2012-02-13 10:33:53 -08:00
Chris Robinson
e394d14cda
Use more proper enum names for the resampler
2012-02-12 08:45:19 -08:00
Chris Robinson
9f073b6f1b
Use a proper enum value for setting the default distance model
2012-02-12 08:18:20 -08:00
Chris Robinson
b375b130ba
Add config options for card- and device-specific prefixes in ALSA device names
2012-02-11 09:36:40 -08:00
Chris Robinson
3fb6351212
Format the ALSA device name when enumerating them
2012-02-11 06:55:24 -08:00
Chris Robinson
61be01efc1
Rename SpeakerGain to ChannelGain
2012-02-10 00:29:47 -08:00
Chris Robinson
23bda38be0
Match the 7.1 channel angles with the speakers
2012-02-09 23:59:24 -08:00
Chris Robinson
e6a0dd10a9
Pre-scale the channel angles
2012-02-09 23:52:20 -08:00
Chris Robinson
ef68aa39f8
Rename non_virtual_channels to direct_channels
2012-02-09 23:35:17 -08:00
Chris Robinson
b4b492c417
Improve checks for supported output formats from ALSA
2012-02-09 22:26:16 -08:00
Chris Robinson
a98e381c8e
Ensure ALbyte3 and ALubyte3 are the proper size
2012-02-07 08:05:01 -08:00
Chris Robinson
18f87b97d5
Always use the default speaker layout for loopback devices
2012-02-07 07:29:34 -08:00
Chris Robinson
c211f1d3fe
Don't enable BS2B for loopback devices
2012-02-07 07:06:38 -08:00
Chris Robinson
deb84cfdac
Improve a couple error messages with the full ALSA device control name
2012-02-07 07:04:33 -08:00
Chris Robinson
7ad1b45d11
Change the default stereo speaker positions to match the stereo channel positions
...
A separate "headphones" configuration may be nice to add for -90,+90, however
not many audio APIs can detect this. Ideally HRTF would be used with
headphones too, which largely ignores the speaker positions, however there
could be situations where this is unfeasible or unwanted.
2012-02-04 10:29:19 -08:00
Chris Robinson
47161150d7
Check for a 32-bit x86 processor before using MSVC's asm intrinsics
2012-02-03 19:34:06 -08:00
Chris Robinson
8e6832407a
Only use fast float-to-int GCC assembly for x86 and x86_64 targets
2012-02-03 17:40:21 -08:00
Chris Robinson
9166432ccf
Fix typo in the "CarpetedHallway" reverb preset
2012-02-01 16:31:37 -08:00
Chris Robinson
0107e74986
Use an enum for static const values
2012-01-31 03:43:52 -08:00
Chris Robinson
c605e06e07
Make the EFX preset values explicit floats
2012-01-31 02:57:22 -08:00
Chris Robinson
15a8e58225
Implement capture for the DirectSound backend
...
Based on a patch by Jeffrey Knockel <jeff250.at.gmail.com>
2012-01-31 01:47:59 -08:00
Chris Robinson
4393b6b05f
Only initialize the default reverb effect when a slot is available
2012-01-29 22:49:17 -08:00
Chris Robinson
ed037698fd
Reorder a couple effect presets
2012-01-29 22:16:39 -08:00
Chris Robinson
e870c22f87
av_find_stream_info is also deprecated, in favor of avformat_find_stream_info
2012-01-29 20:06:30 -08:00
Chris Robinson
fd6f03cf74
Use AVMEDIA_TYPE_AUDIO instead of the deprecated CODEC_TYPE_AUDIO
2012-01-29 16:21:57 -08:00
Chris Robinson
706f407ed5
Add some more reverb presets
2012-01-27 23:15:16 -08:00
Chris Robinson
dd3abd0f16
Use sizeof(ALfloat) when finding the max stepping value
...
The mixer always reads from floats, so the size of the storage type is
unimportant.
2012-01-26 22:33:36 -08:00
Chris Robinson
3fda804217
Pass the uncompressed sample count to LoadData and ConvertData for IMA4
2012-01-26 16:53:21 -08:00
Chris Robinson
1d1440ac64
Make sure context attributes are specified for loopback devices
2012-01-26 16:31:46 -08:00
Chris Robinson
119768001c
Make sure InitializeEffect on the default slot doesn't set a context error
2012-01-26 14:46:52 -08:00
Chris Robinson
3ee92a2b33
Return the error code from UpdateDeviceParams
2012-01-25 20:00:34 -08:00
Chris Robinson
f87b607a53
Make sure the attributes list specifies a format for loopback devices
2012-01-25 19:54:55 -08:00
Chris Robinson
b4ba83ec34
Avoid a bit of code duplication
2012-01-25 19:32:10 -08:00
Chris Robinson
d807c4bf87
Don't process a default device slot if it doesn't exist
2012-01-25 18:48:26 -08:00
Chris Robinson
423f89c908
Fix a typo
2012-01-24 15:11:23 -08:00
Chris Robinson
8d07bc41c9
Some cleanups for the reverb list
2012-01-24 13:29:33 -08:00
Chris Robinson
86ef115e21
Set the source's slot send parameter to NULL if it's the AL_EFFECT_NULL type
2012-01-23 06:29:03 -08:00
Chris Robinson
1dd8aa9b6f
Link with AudioToolbox.framework for the CoreAudio backend if it's found
2012-01-23 03:45:04 -08:00
Chris Robinson
f520257463
Avoid duplicating some initialization code
2012-01-20 16:23:15 -08:00
Chris Robinson
00dc3088c8
Honor the disabled effects for the default reverb
2012-01-20 15:56:32 -08:00
Chris Robinson
e52e4b1a8c
Not all devices will have a default effect slot
2012-01-20 12:53:41 -08:00
Chris Robinson
0ef3a30b84
Fix WaveIn shutdown for real
...
The processing thread must be messaged when shutting down, and depending on the
state of the device, waveInReset may not do it. Additionally, all buffers must
be removed from the device before they can be unprepared and the device closed.
2012-01-20 12:36:23 -08:00
Chris Robinson
b375897374
Remove an unnecessary else statement
2012-01-20 12:20:24 -08:00
Chris Robinson
2b2ce8bf3b
Always message the WinMM processing thread when a buffer is done
...
So the processing thread can keep track of completed buffers when shutting
down, too.
2012-01-20 12:06:31 -08:00
Chris Robinson
47c8c15878
Fix a possible race condition when shutting down WinMM devices
...
If the processing threads are interrupted between the shutdown check and re-
adding the buffer back to the device, the device can be left with a buffer that
will get unprepared and freed while in use.
2012-01-20 03:02:21 -08:00
Chris Robinson
fa36435290
Add a default-reverb config option, and rename __ALSOFT_FORCE_REVERB to match
2012-01-20 01:51:27 -08:00
Chris Robinson
4b83123cb8
Install efx-presets.h
2012-01-19 22:30:12 -08:00
Chris Robinson
37b17c8c78
Add the ability to specify a preset for forced reverb
2012-01-19 20:02:57 -08:00
Chris Robinson
51e81f4867
Add a global option to apply a reverb effect on source send 0
...
A special slot on the device is created and processed, so it can be shared
across all contexts on the device. Sources that don't have a slot set on send 0
will use this special slot instead.
2012-01-19 19:30:03 -08:00
Chris Robinson
ae7b61b040
Avoid printing messages about device parameter changes in the backends
2012-01-17 16:38:58 -08:00
Chris Robinson
5a2a534240
Report parameter request changes in UpdateDeviceParams
2012-01-17 15:55:37 -08:00
Chris Robinson
09258ca5c1
Change the default output format to 32-bit float
2012-01-17 15:38:36 -08:00
Chris Robinson
e0966d99a1
Retry opening the PortAudio device with 16-bit short if 32-bit float output fails
2012-01-17 15:26:22 -08:00
Chris Robinson
66a700729b
Retry opening the DSound device with 16-bit short if 32-bit float output fails
2012-01-17 12:38:47 -08:00
Chris Robinson
a7266442c2
Retry opening the WinMM device with 16-bit short if 32-bit float output fails
2012-01-17 12:21:52 -08:00
Chris Robinson
cf34b9c04e
Support 32-bit float in the WinMM backend
2012-01-17 12:17:41 -08:00
Chris Robinson
530597347c
Safely insert the new context into the list
2012-01-12 06:13:24 -08:00
Chris Robinson
c543611897
Add some casts
2012-01-11 00:55:02 -08:00
Chris Robinson
d88596e13c
There's no need to pass a buffer to avio_alloc_context
2012-01-11 00:43:24 -08:00
Chris Robinson
c59bbe7c22
Handle a couple of special AVSEEK_ seek modes
2012-01-11 00:32:16 -08:00
Chris Robinson
d4670faafd
Fix compiling the example program, and support AL_SOFT_buffer_samples with it
2012-01-10 02:12:54 -08:00
Chris Robinson
e772fb7d0e
Finalize AL_SOFT_buffer_samples
2012-01-10 01:14:02 -08:00
Chris Robinson
29ba8f9f1a
Remove the unnecessary AL_MULAW_SOFT, AL_ALAW_SOFT, and AL_IMA4_SOFT defines
2012-01-10 00:59:10 -08:00
Chris Robinson
61af4d715c
Append _SOFT to the AL_SOFT_buffer_samples enums
2012-01-10 00:41:05 -08:00
Chris Robinson
535091e36c
Make LockDevice, LockContext, etc, inline
2012-01-09 23:37:03 -08:00
Chris Robinson
5b7f8c1816
Check earlier for ffmpeg
2012-01-02 11:52:20 -08:00
Chris Robinson
18216ab1a9
Remove the warning when a context being released is globally current
...
Just about every implementation allows this, and there's no direct harm caused
by it. However, leave the warnings for when it's still current on specific
threads, as this can cause issues.
2012-01-01 15:36:31 -08:00
Chris Robinson
5500ed9209
Use the device lock when removing the context from the device's list
2012-01-01 15:22:58 -08:00
Chris Robinson
886f874ff3
Use a proper typedef for handling atomic pointer swaps
2012-01-01 15:00:03 -08:00
Chris Robinson
466cac328f
Add an example program that streams audio using ffmpeg
2012-01-01 12:36:41 -08:00
Chris Robinson
06caac2619
Update some config option descriptions
2011-12-20 01:45:29 -08:00
Chris Robinson
2691c33b55
Use a string to specify the resampler config option
2011-12-20 01:36:01 -08:00
Chris Robinson
7f6844e48d
Use a struct to associate channel enums and their angles
2011-12-20 01:17:11 -08:00
Chris Robinson
a5a929ff72
Restore the old FPU mode if the effects fail to update with new device parameters
2011-12-20 00:35:32 -08:00
Chris Robinson
84b5311257
Use an explicit 0 for the "no error" enums
2011-12-03 08:27:51 -08:00
Chris Robinson
6a97f6a327
Reset the ALSA device if the number of available samples grows too large
2011-11-28 10:24:24 -08:00
Chris Robinson
dfd02817fa
Make ALSA XRUN when the number of available samples exceeds the buffer size
2011-11-28 09:12:30 -08:00
Chris Robinson
222d2363cd
Don't fail to insert a map entry when the key exists and the limit is reached
2011-11-26 03:52:07 -08:00
Chris Robinson
14c117ffd3
Initialize listener matrix to identity
2011-11-26 03:37:37 -08:00
Chris Robinson
d5df2ad3ce
Define TlsDestructor for Windows static builds, too
2011-11-12 16:00:37 -08:00
Chris Robinson
c56b2734fd
Use loops to write reverb output
2011-11-02 08:15:10 -07:00
Chris Robinson
5eebe73f79
Use a loop to write the modulator effect output
2011-11-01 17:12:56 -07:00
Chris Robinson
21d400e3c6
Use panning for echo instead of specifying discrete channels
2011-11-01 17:03:11 -07:00
Chris Robinson
d270188578
Append _SOFT to the ALC loopback format enums
2011-11-01 16:00:47 -07:00
Chris Robinson
fcf9034c2b
Calculate the listener matrix when a new orientation is specified
...
This is so the matrix isn't derived each time a source is updated, and it will
make supporting user-defined matrices easier.
2011-10-30 08:27:24 -07:00
Chris Robinson
956e6f95ec
Don't translate the listener velocity
2011-10-30 05:49:17 -07:00
Chris Robinson
50913948a0
Don't transform/translate vectors with an invalid listener orientation
2011-10-30 05:47:14 -07:00
Chris Robinson
a5c02556e6
Add a work-around for cross-compiling with MinGW
2011-10-27 21:22:00 -07:00
Chris Robinson
319f40462f
Initialize/Uninitialize COM as needed
2011-10-24 22:11:16 -07:00
Chris Robinson
e5374f60c9
Don't close devices that are left open on lib shutdown
2011-10-24 08:23:41 -07:00
Chris Robinson
75679c959a
Don't update the device update parameters when PulseAudio does an async buffer update
...
It risks a deadlock, and though the UpdateSize won't change, we'll still fill
as much of the buffer as we can up to a multiple of it
2011-10-19 16:07:56 -07:00
Chris Robinson
628356a294
Set AL_STOPPED after setting AL_PLAYING when a source has nothing to play
2011-10-15 10:33:30 -07:00
Chris Robinson
0fba3b0e1e
Use the local Device variable
2011-10-11 22:30:58 -07:00
Chris Robinson
92a650c827
Use the local variable instead of re-reading the source property
2011-10-11 22:29:06 -07:00
Chris Robinson
3bbde05e0e
Use the square root to build the panning table instead of sin/cos
2011-10-10 09:39:02 -07:00
Chris Robinson
3324bab81e
Mark a couple more arrays with restrict
2011-10-08 03:08:13 -07:00
Chris Robinson
81133769de
Return the key's value from the map when it's removed
2011-10-06 06:39:13 -07:00
Chris Robinson
a7d3779dfa
Check for the HRTF object instead of a flag
2011-10-06 01:16:07 -07:00
Chris Robinson
75fee8c11f
Add min/max/clamp methods for 64-bit int
2011-10-04 22:39:35 -07:00
Chris Robinson
9e11b0a8c6
Fix maximum BufferSize calculation
2011-10-04 22:35:01 -07:00
Chris Robinson
5861920453
Rename a variable to avoid confusion
2011-10-04 22:16:54 -07:00
Chris Robinson
eb277cc578
Remove some unneeded templates and parameters
2011-10-04 09:55:36 -07:00
Chris Robinson
20fd648729
Convert samples to float when copying to the stack
2011-10-04 09:47:08 -07:00
Chris Robinson
11caba9807
Use sample frames when handling the buffer length
2011-10-04 02:08:45 -07:00
Chris Robinson
35b4b31d57
Track the temp stack buffer using sample frames instead of bytes
2011-10-03 10:06:09 -07:00
Chris Robinson
a5c74e324c
Make sure GCC properly errors when checking visiblity attributes
2011-10-02 22:12:31 -07:00
Chris Robinson
e1cbf06653
Don't use a double when calculating the HRTF coefficients
2011-10-02 22:05:03 -07:00
Chris Robinson
5a1959f0cf
Make a floating-point constant a float type
2011-10-02 22:01:51 -07:00
Chris Robinson
7f5074949e
Don't use inline asm with MSVC on 64-bit
2011-10-02 21:44:08 -07:00
Chris Robinson
cf10a8d321
Get rid of some unnecessary casting
2011-10-02 16:54:45 -07:00
Chris Robinson
a05006b06a
Rename some parameters
2011-10-02 07:31:26 -07:00
Chris Robinson
eb0b96752a
Remove the OriginalAlign buffer field, and calculate it as needed
2011-10-01 19:52:07 -07:00
Chris Robinson
2f453eba35
Fix potential divide-by-0
2011-10-01 08:37:42 -07:00
Chris Robinson
8b2e1fdd9a
Add buffer properties to get the internal format, and the length in bytes, samples, and seconds
...
The provided buffer lengths correspond to the source offsets, in that the byte
length specifies the end of the byte offset (ie, when the buffer is used for a
static source, the offset will range between 0 (inclusive) and the byte length
(exclusive)). Although an application could use the AL_SIZE, AL_CHANNELS,
AL_BITS, and AL_FREQUENCY properties to find the length in samples and seconds,
the byte length cannot be reliably calculated this way.
2011-10-01 06:19:55 -07:00
Chris Robinson
c99b32a8ec
Use tokens matching the string
2011-10-01 04:56:45 -07:00
Chris Robinson
92f95e4d94
Add support for AL_EXT_ALAW
2011-10-01 04:55:03 -07:00
Chris Robinson
d1011f8d37
Add AL_EXT_MULAW and AL_EXT_ALAW tokens to alext.h
2011-10-01 04:05:39 -07:00
Chris Robinson
a486045f7c
Improve index calculation for reverb modulation updates
2011-10-01 02:38:28 -07:00
Chris Robinson
0e7dc93681
Add some formatting spaces to the reverb state struct
2011-10-01 02:09:17 -07:00
Chris Robinson
a7bbf7a741
Rename LOWPASSFREQCUTOFF to LOWPASSFREQREF
2011-09-30 23:07:15 -07:00
Chris Robinson
bfa782f329
Define the values for F_PI and F_PI_2 directly instead of using M_PI
2011-09-30 22:53:47 -07:00
Chris Robinson
bed37a148c
Use raise(SIGTRAP) instead of kill(getpid(),SIGTRAP)
2011-09-30 20:46:18 -07:00
Chris Robinson
bf19186223
Apply the initial wet send reverb decay before clamping the gains
2011-09-30 17:51:21 -07:00
Chris Robinson
087e75d47f
Multiply by the reciprocal value instead of dividing
2011-09-29 22:29:10 -07:00
Chris Robinson
9e2600cac4
Use fast float-to-int conversions for some mixer-related code
2011-09-29 06:55:00 -07:00
Chris Robinson
3c27c24dec
Set the mixer FPU mode when setting a new effect on an effect slot
2011-09-29 05:25:01 -07:00
Chris Robinson
1b81642db5
Set the mixer FPU mode for device parameter updates
2011-09-29 05:15:20 -07:00
Chris Robinson
d3a6de3f86
Set the FPU into single-precision mode for mixer updates
2011-09-29 05:10:15 -07:00
Chris Robinson
f4925a0e6a
Use inline functions to set/restore the FPU mode for mixer updates
2011-09-29 04:03:18 -07:00
Chris Robinson
b6b3ca6e6f
Use inline assembly for fast float-to-int conversions
2011-09-29 03:51:46 -07:00
Chris Robinson
53572da7de
Set toward-zero rounding when updating in alDeferUpdatesSOFT
2011-09-28 22:02:36 -07:00
Chris Robinson
8a0e0265bc
Clamp the low-pass reference gain to -60 dB instead of -40 dB
2011-09-25 11:32:51 -07:00
Chris Robinson
0ada7b2da5
Copy only the gains needed for the channel being mixed
2011-09-24 22:24:26 -07:00
Chris Robinson
1dee1245ff
A static source only has one buffer in the queue
2011-09-24 21:21:59 -07:00
Chris Robinson
e9da6950ee
Centralize the Lookup and Remove macros
2011-09-24 18:34:45 -07:00
Chris Robinson
12abd75aed
Only warn when a symbol fails to load
2011-09-24 14:52:54 -07:00
Chris Robinson
044774ed72
Rename the MMDevAPI backend's MessageProc function
2011-09-24 13:55:44 -07:00
Chris Robinson
cf56b0733b
Look for and use atan2f, log10f, and floorf
2011-09-24 12:17:39 -07:00
Chris Robinson
2b0a63003f
Cast a 64-bit variable to a 32-bit int
2011-09-24 00:52:58 -07:00
Chris Robinson
deef98658b
Don't require libm for the float-type math functions
2011-09-24 00:42:14 -07:00
Chris Robinson
d9544d006b
Use aluAtan instead of atan
2011-09-24 00:04:34 -07:00
Chris Robinson
6a2b2a0aed
Silence MSVC warnings in the HRTF code
2011-09-23 23:16:42 -07:00
Chris Robinson
9060d0cc36
Add a WAVEFORM_FRACONE macro and minor cleanups for the ring modulator
2011-09-23 23:11:35 -07:00
Chris Robinson
b4f9f89480
Use float types for the resamplers instead of double
2011-09-23 23:03:59 -07:00
Chris Robinson
a9b6b284c0
Change a double type to a float
2011-09-23 22:50:33 -07:00
Chris Robinson
da62f50528
Check for asinf and use it
2011-09-23 22:44:34 -07:00
Chris Robinson
e84e38cc19
Make AIRABSORBGAINHF a float type
2011-09-23 22:37:20 -07:00
Chris Robinson
9266a37276
Move ConeScale and ZScale to ALu.c and alu.h, and make them floats
2011-09-23 22:33:37 -07:00
Chris Robinson
ff8ee68852
Add atomic functions for GCC inline asm
2011-09-23 12:42:13 -07:00
Chris Robinson
470b506952
Use macros for float-typed PI values, to avoid manual casts everywhere
2011-09-22 11:17:01 -07:00
Chris Robinson
de8a447ea5
More MSVC precision casts
2011-09-22 01:20:49 -07:00
Chris Robinson
b2f4520ba1
Add a few more precision casts
2011-09-22 01:09:02 -07:00
Chris Robinson
a4b1239f45
Use cosf and sinf when available
...
Also clear away a few more MSVC precision warnings
2011-09-22 01:00:44 -07:00
Chris Robinson
43350f9066
Silence some MSVC precision warnings
2011-09-22 00:35:08 -07:00
Chris Robinson
0988023d30
Constify some parameters
2011-09-22 00:31:42 -07:00
Chris Robinson
e81e20446f
Don't use the -fvisibility switch if the visibility attributes didn't work
2011-09-21 23:41:52 -07:00
Chris Robinson
64080250ff
Actually check for hidden visibility
2011-09-20 18:35:27 -07:00
Chris Robinson
4e19f82a2b
Try to use "default" and "hidden" visibility when "protected" and "internal" aren't available
2011-09-20 16:53:05 -07:00
Chris Robinson
97743e32c2
Remove a couple type size checks
2011-09-20 15:47:45 -07:00
Chris Robinson
b8d53fb7e9
Check for SLES/OpenSLES.h along with SLES/OpenSLES_Android.h
2011-09-20 15:43:00 -07:00
Chris Robinson
390d94ec97
Define _WIN32_WINNT on the command line with _WIN32
2011-09-20 14:59:01 -07:00
Chris Robinson
e01092a0da
Move Sleep implementation into helper.c and emulate sched_yield for Windows
2011-09-20 14:43:53 -07:00
Chris Robinson
312e9a436d
Fix indentation
2011-09-20 13:58:45 -07:00
Chris Robinson
e43470da7a
Make a separate log level to trace reference counts, to avoid log spam for traces
2011-09-20 12:24:23 -07:00
Chris Robinson
d3e7a26db6
Fix a warning message
2011-09-20 11:58:26 -07:00
Chris Robinson
8c2a2a5c9d
Trace created device and context pointers
2011-09-20 11:55:40 -07:00
Chris Robinson
bf2ac6625c
Avoid size_t and ssize_t in some places
2011-09-20 11:40:56 -07:00
Chris Robinson
edb386eb1e
Add a ConfigValueStr function, to return the string through a parameter
2011-09-19 11:29:18 -07:00
Chris Robinson
cc3dd648ac
Check the number of available samples before calling the capture method
2011-09-18 20:27:34 -07:00
Chris Robinson
98b2fa6cb5
Use the ALC types for the device format enum values
2011-09-18 19:43:59 -07:00
Chris Robinson
b615c7d0a2
Use arrays instead of large switches to decompose formats
2011-09-18 19:06:19 -07:00
Chris Robinson
7e06a10f73
Return int and float config values through a parameter
...
This allows the getter functions to return whether or not the option exists
without a separate call and check.
2011-09-18 16:16:55 -07:00
Chris Robinson
d46db2f648
Avoid a buffer underrun when getting the end of a config option value
2011-09-18 11:46:39 -07:00
Chris Robinson
6d77aabb23
Update a config file comment
2011-09-18 11:25:44 -07:00
Chris Robinson
a7b9ee6bcb
Allow loading multiple HRTF tables through a comma-separated list
2011-09-18 11:10:32 -07:00
Chris Robinson
0e5c221a3c
Dynamically allocate space for HRTF tables
2011-09-18 10:09:32 -07:00
Chris Robinson
25f7c27043
Store the HRTF tables used in the device
2011-09-18 09:52:40 -07:00
Chris Robinson
ec3b78e52d
Fix a mutex leak in a capture open error path
2011-09-16 02:17:51 -07:00
Chris Robinson
4e903c84cf
Fix comment on external HRTF file format
2011-09-15 02:27:02 -07:00
Chris Robinson
ae3ec4e767
Trace compatible HRTF formats when loading instead of on error
2011-09-15 02:05:48 -07:00
Chris Robinson
fd22226242
Make alcSetError static
2011-09-14 11:58:51 -07:00
Chris Robinson
fe1e046ea6
Remove a couple ineffective alcSetError calls
2011-09-14 11:55:57 -07:00
Chris Robinson
2171aaa35c
Use IsDebuggerPresent instead of the VC-only __try/__except
2011-09-14 02:10:42 -07:00
Chris Robinson
97024151e4
Return an error from the CaptureSamples method instead of setting it
2011-09-14 02:01:35 -07:00
Chris Robinson
62dfea43c6
Limit the minimum ALSA capture size to 100ms, and the maximum period size to 50ms
2011-09-13 23:51:22 -07:00
Chris Robinson
a4f8408150
Use maxu to clamp PulseAudio's capture buffer size
2011-09-13 21:53:34 -07:00
Chris Robinson
80f2b787ef
Pre-apply the deferred source offset only when it's playing or paused
2011-09-12 06:04:40 -07:00
Chris Robinson
404cfde33e
Rename the ALEffect_ macros to ALeffectState_ to reflect what they work on
2011-09-12 05:59:23 -07:00
Chris Robinson
145bc6da6b
Be a bit more robust while handling the global device list
2011-09-12 03:57:53 -07:00
Chris Robinson
69b10e2d7c
Remove the context from being current before removing it from the device
2011-09-12 03:35:21 -07:00
Chris Robinson
25e86e8e91
Get rid of IsContext
2011-09-12 03:18:27 -07:00
Chris Robinson
780417ba39
Use VerifyDevice to validate a device handle instead of IsDevice
2011-09-12 02:17:31 -07:00
Chris Robinson
9f159bfb33
Look for __ALSOFT_TRAP_ERROR to trap both AL and ALC errors
2011-09-12 01:50:57 -07:00
Chris Robinson
c2e9cda2d1
Shorten some warning messages
2011-09-12 01:21:54 -07:00
Chris Robinson
1d6ecee64f
Use the active source list when stopping sources on disconnect
2011-09-12 01:11:46 -07:00
Chris Robinson
3ee2826565
Minor cleanup for applying click-removal to wet buffers
2011-09-12 01:09:01 -07:00
Chris Robinson
0ceea27b44
Remove the effect slot parameter from the effect process method
2011-09-12 00:44:52 -07:00
Chris Robinson
0dc5837b82
Fix a possible race condition when setting an effect on a slot
2011-09-11 20:51:30 -07:00
Chris Robinson
b4cbb3380a
Fix non-GCC CompExchangePtr implementations
2011-09-11 09:39:29 -07:00
Chris Robinson
d9cb2baf4a
Don't increment the context reference count when locked
2011-09-11 09:29:24 -07:00
Chris Robinson
8f456f68ff
Remove GetLockedContext
2011-09-11 09:28:30 -07:00
Chris Robinson
54a421ec58
Get rid of some more GetLockedContext calls
2011-09-11 09:13:01 -07:00
Chris Robinson
6ce420afe3
Use function pointers to set type-specific effect properties
2011-09-11 08:59:47 -07:00
Chris Robinson
8028770901
Avoid accessing EAX-only reverb properties for non-EAX updates
2011-09-11 08:50:48 -07:00
Chris Robinson
d51b93f869
Remove the union from the effect parameter types
2011-09-11 07:42:23 -07:00
Chris Robinson
ab2b62c980
Use function pointers to set type-specific filter properties
2011-09-11 07:34:03 -07:00
Chris Robinson
97fa7cc9ac
More lock avoidance
2011-09-11 06:58:49 -07:00
Chris Robinson
2648a9b011
Just reference the context when checking for extensions
2011-09-11 04:32:34 -07:00
Chris Robinson
1fdc25df75
Use a RWLock to protect access to a buffer instead of the device lock
2011-09-11 03:57:40 -07:00
Chris Robinson
4db24af59a
Avoid holding the context lock for the buffer functions
2011-09-11 02:37:52 -07:00
Chris Robinson
d85c12c385
Avoid holding the context lock when setting auxiliary slot properties
2011-09-11 02:01:31 -07:00
Chris Robinson
ccd8cbc2a9
Make some listener properties volatile
2011-09-11 01:26:09 -07:00
Chris Robinson
1075cce7b3
Mark some source properties volatile
2011-09-11 01:18:57 -07:00
Chris Robinson
89f438df71
Small fixes to setting the source's direct filter and auxiliary send
2011-09-11 00:58:33 -07:00
Chris Robinson
97027a7ad9
Avoid holding the context lock while setting source parameters
...
Note that some parameters still need the lock when getting or setting them.
2011-09-11 00:47:31 -07:00
Chris Robinson
3a8ef2f0d6
Initialize source parameters before adding the source to the map
2011-09-10 21:21:07 -07:00
Chris Robinson
4c8e6dead1
Don't defer stopped and initial source state changes
...
Typically when these are set, an app will be releasing the buffer from the
source, possibly to immediately reuse it. There would be an extra burden placed
on the app if it was required to process updates before it could fully release
the buffer from the source.
2011-09-10 21:02:50 -07:00
Chris Robinson
c19a7408d9
Add a comment about when FreeContext and FreeDevice are called
2011-09-10 20:52:19 -07:00
Chris Robinson
c7b9d27b85
Trace the device pointer when warning about leftover objects
2011-09-10 20:49:16 -07:00
Chris Robinson
30510dc478
Set the device-connected flag to false first when handling a disconnect
2011-09-10 19:22:46 -07:00
Chris Robinson
b788ae52b0
Condense some code
2011-09-10 19:19:32 -07:00
Chris Robinson
ccbd67eab6
Clean up some code comments
2011-09-10 19:14:14 -07:00
Chris Robinson
f21b1eefda
Lock the lists while probing devices
2011-09-10 09:12:02 -07:00
Chris Robinson
6cd55a0a10
Clean up some comments
2011-09-10 09:00:01 -07:00
Chris Robinson
0c5c63f4ba
Slightly modify a warning
2011-09-10 07:49:35 -07:00
Chris Robinson
3dcd1e793e
Properly destroy contexts that are left on the device when it's closed
2011-09-10 07:35:48 -07:00
Chris Robinson
419294cddd
Avoid locking the device when adding and removing contexts
...
Also, don't keep track of the number of contexts per device
2011-09-10 07:18:29 -07:00
Chris Robinson
b9448a476e
Avoid holding the list lock when not needed
2011-09-10 05:19:08 -07:00
Chris Robinson
238a747414
Warn about contexts that are errantly left current
...
These won't show by default in release mode, unless the log level is changed to
show warnings.
2011-09-10 03:18:31 -07:00
Chris Robinson
c35433ec7a
Hold an extra reference on the device for each of its contexts
2011-09-10 03:01:24 -07:00
Chris Robinson
e8c9da0124
Add some reference counting to the device
2011-09-10 02:43:07 -07:00
Chris Robinson
18cf6e3210
Fix a parameter type
2011-09-10 02:13:52 -07:00
Chris Robinson
c9205a58ae
Use alGetEnumValue to check for supported filters and effects
2011-09-10 02:09:18 -07:00
Chris Robinson
23d693cd06
Add an option to trap device errors in a debugger
2011-09-10 01:23:59 -07:00
Chris Robinson
724ad0d893
Add an option to trap context errors in a debugger
2011-09-10 01:12:34 -07:00
Chris Robinson
7a0df8553f
Allow PulseAudio's tlength to grow to make sure there's at least two updates
2011-09-09 22:30:24 -07:00
Chris Robinson
477215883f
Use an array to get the device format from the user config string
2011-09-09 21:33:18 -07:00
Chris Robinson
05114815ba
Avoid an unnecessary lock
2011-09-02 15:57:50 -07:00
Chris Robinson
9080d5fda0
Do an atomic compare-exchange on the global context when destroying a context
2011-09-02 02:57:21 -07:00
Chris Robinson
108b43458f
Fix multichannel wet gainhf calculation
2011-09-02 02:54:00 -07:00
Chris Robinson
3dfd67680c
Use an atomic exchange to get the old global context when setting a new one
2011-09-02 02:32:35 -07:00
Chris Robinson
3a2fa18744
Log the function name instead of the source file and line number
2011-09-02 02:00:37 -07:00
Chris Robinson
370c9f553d
Trace the reverb buffer size
2011-09-02 01:13:22 -07:00
Chris Robinson
e80aa008b2
Combine the reverb effects
...
Updating and processing still differs depending on whether standard or EAX
reverb is used or not. The only functional difference should be that the
allocated buffer (and subsequent offsets) take into account the modulation
and echo times.
2011-09-01 20:06:51 -07:00
Chris Robinson
812d91cbf8
Don't recreate the effect when switching between the dedicated effect types
2011-09-01 18:51:24 -07:00
Chris Robinson
942c8bf8a7
Combine the dedicated (dialog/LFE) effects
2011-09-01 18:01:14 -07:00
Chris Robinson
b6b3e2f1cc
Fix a comment
2011-08-31 14:01:15 -07:00
Chris Robinson
ee5ff943f3
Fix a potential infinite loop when removing an effect slot
2011-08-31 13:36:47 -07:00
Chris Robinson
b28f48c1bd
Store the filter gains directly in the source instead of duplicate filter objects
2011-08-31 02:18:16 -07:00
Chris Robinson
49e2fa428f
Avoid the context lock when generating and deleting effects and filters
2011-08-31 02:15:03 -07:00
Chris Robinson
2fcf97e207
Avoid the context lock when generating and deleting buffers
2011-08-31 01:13:02 -07:00
Chris Robinson
f3ac3cd1e2
Don't set a thread priority if real-time isn't requested
2011-08-31 01:05:01 -07:00
Chris Robinson
dd74757319
Add a function to initialize a RWLock
2011-08-31 01:00:19 -07:00
Chris Robinson
ab0b5d9890
Hold the context lock only as needed when handling the listener
2011-08-31 00:33:33 -07:00
Chris Robinson
23f576360c
Avoid locking the context while getting and setting global state
2011-08-31 00:19:27 -07:00
Chris Robinson
d7bd9c7559
Use the active effect slot list for pending updates in alDeferUpdatesSOFT
2011-08-30 23:33:01 -07:00
Chris Robinson
9fb91f70aa
Rename GetReffedContext to GetContextRef
2011-08-30 23:28:38 -07:00
Chris Robinson
a32a3bcda8
Use a more appropriate error for trying to delete an effect slot that's in use
2011-08-30 20:57:14 -07:00
Chris Robinson
16dc73ff48
Hold the lock only as needed when generating and deleting effect slots
2011-08-30 20:49:49 -07:00
Chris Robinson
0a1321aaae
Add a limit to the UIntMap size and use it for sources and effect slots
2011-08-30 20:33:47 -07:00
Chris Robinson
189add1d5a
Use a separate array for the auxiliary slots in the mixer
2011-08-30 20:13:42 -07:00
Chris Robinson
755062fb76
Fix compilation with MSVC
2011-08-30 17:55:52 -07:00
Chris Robinson
7d577832cd
Add functions to retrieve the source from the source map while removing it
2011-08-30 17:32:49 -07:00
Chris Robinson
c4866afbe0
Use a RWLock and atomic exchanges for thunk handling
2011-08-30 17:24:58 -07:00
Chris Robinson
ee60248d19
Lock the context while deleting sources only as needed
2011-08-30 00:33:01 -07:00
Chris Robinson
d546813c05
Don't lock the context while checking the validity of objects
2011-08-30 00:04:02 -07:00
Chris Robinson
f02d9e22d7
Do a pointer exchange when replacing the source buffer queue
2011-08-29 23:55:24 -07:00
Chris Robinson
cc67f45892
Use the reference counting functions for the buffer and auxiliary slot refs
2011-08-29 23:10:02 -07:00
Chris Robinson
c6a110ec59
Hold the context lock as needed while generating and deleting sources
2011-08-29 22:51:18 -07:00
Chris Robinson
7408396fd4
Use a generic int type to handle enum swaps
2011-08-29 21:30:12 -07:00
Chris Robinson
da081b81c4
Do a compare-exchange to set the context error
...
This allows for unlocked context access when getting the error
2011-08-29 20:52:13 -07:00
Chris Robinson
500ad776ea
Exchange the AL error when retrieving it
2011-08-29 20:34:47 -07:00
Chris Robinson
e4a2b69b37
Make specific functions to lock/unlock UIntMap access
2011-08-29 20:21:28 -07:00
Chris Robinson
8eaa9bb469
Manually lock the map while iterating through its contents
2011-08-29 20:05:50 -07:00
Chris Robinson
b283dd3682
Use a read-write lock to protect access to the UInt maps
2011-08-29 19:15:22 -07:00
Chris Robinson
4a5dd73a3c
Make the source's NeedsUpdate volatile
2011-08-29 13:43:59 -07:00
Chris Robinson
950570b8c3
Do a proper exchange when setting a new state
2011-08-29 13:29:37 -07:00
Chris Robinson
72beb577b6
Lock the context as needed for the defer and process calls
2011-08-29 13:22:07 -07:00
Chris Robinson
de65ee08c9
Make ALCcontext's DeferUpdates field volatile
2011-08-29 11:55:01 -07:00
Chris Robinson
c06f4eb7f7
Hold a reference on the global context
2011-08-29 11:10:17 -07:00
Chris Robinson
0abe13e3ad
GCC's atomic built-ins were introduced in 4.1.0, so check for that version
2011-08-29 10:51:58 -07:00
Chris Robinson
2ac808ffa2
Fix typo
2011-08-29 01:01:20 -07:00
Chris Robinson
58078e2c1e
Use atomic exchanges when checking for updates to objects' internal parameters
2011-08-29 00:50:55 -07:00
Chris Robinson
01503f8a7b
Use an enum instead of an boolean for some flags
...
They still only hold AL_TRUE or AL_FALSE, but some systems can't properly
handle atomic swaps of 1-byte types.
2011-08-29 00:03:09 -07:00
Chris Robinson
aa99e1220b
Increment the context reference count when locking
2011-08-28 23:49:50 -07:00
Chris Robinson
783375af56
Use a list of contexts in the device instead of an array
2011-08-28 19:28:41 -07:00
Chris Robinson
1d9f21f6dc
Avoid a global list of contexts
2011-08-28 18:53:23 -07:00
Chris Robinson
0900c281a3
Check if the context is valid only if it's replacing the current thread context
2011-08-28 18:17:06 -07:00
Chris Robinson
f8c4b16c30
Hold a reference on the context when being set as current on the thread
...
This should vastly improve efficiency for retrieving the current thread
context, as we can be assured the stored context pointer will always be valid.
2011-08-28 18:08:48 -07:00
Chris Robinson
c567339718
Rename ALCcontext_Deref to ALCcontext_DecRef
2011-08-28 17:38:55 -07:00
Chris Robinson
5eceb593e9
Emulate pthread TLS functions in Windows
2011-08-28 17:21:01 -07:00
Chris Robinson
82244f298c
Add reference counting to the ALC contexts
2011-08-28 15:44:03 -07:00
Chris Robinson
3ab20d4ccb
Print an error for invalid speaker layout keys
2011-08-28 10:25:40 -07:00
Chris Robinson
ccc2644e6b
Free the WaveIn buffers' data after unpreparing them all
2011-08-25 11:33:13 -07:00
Chris Robinson
7e2155d937
Return an ALC error enum from the OpenCapture backend method
2011-08-24 14:44:15 -07:00
Chris Robinson
c696d4dbb2
Return an ALC error enum from the OpenPlayback backend method
2011-08-24 14:24:48 -07:00
Chris Robinson
f5195ee4f2
Remove the Buffer field from the source
2011-08-23 09:55:22 -07:00
Chris Robinson
9f25ad42c1
Explicitly set BufferListStart's prev field
2011-08-23 09:27:35 -07:00
Chris Robinson
1d4dc7d7a9
Add AL_SOFTX_deferred_updates to the context's extension list
2011-08-22 18:57:28 -07:00
Chris Robinson
65d42083e1
Prevent source and effect slot updates from occuring while updates are deferred
2011-08-22 17:13:03 -07:00
Chris Robinson
6992a67dd9
Remove some g_ prefixes
2011-08-22 07:50:08 -07:00
Chris Robinson
922f5fa081
Rename a couple variables
2011-08-22 07:44:22 -07:00
Chris Robinson
199df253ca
Always use the thunk functions to get object IDs
2011-08-22 07:40:14 -07:00
Chris Robinson
c1f435cc18
Don't use the thunk array for object lookups
2011-08-22 07:22:02 -07:00
Chris Robinson
858592832f
Defer source offset changes requested by the app
2011-08-21 00:49:04 -07:00
Chris Robinson
a97211b572
Use -1 to mark an invalid source offset instead of 0
2011-08-21 00:35:37 -07:00
Chris Robinson
f196a9fc67
Defer source state changes from alSourcePlay/Pause/Stop/Rewind calls
2011-08-20 23:59:24 -07:00
Chris Robinson
7ea71d8bfa
Use a separate function to set the source state
2011-08-20 06:31:10 -07:00
Chris Robinson
9b615a0add
Remove some spaces
2011-08-20 04:58:50 -07:00
Chris Robinson
4540034039
Move the GUID initialization to the helper
2011-08-20 04:55:11 -07:00
Chris Robinson
29d58f3d84
Set the loopback backend functions first
2011-08-20 04:43:47 -07:00
Chris Robinson
5290c820b4
Print the ALC_DEFAULT_ALL_DEVICES_SPECIFIER when available
2011-08-20 04:16:22 -07:00
Chris Robinson
22ad15e1f1
Move some functions into a separate helper source file
2011-08-20 04:01:07 -07:00
Chris Robinson
80b8abb0ec
Don't enumerate "PulseAudio Default" in the ALL_DEVICES list
2011-08-20 03:00:38 -07:00
Chris Robinson
529ff3197a
Don't expose "DirectSound Default" in the ALL_DEVICES list
...
This is under the assumption that one of the devices in ALL_DEVICES corresponds
to the default. This is not true for all backends (eg, ALSA).
2011-08-20 02:49:15 -07:00
Chris Robinson
b036bc9e04
More closely emulate pthread_once in Windows
2011-08-20 01:07:27 -07:00
Chris Robinson
9989f33fc2
Move backend sources to a separate sub-directory
2011-08-20 00:41:47 -07:00
Chris Robinson
ba4456d24a
Use the proper variable type
2011-08-19 23:05:54 -07:00
Chris Robinson
00718ca03f
Use the string ID instead of numeral index to reference the ALSA card
...
The index has a habit of changing, where the ID should be more consistent.
2011-08-19 20:47:08 -07:00
Chris Robinson
6b8475b435
Add options to specify alternate ALSA device prefixes
2011-08-19 04:02:36 -07:00
Chris Robinson
e51295c79e
Don't scale the wet send by the number of channels
...
Each channel should be treated as a distinct audio source, so multiple channels
should act as multiple sources.
2011-08-19 03:59:57 -07:00
Chris Robinson
b40aa8636b
Remove a couple unneeded variables
2011-08-19 03:01:57 -07:00
Chris Robinson
b3645df56f
Delete the mutex if the device fails to open
2011-08-19 02:58:21 -07:00
Chris Robinson
711f0a29ec
Make sure there's a valid backend before trying to open a device
2011-08-19 02:55:36 -07:00
Chris Robinson
e8e1286572
Remove the "via *" portion of the enumerated devices
2011-08-19 01:59:03 -07:00
Chris Robinson
3d722b9ba0
Don't remove backends that fail to initialize
2011-08-19 01:54:55 -07:00
Chris Robinson
4ac0a507e0
Use only the first available backend for playback or capture devices
...
This should help cut down on the number of duplicate devices when enumerating
on a system that supports multiple backends. It will also avoid the problem of
backends that don't play well with others (eg, PulseAudio).
2011-08-19 01:41:16 -07:00
Chris Robinson
d54908d946
Attempt to connect a context when pulseaudio initializes
2011-08-19 01:40:16 -07:00
Chris Robinson
6ba5128f72
Use separate lists for playback and capture backends
2011-08-19 00:30:05 -07:00
Chris Robinson
c96a6c2b1b
Remove a typedef
2011-08-18 23:58:00 -07:00
Chris Robinson
0b0588cc37
Load backend libs on init
2011-08-18 23:56:11 -07:00
Chris Robinson
742bb12498
Make DSoundLoad return a boolean
2011-08-18 01:17:42 -07:00
Chris Robinson
f00017c8c1
Avoid some LP types
2011-08-18 00:31:44 -07:00
Chris Robinson
d976d02936
Only attempt to load MMDevApi and DSound once, on init
2011-08-18 00:13:43 -07:00
Chris Robinson
45f0886eba
Set the proper union member to 0
2011-08-17 20:44:05 -07:00
Chris Robinson
057fef88ae
Remove backends that fail to initialize
2011-08-17 06:15:43 -07:00
Chris Robinson
8148626ba3
Allow the backend init functions to return failure
2011-08-17 06:05:26 -07:00
Chris Robinson
14ffb8bd9b
Coalesce some mixer sample converters
2011-08-17 02:33:25 -07:00
Chris Robinson
2f8510db31
Avoid reading some more source parameters multiple times when updating
2011-08-17 01:54:09 -07:00
Chris Robinson
38a4d9a6c5
Get rid of the remaining min/max usage
2011-08-16 18:53:04 -07:00
Chris Robinson
9f5bf5f930
Rename minF/maxF/clampF to minf/maxf/clampf for consistency
2011-08-16 18:40:21 -07:00
Chris Robinson
04dad28228
Use mini/maxi/clampi and minu/maxu/clampu to replace min/max calls
2011-08-16 18:33:10 -07:00
Chris Robinson
a96f817738
Avoid a float->int->float conversion
2011-08-16 06:13:55 -07:00
Chris Robinson
8a51a7ea2d
Use inline minF/maxF/clampF functions instead of the __min/__max macros
2011-08-16 04:21:58 -07:00
Chris Robinson
b3cb511c06
Fix wet path conehf calculation
2011-08-13 06:58:05 -07:00
Chris Robinson
7e3d02d991
Make sure there's a buffer to render loopback samples to
2011-08-12 15:44:21 -07:00
Chris Robinson
412cec73de
Avoid a temporary throw-away buffer for mixing null output
2011-08-12 15:42:36 -07:00
Chris Robinson
a72c0f7470
Use an existing function to clear and free the context
2011-08-12 05:40:09 -07:00
Chris Robinson
45a245d7de
Round the HRTF sample step count
2011-08-11 21:43:21 -07:00
Chris Robinson
1e60481040
Use ARM Neon vector ops to apply HRTFs when available
2011-08-11 19:02:45 -07:00
Chris Robinson
cda4c738e8
Don't declare i in a for() statement
2011-08-08 13:34:42 -07:00
Chris Robinson
f7c176e8ca
Use a message thread to handle MMDevAPI backend methods
...
Because MMDevAPI uses COM, CoInitialize must be called on the thread(s) where
the device calls are made. OpenAL has no such requirement, thus no guarantee
that COM will be (or remain) initialized on the calling thread(s).
2011-08-03 10:42:29 -07:00
Chris Robinson
3e2bc847d8
Avoid closing devices and deinitializing backends on process exit
...
They are still closed and deinitialized when the DLL is simply being detached
(via FreeLibrary), however.
2011-08-03 09:46:18 -07:00
Chris Robinson
b5092a6212
Delay reading the config file on Windows, too
2011-08-03 09:37:58 -07:00
Chris Robinson
81d401eab5
Use specialized click removal loops for mono and stereo output
2011-07-30 05:43:47 -07:00
Chris Robinson
f986f7dfad
Wait until all headers are unprepared before freeing the buffer
2011-07-28 08:27:52 -07:00
Chris Robinson
bcbc1dea25
Make the thread event auto-resetting
2011-07-28 08:23:19 -07:00
Chris Robinson
c8326ab328
Remove the unnecessary wave header event
...
It's only ever set before sending the quit message, which will set the thread
event. It's also only waited on just before the thread event is used to signal
the end of the thread.
2011-07-28 08:18:43 -07:00
Chris Robinson
91c6bc58dc
Use unnamed events for winmm
2011-07-28 08:16:09 -07:00
Chris Robinson
c722579c18
Make the DSound and MMDevAPI events initially non-signaled
2011-07-24 05:29:43 -07:00
Chris Robinson
2f3bd5b5d9
Move an include to where it makes more sense to be
2011-07-23 05:53:53 -07:00
Chris Robinson
fad80a4f92
Don't cast for the float versions of math functions
2011-07-23 05:52:10 -07:00
Chris Robinson
1b0a55f44c
Use real-time priority by default on Windows
...
It's actually "time-critical", but it seems normal priority doesn't cope as
well when the system is under moderate load.
2011-07-23 05:44:55 -07:00
Chris Robinson
14b359beb0
Fix cmake check
2011-07-23 04:36:03 -07:00
Chris Robinson
f32876d4bd
Check for the finite() function along with _finite()
2011-07-23 04:23:54 -07:00
Chris Robinson
13f9dbe582
Look for ieeefp.h and include it when appropriate
2011-07-23 04:06:29 -07:00
Chris Robinson
8dfa2560b1
Use a better method for determining if shared functions exist
2011-07-23 00:48:19 -07:00
Chris Robinson
0c8c3b16d2
Round UpdateSize to the nearest multiple of MMDevAPI's period size
2011-07-21 18:53:15 -07:00
Chris Robinson
3d2812bd35
Reset the MMDevAPI and DSound events before starting playback
2011-07-21 17:04:33 -07:00
Chris Robinson
a0e5cbc47f
Fix DSound UpdateSize calculation when NumUpdates is clamped
2011-07-21 16:53:25 -07:00
Chris Robinson
d5ddc6acee
Make sure some state values are finite
2011-07-21 16:18:21 -07:00
Chris Robinson
30750d8763
Create and close the DSound event handle with the device
2011-07-21 03:38:43 -07:00
Chris Robinson
3e4659076a
Use an event to signal the mmdevapi backend to mix
...
Also, use a multiple of the default period size for the update size, since the
event apparently triggers on period boundaries.
2011-07-21 03:32:20 -07:00
Chris Robinson
7cd6327969
Use DSound notifications to wake up the mixer thread
2011-07-21 02:48:09 -07:00
Chris Robinson
77128d298e
Add an option to emulate EAX reverb using standard reverb
2011-07-20 22:53:46 -07:00
Chris Robinson
1e8a379a03
Add a config option to boost reverb output
2011-07-20 22:26:16 -07:00
Chris Robinson
b889823b21
Set real-time priority for the WaveOut backend
2011-07-20 19:59:47 -07:00
Chris Robinson
9723c553b6
Scale reverb output based on the number of channels
...
A scale of sqrt(2/numchannels) is used so the perceived volume matches as if it
was stereo output, which seems to match other implementations.
2011-07-20 19:57:24 -07:00
Chris Robinson
6bfb0371eb
Make sure some effect property values are finite
2011-07-20 03:33:06 -07:00
Chris Robinson
1348bf2476
Make sure some listener property values are finite
2011-07-20 03:27:05 -07:00
Chris Robinson
36446f3a58
Make sure source vectors are finite values
2011-07-20 03:18:46 -07:00
Chris Robinson
5a484f7493
Look for an isfinite function
2011-07-20 03:18:11 -07:00
Chris Robinson
244d60fb96
Slightly improve the gain change delta calculation
2011-07-19 00:43:31 -07:00
Chris Robinson
0ae9638aa5
Add a lost comment
2011-07-18 17:44:37 -07:00
Chris Robinson
55b893c784
Improve buffer metrics when using the MMDevAPI backend
2011-07-17 19:42:03 -07:00
Chris Robinson
c9b6bc848f
Simplify some reverb update calculations
2011-07-17 17:51:13 -07:00
Chris Robinson
f97310c757
Apply the click removal offset first, before decreasing it
2011-07-17 07:23:19 -07:00
Chris Robinson
87b3520d02
Fix GetMovingHrtfCoeffs return type
2011-07-17 07:16:10 -07:00
Chris Robinson
887de0523f
Scale the delay down once for the post-stepping mix loop
2011-07-17 02:34:35 -07:00
Chris Robinson
a7a1f802a8
Invert the device channel map
2011-07-17 01:55:25 -07:00
Chris Robinson
163cc62a00
Add a couple new functions to handle deferred updates
...
Currently no-ops, they will be used in place of alcSuspendContext and
alcProcessContext for batching updates since the mentioned functions have no
coherent functionality between system implementations.
2011-07-16 16:59:20 -07:00
Chris Robinson
5f566ebf05
Fade between HRTF coefficients, to reduce noise from sudden changes
2011-07-16 16:24:01 -07:00
Chris Robinson
1622986467
Fix some format types
2011-07-16 04:21:40 -07:00
Chris Robinson
ce6db53e5f
Apply the slot gain during the effect update method
2011-07-16 03:35:51 -07:00
Chris Robinson
292ea0607d
Request a slot update when the gain changes
2011-07-16 03:15:28 -07:00
Chris Robinson
3bd7256dc8
Pass the effect slot to the effect update method
2011-07-16 03:02:16 -07:00
Chris Robinson
da2429a1d0
Allow effect slots to be updated asynchronously
...
Updates when the slot changes effect type is still sychronous, however, to
ensure a proper state for the Process method call. Fixing this would
essentially require all effects to work from the same state.
2011-07-16 02:41:02 -07:00
Chris Robinson
54b5f35125
Warn about HRTF being disabled in the compatibility check function
2011-07-16 00:39:13 -07:00
Chris Robinson
23bfb03d2a
Improve the external HRTF data file format
...
Although more parameters are read from the file, some must currently conform to
specific values. In the future, these restrictions may be lifted.
2011-07-16 00:22:01 -07:00
Chris Robinson
7381b1a696
Make the sample rate part of the HRTF struct
2011-07-15 23:45:03 -07:00
Chris Robinson
99bcb7a0f6
Use both root paths when looking for Wine headers, and disable them by default
2011-07-13 01:49:43 -07:00
Chris Robinson
17773c5644
Rename the ERROR macro to ERR
2011-07-13 01:43:00 -07:00
Chris Robinson
e1e47c6e43
Fix CMAKE_FIND_ROOT_PATH in XCompile.txt
2011-07-13 01:31:17 -07:00
Chris Robinson
2bb3d31d5c
Avoid holding the global list lock while calling some capture methods
2011-07-13 01:21:30 -07:00
Chris Robinson
2a7bf1234b
Use the correct send slot when mixing
2011-07-11 22:32:27 -07:00
Chris Robinson
e56e462317
Fix default room air absorption
2011-07-11 22:07:37 -07:00
Chris Robinson
3245e992c3
Always pass the slot's effect to the update method
2011-07-11 01:51:24 -07:00
Chris Robinson
1299fa2801
Avoid some alListenerfv calls while under the context lock
2011-07-11 01:21:29 -07:00
Chris Robinson
52c78194b3
Update the context when an auxiliary slot is modified
2011-07-11 01:13:58 -07:00
Chris Robinson
58466a304b
Use a flag to signifiy that all sources need updating
2011-07-11 01:05:42 -07:00
Chris Robinson
51c09e94b8
Avoid some alGet* duplication
2011-07-11 00:51:18 -07:00
Chris Robinson
22ccaf7f4a
Trace device update size and count
2011-07-11 00:05:53 -07:00
Chris Robinson
b237ebba44
Trace when the format is being requested
2011-07-10 23:57:45 -07:00
Chris Robinson
6038bbd6ec
Avoid redundantly tracing HRTF status
2011-07-10 23:50:55 -07:00
Chris Robinson
84a67ef766
Trace device parameters when updating
2011-07-10 22:54:39 -07:00
Chris Robinson
e03df97919
Accept "openal soft" and "openal-soft" to open a device
2011-07-10 22:36:10 -07:00
Chris Robinson
7bedd9ef7a
Replace some AL_PRINT calls with proper logging
2011-07-10 22:32:44 -07:00
Chris Robinson
72cd670636
Use logging macros in the opensl backend
2011-07-10 22:31:24 -07:00
Chris Robinson
9b028e76d2
Use logging macros in the wave backend
2011-07-10 22:29:25 -07:00
Chris Robinson
479b4c9531
Use logging macros in the solaris backend
2011-07-10 22:28:34 -07:00
Chris Robinson
28f7d2151e
Use logging macros in the winmm backend
2011-07-10 22:27:46 -07:00
Chris Robinson
cd1560e2b0
Use logging macros in the coreaudio backend
2011-07-10 22:26:02 -07:00
Chris Robinson
87b4c93af9
Use logging macros for the portaudio backend
2011-07-10 22:22:38 -07:00
Chris Robinson
0393d4ba71
Use logging macros in the sndio backend
2011-07-10 22:20:34 -07:00
Chris Robinson
717a0592ba
Use logging macros in the oss backend
2011-07-10 22:17:12 -07:00
Chris Robinson
a67aff220f
Use logging macros in the null backend
2011-07-10 22:15:16 -07:00
Chris Robinson
e47e9c5ac3
Use logging macros in the mmdevapi backend
2011-07-10 22:13:57 -07:00
Chris Robinson
4cd9367520
Use logging macros in the dsound backend
2011-07-10 21:57:32 -07:00
Chris Robinson
c4ac014a0c
Use the logging macros for the alsa backend
2011-07-10 21:53:32 -07:00
Chris Robinson
21c99ca1e8
Use the logging macros in the pulseaudio backend
2011-07-10 21:51:41 -07:00
Chris Robinson
2cd3e9bcdb
Use the logging macro for thunk errors
2011-07-10 21:49:01 -07:00
Chris Robinson
f56fbbb777
Use logging macros for config handling
2011-07-10 21:44:42 -07:00
Chris Robinson
b64156aa2b
Add some macros for logging at various levels, and use them
2011-07-10 21:30:25 -07:00
Chris Robinson
5cb4129bc7
Use a per-device lock instead of a global one
2011-07-06 05:07:36 -07:00
Chris Robinson
bed264ad77
Use a Lock/UnlockDevice function instead of locking a NULL context
2011-07-06 02:58:43 -07:00
Chris Robinson
f8be0448b0
Don't modify the source's WetGain[HF]Auto because of a slot's state
2011-07-06 00:07:37 -07:00
Chris Robinson
75fa891e0a
Store and use the send slot in the source params
2011-07-05 14:14:20 -07:00
Chris Robinson
21574f7e16
Scale the WetGain parameter directly instead of on each application
2011-07-05 14:00:11 -07:00
Chris Robinson
0903a7f1e0
Apply wet path calculations with their dry path equivalents
...
The auxiliary slot (and related effect) properties are retrieved at the same
time as the source properties. This will help ensure each property is accessed
from the source and slot only once.
2011-07-05 11:00:52 -07:00
Chris Robinson
c8d385c998
Use a helper to tell if an effect type is reverb
2011-07-05 04:36:41 -07:00
Chris Robinson
4c35bfbc10
Read the source's RoomRolloffFactor once
2011-07-05 03:55:16 -07:00
Chris Robinson
83e322c5f3
Force front-centered for mono sounds that comes from the listener under HRTF
2011-07-05 03:36:14 -07:00
Chris Robinson
6020b964c7
Fix some formatting
2011-07-04 22:36:51 -07:00
Chris Robinson
b2d5367830
Fix rolloff calculations for auxiliary sends
2011-07-04 07:32:23 -07:00
Chris Robinson
d307ee8c2f
Implement a lerped lookup of the HRTF coefficients/delays
...
Code supplied by Christopher Fitzgerald
2011-07-04 07:20:38 -07:00
Chris Robinson
202f57552a
Use a proper enum for the distance model
2011-07-03 19:39:19 -07:00
Chris Robinson
5ba864b6da
Calculate the wet gain decay time attenuation with linear values
2011-07-03 19:22:14 -07:00
Chris Robinson
30e97d5223
Read the RoomRolloffFactor property with the other properties
2011-07-03 03:34:40 -07:00
Chris Robinson
69be02c0fd
Set the default auxiliary sends to MAX_SENDS
...
Since the property is ALC_MAX_AUXILIARY_SENDS, it makes more sense to default
it to the maximum and let the app lower it on request.
2011-07-03 03:18:18 -07:00
Chris Robinson
eefda551de
Properly handle input samples for changes with the FIR coefficients
...
This makes sure previously processed samples are not changed due to changes in
the FIR filter. It also applies the coefficients in ascending order with the
values, to improve caching.
2011-07-03 02:14:33 -07:00
Chris Robinson
ac7ca07221
Get rid of a couple typedefs
2011-07-02 21:33:53 -07:00
Chris Robinson
b043390ec2
Update a trace
2011-07-02 19:02:45 -07:00
Chris Robinson
4c94ba6d8a
Properly save the original FPU state when using _controlfp
2011-07-02 02:56:06 -07:00
Chris Robinson
7b87519c15
Move functions to where they're used
2011-07-02 02:54:05 -07:00
Chris Robinson
14bfe0293a
Use separate functions to find valid ALC loopback device formats
2011-07-02 02:51:33 -07:00
Chris Robinson
931d422443
Use separate ALC enums for loopback device formats
2011-07-02 02:25:34 -07:00
Chris Robinson
895150eebe
Update HRTF coefficients
2011-07-01 05:08:57 -07:00
Chris Robinson
a5ccae5779
Do air absorption with linear gain values
...
This copies the way the calculation is done with the wet path
2011-07-01 02:30:15 -07:00
Chris Robinson
1635132fd5
Use a template function to handle processing ring modulator types
2011-07-01 01:48:04 -07:00
Chris Robinson
048aee66cf
Avoid accessing source properties more than once when updating parameters
2011-07-01 01:46:56 -07:00
Chris Robinson
aea2868ce1
Avoid calling some al[Get]Effect functions while the context is locked
2011-06-30 20:59:35 -07:00
Chris Robinson
723755788d
Rename Suspend/ProcessContext since they are locking a mutex
2011-06-30 18:10:04 -07:00
Chris Robinson
032d0836a7
Declare some variables closer to where they're used
2011-06-29 23:32:48 -07:00
Chris Robinson
5736bbc3e4
Add a source property to skip channel virtualization for multi-channel buffers
...
With virtualization disabled, channels are mapped directly from input to output
and any input channel that is missing an output is dropped. Any virtualization
effects (such as HRTF filters) for positional cues are also skipped.
The idea is to allow applications a way to play pre-filtered audio that channel
vitualization effects could interfere with.
2011-06-29 23:18:49 -07:00
Chris Robinson
1b773a8585
Select the correct resampler
2011-06-28 00:30:00 -07:00
Chris Robinson
3f0214ed6b
Implement capture support for the CoreAudio backend
2011-06-27 23:49:17 -07:00
Chris Robinson
ea83608ee4
Avoid a junk sample at the start of the ring buffer, and allocate the buffer
...
memory at the end of the ring buffer itself.
2011-06-27 14:30:45 -07:00
Chris Robinson
8cae1aee80
Clamp PortAudio output to stereo
2011-06-27 01:00:34 -07:00
Chris Robinson
3db061e670
Combine the two pa_load definitions into one
2011-06-26 15:40:15 -07:00
Chris Robinson
efaaf9b5f9
Don't bother with a per-context lock for disconnecting devices
2011-06-26 01:26:50 -07:00
Chris Robinson
c451bf370d
Remove an incorrect ProcessContext call
2011-06-26 01:22:29 -07:00
Chris Robinson
212b187447
Add a function to check if a device is compatible with the Hrtf filter
2011-06-25 21:39:36 -07:00
Chris Robinson
ac9a6e891f
Fix the cross-compile toolchain script
...
CMAKE_INSTALL_PREFIX is now properly set, and the pkgconfig env vars are set so
it won't find .pc files for the default compiler.
2011-06-25 13:49:40 -07:00
Chris Robinson
1fc44d5788
Select the mixer during a source update
2011-06-25 00:13:56 -07:00
Chris Robinson
913c70557d
Fix formatter for size_t
2011-06-24 15:03:29 -07:00
Chris Robinson
e8b785677d
Make sure to clear HAVE_SNDIO before checking backends
2011-06-23 18:39:16 -07:00
Chris Robinson
5c17eb69cb
Fix comment typo
2011-06-23 17:02:57 -07:00
Chris Robinson
f6d1e0f299
Avoid setting a thread priority for OpenBSD
...
It apparently causes a negative performance impact regardless of which values
are set.
2011-06-23 15:42:35 -07:00
Chris Robinson
e42bdc2022
Fix device Update parameters for sndio
2011-06-23 15:42:16 -07:00
Chris Robinson
cf44f499b8
Be silent about failing to load shared libs
2011-06-22 20:48:45 -07:00
Chris Robinson
39c984fda8
Actually load libsndio.so
2011-06-22 20:45:45 -07:00
Chris Robinson
9c23bc53b7
Update the default drivers config option comment
2011-06-22 19:31:27 -07:00
Chris Robinson
96b6cd46e6
Add a FreeBSD sndio backend
2011-06-22 19:29:13 -07:00
Chris Robinson
bc6e3879d4
Properly handle the PortAudio lib in OpenBSD
2011-06-22 16:43:37 -07:00
Chris Robinson
3dcfd0dc98
Use 'Distance' for the unclamped distance value, since the clamped value is
...
only used for distance attenuation
2011-06-21 12:55:21 -07:00
Chris Robinson
40b8934487
Calculate wet gain when needed
2011-06-18 16:45:26 -07:00
Chris Robinson
0d39ac6528
Allow alThunkAddEntry to return a proper error
2011-06-17 23:59:25 -07:00
Chris Robinson
157e1394d6
Open the log file with config initialization
2011-06-17 18:54:05 -07:00
Chris Robinson
edf78b077e
Use separate lines for HRTF history and values
2011-06-17 16:22:39 -07:00
Chris Robinson
753e64c76c
Do stereo duplication in two passes
...
First using the rear channels, then using the normal stereo channels
2011-06-17 16:20:18 -07:00
Chris Robinson
3a072a294d
Avoid resetting a flag that isn't on
2011-06-17 14:59:10 -07:00
Chris Robinson
23ae3c69b5
Handle the device's disconnected status earlier when playing a source
2011-06-17 13:21:02 -07:00
Chris Robinson
bef9c5e2d5
Avoid some al[Get]Effect* calls from under the context lock
2011-06-17 13:07:47 -07:00
Chris Robinson
58add24830
Call al[Get]Filterf directly from the *v equivalents
...
There are no filter parameters which take multiple values, and besides some
duplicated checks, they call straight through anyway.
2011-06-16 14:40:37 -07:00
Chris Robinson
fdffbfd2c4
Use the predefined filter macros instead of hardcoded values
2011-06-16 10:53:01 -07:00
Chris Robinson
357f841e88
Fix namespacing of EFX filter property values
2011-06-16 10:52:17 -07:00
Chris Robinson
7d73ac4405
Avoid calling some AL functions from under the context lock
...
There are still some more occurances to clear out (deletion in gen error,
effects, some filters), which shall be coming up. There is a possibility for a
deadlock between the listlock and the global/context lock, if another attempt
to get the listlock is made while under the context lock.
2011-06-16 09:14:41 -07:00
Chris Robinson
c429a5be25
The DirectSound DLL is always loaded by the Win32 API
2011-06-16 06:17:57 -07:00
Chris Robinson
fba58fb1f0
Make sure user configuration is always initialized for Windows
2011-06-16 05:36:16 -07:00
Chris Robinson
dad7f1cf0f
Prefer DllMain when in Windows
2011-06-16 05:34:13 -07:00
Chris Robinson
8bee7a2b7f
Don't suspend individual contexts when updating
2011-06-16 05:29:38 -07:00
Chris Robinson
632b4e6332
Avoid some channel order duplication
2011-06-16 00:00:40 -07:00
Chris Robinson
f26798bd19
Remove some unnecessary casts
2011-06-15 23:52:21 -07:00
Chris Robinson
7f4dcefc80
Remove the databuffer functions and structs
...
It's been disabled for a while now, and not likely to be re-enabled.
2011-06-15 23:46:35 -07:00
Chris Robinson
d702cb9b49
Avoid an unnecessary lock when retrieving the current context
2011-06-15 23:22:34 -07:00
Chris Robinson
2081228055
Declare some variables where they're used
2011-06-15 06:45:51 -07:00
Chris Robinson
f85283c036
Don't prematurely set the HRTF flag
2011-06-15 02:00:41 -07:00
Chris Robinson
14d6ab384d
Use a flag to specify when a device is running
2011-06-15 01:59:07 -07:00
Chris Robinson
62036745f3
Separate config init from library init
...
OSX has a bug where the file descriptor resource limit can't be increased once
certain functions (such as fopen) are used. Since lib initialization happens in
a global constructor and includes opening and parsing config files, it prevents
apps from being able to increase the rlimit once the lib is loaded, which is
usually before main().
By delaying config init, it allows apps the opportunity to change the rlimit
before calling certain OpenAL functions.
2011-06-14 09:43:33 -07:00
Chris Robinson
264274685a
Throw an error when no global initialization is available
2011-06-14 08:47:53 -07:00
Chris Robinson
1babf28491
Unset the local context if it's being destroyed
2011-06-14 08:27:09 -07:00
Chris Robinson
5a15dc4ddf
Avoid multiple list searches when destroying devices and contexts
2011-06-14 07:04:08 -07:00
Chris Robinson
0f782b385b
Create TLS for contexts earlier
2011-06-14 06:57:51 -07:00
Chris Robinson
1534fcfafd
Remove some unneeded includes
2011-06-14 05:06:39 -07:00
Chris Robinson
1c7ed6e693
Avoid using function pointers directly in the ALSA backend
...
Also make it use the lib wrappers
2011-06-14 05:00:59 -07:00
Chris Robinson
0c5c56cf88
Avoid using function pointers directly in the PulseAudio backend
...
Also, switch to the lib wrapper functions
2011-06-14 04:45:52 -07:00
Chris Robinson
53c5275aa4
Use a proper enum for the probe type
2011-06-14 04:02:58 -07:00
Chris Robinson
c93d7a1721
Open the logfile in append/text mode
2011-06-14 03:04:00 -07:00
Chris Robinson
9c7dad1bdf
Combine multiple probe functions into one
2011-06-14 02:28:15 -07:00
Chris Robinson
bfe09b933e
Trace errors in the opensl callback
2011-06-14 01:51:44 -07:00
Chris Robinson
823f5779e1
Set format_pcm according to the device format
2011-06-14 01:48:13 -07:00
Chris Robinson
96a18ba1d5
Make fewer assumptions on the OpenSL buffer count
2011-06-12 19:36:28 -07:00
Chris Robinson
b8bb41107c
Don't be silent when an OpenSL error occurs
2011-06-12 18:10:01 -07:00
Chris Robinson
ccffb7e380
Add missing semicolon
2011-06-12 16:30:51 -07:00
Chris Robinson
39088b2035
Uninline the timeGetTime wrapper
2011-06-12 05:04:36 -07:00
Chris Robinson
8db05b8c17
Avoid defining a macro twice
2011-06-12 04:45:03 -07:00
Chris Robinson
ba069ded40
Add an OpenSL backend
...
Currently for Android's OpenSL ES implementation
2011-06-12 04:41:42 -07:00
Chris Robinson
6b8209fdc9
Cleanup dynamic loading in the PortAudio backend
2011-06-12 04:37:32 -07:00
Chris Robinson
ccf62fc525
Add wrappers to handle dyanmically loading libs
2011-06-12 04:36:24 -07:00
Chris Robinson
6bfab6427a
Avoid calling some function pointers directly
2011-06-12 03:55:02 -07:00
Chris Robinson
aab4f85383
Change HRTF table user input format
2011-06-03 03:15:13 -07:00
Chris Robinson
99b9208896
Improve default HRTF filter delays
...
They're now rounded from the source's float delays
2011-06-03 03:09:13 -07:00
Chris Robinson
7402e3743d
Readd the default HRTF filter (based on the diffuse set)
2011-06-03 01:47:33 -07:00
Chris Robinson
7ddfacb58f
Use a minimum phase HRTF data set
...
This reduces the coefficient size from 128 down to 32, with a set of delays
2011-06-03 01:06:00 -07:00
Chris Robinson
c7a80418d9
Separate device-type parameter checks for alcGetIntegerv
2011-05-29 23:20:33 -07:00
Chris Robinson
e98104dac8
Avoid holding locks once the context is removed from the lists
2011-05-29 23:03:59 -07:00
Chris Robinson
884f668855
Uninline a couple more functions
2011-05-29 03:28:34 -07:00
Chris Robinson
2bbe9d1b1f
Uninline a couple mutex wrapper functions
2011-05-29 03:08:26 -07:00
Chris Robinson
91c3cffe41
Protect the mixer while the device's context array is being updated
2011-05-29 03:04:32 -07:00
Chris Robinson
60a55aa897
Hold the global lock while the device is being updated
2011-05-29 02:56:00 -07:00
Chris Robinson
9325a78043
Use a separate lock for device and context list accesses
2011-05-29 02:26:46 -07:00
Chris Robinson
cd0e80126c
Require a lock for IsDevice calls
2011-05-28 22:21:11 -07:00
Chris Robinson
1778c0d7d8
Get the device format directly from the string
2011-05-28 21:37:33 -07:00
Chris Robinson
b07901f1a0
Set the subformat type when an unknown one is encountered
2011-05-28 21:21:37 -07:00
Chris Robinson
a15a1abb21
Trace the format that is set when reporting HRTF disabled
2011-05-28 20:40:46 -07:00
Chris Robinson
7da2eea8f0
Add a 5.1 device format that uses side channels instead of back
2011-05-28 19:35:32 -07:00
Chris Robinson
596a1af7d9
Switch to the diffuse HRTF data set
2011-05-26 15:43:26 -07:00
Chris Robinson
6b6a7757ce
Clear HRTF coefficients for the LFE channel
2011-05-25 19:04:19 -07:00
Chris Robinson
8a6266239c
Rename Quad to Quadraphonic
2011-05-24 14:34:53 -07:00
Chris Robinson
d83af679bd
Fix handling of GUID definitions
2011-05-22 13:29:32 -07:00
Chris Robinson
af005668da
Avoid using an unnecessary temp variable
2011-05-21 23:14:55 -07:00
Chris Robinson
d07e94056d
Use libuuid when it has MMDevApi's UIDs
2011-05-21 21:57:44 -07:00
Chris Robinson
4d7aab1df4
Make some declarations static or static const
2011-05-21 21:28:27 -07:00
Chris Robinson
c3cbfecbae
Remove duplicate macros
2011-05-21 21:16:30 -07:00
Chris Robinson
a9d9553fff
Use a multi-dimensional array for the panning LUT
2011-05-21 17:45:54 -07:00
Chris Robinson
5cdf774ea7
Use the stored sample and channel count
2011-05-21 17:36:54 -07:00
Chris Robinson
b75d4beb1a
Dedicated dialog should go in front
2011-05-20 09:50:31 -07:00
Chris Robinson
35a0430c81
Store the separate effect parameters in a union
2011-05-20 09:36:36 -07:00
Chris Robinson
1b5caa4112
Check against the correct limits
2011-05-20 09:19:53 -07:00
Chris Robinson
cbbb04eb40
Always fully normalize the position when using HRTF
2011-05-20 07:58:05 -07:00
Chris Robinson
7396aaf2c2
Fix HRTF elevation calculation
2011-05-19 17:57:14 -07:00
Chris Robinson
555ccce4ee
Update the device update fields after initializing the MMDevApi device
2011-05-19 15:55:27 -07:00
Chris Robinson
b838d123f8
Multiply the history offset in the filtering funcitons
2011-05-18 18:52:47 -07:00
Chris Robinson
1d3926e187
Remove some more duplication
2011-05-18 18:49:41 -07:00
Chris Robinson
194f8fc791
Uninline lpCoeffCalc
2011-05-18 18:42:25 -07:00
Chris Robinson
c316766144
Use lerp() in a couple more places
2011-05-18 18:09:04 -07:00
Chris Robinson
c00b2f9254
Avoid looking in the buffer queue to find the frame size
2011-05-18 17:02:18 -07:00
Chris Robinson
35c38e0b5e
Update alsoftrc.sample
2011-05-18 15:13:11 -07:00
Chris Robinson
87ef4eeb36
Add cmake options to require specific backends
...
Note that this alone doesn't gurantee run-time availability for backends libs
that are loaded at run-time.
2011-05-18 05:34:21 -07:00
Chris Robinson
06f5f0b7c8
Make mixers channel-count agnostic
...
As a result, this combines/removes a bunch of mixers
2011-05-17 13:25:15 -07:00
Chris Robinson
9f91ff4734
Move the channel loop to the outside of the sample mixing loop
2011-05-17 12:49:26 -07:00
Chris Robinson
f7936b4709
Avoid multiple getenv calls to the same var
2011-05-17 10:15:53 -07:00
Chris Robinson
60965e3a6c
Determine the function export attribute using CMake
2011-05-17 09:13:55 -07:00
Chris Robinson
b5cb2d633c
Avoid including config.h in the utilities
2011-05-17 09:03:54 -07:00
Chris Robinson
810734718b
Always look for libwinmm
2011-05-17 08:36:26 -07:00
Chris Robinson
ca48c2e51b
Modify the cross-compile toolchain file to only need a HOST option
2011-05-17 06:53:36 -07:00
Chris Robinson
86ed2ee72b
Add mmdevapi to alsoftrc.sample
2011-05-17 05:04:08 -07:00
Chris Robinson
2abeed069b
Improve handling of format support for MMDevApi
2011-05-17 04:54:09 -07:00
Chris Robinson
569106acd3
Fix COM initialization with MMDevApi
2011-05-16 10:31:38 -07:00
Chris Robinson
507d2f8afb
Properly set the channel order for WinMM playback
2011-05-16 10:28:17 -07:00
Chris Robinson
54769a823e
Implement playback using MMDevApi
2011-05-16 04:13:37 -07:00
Chris Robinson
cf3287f8ec
Fix closing of waveOut devices
2011-05-16 03:16:47 -07:00
Chris Robinson
c5fbc9f05c
Define GUIDs in ALc.c instead of the individual backend source files
2011-05-15 21:47:50 -07:00
Chris Robinson
2940b0f390
Add a skeleton backend for MMDevApi
2011-05-15 20:26:25 -07:00
Chris Robinson
442e41f825
Add an option to use Wine's Windows headers when building under MinGW
2011-05-15 20:25:09 -07:00
Chris Robinson
e95b718cf4
Improve handling of device channels with DSound
2011-05-15 05:24:27 -07:00
Chris Robinson
143c08bfcb
Use channel config strings in log output
2011-05-15 04:49:18 -07:00
Chris Robinson
b3902c8950
Add functions to get strings from the device format
2011-05-15 04:03:15 -07:00
Chris Robinson
7210796cb8
Combine multiple loops
2011-05-15 02:12:42 -07:00
Chris Robinson
949cfe2ceb
Re-enable duplication for stereo sounds
2011-05-15 00:18:28 -07:00
Chris Robinson
c39f27d5f8
Set the duplicate-stereo flag properly after the device format is reset
2011-05-13 21:27:46 -07:00
Chris Robinson
c9ac4f06ff
Remove an unused macro and rename another
2011-05-07 04:35:49 -07:00
Chris Robinson
674b14faa3
Make a couple more pointers restricted
2011-05-07 04:32:53 -07:00
Chris Robinson
a8fdcd30a5
Some minor cleanups
2011-05-07 04:31:43 -07:00
Chris Robinson
db3cb23c1d
Add an option to reverse Z panning of mono sources
...
Applications that are not built around OpenAL's orientation system need to
convert their given vectors to it. Depending on how this is done, it can lead
to proper stereo (left-right) panning with improper surround sound (front-back)
panning, which thusly sounds correct with stereo output and incorrect with 4+
channel output.
This option is intended to help fix playback of such applications on surround
sound systems, without having to resort to forcing stereo output.
2011-05-07 03:54:46 -07:00
Chris Robinson
7972f7a2da
Combine duplicate arrays
2011-05-06 23:25:15 -07:00
Chris Robinson
8c3d50be28
Skip LFE with HRTF output
2011-05-06 04:46:21 -07:00
Chris Robinson
4198f3062c
Remove the device channel matrix
2011-05-06 04:42:54 -07:00
Chris Robinson
c2a6efc77a
Use the panning algorithms to build the multi-channel source matrix
...
This prevents the stereo-duplication option from working. It should hopefully
be restored soon.
2011-05-06 04:37:10 -07:00
Chris Robinson
6928487aa1
Remove some redundancy
2011-05-06 02:53:22 -07:00
Chris Robinson
e608317e70
Fix device flag value
2011-05-06 01:59:32 -07:00
Chris Robinson
64b5d7a519
Check the correct flag in the dsound backend
2011-05-06 01:53:13 -07:00
Chris Robinson
eef41e76d7
Don't clear the request flag if a new context doesn't specify a frequency
2011-05-06 01:50:19 -07:00
Chris Robinson
d583f7f307
Update sources automatically when device parameters change
2011-05-06 01:06:01 -07:00
Chris Robinson
f97eca34df
Minor source update fixes
2011-05-06 00:51:12 -07:00
Chris Robinson
1363e044ac
Remove the head_dampen option
...
Now that HRTF is properly supported, it's not needed
2011-05-06 00:38:10 -07:00
Chris Robinson
9967d4eadd
Mark a couple more pointers as restricted
2011-05-06 00:33:58 -07:00
Chris Robinson
2972de1047
Use function pointers to call the source mixer
2011-05-06 00:20:40 -07:00
Chris Robinson
38db4115fc
Fix a comment
2011-05-05 22:36:26 -07:00
Chris Robinson
0e824914b2
Use signed samples for 8-bit storage
2011-05-05 18:54:10 -07:00
Chris Robinson
7832a6d1d8
Add a warning when HRTF is disabled
2011-05-03 20:23:35 -07:00
Chris Robinson
0cce93a1f8
Fix WinMM backend compilation
2011-05-03 17:12:05 -07:00
Chris Robinson
679f2480c9
Add a device flag for channel config requests
2011-05-03 17:11:07 -07:00
Chris Robinson
db7ca2c7ca
Combine the mono and multi-channel mixer templates
2011-05-03 16:34:28 -07:00
Chris Robinson
e2850df07e
Use the same filters for mono sources and multi-channel
2011-05-03 16:18:46 -07:00
Chris Robinson
48def2fecb
Properly handle elevations that don't have angles up to 180
2011-05-03 03:15:28 -07:00
Chris Robinson
ba236ad108
Add a frequency-request device flag
2011-05-03 02:29:26 -07:00
Chris Robinson
9a28402b90
Fix non-spatialized mono sources
2011-05-02 18:33:32 -07:00
Chris Robinson
8c705cc4ea
Mark some mixer pointers as restricted
2011-05-02 17:14:57 -07:00
Chris Robinson
24aaa24b5c
Check for the C99 restrict keyword
...
GCC does not default to C99 mode yet, so does not know restrict, however it
still allows using __restrict in its place
2011-05-02 17:06:32 -07:00
Chris Robinson
fd795a7eeb
Add casts to silence some warnings
2011-05-02 15:04:35 -07:00
Chris Robinson
abdc254e55
Use a pointer-to-arrays for the local HRTF coefficients
2011-05-02 13:35:13 -07:00
Chris Robinson
f843b7e2e3
Implement HRTF mixers for multi-channel sources
2011-05-02 02:22:30 -07:00
Chris Robinson
eea86ab891
Use flags instead of separate bools
2011-05-01 18:18:37 -07:00
Chris Robinson
d7a452588c
Document the hrtf config option
2011-05-01 14:16:05 -07:00
Chris Robinson
56d9418119
Add an HRTF filter for mono sources
...
The data is based on the KEMAR HRTF data provided by MIT, which can be found at
<http://sound.media.mit.edu/resources/KEMAR.html >. The compact measurements
were used. See hrtf_tables.inc for more information.
The filter is only available for stereo output, using a 44100hz playback rate.
Note also that it currently only applies to mono sounds, and the cf_level and
head_dampen config options are ignored while it is active.
2011-05-01 13:59:44 -07:00
Chris Robinson
0109104027
Add some source fields for HRTF data
2011-05-01 13:21:56 -07:00
Chris Robinson
c9c965ef85
Add a device flag for enabling HRTF
2011-05-01 13:19:23 -07:00
Chris Robinson
af3adf5244
Be silent if the PulseAudio context fails to connect while probing
2011-04-30 17:58:37 -07:00
Chris Robinson
43f97b4da1
Use the new format names when possible
2011-04-29 11:55:59 -07:00
Chris Robinson
63f07db303
Add the SOFT moniker for the loopback extension functions and enums
2011-04-28 11:37:23 -07:00
Chris Robinson
2e9ca89dd3
Reorder some cases
2011-04-27 21:05:46 -07:00
Chris Robinson
8586aeabe8
Minor fix for 24-bit conversions to float and double
2011-04-27 19:26:27 -07:00
Chris Robinson
c031b4d5d0
Allow MSVC to build a static lib
...
Based on a patch by Michał Cichoń <michcic@gmail.com >
2011-04-27 16:33:44 -07:00
Chris Robinson
d91b3464a4
Fix 24-bit sample loading for big-endian
2011-04-27 15:46:30 -07:00
Chris Robinson
650d94e1a6
Change some sample type values
2011-04-27 12:20:50 -07:00
Chris Robinson
543134a6d2
Add loopback device properties to the ALCenum list
2011-04-27 12:18:24 -07:00
Chris Robinson
ab2626f9df
Add a couple in-progress extensions to the extension lists
2011-04-27 12:15:16 -07:00
Chris Robinson
d50f9249d6
Add support for packed 24-bit samples
2011-04-26 18:17:50 -07:00
Chris Robinson
10a9753183
Add a compatibility option to treat cone angles as half angles
...
All previous versions of the library treated the source cone angles as half
angles, which is contrary to the spec. Setting the __ALSOFT_HALF_ANGLE_CONES
environment variable to "true" or "1" restores the buggy behavior for
compatibility with applications that expect it.
This is not a config file option because new apps should not be made to depend
on the old behavior.
2011-04-22 23:17:27 -07:00
Chris Robinson
1e8718fe87
Convert full-width cone angle source properties to half-width
...
The spec intends the property values to be the full angle encompassed by the
cones, but the calculation interprets them as the angle from the center
point.
2011-04-22 22:59:58 -07:00
Chris Robinson
678d0b87d0
Apply the device matrix to the multi-channel source matrix
...
Mono sources and effects already output according to the available output
device channels. Multiplying the device matrix with the source matrix results
in a matrix that has the same effect as applying the source matrix followed by
the device matrix, so all the channel remixing can be done in one place.
2011-04-14 21:03:37 -07:00
Chris Robinson
319dfce300
Fix LFE channel output
2011-04-14 15:20:25 -07:00
Chris Robinson
c3e86933d0
Only set relevant device matrix entries
2011-04-12 17:08:02 -07:00
Chris Robinson
936acf8c10
Allow the buffer_samples API to be retrieved
2011-04-10 09:48:37 -07:00
Chris Robinson
358d402cd0
Move Convert_IMA4 into the template declarations
2011-03-21 09:42:03 -07:00
Chris Robinson
d11593eb5c
Use nested loops when converting data
2011-03-19 12:40:14 -07:00
Chris Robinson
4bdedc7fde
Use more appropriate enum values
2011-03-18 07:28:06 -07:00
Chris Robinson
9be625d6e8
Add some new format names
2011-03-17 08:42:25 -07:00
Chris Robinson
898b245bb2
Make LoadData return an error if the dst format is not valid or compatible
2011-03-16 19:39:31 -07:00
Chris Robinson
be37f10fed
Add alIsBufferFormatSupportedSOFT
2011-03-16 13:57:00 -07:00
Chris Robinson
a87f651b4d
Combine ConvertInput* and ConvertOutput* helpers
...
The UserFmt* enum types are a complete set of all recognized channel configs and
sample types, so casting Fmt* enum types to them is valid.
2011-03-16 13:32:57 -07:00
Chris Robinson
575195a283
Add alGetBufferSamplesSOFT
2011-03-16 12:56:39 -07:00
Chris Robinson
5621ee4239
Buffers made with alBufferSamplesSOFT always reference the internal format
...
This is not necessarily the same as the format of the originating data
2011-03-16 12:24:53 -07:00
Chris Robinson
f5c4e67aef
Add alBufferSubSamplesSOFT
2011-03-16 12:13:17 -07:00
Chris Robinson
2f7de9d696
Add alBufferSamplesSOFT, as an initial start to AL_SOFT_buffer_samples
2011-03-16 11:29:22 -07:00
Chris Robinson
9cee723e92
Pass the number of compressed frames to LoadData
2011-03-16 10:00:24 -07:00
Chris Robinson
4a1c0fedca
Use the defines for the UserFmt* and Fmt* types
2011-03-16 05:47:07 -07:00
Chris Robinson
b510958f9e
NoErr should be noErr
2011-03-15 11:52:18 -07:00
Chris Robinson
d6c8bb35b4
Add a CoreAudio backend
...
Code courtesy of Garin Hiebert <garinh@cheesetoast.net >
2011-03-15 04:58:56 -07:00
Chris Robinson
4899674b6c
Move ALC_ENUMERATE_ALL_EXT enums to alc.h, to match other systems' headers
2011-03-14 09:04:41 -07:00
Chris Robinson
4eeed5376f
Invert the device matrix row/column
...
It is accessed now as mat[target][source]
2011-03-13 08:46:54 -07:00
Chris Robinson
77ad538e68
Remove more unneeded casts
2011-03-13 07:11:09 -07:00
Chris Robinson
b699aca65b
Remove unnecessary casts
2011-03-13 06:34:41 -07:00
Chris Robinson
ffd19fe961
Rename ConvertData* to ConvertInput*
2011-03-13 00:05:19 -08:00
Chris Robinson
208912ceac
Fix DSound floating-point sample assumptions
2011-03-12 22:52:33 -08:00
Chris Robinson
89c253ce41
Recognize ALC_EXT_DEDICATED with openal-info
2011-03-12 21:28:40 -08:00
Chris Robinson
b1d4508d90
Use a loop to make sure the requested effect is not disabled
2011-03-12 20:54:49 -08:00
Chris Robinson
8249dc8559
Combine multiple lists into one
2011-03-12 20:37:22 -08:00
Chris Robinson
59fe4f8a36
Don't return enums for disabled effects
2011-03-12 20:27:46 -08:00
Chris Robinson
acb493665d
Add dedicated to the list of excludefx
2011-03-12 20:15:21 -08:00
Chris Robinson
73123bc313
Add support for ALC_EXT_DEDICATED
2011-03-12 20:11:25 -08:00
Chris Robinson
947aa1342c
Add ALC_EXT_DEDICATED to alext.h
2011-03-12 07:19:42 -08:00
Chris Robinson
20c8f9fe31
Add AL_EXT_FOLDBACK to alext.h
2011-03-12 06:35:45 -08:00
Chris Robinson
66ee3bc217
Better protect the device for multi-threading access
2011-03-12 06:23:17 -08:00
Chris Robinson
031a2a1b1e
Implement a basic non-real-time loopback device
...
Currently it behaves just like a normal device except contexts are only
processed during calls to alcRenderSamples. Additionally, the ALC_SYNC and
ALC_REFRESH context attributes are not valid for these devices, and there are
two new context attributes to specify the rendering format: ALC_FORMAT_TYPE
and ALC_FORMAT_CHANNELS. These each take one of the type and channel enums
added.
This stuff is subject to change.
2011-03-11 00:13:44 -08:00
Chris Robinson
9c87b73ad5
Fix a compiler warning about checking differing enum types
...
One of the enum types is actually a subset of the other, and share the same
integer values for compatible enumation values
2011-03-10 01:27:42 -08:00
Chris Robinson
97139a530f
Filter NaN sample values when converting floats and doubles
2011-03-04 16:18:03 -08:00
Chris Robinson
b483b1e380
Release 1.13
2011-02-15 12:10:44 -08:00
Chris Robinson
d9126eeb2c
Finalize the loop points extension as AL_SOFT_loop_points
2011-02-09 22:54:12 -08:00
Chris Robinson
d8048e136f
BufferFreq doesn't need to be a float
2011-02-09 11:19:33 -08:00
Chris Robinson
fd64fea279
Use the correct winmm device ID type
2011-02-08 10:33:18 -08:00
Chris Robinson
667fd24c84
Add an option to force usage of static MSVC runtimes
2011-02-08 00:34:25 -08:00
Chris Robinson
9ffb38d6be
Prevent unused variable warnings when monotonic clock isn't available
2011-02-08 00:22:22 -08:00
Chris Robinson
13397feccf
Don't inline CalcLimitedHfRatio
2011-02-07 23:58:40 -08:00
Chris Robinson
57b05fb6d4
Add a missing enum value for PA_API_VERSION 11
2011-02-07 23:53:07 -08:00
Chris Robinson
41a2c25b5a
Include cguid.h for GUID_NULL
2011-02-07 22:46:54 -08:00
Chris Robinson
b214249290
Check for internal visibility, since that's what is used
2011-02-07 13:55:48 -08:00
Chris Robinson
8dad1c382b
Add the standard "revision" number to the library name
2011-02-06 02:39:22 -08:00
Chris Robinson
6713a47d38
Fix looping on loop points
2011-02-06 01:07:37 -08:00
Chris Robinson
02e0223fe8
Re-enable channel-config-specific layout options
2011-01-23 23:57:39 -08:00
Chris Robinson
6c4add67e1
Don't duplicate the device list append function
2011-01-23 23:16:55 -08:00
Chris Robinson
2b7324c06e
Avoid using a variable for array sizes and const variable initialization
2011-01-23 22:30:18 -08:00
Chris Robinson
c95bd6cadf
Fix loop handling when traversing the buffer queue backwards
2011-01-23 15:04:42 -08:00
Chris Robinson
d73694d3e6
More improvements to the AudioIO backend
2010-12-09 23:53:32 -08:00
Chris Robinson
5d607f9484
Better check format type returned by AUDIO_SETINFO
2010-12-09 23:47:11 -08:00
Chris Robinson
816c38e9e4
Add signed 8-bit output to the AudioIO backend
2010-12-09 23:43:29 -08:00
Chris Robinson
09130e5dcd
Fix some AudioIO backend warnings
2010-12-09 23:41:54 -08:00
Chris Robinson
b87447787a
Cleanup some ok() macros
2010-12-09 23:32:47 -08:00
Chris Robinson
5a548f8366
Another fix for float-to-int conversions
2010-12-09 22:47:06 -08:00
Chris Robinson
023658605e
Constify some variables
2010-12-09 19:47:08 -08:00
Chris Robinson
031111014b
Be consistent with variable name use
2010-12-09 18:09:47 -08:00
Chris Robinson
b5b9303e66
Fix up some conversions
2010-12-09 17:37:57 -08:00
Chris Robinson
3deaa2fad3
Combine stereo and multi-channel templates
2010-12-09 17:14:12 -08:00
Chris Robinson
c3cd4c80b2
Use a matrix when rendering to the dry buffer
2010-12-09 16:37:23 -08:00
Chris Robinson
be3f3c4bf0
Make better use of the type range when converting from float
2010-12-09 05:06:29 -08:00
Chris Robinson
d1ca8b4470
Use simple loops instead of several explicit lines for the mono mixer
2010-12-09 05:05:42 -08:00
Chris Robinson
72e3386c6a
Be a bit more generic with the multi-channel mixer loops
2010-12-09 04:41:52 -08:00
Chris Robinson
4010a6b745
Remove some now-unused functions
2010-12-08 02:56:24 -08:00
Chris Robinson
0218957eb5
Use "internal" visibility by default
...
All functions callable by apps, directly or indirectly (eg, through function
pointers), are marked as "protected", and internal visibility can provide
benefits over hidden when we know functions won't be called by other modules.
2010-12-08 02:32:09 -08:00
Chris Robinson
cd65ab7dfa
Add an IMA4 encoder
2010-12-05 03:34:19 -08:00
Chris Robinson
c4adf541c1
Set the playing flag to TRUE when the dsound buffer starts playing
2010-12-04 20:22:12 -08:00
Chris Robinson
88e3a22772
Separate device format into 'channel config' and 'sample type' components
2010-12-04 19:50:00 -08:00
Chris Robinson
191803ad53
Fix wave and null device calculations when the timer wraps
2010-12-03 23:48:59 -08:00
Chris Robinson
1b7be672fa
No need to clamp the app-specified pitch
2010-12-03 23:08:26 -08:00
Chris Robinson
9581325b9c
Rename SrcFmt -> UserFmt
2010-12-03 22:33:41 -08:00
Chris Robinson
59990acc2a
Add functions to write (signed) byte and ushort samples to devices
2010-12-02 16:36:37 -08:00
Chris Robinson
0bf7716332
Remove incomplete EXT_buffer_sub_data, as it's (temporarily) superceded by SOFT_buffer_sub_data
...
The EXT version can come back when other implementations take an interest
2010-12-02 01:46:43 -08:00
Chris Robinson
3339e5dc6a
Use memcpy to copy a string instead of sprintf
2010-12-02 01:12:49 -08:00
Chris Robinson
30b3f68ddf
Make a function static
2010-12-02 01:05:29 -08:00
Chris Robinson
75552f2765
Remove unused macro
2010-12-01 23:21:18 -08:00
Chris Robinson
4a0bf9fd44
Template-ize the device buffer writing functions
2010-12-01 21:50:49 -08:00
Chris Robinson
fa28098a83
Some general cleanups
2010-12-01 20:34:29 -08:00
Chris Robinson
646409cbdf
Don't limit IMA4 decoding to 2 channels
2010-12-01 18:36:07 -08:00
Chris Robinson
9e8fb89a52
Rename OUTPUTCHANNELS to something more descriptive
2010-12-01 18:33:17 -08:00
Chris Robinson
14441e0e53
Rename some variables
2010-12-01 14:19:57 -08:00
Chris Robinson
7f5814c4d8
Use min/max to clamp the IMA4 sample and index values
2010-12-01 14:07:21 -08:00
Chris Robinson
e3afc3587e
Fix handling of -32768 in the muLaw encoder
2010-12-01 02:24:39 -08:00
Chris Robinson
8a52c44d15
Don'f fail if realloc returns NULL for 0 sizes
2010-12-01 02:00:41 -08:00
Chris Robinson
e6e18732b5
Make sure the muLaw sample encoder is inlined
2010-11-30 18:06:54 -08:00
Chris Robinson
3f8ae8f1ce
Fix IMA4 decoding
2010-11-30 16:54:30 -08:00
Chris Robinson
a79129835c
Fix some comments and line spacing
2010-11-30 13:04:48 -08:00
Chris Robinson
6fcaecdc9f
Fix int-to-double conversion
2010-11-30 12:26:37 -08:00
Chris Robinson
8dc8090888
Make muLaw decoding work similar to encoding
2010-11-30 01:26:43 -08:00
Chris Robinson
4db2f1ec7d
Implement a muLaw encoder
2010-11-30 01:20:40 -08:00
Chris Robinson
06fa030260
Rename the IMA4 block decoder function
2010-11-30 01:00:37 -08:00
Chris Robinson
018f9fc278
Handle all channel configurations for double
2010-11-30 00:32:13 -08:00
Chris Robinson
c0f6d46cd8
Allow LoadData to handle IMA4 data
2010-11-30 00:28:02 -08:00
Chris Robinson
8e43b1fe04
Let the storable format enum values share the input format enum values where they overlap
2010-11-29 23:57:07 -08:00
Chris Robinson
04df919a1c
Clean up muLaw format loading a bit
2010-11-29 23:46:49 -08:00
Chris Robinson
f82e628f08
Allow converting IMA4 to types other than short
2010-11-29 22:55:46 -08:00
Chris Robinson
07a7c03adb
Check for a couple missing input formats and remove an unneeded default case
2010-11-29 22:07:07 -08:00
Chris Robinson
e800f8c0a7
Let DecomposeInputType verify the format passed to alBufferSubDataSOFT
2010-11-29 22:01:54 -08:00
Chris Robinson
d02dbef9d2
Pass the input channel config and sample type to LoadData
2010-11-29 21:55:47 -08:00
Chris Robinson
55262bc6e9
Make the decompose functions return false when given an unhandled format
2010-11-29 20:34:33 -08:00
Chris Robinson
51ed22afb9
Combine two switch blocks
2010-11-29 20:17:15 -08:00
Chris Robinson
0cf32e2946
Reorder some parameters for consistency
2010-11-29 19:48:18 -08:00
Chris Robinson
693ab4d8bc
Fix source offset calculations
2010-11-29 19:36:33 -08:00
Chris Robinson
e4869b447c
Store the decomposed source format in the buffer
2010-11-29 19:27:33 -08:00
Chris Robinson
547f356131
Keep a handle on the buffer with the format when queueing new buffers
2010-11-29 17:35:22 -08:00
Chris Robinson
017ab1b3fd
Add IMA4 as a source data type
2010-11-29 17:14:22 -08:00
Chris Robinson
07ef566de1
Add support for (unsigned) int input formats
2010-11-29 17:00:22 -08:00
Chris Robinson
3c8a29a179
Reorder and rename parameters for the format decomposition functions
2010-11-29 15:19:39 -08:00
Chris Robinson
f74032d244
Uninline a couple more functions
2010-11-29 15:01:27 -08:00
Chris Robinson
eb489ac886
Store double formats as float
...
The mixer will cut it down to float anyway, so it's unnecessary and needlessly
creates more mixer functions
2010-11-28 23:07:57 -08:00
Chris Robinson
986628b8b2
Avoid temp storage
2010-11-28 22:50:27 -08:00
Chris Robinson
da4f5c6f96
Uninline some functions
...
Also add -Winline to the compiler command line to watch for future inline problems
2010-11-28 19:52:17 -08:00
Chris Robinson
f09ae196a8
Avoid making Resampler[Pre]Padding static
2010-11-28 17:37:14 -08:00
Chris Robinson
3e702ae2bc
Improve static builds with MinGW
2010-11-28 16:19:11 -08:00
Chris Robinson
490d1c6a8e
Prefer GCC's constructor, even in Windows
2010-11-28 14:27:07 -08:00
Chris Robinson
0e748d98d5
Rename some stuff for consistency
2010-11-28 13:08:51 -08:00
Chris Robinson
c41e893361
Don't store the internal format in the buffer
...
The type and channel config are good enough
2010-11-28 12:53:35 -08:00
Chris Robinson
2fd8d6916b
Support rear formats directly in the mixer
2010-11-27 22:55:20 -08:00
Chris Robinson
b4eaf1ab5a
Avoid a potential overflow when setting the source offset
2010-11-27 22:22:14 -08:00
Chris Robinson
3c8e9a7f24
Clean up the source byte offset code
2010-11-27 22:13:29 -08:00
Chris Robinson
67ec72284d
Remove some unneeded muLaw special cases
2010-11-27 22:06:51 -08:00
Chris Robinson
754a122aa0
Support muLaw with LoadData
2010-11-27 22:00:24 -08:00
Chris Robinson
0486d633c6
Remove an unnecessary assert
2010-11-27 20:41:09 -08:00
Chris Robinson
09b063002b
Be much more flexible with loading and converting buffer data
2010-11-27 20:33:37 -08:00
Chris Robinson
8828f4d0e5
Don't inline the decompose function
2010-11-27 15:37:51 -08:00
Chris Robinson
9495cf71fd
Decompose input buffer formats and use it when converting uncompressed data
2010-11-27 15:33:33 -08:00
Chris Robinson
4d0f70439c
Rename a function
2010-11-27 14:30:13 -08:00
Chris Robinson
d3bb5d4fcb
Add a basic WaveOut device
...
It can still use more work, but it seems to work
2010-11-27 14:13:40 -08:00
Chris Robinson
61315d4dfb
Shorten a couple really long lines
2010-11-27 00:51:21 -08:00
Chris Robinson
2a123a4760
Support 64-bit double buffers directly
2010-11-27 00:32:53 -08:00
Chris Robinson
4689ffb72d
muLaw converts to 16-bit, not float
2010-11-27 00:17:19 -08:00
Chris Robinson
d2895c7985
Use the enums in a couple more places
2010-11-27 00:15:07 -08:00
Chris Robinson
6abb9d151e
Use enums when selecting the mixer
2010-11-26 23:42:30 -08:00
Chris Robinson
08827efae3
Remove an unnecessary 'struct' keyword
2010-11-26 20:35:47 -08:00
Chris Robinson
16c05d2c05
Avoid some more code duplication
2010-11-26 20:22:14 -08:00
Chris Robinson
4d4d699780
Fix step calculations
2010-11-26 20:17:05 -08:00
Chris Robinson
ca1ec4b221
Fix some comments
2010-11-26 18:01:29 -08:00
Chris Robinson
facb922f3e
Properly clamp high pitch values
2010-11-26 17:47:43 -08:00
Chris Robinson
d7987677ac
Subtract the fractional position separately
2010-11-26 15:51:13 -08:00
Chris Robinson
5fbbfa482f
Rename some variables to be clearer
2010-11-26 12:59:45 -08:00
Chris Robinson
7287b5cd3c
Make the buffer padding size dependent on the resampler
2010-11-26 02:53:15 -08:00
Chris Robinson
0692cf304d
Don't allocate padding with the buffer itself
2010-11-26 02:31:17 -08:00
Chris Robinson
88ebe7e4c1
Decrease the buffer size more
2010-11-26 02:14:11 -08:00
Chris Robinson
d647ed60e8
Convert a few divisions to multiplications
2010-11-26 01:35:40 -08:00
Chris Robinson
1cb29ece08
Make a FRACTIONONE macro, and use it
2010-11-26 01:21:46 -08:00
Chris Robinson
de8b7fbc5f
Share the interpolation functions and use them in the reverb effect
2010-11-26 01:07:54 -08:00
Chris Robinson
98d78f7ff9
Slightly improve channel gain calculations
2010-11-26 00:24:54 -08:00
Chris Robinson
3d1eb7dcad
Add a missing break statement
2010-11-25 23:13:50 -08:00
Chris Robinson
e1c0b5ea24
Call MixSource directly, instead of through a function pointer
2010-11-25 23:09:18 -08:00
Chris Robinson
30820c1bde
Add a cubic resampler
2010-11-25 23:05:44 -08:00
Chris Robinson
46b9802902
Force the point resampler when the source plays at normal speed
2010-11-25 22:15:38 -08:00
Chris Robinson
b6fb28de1a
Pass a pointer to the samplers so they can read just the samples they need
2010-11-25 22:04:17 -08:00
Chris Robinson
17fc4ba5e3
Add "pre-padding" to the temp buffer
...
This will help to implement resamplers that want previous samples
2010-11-25 21:42:15 -08:00
Chris Robinson
596514f7aa
Make the buffer queue a double-linked list
2010-11-25 18:30:57 -08:00
Chris Robinson
6e3a6f90e9
Be less wave-in-specific in the winmm backend
2010-11-25 17:37:34 -08:00
Chris Robinson
fbd6439bd2
Make the first enumerated DirectSound device use the default, and fix the name
2010-11-25 14:35:32 -08:00
Chris Robinson
f72c735f9e
Make sure the target buffer size is frame aligned
2010-11-25 14:23:03 -08:00
Chris Robinson
9b23fc5db8
Minor rework of the template macros
2010-11-25 14:07:52 -08:00
Chris Robinson
aaff188b3b
Remove the cosine resampler
...
It's too slow when auxiliary sends are being used.
2010-11-25 13:49:51 -08:00
Chris Robinson
2595d85cca
Double-up the interpolation functions (and make them use doubles)
2010-11-25 13:45:35 -08:00
Chris Robinson
2c96c29938
Rename some "template" functions
2010-11-25 13:22:54 -08:00
Chris Robinson
65919b7037
Always make sure there's a sample available to mix, for pending click removal
2010-11-25 13:17:51 -08:00
Chris Robinson
f1bb7c33f1
Fix a bunch of comments
2010-11-25 12:07:12 -08:00
Chris Robinson
8e7a4046d0
Don't "convert" LOKI quad to MCFORMATS quad
2010-11-25 11:49:35 -08:00
Chris Robinson
f4e0c6a348
Use a temporary stack buffer to store the source buffer data to be mixed
...
This makes it much easier to pack the playable buffer data so that it's a
continuous data stream. This could normally be broken up otherwise, such as
when using loop points or small queued buffers.
Currently it defaults to a 16KB stack buffer, but this can be overridden at
compile time.
2010-11-25 11:16:19 -08:00
Chris Robinson
885a5e9f90
Use 0-based access for the buffer data
2010-11-24 20:44:21 -08:00
Chris Robinson
22e3e9a18b
Support 8-bit sample data in the mixer
2010-11-24 19:41:25 -08:00
Chris Robinson
445cde2dd4
Check the sample byte size after the resampler
2010-11-24 17:23:09 -08:00
Chris Robinson
3dd58cf765
Get rid of a useless union
2010-11-24 17:10:41 -08:00
Chris Robinson
cd87061749
Change the mixer macros to declare functions
2010-11-24 17:07:50 -08:00
Chris Robinson
1311e051d9
Set mixer sample pos and frac when needed
2010-11-24 14:54:46 -08:00
Chris Robinson
c9363832fe
Fully progress the source to a stopped state when no buffers are playable
2010-11-24 10:16:53 -08:00
Chris Robinson
6ab22e7cbb
Reorder some stored source params
2010-11-24 10:01:50 -08:00
Chris Robinson
bb13f7f234
Make sure the buffer padding is always cleared before looking for the next buffer
2010-11-24 07:20:41 -08:00
Chris Robinson
13ba253aec
Calculate ALSA buffer length with the other values
2010-11-23 07:24:27 -08:00
Chris Robinson
c58469e234
Handle the timer wrapping in the wave and null output devices
2010-11-21 11:34:16 -08:00
Chris Robinson
57a03bc2b5
Use helpers to write 16- and 32-bit values
2010-11-21 06:54:41 -08:00
Chris Robinson
a7b4e0b5c5
Get rid of the device timer stuff
2010-11-21 06:32:59 -08:00
Chris Robinson
bbb45e326c
Avoid temporary float variables
2010-11-21 03:58:37 -08:00
Chris Robinson
dfe3e402a8
Pass the data pointer and proper sampler to the mixer macro
2010-11-21 03:33:33 -08:00
Chris Robinson
e884da50ea
Move aluMixData back to ALu.c
2010-11-21 02:51:18 -08:00
Chris Robinson
4c576631ad
Hide AL_EXTX_sample_buffer_object
...
It hasn't been going anywhere, and it's current use is dubious. Leave the code
in for now, but it may be removed later.
2010-11-21 02:36:34 -08:00
Chris Robinson
5f6f046d25
Use a double when converting millisecond offsets to byte offsets
2010-11-07 21:41:04 -08:00
Chris Robinson
65e033c64b
Increase the max number of source sends to 4, and decrease the default to 1
2010-11-06 15:08:54 -07:00
Chris Robinson
07346da740
Use the number of sends the device is configured for in more places
2010-11-06 14:27:33 -07:00
Chris Robinson
c95f182a90
Remove unnecessary comments and reorder some lines
2010-11-06 14:07:30 -07:00
Chris Robinson
289c74788e
Use a switch to select the appropriate channel-count mixer
2010-11-06 12:21:46 -07:00
Chris Robinson
65a8d9278d
Declare a variable where it's used
2010-11-01 12:44:56 -07:00
Chris Robinson
887c830d56
Remove explicit use of -funroll-loops
...
I'm not sure this really helps much.
2010-10-15 15:21:23 -07:00
Chris Robinson
6db4e08efb
Fix fpu state handling with _controlfp
2010-10-15 10:35:47 -07:00
Chris Robinson
4f81bce800
Improve a macro to reference its parameter
2010-10-11 12:24:28 -07:00
Chris Robinson
932fcfa8bf
Fix 64-bit compilation
2010-10-11 12:24:07 -07:00
Chris Robinson
314832e35a
Rename a couple more variables
2010-10-10 04:00:50 -07:00
Chris Robinson
6a9dd185e6
Improve naming and placement of a couple variables
2010-10-10 03:47:57 -07:00
Chris Robinson
2172827f43
Simplify a calculation
2010-10-09 15:24:24 -07:00
Chris Robinson
90e9cd970a
Check resampler mode first when selecting the mixer
2010-09-26 13:53:02 -07:00
Chris Robinson
845ca95888
Get a variable where it's needed
2010-09-26 13:30:46 -07:00
Chris Robinson
92d8d2f8a4
Pass the device to the mix function and localize the dry mix and click buffers
2010-09-26 12:23:22 -07:00
Chris Robinson
7cd52b2857
Clarify a check
2010-09-26 01:29:28 -07:00
Chris Robinson
9fbd6c6c3f
Make the SourceMix function a method of the ALsource struct
2010-09-26 01:15:27 -07:00
Chris Robinson
08fdc5fa98
Avoid updating the source in MixSource
2010-09-25 23:49:57 -07:00
Chris Robinson
7e362249ff
Convert shorts so that 0 remains 0
2010-09-25 21:13:40 -07:00
Chris Robinson
9fa2db0227
Don't try to open the ALSA device a second time if the first fails
2010-09-25 20:20:10 -07:00
Chris Robinson
4c75a72a90
Avoid some code duplication
2010-09-25 20:18:07 -07:00
Chris Robinson
a0b2778161
Localize more variables and remove unnecessary ones
2010-09-25 14:19:36 -07:00
Chris Robinson
bc6d94cd25
Avoid sampling beyond the end of the loop
2010-09-24 23:32:50 -07:00
Chris Robinson
e70141e57b
Localize some variables to the mixer macros
...
The hope here is to help break the mixer loops into separate functions, so the
macro expansion doesn't cause the MixSource function to explode in size and
kill compilation speed.
2010-09-24 23:24:01 -07:00
Chris Robinson
2e70b82eaa
Use separate mixing loops for the dry path and wet paths
...
This will increase CPU use a bit for sources that use auxiliary sends
(particularly with the cosine resampler), but it makes it more scalable when
adding more sends per source. Additionally, it will improve performance of
sources that don't use auxiliary sends.
The cosine resampler can probably be improved by using a lookup table instead
of calling cos() as there are 14 bits of fractional precision, so a 16384-
element float array would cover it all. This can also be reduced to a half or
quarter size if the precision loss is found to be acceptable.
2010-09-24 18:29:49 -07:00
Chris Robinson
117ed52091
Better protect against negative attenuation
2010-09-24 13:16:09 -07:00
Chris Robinson
e9d5e53dbe
Use ALfloat for the dry mix buffer
2010-09-23 17:44:02 -07:00
Chris Robinson
e308694521
Remove an unnecessary variable
2010-09-23 16:51:30 -07:00
Chris Robinson
7e498012ff
Rename some variables to be less confusing
2010-09-23 16:49:33 -07:00
Chris Robinson
f98bf32be8
Fix line indentation
2010-09-23 15:08:30 -07:00
Chris Robinson
0f2ed8c84d
Be consistent with a variable's use
2010-09-23 13:49:21 -07:00
Chris Robinson
8d67cdfaab
Convert float to short similar to short to float
2010-09-23 08:43:39 -07:00
Chris Robinson
67ba924ed3
Store and mix signed 16-bit samples
2010-09-22 23:38:06 -07:00
Chris Robinson
764cfb6a0d
Allow the mixing loop to access the different sample formats
2010-09-22 20:53:04 -07:00
Chris Robinson
4e3c945093
Compact some reused code
2010-09-22 18:49:46 -07:00
Chris Robinson
8558bc1d41
Allow accessing the buffer data as multiple data types in the mixer
...
Also reduces a bunch of indentation
2010-09-22 17:19:35 -07:00
Chris Robinson
03f56419d0
Duplicate stereo sources by default
...
The mixer is smart enough now to handle proper volume adjustments depending on
the number of output speakers
2010-09-22 11:09:34 -07:00
Chris Robinson
3ee9d24c3f
Use separate macros for the different mixing loops
2010-09-22 09:38:24 -07:00
Chris Robinson
9b1ad6c873
Consolidate some code
2010-09-21 19:49:47 -07:00
Chris Robinson
97daaade8a
Reduce some more indentation
2010-09-21 16:54:33 -07:00
Chris Robinson
8a1d5a21c3
Reduce some indentation
2010-09-21 15:12:08 -07:00
Chris Robinson
301a8ba3a4
Improve some range checks
2010-09-21 14:41:43 -07:00
Chris Robinson
2d4453968d
Implement AL_SOFT_buffer_sub_data using the current AL_EXT_buffer_sub_data spec
...
This extension can be useful for some applications, but a full EXT version may
not be ready for some time. Using the SOFT moniker will help differentiate it
in case changes need to be done for the EXT version.
2010-09-21 09:43:35 -07:00
Chris Robinson
a2580a85a8
Improve range checking for BufferSubData
2010-09-19 14:00:55 -07:00
Chris Robinson
8a0e15ff37
Store air absorption factor locally
2010-09-12 00:10:33 -07:00
Chris Robinson
8953a73fb1
Prevent effectiveDist from going negative
2010-09-11 23:57:15 -07:00
Chris Robinson
1a2883ae9a
Pass dry-path click buffers as parameters to MixSource
2010-09-11 23:43:12 -07:00
Chris Robinson
a2358ffc41
Source positions at and after the end of the buffer queue go back to 0
2010-09-09 18:27:14 -07:00
Chris Robinson
33eb2786f8
Avoid another non-descript incrementing variable
2010-09-09 16:47:54 -07:00
Chris Robinson
c8ec4fd505
Avoid using a single-letter iterator value
2010-09-09 14:53:14 -07:00
Chris Robinson
fe98ab5398
Combine multiple checks into one
2010-09-08 17:29:16 -07:00
Chris Robinson
76be7eb1e7
Better protect against sample overflow when converting float to short
2010-09-08 16:26:19 -07:00
Chris Robinson
6e32812bc1
Remove unnecessary check
2010-09-07 22:38:29 -07:00
Chris Robinson
50a7be6385
Fix comparison check
2010-09-07 22:23:37 -07:00
Chris Robinson
3763c95784
Add missing else
2010-09-07 16:36:42 -07:00
Chris Robinson
5fa5252648
Watch for a few more negative sizes
2010-09-07 16:33:17 -07:00
Chris Robinson
1e82561a22
Check for invalid negative sizes
2010-09-07 16:18:24 -07:00
Chris Robinson
ba32a52bb6
Remove unused struct member
2010-09-07 16:07:35 -07:00
Chris Robinson
6027fda0ce
Combine two arrays into one
2010-08-16 16:07:44 -07:00
Chris Robinson
e5cae87502
Handle clicks by watching changes between updates
2010-08-16 14:53:21 -07:00
Chris Robinson
ba0ec1b4ba
Use the correct value to dereference an array
2010-08-16 11:42:18 -07:00
Chris Robinson
2acd6f52f1
Add a bit more information to the README
2010-08-15 16:55:11 -07:00
Chris Robinson
b520228bc6
Consolidate some click removal calculations
2010-08-15 15:55:02 -07:00
Chris Robinson
343a8241ab
Use a multiplier instead of if checks
2010-08-15 15:09:38 -07:00
Chris Robinson
00525274a0
Add click removal for wet sends
2010-08-15 14:52:12 -07:00
Chris Robinson
2915d9dbd9
Use click removal to handle harsh panning/volume changes
2010-08-15 00:19:38 -07:00
Chris Robinson
0c49e5ba56
Use click removal when starting a source
2010-08-14 22:59:55 -07:00
Chris Robinson
b65bc45236
Add a corrective, click-remval sample value offset
...
This will hopefully be more effective and rebust at removing clicks and pops,
particularly from starts and stops in the middle of a sound. Based on an idea
by Ben Davis.
2010-08-14 21:30:14 -07:00
Chris Robinson
94b7e5a227
Rename Null Output to No Output
2010-08-13 22:06:38 -07:00
Chris Robinson
928572d384
Start the device when creating a context without specified attributes
2010-08-12 17:24:55 -07:00
Chris Robinson
2d1988bb6f
Output on available channels only, for the echo and modulator effects
2010-08-09 06:12:00 -07:00
Chris Robinson
e007dc3614
Fix early/late reverb panning, and only output reverb on available channels
2010-08-09 05:11:58 -07:00
Chris Robinson
2ed929eadc
Update device parameters using a separate function
2010-08-09 00:28:48 -07:00
Chris Robinson
f1924fa7ea
Decrement context count when it's removed from the list
2010-08-08 02:48:28 -07:00
Chris Robinson
df822513fa
Don't re-init and re-allocate some stuff when the device is left running
2010-08-07 09:13:51 -07:00
Chris Robinson
762bdaeee1
Panning init cleanup
2010-08-07 08:49:29 -07:00
Chris Robinson
8003278a55
Combine non-attenuated source calculation functions
2010-08-07 06:57:31 -07:00
Chris Robinson
5f22d30fc9
Calculate the source stepping value with the param calculations
2010-08-07 05:43:16 -07:00
Chris Robinson
d6dc855511
Set up increment once
2010-08-07 02:32:16 -07:00
Chris Robinson
8f49f2c25e
Forward some more source properties instead of duplicating
2010-08-07 01:35:43 -07:00
Chris Robinson
f4304ca062
Calculate the actual stepping value in the source update method
2010-08-07 00:38:02 -07:00
Chris Robinson
044662e4b7
Calculate gain steps once during a source mix
2010-08-06 07:55:00 -07:00
Chris Robinson
d9d8319c22
Effectslot's Effectstate should never be NULL
2010-08-06 04:52:34 -07:00
Chris Robinson
56b094767b
Remove an unnecessary check
...
The number of buffers played should never exceed the buffer count when playing,
and the buffer list is used later on regardless
2010-08-06 01:14:37 -07:00
Chris Robinson
98bc60cfb7
Combine stereo and stereo-duplicate mixers
...
Use a separate update method for stereo sources to the set appropriate channel
gains
2010-08-05 01:07:20 -07:00
Chris Robinson
2aacca76de
Improve a warning message
2010-08-04 06:18:23 -07:00
Chris Robinson
aea615edb3
Prevent re-probing while opening a Pulse device if no devices were found
2010-08-04 05:07:56 -07:00
Chris Robinson
f6b2dfd09f
Only except a NULL device name for Pulse if some devices were found
2010-08-04 04:56:07 -07:00
Chris Robinson
7f9bcfbc7d
Do not enumerate PulseAudio devices if a context fails to connect
2010-08-04 04:21:39 -07:00
Chris Robinson
22cc5af1fe
pa_context_errno can return a positive value
2010-08-04 04:11:38 -07:00
Chris Robinson
0dc3f1984e
Move the core mixer functions to a separate source file
2010-08-03 23:19:36 -07:00
Chris Robinson
e74976e645
Use a callback to specify the source update method
2010-08-03 23:10:00 -07:00
Chris Robinson
91278608c5
Add some spacing
2010-08-03 01:44:52 -07:00
Chris Robinson
8e2d765671
Move active source iteration to aluMixData
2010-08-03 01:09:02 -07:00
Chris Robinson
2af39e51f8
Separate speaker/panning initialization into another source file
2010-08-03 00:21:36 -07:00
Chris Robinson
1504cf8812
Use millisecond resolution for the Null and Wave Writer backends
2010-08-02 22:34:19 -07:00
Chris Robinson
3bece35bbd
Prevent getting bad time values when pa_stream_get_time fails
...
Also makes sure that reported time won't go backwards
2010-08-02 22:27:32 -07:00
Chris Robinson
ae41ad5d1e
Use a better method to time the Null and Wave Writer backends
...
This better compensates for precision loss when converting milliseconds to the
sample rate
2010-08-02 20:04:52 -07:00
Chris Robinson
ee61f7a55c
Make sure to request a tlength that's at least minreq*2
...
And warn if Pulse returns a minreq that's too large
2010-08-02 17:24:40 -07:00
Chris Robinson
241ddf76d4
Enforce the device time to be a multiple of the reported resolution
2010-08-01 16:31:00 -07:00
Chris Robinson
fe6e73ede9
Be a bit more verbose when a device fails to open
2010-08-01 16:20:28 -07:00
Chris Robinson
8dab4c418c
Use Pulse's stream time for the device time
2010-07-31 21:33:46 -07:00
Chris Robinson
41e2c41ecc
Combine duplicate lines into the mixing macro
2010-07-31 21:09:59 -07:00
Chris Robinson
30108c7855
Remove an unnecessary variable
2010-07-31 19:14:27 -07:00
Chris Robinson
40ba9db406
Only call Pulse functions from under a lock
2010-07-31 16:07:04 -07:00
Chris Robinson
f1f2941511
Add experimental device attributes for apps to query
...
These will be part of the ALC_EXT_device_time extension. Behavior, values,
etc, are all subject to change.
2010-07-30 20:23:55 -07:00
Chris Robinson
d886fb118b
Signal the Pulse mainloop on underruns
...
Otherwise there are (rare) risks of not getting signaled after writing the
amount of free audio data the client knows about, leading to a mixer loop
lockup
2010-07-30 20:20:40 -07:00
Chris Robinson
46d46c49a8
Store the time precision with the device
2010-07-25 12:54:50 -07:00
Chris Robinson
40dd1fb853
Add a backend callback to get the device time
...
The method should monotonically count the number of nanoseconds the device has
active contexts
2010-07-24 19:14:32 -07:00
Chris Robinson
ab77fc14d5
Make killNow volatile
2010-07-24 10:54:12 -07:00
Chris Robinson
e0d0edc0fc
Close the log file last during shutdown
2010-07-22 09:16:28 -07:00
Chris Robinson
7eb124d99c
Keep count of the number of samples played
2010-07-22 08:11:44 -07:00
Chris Robinson
88f236ccd3
Make sure the device is stopped if there was an error setting up the first context
2010-07-21 14:50:39 -07:00
Chris Robinson
34a0c998cd
Use CLOCK_MONOTONIC when available
2010-07-18 06:21:16 -07:00
Chris Robinson
e658df493a
Update PulseAudio using period-sized chunks
...
To match the behavior of other backends
2010-07-17 23:30:25 -07:00
Chris Robinson
b2a257b6b0
Rename examples to utilities
...
There is only the one, and it more accurately reflects what it is
2010-07-17 01:02:51 -07:00
Chris Robinson
cde577690a
Set the backend HAVE_ macros off before checking their availability
2010-07-17 00:37:54 -07:00
Chris Robinson
c85d53cfbe
Remove the commit count from the version number
...
As it's only updated for releases, it's kinda useless
2010-07-16 00:18:21 -07:00
Chris Robinson
26127cd2f2
Use a long single buffer for WaveIn's capture buffers
2010-07-12 16:37:44 -07:00
Chris Robinson
42d9140afe
Check the buffer's original format when queueing on a source
2010-07-12 15:53:11 -07:00
Chris Robinson
52ad28df92
Fix WaveIn device cleanup order
2010-07-08 17:37:35 -07:00
Chris Robinson
58ba5fd0dd
Add missing static keyword to WinMM vars
2010-07-08 15:10:59 -07:00
Chris Robinson
71cc91cc4a
Use the existing ring buffer methods for WaveIn
2010-07-07 02:47:29 -07:00
Chris Robinson
6db3463d17
Fix backslash alignment for the single-channel mixer macro
2010-07-06 16:32:58 -07:00
Chris Robinson
969818db6f
Use a 100ms capture buffer minimum for PulseAudio, with 50ms fragments
...
This better matches what is given with the WaveIn backend
2010-07-04 16:27:42 -07:00
Chris Robinson
d4b191d27d
Avoid retrying the requested ALSA format after it failed
2010-07-04 15:48:47 -07:00
Chris Robinson
6b23f2dfa3
snd_pcm_recover should automatically re-prepare the stream as needed
2010-06-16 02:17:41 -07:00
Chris Robinson
17e6840f92
Prevent multiple WinMM devices from getting the same name, as well
2010-06-10 15:54:04 -07:00
Chris Robinson
a1f987c016
Improve handling of lost DirectSound buffers
2010-06-09 23:32:35 -07:00
Chris Robinson
cff805e0a3
Prevent multiple DirectSound devices from getting the same name, too
2010-06-09 23:11:34 -07:00
Chris Robinson
25a941666a
Prevent multiple PulseAudio devices from getting the same name
2010-06-09 18:22:05 -07:00
Chris Robinson
8c59849ea4
Make sure the log file is set before initializing the rest of the lib
2010-06-08 02:02:48 -07:00
Chris Robinson
f9e569099c
Make the Wave Writer backend optional
2010-06-08 02:01:11 -07:00
Chris Robinson
6fd6e4eacf
Remove unused variable
2010-06-07 03:49:21 -07:00
Chris Robinson
ce07270973
Remove support for the old 'refresh' config option
2010-06-06 00:53:29 -07:00
Chris Robinson
ac05863f72
Make sure the effectslot map is properly initialized
2010-06-06 00:21:13 -07:00
Chris Robinson
7f6df7695c
Use an array of active sources when mixing
...
Prevents iterating over all allocated sources during mixing updates
2010-06-06 00:17:50 -07:00
Chris Robinson
ed58571079
Use non-blocking mode for ALSA capture
2010-06-05 19:56:58 -07:00
Chris Robinson
80fbe8a788
Allow prepending backend names with - to remove them from the available devices
2010-06-05 19:33:06 -07:00
Chris Robinson
0fdec056fa
Improve error recovery when capturing from ALSA
2010-06-05 17:41:33 -07:00
Chris Robinson
1915fe831f
Read capture data from ALSA when querying the available sample count
2010-06-05 04:43:26 -07:00
Chris Robinson
98c01a40e6
Improve locking when calling the backend capture API
2010-06-05 04:42:05 -07:00
Chris Robinson
33234d605a
Don't attempt to look for more samples from Pulse after a disconnect
2010-06-05 00:09:45 -07:00
Chris Robinson
c6defe9a6d
Read PulseAudio's capture data into the ring buffer when querying the sample count
...
This ensures we have all the samples available that the app knows about
2010-06-04 00:27:31 -07:00
Chris Robinson
244daba501
Don't overwrite data when the ring buffer overflows
2010-06-04 00:24:23 -07:00
Chris Robinson
43dadcd9e4
Use a UIntMap for the Databuffers
2010-06-03 19:35:08 -07:00
Chris Robinson
90db244b5f
Skip mixing after checking looping validity
2010-06-03 03:58:04 -07:00
Chris Robinson
e98f1205e5
Increase the temp buffer sizes to construct device names with
2010-05-31 19:04:41 -07:00
Chris Robinson
2205f91e5f
Fix Pulse mainloop handling for device probing
2010-05-31 19:02:20 -07:00
Chris Robinson
da1dee351d
Update device naming to be more apparent about the device being used
2010-05-31 19:00:33 -07:00
Chris Robinson
694e9a5fec
Always add the default PulseAudio device when probing
2010-05-30 23:04:04 -07:00
Chris Robinson
9ac5d8ad2d
List all available PulseAudio sources
2010-05-30 21:05:05 -07:00
Chris Robinson
706b9f2357
Probe and expose all available PulseAudio sinks for the enumerate_all extension
2010-05-30 20:33:57 -07:00
Chris Robinson
55b3675dee
Add a separate function to create/connect a pulseaudio context
2010-05-30 19:05:19 -07:00
Chris Robinson
dc86563486
Pass the threaded main loop object to context/stream_state_callback
2010-05-30 18:19:01 -07:00
Chris Robinson
ebccfa93c3
Don't unload libs when they're not needed
...
Some libs don't really like being unloaded and reloaded all the time, and the
benefits aren't that great
2010-05-28 23:00:59 -07:00
Chris Robinson
e9f4576d4d
Watch for changes to the PulseAudio sink device
2010-05-28 17:03:57 -07:00
Chris Robinson
880902fecc
Add a Null Output device
...
This device will mix and fully process contexts as normal
2010-05-28 16:41:52 -07:00
Chris Robinson
96cf5b7282
Avoid constantly loading and unloading PortAudio
...
It seems this triggers a bug in the lib, causing a crash. It may not be a bad
idea to remove dynamic unloading/reloading all through-out.
2010-05-28 02:22:17 -07:00
Chris Robinson
f89c9f7ea4
Connect a pulse stream on device open, to make sure the device isn't suspended
...
Also use the opportunity to get the stream's device's name, so later reset
calls will use the same device
2010-05-27 22:12:54 -07:00
Chris Robinson
27a4c871fd
Update head dampening after a device reset
2010-05-26 23:36:55 -07:00
Chris Robinson
37190b2caf
Add a function to get the frame size from a format
2010-05-24 21:51:30 -07:00
Chris Robinson
c6b948323e
Better watch for invalid values in alBufferSubDataEXT
2010-05-24 21:33:43 -07:00
Chris Robinson
ad2957ed98
Reduce the mixing buffer size
2010-05-24 20:10:35 -07:00
Chris Robinson
c469bfcb9e
Make error checking consistent in alBuffer.c
2010-05-24 19:52:27 -07:00
Chris Robinson
3d16be1822
Fix alBufferiv error handling
2010-05-24 19:02:36 -07:00
Chris Robinson
ad10d4ee74
Increment pointer when read
2010-05-24 17:40:16 -07:00
Chris Robinson
3ba3c1ca31
Pass the number of blocks to ConvertDataIMA4
2010-05-24 17:31:49 -07:00
Chris Robinson
4ad28964de
Be careful of integer overflows when allocating buffer storage
2010-05-24 17:08:12 -07:00
Chris Robinson
15ce7fb8f7
Cleanup some variables and names
2010-05-24 03:28:00 -07:00
Chris Robinson
80a22b6484
Reorder some error checks and watch for negative buffer sizes
2010-05-24 03:20:14 -07:00
Chris Robinson
8cfac7c6b8
Don't bother storing the loop points in the source
2010-05-24 01:07:13 -07:00
Chris Robinson
9ac6b4c2c8
Be big endian safe with the IMA4 decoder
2010-05-22 15:37:32 -07:00
Chris Robinson
861a933b7b
Use the ALSOFT_LOGFILE env var to specify the output for AL_PRINT
2010-05-21 18:16:27 -07:00
Chris Robinson
58e5404d61
Loop points should be specified in sample offsets
2010-05-21 15:52:35 -07:00
Chris Robinson
3676fdc4db
Add mono and stereo channel masks for DSound output
2010-05-21 14:12:09 -07:00
Chris Robinson
e7a555a953
Add an empty efx-creative.h header
...
This is for compatibility with projects that include it in Windows. Everything
from it is already defined in efx.h.
2010-05-21 11:21:35 -07:00
Chris Robinson
1e6ba29cd2
Consistency fix
2010-05-19 11:06:13 -07:00
Chris Robinson
c5c83882b3
Use unsigned types when finding the source offsets
2010-05-19 10:38:28 -07:00
Chris Robinson
ea3bc0518c
A couple formatting fixes
2010-05-19 10:36:24 -07:00
Chris Robinson
2d46a1001e
Use a map for the filter list
2010-05-18 17:54:45 -07:00
Chris Robinson
4edd7fe647
Use a map for the effects list
2010-05-18 17:41:06 -07:00
Chris Robinson
ad5dfab428
Improve compatbility with latest AL_EXT_buffer_sub_data spec
2010-05-18 17:15:21 -07:00
Chris Robinson
85838c1d57
Define ARGSTACK and CALLSTACK only when needed for testing shared libs
2010-05-16 08:03:05 -07:00
Chris Robinson
4fbb3ccf66
Always look for winmm under Windows
...
It's needed for timeGetTime, even if the WinMM backend is disabled
2010-05-16 07:52:43 -07:00
Chris Robinson
7f533c6a25
Change inline -> __inline for MSVC
2010-05-16 06:02:27 -07:00
Chris Robinson
6dab9d54d1
Use the loop start when filling in padding data for looping sources
2010-05-13 06:52:44 -07:00
Chris Robinson
7ed5d12717
Pay attention to the source loop points
2010-05-13 04:53:21 -07:00
Chris Robinson
23b2c1f902
Only use a modulo to loop when the source is static
2010-05-13 02:12:50 -07:00
Chris Robinson
5d579dd1a8
Store loop points as uncompressed frame offsets in the source when a buffer is attached
2010-05-13 02:10:33 -07:00
Chris Robinson
0ce138341c
Add initial structural support for AL_EXT_loop_points
2010-05-13 02:03:48 -07:00
Chris Robinson
61b682131e
Reduce some indentation
2010-05-12 07:30:45 -07:00
Chris Robinson
a53e3dda75
Don't needlessly expose a variable for the backends
2010-05-12 07:27:12 -07:00
Chris Robinson
2220c22c90
Move incomplete extension declarations to alMain.h
2010-05-12 06:59:47 -07:00
Chris Robinson
e3a70e5021
Scale output of effects to compensate for device down-mixing
2010-05-12 04:56:03 -07:00
Chris Robinson
af4faaf666
Use a UIntMap for the effect slot list
2010-05-12 02:20:14 -07:00
Chris Robinson
f2548570b8
Store the buffer's original data size and block alignment
2010-05-12 01:36:09 -07:00
Chris Robinson
d678f1d88b
Store looping locally when mixing a source
2010-05-12 00:38:04 -07:00
Chris Robinson
f0ce1bff3e
Simplify and fix applying a source offset
2010-05-11 11:59:41 -07:00
Chris Robinson
ab3c23478d
Use a separate function to convert compressed bytes to frames
2010-05-11 11:06:48 -07:00
Chris Robinson
4e65e9bfa9
Only a streaming source can have a processed buffer
2010-05-11 08:53:38 -07:00
Chris Robinson
053aeee5d3
Rename a variable
2010-05-11 07:09:44 -07:00
Chris Robinson
1652dc02ab
Look for the map insertion point using a binary search
2010-05-10 11:40:57 -07:00
Chris Robinson
099c2f3593
Use a simple loop to set multi-channel dry gains
2010-05-09 22:06:10 -07:00
Chris Robinson
0378422fcb
Use a map to store sources and buffers
...
And do a lookup using a binary search instead of linear
2010-05-01 19:59:41 -07:00
Chris Robinson
0760415d08
Use doubles instead of floats for the source offset calculations
2010-04-28 17:58:20 -07:00
Chris Robinson
5730ccaa39
Combine AL and ALC function lists
2010-04-28 15:07:38 -07:00
Chris Robinson
aaa7082aa8
Get the offset even if the current buffer is 0
2010-04-28 14:08:10 -07:00
Chris Robinson
5d7815beed
Only apply ambient gain to available output channels
2010-04-27 11:39:54 -07:00
Chris Robinson
a0ee2ccce7
Add a couple missing values to the *GetEnumValue tables
2010-04-25 08:40:37 -07:00
Chris Robinson
110be7f500
Add an option to scale the output mix
2010-04-23 07:54:43 -07:00
Chris Robinson
52663e8a44
Combine two loops into one
2010-04-23 07:23:38 -07:00
Chris Robinson
8646647b3e
Update stereodup config option comment
2010-04-22 05:22:20 -07:00
Chris Robinson
a04dac670e
Make stereo duplication a property of the device
...
Further, don't use it with mono/stereo output
2010-04-20 03:57:40 -07:00
Chris Robinson
81dd71dd71
Stop and start the backend device only if new attributes are being requested
2010-04-17 00:50:28 -07:00
Chris Robinson
4d15391c88
Disable PulseAudio's write callback when disconnecting
2010-04-17 00:27:13 -07:00
Chris Robinson
fc2473f826
Translate the source position separately
...
This is to handle the case where an app specifies the same values for the
source and listener, and expects centered panning. This fails due to floating-
point errors in the matrix, causing the result to be ever-so-slightly off of 0.
This error would normally be hidden by the position normalization, which will
not lengthen a distance shorter than the reference distance so the panning
would be nearly imperceptible. But that also fails if the reference distance
is set to 0, causing the position to expand to a full unit.
Keep the 4x4 matrix calculations, however. It will still be useful for the
requested listener matrix extension.
2010-04-16 02:09:53 -07:00
Chris Robinson
000d848f0b
Return immediately when no layout is specified
2010-04-11 23:03:36 -07:00
Chris Robinson
3c5007352e
More type fixes
2010-04-11 20:17:43 -07:00
Chris Robinson
e0fa497948
Use a linear scaling when sending multi-channel sources to auxiliary slots
2010-04-11 15:20:46 -07:00
Chris Robinson
f082c73539
Use proper types for some variables
2010-04-11 14:33:22 -07:00
Chris Robinson
d4f8bd665f
Only consider output speakers for the panning LUT
2010-04-11 14:23:10 -07:00
Chris Robinson
58d0db6eab
Don't use LIB_INSTALL_DIR since that can be the full path
2010-04-11 12:42:47 -07:00
Chris Robinson
1544ddf0a5
Avoid reading buffer 0's size
2010-04-10 17:31:08 -07:00
Chris Robinson
488ec612bb
Avoid hard-coding the channel count
2010-04-09 14:21:47 -07:00
Chris Robinson
484702a2e5
Get the speaker arrangement before setting up the channel matrix
2010-04-09 12:27:30 -07:00
Chris Robinson
371058fb9e
Re-enable stereo duplication
2010-04-08 23:00:14 -07:00
Chris Robinson
97b00670f5
Use the proper type for the speaker-to-channel map
2010-04-08 18:05:24 -07:00
Chris Robinson
704b386cc5
Scale the ring modulator's mono input when expanding to multi-channel
2010-04-08 16:34:51 -07:00
Chris Robinson
aace50ebf4
Store the panning LUT in the device
2010-04-08 15:58:11 -07:00
Chris Robinson
49201e892b
Use a single layout for the virtual speakers
...
The downmix should probably be improved to take the angles into account
2010-04-08 15:41:32 -07:00
Chris Robinson
19b8deba66
Apply a scalar to the output downmix so channels don't get more than a 100% mix
...
All channels get the same scalar so channel balance (should be) maintained
2010-04-08 15:23:03 -07:00
Chris Robinson
068c0076af
Set the device channel matrix when the device is reset
2010-04-08 15:02:03 -07:00
Chris Robinson
37c93a6ad8
Always mix internally at 8.1
...
The channels are remixed when writing to the output buffer. Stereo duplication
is currently broken, but this can be restored later
2010-04-08 14:47:12 -07:00
Chris Robinson
1b1c76da34
Invert device channel map array
2010-04-08 13:11:21 -07:00
Chris Robinson
5db1aec1d1
Make some functions static
2010-04-08 12:14:18 -07:00
Chris Robinson
05ca5c88ef
Update alsoftrc.sample for the ring modulator
2010-04-08 10:44:35 -07:00
Chris Robinson
980167c99b
Modulate with the requested waveform in the ring modulator
2010-04-08 10:37:09 -07:00
Chris Robinson
76f8c1e4e2
Implement a basic high-pass cutoff filter in the ring modulator
2010-04-08 09:36:20 -07:00
Chris Robinson
b273d616ad
Implement a skeleton Ring Modulator effect
2010-04-08 08:54:28 -07:00
Chris Robinson
c16b895460
Fix non-dynamic PortAudio
2010-04-01 03:25:39 -07:00
Chris Robinson
ec1a4884d9
Release 1.12.854
2010-03-29 22:05:21 -07:00
Chris Robinson
bb4ed8b1db
ALC_EXT_thread_local_context is now complete
2010-03-29 22:01:54 -07:00
Chris Robinson
4e54f93477
Make sure ALbyte and ALCbyte are signed
2010-03-28 23:24:41 -07:00
Chris Robinson
4ac1772149
No need to continue supporting _OPENAL32LIB
2010-03-28 02:12:32 -07:00
Chris Robinson
3f235c51f6
Remove a couple unnecessary lines
2010-03-26 21:58:19 -07:00
Chris Robinson
7bdf0d5156
Shorten some variable names
2010-03-26 00:41:27 -07:00
Chris Robinson
d2a6fd58a3
Use unsigned types for mono and stereo source count hints
2010-03-25 18:39:16 -07:00
Chris Robinson
05098862c5
Fix comparison check
2010-03-24 23:48:38 -07:00
Chris Robinson
c8dd0246da
Fix alcGetEnumValue error handling
2010-03-24 22:57:35 -07:00
Chris Robinson
b3c389c0a0
Constify and properly type some variables and struct members
2010-03-24 22:43:08 -07:00
Chris Robinson
15b9fc9099
Improve timing for the wave file writer
2010-03-24 22:20:55 -07:00
Chris Robinson
1c14c13c2f
Fix 8-bit output with the Wave Writer
2010-03-24 16:58:58 -07:00
Chris Robinson
b79b92967f
Fix comment typo
2010-03-24 16:53:11 -07:00
Chris Robinson
f77832fea2
Remove unnecessary NULL check
2010-03-24 03:43:37 -07:00
Chris Robinson
4ce8a17afd
Reduce some indentation
2010-03-24 02:23:00 -07:00
Chris Robinson
702c62c9a2
Use a global handle to store the process-wide context
2010-03-23 21:05:29 -07:00
Chris Robinson
661059bf0f
Rename alcMakeCurrent to alcSetThreadContext
2010-03-23 19:49:31 -07:00
Chris Robinson
7fb4c4ce4f
Move extension function declarations to alext.h/efx.h
2010-03-23 18:21:55 -07:00
Chris Robinson
52834744fa
Return if PortAudio fails to load in Windows
2010-03-23 17:45:37 -07:00
Chris Robinson
3e9934e810
Mark extension functions with AL_API/ALC_API
2010-03-23 17:44:01 -07:00
Chris Robinson
556e9b8fee
Use protected visibility for exported API functions
...
Protected visibility is like default visibility, in that functions will be
"exported" from the library. However, it also guarantees that references to the
functions from within the library will be to the library's version, even if the
symbols are overriden by the application.
2010-03-22 23:10:29 -07:00
Chris Robinson
ef92c63455
Define AL_BUILD_LIBRARY only when building the lib
2010-03-22 23:09:04 -07:00
Chris Robinson
ae8858c516
Whitespace fixes
2010-03-22 15:12:20 -07:00
Chris Robinson
0691486813
Support PortAudio in Windows
2010-03-21 20:57:15 -07:00
Chris Robinson
49db3bf916
Cleanup and fixup Release* functions
2010-03-20 21:49:02 -07:00
Chris Robinson
99f28f25b0
Avoid calling alDelete* from alGen*
2010-03-20 21:38:05 -07:00
Chris Robinson
27358c8ce8
Don't expose enums for unsupported filter types
2010-03-20 20:30:43 -07:00
Chris Robinson
899fbdfe08
Add EAX Reverb and Echo parameters to the enum table
2010-03-20 20:24:50 -07:00
Chris Robinson
eea23a012a
Relax circular layout requirement
2010-03-20 00:54:44 -07:00
Chris Robinson
2235a53824
Reduce some indentation
2010-03-19 20:49:23 -07:00
Chris Robinson
52f82f0b94
Simplify removing the context handle from the device's context array
2010-03-19 14:53:32 -07:00
Chris Robinson
a572b13743
Don't use deprecated macros
2010-03-19 14:34:18 -07:00
Chris Robinson
4340a6f8fe
Remove another unnecessary assert
2010-03-19 01:35:57 -07:00
Chris Robinson
4be97dc735
Use proper storage type for the new format
2010-03-19 01:26:56 -07:00
Chris Robinson
799126df0e
Use a better method to derive the offset from the data pointer
2010-03-18 19:32:03 -07:00
Alam Arias
a65ec178df
cast AL_SIZE value to ALint
2010-03-18 16:33:16 -07:00
Alam Arias
cf4027df38
Mingw64's shlobj.h wants at least 0x501
2010-03-18 16:33:08 -07:00
Alam Arias
127b845960
DXSDK_DIR is MSVC only
2010-03-18 16:32:53 -07:00
Alam Arias
e3637b8452
use ALintptrEXT in alcReverb.c
2010-03-18 16:32:49 -07:00
Alam Arias
745d36dc76
add _CRT_NONSTDC_NO_DEPRECATE define for MSVC
2010-03-18 16:32:44 -07:00
Chris Robinson
2355d6a4a0
Use ptrdiff types for databuffer offset/length handling
...
Should improve addressing for non-32-bit systems
2010-03-18 14:46:33 -07:00
Chris Robinson
e1965fe7d9
Convert CR/LF -> LF
...
Spotted by Alam Arias
2010-03-18 14:23:31 -07:00
Chris Robinson
781444d12c
Use size_t where appropriate
...
Spotted by Alam Arias
2010-03-18 14:21:06 -07:00
Chris Robinson
b6571904ce
Define _WIN32_IE to 0x400 only if it's a lesser value by default
...
Spotted by Alam Arias
2010-03-18 13:46:18 -07:00
Chris Robinson
97b25755e7
Support capture with PortAudio
2010-03-18 01:58:25 -07:00
Chris Robinson
bdfafb454b
Create WAVEFORMATEXTENSIBLE wave files for multi-channel and float support
2010-03-18 00:53:58 -07:00
Chris Robinson
0fee20a415
Simplifiy verification loops
2010-03-17 20:16:02 -07:00
Chris Robinson
186e0f3b04
Use a separate list for NULL-device extensions
2010-03-17 19:46:20 -07:00
Chris Robinson
2e6c5e590f
Remove old comment
2010-03-17 19:28:01 -07:00
Chris Robinson
9d4e715ee7
Don't return unsupported effects from alGetEnumValue
2010-03-17 19:20:52 -07:00
Chris Robinson
932e5ec9b8
The enums are the same as with mcforamts, so advertise AL_EXT_MULAW too
2010-03-17 19:15:51 -07:00
Chris Robinson
af5fb1d535
Remove unnecessary assert
2010-03-17 19:04:02 -07:00
Chris Robinson
2953daebf5
GetSourceOffset can't fail
2010-03-17 15:19:00 -07:00
Chris Robinson
dd82b68175
Handle source offsets for muLaw formats
2010-03-17 15:15:12 -07:00
Chris Robinson
05a081a7b8
Allow selecting databuffer 0
2010-03-17 14:04:25 -07:00
Chris Robinson
9c417d33cc
clock_gettime is available only when _POSIX_TIMERS is greater than 0
2010-03-17 12:04:33 -07:00
Chris Robinson
975f92fc84
Remove unnecessary stop call
2010-03-16 21:29:55 -07:00
Chris Robinson
0097beb84c
Remove unused variable
2010-03-16 21:12:36 -07:00
Chris Robinson
65e16cc8bb
Remove unneeded checks
2010-03-16 20:29:01 -07:00
Chris Robinson
2687155200
Get rid of more alIs* calls
2010-03-16 20:23:46 -07:00
Chris Robinson
49321961e8
Effect and filter ID 0 is valid
2010-03-16 19:14:05 -07:00
Chris Robinson
65f43637ce
Avoid some alIs* calls while under the context lock
...
Instead, use functions that verify the ID by searching the object list and
returning its handle
2010-03-16 18:54:36 -07:00
Chris Robinson
f37cfc486d
Pass the context to alSetError
2010-03-16 17:35:51 -07:00
Chris Robinson
a337a59fb8
Use alext.h for extension definitions
2010-03-16 16:25:30 -07:00
Chris Robinson
ec917e8e2f
Rename some struct members for consistency
2010-03-16 15:37:41 -07:00
Chris Robinson
89d84131a4
Avoid dereferencing a NULL buffer when unqueueing buffer 0
2010-03-15 16:10:21 -07:00
Chris Robinson
2033f60d24
Print an error when realloc fails
2010-03-15 14:28:38 -07:00
Chris Robinson
d4159430f0
Set the buffer length for Pulse when opening the device
...
So it will properly scale with context frequency requests
2010-03-14 22:20:55 -07:00
Chris Robinson
14255a38fc
Pulse's buffer size is not a good measurement for the update size
...
Lie and say 20ms instead, since there is no stable method to get such info
2010-03-14 21:45:23 -07:00
Chris Robinson
6c5f1b78d7
Reduce the mixing buffers to the next power of two
2010-03-14 03:30:42 -07:00
Chris Robinson
1f2d3a0132
Remove duplication of setting source angles
2010-03-14 03:23:18 -07:00
Chris Robinson
c23e4ed412
Add support for AL_EXT_DOUBLE
2010-03-13 21:32:45 -08:00
Chris Robinson
8c0118e7ae
Add support for AL_EXT_MULAW_MCFORMATS
2010-03-13 21:03:34 -08:00
Chris Robinson
9d4107a515
Add AL_EXT_MULAW_MCFORMATS tokens to alext.h
2010-03-13 18:39:12 -08:00
Chris Robinson
d07b9c2c11
Rewrite openal-info
...
Output is mostly unchanged, however there are differences. Device-specific info
(including context-specific info) is separated from NULL-device queries, and
there is now a distinction between ALC versions of the NULL device and the
opened device. Additionally, an alternate playback device can be queried by
specifying its name as the first parameter.
2010-03-13 18:03:01 -08:00
Chris Robinson
3108a6a997
Limit PulseAudio's buffer size to the requested length
2010-03-11 09:47:26 -08:00
Chris Robinson
b734cab6fc
Fix the retrieval of the RW offsets using the correct functions
2010-03-10 07:33:30 -08:00
Chris Robinson
08b1bed38b
Remove a couple incorrect comments
2010-03-10 07:16:53 -08:00
Chris Robinson
df6320eb0a
Remove duplicate copyright notice
2010-03-09 11:25:34 -08:00
Chris Robinson
80f1ec0d7e
Protect some capture calls with a mutex
2010-03-09 10:14:52 -08:00
Chris Robinson
98f4f5a4f0
Add EFX types and enums to alext.h
...
The types and enums are in efx.h, which is included by alext.h. It's done this
way because EFX has a lot if definitions which would polute alext.h
2010-03-09 09:28:22 -08:00
Chris Robinson
8feb089f5c
Build device lists only when needed
2010-03-09 06:09:29 -08:00
Chris Robinson
2ba3a88ace
Probe physical devices separately from appending them to the device list
2010-03-09 05:44:18 -08:00
Chris Robinson
1f10195c47
Use powf when available
2010-03-07 22:12:33 -08:00
Chris Robinson
dc40702b53
Remove unused source param count macro
2010-03-07 21:48:25 -08:00
Chris Robinson
a9e0e57797
Keep UpdateSize updated when apps request a frequency
2010-02-24 18:51:57 -08:00
Chris Robinson
9b47048231
Silence some warnings
2010-02-16 05:44:39 -08:00
Chris Robinson
c05a3d3549
Better handle run-time linking
2010-02-16 05:43:36 -08:00
Chris Robinson
2083884ae3
Properly check for functions in Win32 shared libs
2010-02-16 05:36:49 -08:00
Chris Robinson
2f644c7ed5
Constify some globals
2010-02-15 22:01:23 -08:00
Chris Robinson
d17c4a098c
Avoid probing for devices on lib initialization
2010-02-10 16:34:43 -08:00
Chris Robinson
96303893bc
Set ALSA playback buffer and period size based on time
...
So rate adjustments won't modify the latency
2010-02-08 17:42:44 -08:00
Chris Robinson
a329f9c84a
Fix retrieval of the current global context when changing it
2010-02-08 16:58:26 -08:00
Chris Robinson
fc96e965ae
Always disable ALSA's resampler for playback
...
This means the frequency config option won't have an effect if the ALSA device
can't set an alternate sampling rate
2010-02-08 16:38:53 -08:00
Chris Robinson
365a62d63a
Improve source write offset calculations
2010-02-07 20:11:24 -08:00
Chris Robinson
3a87c3c3ba
Avoid using periods with PulseAudio, and add an option to specify its buffer length
2010-02-07 19:29:48 -08:00
Chris Robinson
54dc26b145
Enable the WinMM backend only if the lib check succeeds
2010-02-05 12:07:51 -08:00
Chris Robinson
78c1629aeb
Disable ALSA's resampler when no specific output rate is requested
2010-02-05 11:45:17 -08:00
Chris Robinson
bd518ed264
Make sure all requested data gets written to PulseAudio
2010-01-24 00:03:23 -08:00
Chris Robinson
56379bffac
Use pa_channel_map_superset only when available with PulseAudio 0.9.15
...
pa_channel_map_equal can otherwise detect some compatible output modes
2010-01-22 21:20:08 -08:00
Chris Robinson
11d7a0e394
Specify the buffer size to ALSA, so the period count remains flexible
...
Under conditions where the period size is fixed (such as dmix), ALSA will still
attempt to provide the requested number of periods even if the requested period
size needs to be dramatically altered. In these cases, it would be better to
increase or decrease the period count, instead of growing or shrinking the
total buffer size and significantly changing the latency.
2010-01-20 01:19:32 -08:00
Chris Robinson
3ad86a1c1b
Release 1.11.753
2010-01-17 17:46:27 -08:00
Chris Robinson
931f5875cd
Fix speaker angle fixup
2010-01-12 09:11:46 -08:00
Chris Robinson
f22b02a762
al_print doesn't need to be inline
2010-01-12 09:05:57 -08:00
Chris Robinson
505f61ff43
Properly trace the invalid speaker angle
2010-01-12 08:50:32 -08:00
Chris Robinson
0c2efa1253
Use GCC's format attribute for al_printf
2010-01-12 08:48:25 -08:00
Chris Robinson
5921e18be2
Fix some typos with the solaris backend
2010-01-12 08:28:07 -08:00
Chris Robinson
5b9e6fe440
Only allow 8- and 16-bit, and mono and stereo, wave file output
2010-01-12 08:26:25 -08:00
Chris Robinson
35ba7d70dc
Consolidate some source offset handling code
2010-01-12 02:43:37 -08:00
Chris Robinson
026b4b8f4c
Better handle large second offsets
2010-01-12 02:26:38 -08:00
Chris Robinson
c924a50bed
Don't use a flag to set an error when applying the source offset
2010-01-12 02:22:38 -08:00
Chris Robinson
574792d2e1
Fix Windows compilation
2010-01-11 23:47:03 -08:00
Chris Robinson
ab2eb5a603
Check buffer size when copying padding instead of the data pointer
2010-01-11 10:58:33 -08:00
Chris Robinson
3d7f925d52
Add helpful values to the resampler enum
2010-01-11 07:02:29 -08:00
Chris Robinson
93b584ff84
Add a cosine resampler
2010-01-11 06:19:54 -08:00
Chris Robinson
705849ca73
Add an option for point resampling
2010-01-11 05:37:20 -08:00
Chris Robinson
1a57f095e8
Hold global lock during mixing only when iterating device contexts
2010-01-11 03:57:49 -08:00
Chris Robinson
ac9c2e8c4a
Cleanup OSS/Solaris loop a bit
2010-01-10 12:40:59 -08:00
Chris Robinson
45f8efec41
Return the default config string for empty entries
2010-01-09 06:48:43 -08:00
Chris Robinson
ef7df2416d
Hide OSS and Solaris devices if their files can't be stat'd
2010-01-09 06:40:50 -08:00
Chris Robinson
cb113315f7
Promote AL_EXT_source_distance_model to complete
2010-01-09 03:27:16 -08:00
Chris Robinson
d61f90a9c2
Make sure the device handle is valid when getting the device error
2010-01-09 03:25:13 -08:00
Chris Robinson
3d11fb219e
Hold the default context extensions globally
2010-01-09 02:48:18 -08:00
Chris Robinson
4d9a368f96
Suppress connection refused errors
...
Since that just typically means the server isn't running
2010-01-08 01:43:27 -08:00
Chris Robinson
43220b604c
Reduce some indentation
2010-01-08 01:21:57 -08:00
Chris Robinson
91f28fa87c
Try the PulseAudio backend first
2010-01-08 01:08:27 -08:00
Chris Robinson
82547db2db
Prepare the pcm handle after recovering
2010-01-06 23:02:28 -08:00
Chris Robinson
64ac3a4739
Use snd_pcm_recover in more places
2010-01-06 22:55:20 -08:00
Chris Robinson
c90616b963
Use snd_pcm_recover to recover from certain device errors
2010-01-06 22:50:30 -08:00
Chris Robinson
0ceaa01c3d
Adjust PulseAudio's capture latency
2009-12-30 15:33:16 -08:00
Chris Robinson
7d7e503603
Properly retrieve device-inspecific errors
2009-12-28 23:29:49 -08:00
Chris Robinson
7ee81eac0f
Store ALC errors with the device when possible
2009-12-28 23:19:13 -08:00
Chris Robinson
c9a08fc7b2
Remove some unneeded functions
2009-12-28 13:12:45 -08:00
Chris Robinson
69ab93a824
Add a function to check if a config option is set to a non-empty value
2009-12-28 13:08:15 -08:00
Chris Robinson
179b660eee
Enforce a lower bound playback frequency of 8khz
2009-12-28 12:47:59 -08:00
Chris Robinson
a0ef7be9a5
Improve layout parsing and allow using long names for speakers
2009-12-28 11:49:55 -08:00
Chris Robinson
2a735b14dc
Add an option to spawn a PulseAudio server on request
2009-12-28 10:49:31 -08:00
Chris Robinson
a294dd8d9b
Be more lenient in signaling the mainloop
2009-12-28 10:15:59 -08:00
Chris Robinson
dc1522282b
Try to find a compatible format from Pulse's default sink
2009-12-27 11:05:59 -08:00
Chris Robinson
528a4c6a02
Update panning for existing AL contexts when creating a new one
2009-12-26 20:27:14 -08:00
Chris Robinson
1770a8b62b
A NULL Pulse context won't have a valid error code
2009-12-26 12:18:16 -08:00
Chris Robinson
77a0a6de95
Wait for the buffer attrib update from pulse to finish
2009-12-26 11:30:41 -08:00
Chris Robinson
c1fd977e79
Consolidate pulse capture failure path
2009-12-26 10:46:29 -08:00
Chris Robinson
cbbda93292
Make sure a proper channel map is set for pulse capture
2009-12-26 09:17:03 -08:00
Chris Robinson
c6340ce12d
Clean up some loading checks
2009-12-26 08:49:11 -08:00
Chris Robinson
7bc739e965
Use the proper logging function
2009-12-26 08:16:25 -08:00
Chris Robinson
9f988808c7
Start and stop PortAudio's stream in the proper methods
2009-12-26 08:14:28 -08:00
Chris Robinson
6e9ce47a4b
GetConfigValueBool should take an int, not a float
2009-12-26 07:42:57 -08:00
Chris Robinson
89f59c0e1c
Shorten a long line
2009-12-26 07:42:16 -08:00
Chris Robinson
3793919892
Capture as much as possible directly from PulseAudio
2009-12-25 17:56:57 -08:00
Chris Robinson
d1699d50f6
Add missing newline
2009-12-25 15:18:32 -08:00
Chris Robinson
b94d950b1e
Undefine no longer needed macro
2009-12-25 14:11:43 -08:00
Chris Robinson
d3e77a0f63
Fix incorrect error check
2009-12-25 13:19:25 -08:00
Chris Robinson
965a71ee90
Only use pa_stream_set_buffer_attr_callback when available (0.9.15+)
2009-12-25 13:17:21 -08:00
Chris Robinson
fd794b44b2
Use pa_stream_begin_write when available for "zero-copy" writing
...
Must be compiled against 0.9.16 or newer to be available. It will fall back to
the old method if the function is not available at run-time.
2009-12-25 13:11:17 -08:00
Chris Robinson
c9dcba17a9
Check error returns instead of error string
2009-12-25 13:05:04 -08:00
Chris Robinson
88de4e15b3
Mark the source for updating when setting a buffer on it
...
Changing the buffer can change the playback format, which can require different
source parameter calculations. Queueing a buffer on a source that has no
buffers (or only buffers without a format, eg. buffer 0) has the same effect
2009-12-25 05:09:29 -08:00
Chris Robinson
7f0c6629b9
Use a 64-bit value to scale potentially-large numbers
2009-12-24 15:41:45 -08:00
Chris Robinson
f6ca39403d
Use the Pulse server-specified playback rate by default
2009-12-24 15:35:22 -08:00
Chris Robinson
ea7cf35ea4
Use pa_xmalloc instead of pa_xmalloc0
2009-12-24 07:38:46 -08:00
Chris Robinson
accea119d9
Update pulse capture ring buffer in 25ms chunks
2009-12-24 04:08:04 -08:00
Chris Robinson
6ea7b43c90
Don't force latency adjustment with PulseAudio
2009-12-23 13:59:58 -08:00
Chris Robinson
ddfad996a9
Don't render mono as stereo
2009-12-21 02:59:30 -08:00
Chris Robinson
d786f99094
Scale samples down when converting stereo to mono
2009-12-21 02:27:25 -08:00
Chris Robinson
008563450c
Improve some indentations
2009-12-20 21:50:00 -08:00
Chris Robinson
69c238a2e6
Properly retrieve the device frequency
2009-12-20 21:19:57 -08:00
Chris Robinson
b3fdf170b1
Fix header comment for AL_PITCH
2009-12-16 22:50:54 -08:00
Chris Robinson
56cc038603
Improve initial decay calculations for sends to reverb
2009-12-10 18:37:36 -08:00
Chris Robinson
4c83c689a8
Use the specified reverb air absorption value for wet sends
2009-12-10 18:22:45 -08:00
Chris Robinson
2b7953c472
Track whether a context is suspended or not
2009-12-09 12:14:53 -08:00
Chris Robinson
368ef1cea9
Store the source state locally after making sure it needs mixing
2009-12-09 11:56:53 -08:00
Chris Robinson
bd696a6b37
Fix IMA ADPCM offset calculation
2009-12-09 09:50:09 -08:00
Chris Robinson
a9fc272e39
Prettify CMake checks for compiler switches
2009-12-09 08:46:35 -08:00
Chris Robinson
c5952d1ddc
Move the pkg-config file to the base directory
2009-12-09 07:36:06 -08:00
Chris Robinson
656a406377
Use an inline function to calculate the low-pass filter coefficient
2009-12-09 07:21:59 -08:00
Chris Robinson
5fcd6cc510
Split non-attenuated source calculations into a separate function
2009-12-09 07:02:26 -08:00
Chris Robinson
e09b6020a6
Fix typo for reverb creation
2009-12-09 06:46:06 -08:00
Chris Robinson
84d2d623b6
Add a head-dampening option
...
This simulates occlusion of the player's head for sounds coming from behind,
when outputing to mono or stereo
2009-12-08 14:18:07 -08:00
Chris Robinson
1694e5bd12
Store the original pre-clamped distance instead of re-computing it
2009-12-08 10:12:18 -08:00
Chris Robinson
5170e251f9
Use the correct wet filter history offset
2009-12-07 12:45:23 -08:00
Chris Robinson
4697e946d3
Internally store 32-bit float buffer data, and mix accordingly
2009-12-07 10:35:30 -08:00
Chris Robinson
9286e3984c
Move default channel order setting out of the header
2009-12-07 04:19:33 -08:00
Chris Robinson
88f3d747b7
Add a simple README
2009-12-07 01:05:01 -08:00
Chris Robinson
d4427c54ea
Change internal order to match WFX
2009-12-07 00:51:27 -08:00
Chris Robinson
92ade80557
Fix 6.1 channel order
2009-12-07 00:49:56 -08:00
Chris Robinson
8138446b8c
Restrict setting some wet path values to active sends only
2009-12-06 03:59:12 -08:00
Chris Robinson
58ecc7fad4
Check for potential NULL accesses with the IsBadWritePtr wrapper
2009-12-04 01:33:50 -08:00
Chris Robinson
311cc5c62f
Don't wait to accept stream connections
2009-12-03 04:43:38 -08:00
Chris Robinson
4a928ea9fa
Don't signal on synchronous changes and don't wait to accept context changes
2009-12-02 08:10:45 -08:00
Chris Robinson
c1eb444a39
Remove some assumptions of 16-bit internal storage
2009-12-02 05:55:33 -08:00
Chris Robinson
b5270e0bb3
Use a channel-map to specify the output device channel order
2009-12-02 04:03:51 -08:00
Chris Robinson
6cfc31777b
Add an option for real-time priority mixing
...
Default to disable for now, as a safety precaution
2009-12-01 23:15:09 -08:00
Chris Robinson
0e1e8503e0
Properly accept PulseAudio's mainloop signal on connection failure
2009-12-01 22:42:43 -08:00
Chris Robinson
974d0b4e91
Fix retrieved update size from pulseaudio
2009-12-01 12:21:02 -08:00
Chris Robinson
d66832a39c
Accept a signal only when the pulseaudio stream/context is ready
2009-12-01 12:18:34 -08:00
Chris Robinson
d5889a941f
Clamp dry gain after cone attenuation is applied
2009-12-01 03:32:04 -08:00
Chris Robinson
6248e986e5
Don't complain if the length given by pulse isn't an exact multiple of the period size
2009-12-01 02:23:38 -08:00
Chris Robinson
786b98a013
Avoid setting a field redundantly
2009-11-29 23:07:04 -08:00
Chris Robinson
f63d8dbf38
Enable real-time priority for ALSA, OSS, and DirectSound mixing loops
2009-11-29 23:02:21 -08:00
Chris Robinson
15aad09ce7
Check for the pthread_setschedparam function
2009-11-29 22:44:56 -08:00
Chris Robinson
fdd314f7f8
Reset the kill flag after the thread has stopped
2009-11-29 10:22:12 -08:00
Chris Robinson
39b456d88c
Add AL_EXT_double tokens to alext.h
2009-11-28 22:19:04 -08:00
Chris Robinson
d930fb8d3d
Call the Update effect method for null effects
2009-11-28 20:09:41 -08:00
Chris Robinson
3ec64eb0fd
Call to the right databuffer function
2009-11-28 19:37:29 -08:00
Chris Robinson
d81c9819b8
Remove unnecessary returns
2009-11-28 19:36:05 -08:00
Chris Robinson
98ce1d14c1
Update AL_EXTX_source_distance_model to require explicit enabling
...
The in-progress spec has been updated to reflect this
2009-11-27 20:05:21 -08:00
Chris Robinson
69f9ab88b9
Send multi-channel sources to auxiliary effect slots
...
They are downmixed to mono using a volume-preserving scalar, and passed
through a 1-pole low-pass filter (not chained)
2009-11-26 00:39:32 -08:00
Chris Robinson
1a0676f0eb
Mark sources for updating when a new context is made from the device
2009-11-25 16:28:19 -08:00
Chris Robinson
658923175f
Update source parameters only when they need changing
2009-11-25 16:21:47 -08:00
Chris Robinson
877f4340ba
Base air absorption on distance attenuation, try 2
2009-11-24 21:19:11 -08:00
Chris Robinson
35a9ccb41f
Revert "Base air absorption on the distance attenuation"
...
This reverts commit c7c2f9385f .
Fundamentally wrong. The -6dB rolloff is every doubling of the distance, and
the (scaled) -0.05dB rolloff is supposed to be every additional unit.
2009-11-24 01:39:34 -08:00
Chris Robinson
c7c2f9385f
Base air absorption on the distance attenuation
2009-11-23 16:25:37 -08:00
Chris Robinson
d1f3dbb9a1
Make modulation index 0 map to offset 0
2009-11-23 04:14:12 -08:00
Chris Robinson
cfb30fe975
Use a 4x4 matrix to transform coordinates
2009-11-23 04:13:51 -08:00
Chris Robinson
2d1b378ef2
Transform all relevant vectors for converting world-space to listener-space
2009-11-22 22:36:20 -08:00
Chris Robinson
06bbee2449
Add a function for 1-pole filtering
2009-11-22 21:20:27 -08:00
Chris Robinson
85bc300dfa
ALCAPIENTRY is deprecated in favor of ALC_APIENTRY
2009-11-22 21:15:11 -08:00
Chris Robinson
0662adacb9
Fix alBufferDataStatic extension name in alext.h
2009-11-22 21:12:43 -08:00
Chris Robinson
65a153da6c
Update the drivers config file comment
2009-11-22 15:43:05 -08:00
Chris Robinson
c5ee010640
The echo should not take energy-attenuated input
2009-11-22 15:37:32 -08:00
Chris Robinson
1b18b4a0ee
Allow unlisted backends to stay available when the drivers list ends with ,
2009-11-22 01:06:05 -08:00
Chris Robinson
58765aab6b
Print available devices before trying to open one
2009-11-19 19:02:16 -08:00
Chris Robinson
1483af1baa
Watch for NULL and empty device lists
2009-11-19 18:49:24 -08:00
Chris Robinson
13979793f6
Display supported filters using a comma-separated listing
2009-11-19 18:46:23 -08:00
Chris Robinson
9c228e7625
Be clearer if device opening or context setup fails
2009-11-19 18:25:29 -08:00
Chris Robinson
6a667b36d1
Reorganize and improve the reverb effect
...
Code supplied by Christopher Fitzgerald. This update also implements the echo
and modulation parameters.
2009-11-19 14:05:04 -08:00
Chris Robinson
fe37f1968d
Better approximate the wet attenuation model for reverb
2009-11-19 11:06:41 -08:00
Chris Robinson
4565bdd7ce
Make sure there's at least a one-sample delay for the echo's first tap
2009-11-19 10:42:41 -08:00
Chris Robinson
5f3c07ca3b
Apply the reverb room rolloff factor for EAX reverb too
2009-11-19 10:29:10 -08:00
Chris Robinson
8d1da6a8ca
Move NextPowerOf2 to alMain.h
2009-11-19 09:50:15 -08:00
Chris Robinson
ff8e09495d
Move aluCart2LUTpos to alu.h
2009-11-19 09:24:35 -08:00
Chris Robinson
e868eef679
Make sure to set the new echo sample buffer and remove an unused macro
2009-11-18 17:34:08 -08:00
Chris Robinson
ea90f781ff
Release 1.10.622
2009-11-08 21:36:44 -08:00
Chris Robinson
c1b161b44b
Handle NULL effect objects as AL_EFFECT_NULL effects
2009-11-05 20:50:56 -08:00
Chris Robinson
aa84b2e328
Handle setting AL_EFFECT_NULL effect types on a slot
2009-11-05 18:22:43 -08:00
Chris Robinson
ebc1602816
Use the DXSDK_DIR variable when set
2009-11-02 14:57:48 -08:00
Chris Robinson
dcd6a55529
Use a realtime clock for measuring time
2009-11-01 10:03:05 -08:00
Chris Robinson
fb258a7416
Properly lock the device when setting it disconnected
2009-11-01 09:29:20 -08:00
Chris Robinson
5aed927887
Watch for stream and context failures from pulse, and report disconnects
2009-10-31 20:05:15 -07:00
Chris Robinson
d964bb9f2f
Fix length calculation for pulse
2009-10-31 19:30:12 -07:00
Chris Robinson
87dc7a5b97
Set a proper channel map for PulseAudio
2009-10-31 19:29:41 -07:00
Chris Robinson
ae63ca481d
Mix all updates PulseAudio requests
2009-10-31 17:59:30 -07:00
Chris Robinson
8e599103b6
Watch for buffer attribute changes from PulseAudio
2009-10-31 17:57:35 -07:00
Chris Robinson
af0140e260
Use signals to watch for state changes
...
This partially reverts commit 617b6728d3
2009-10-31 17:52:26 -07:00
Chris Robinson
9d43907710
Properly free the device name
2009-10-31 13:25:26 -07:00
Chris Robinson
a3fcd67a82
Remove some unneeded buffer fields, make padding a constant amount
2009-10-25 08:31:28 -07:00
Chris Robinson
fe3a43e2d4
Remove the format and frequency from the source, get them manually
2009-10-25 06:26:19 -07:00
Chris Robinson
e095047b02
Small fixups
2009-10-25 06:16:21 -07:00
Chris Robinson
31a106344f
Calculate more store only once per loop
2009-10-25 05:34:47 -07:00
Chris Robinson
b0a82aa420
Store the buffer format and frequency in the source when updated
2009-10-25 05:03:22 -07:00
Chris Robinson
c003d6032d
Retreive and store source params once per mix update
2009-10-25 04:39:36 -07:00
Chris Robinson
1665595138
Remove unneeded bufferlistitem properties
2009-10-25 02:59:31 -07:00
Chris Robinson
bbccf76b45
Dereference left over buffers and slots when sources are released
2009-10-24 07:09:44 -07:00
Chris Robinson
1f47fa9243
Try 32-bit float before 16-bit, and stereo before mono
2009-10-24 03:20:47 -07:00
Chris Robinson
7b24a12a66
Check for the -pthread switch instead of using _REENTRANT
2009-10-23 10:36:32 -07:00
Chris Robinson
921e7ac3e9
Store the buffer handle directly in the source and buffer queue list
2009-10-22 09:31:26 -07:00
Chris Robinson
8d807add41
Store the bufferID in the buffer struct
2009-10-22 08:53:59 -07:00
Chris Robinson
8501fce38b
Remove unused source fields
2009-10-21 15:40:09 -07:00
Chris Robinson
55d7984582
Set the calculated source parameters directly
2009-10-21 15:31:21 -07:00
Chris Robinson
8dbac9c0bd
Store the calculated source parameters in the source struct
2009-10-21 14:25:54 -07:00
Chris Robinson
47b8510b0c
Don't assume 16-bit samples
2009-10-21 13:50:53 -07:00
Chris Robinson
4e399b41cd
Calculate source filter coefficients with the source parameters
2009-10-21 13:08:50 -07:00
Chris Robinson
bdec1e037f
Remove unnecessary variable
2009-10-21 12:48:04 -07:00
Chris Robinson
9924cce466
Make sure the ALSA device list is reset if no cards are found
2009-10-21 11:53:45 -07:00
Chris Robinson
d3ecbd75af
Clear the echo and delay lines even if the buffer doesn't change size
2009-10-21 02:03:33 -07:00
Chris Robinson
75b65ab2a2
Remove the Frequency field from the context
2009-10-20 13:47:55 -07:00
Chris Robinson
eca8825ab4
Explicitly suspend the context being processed for mixing
2009-10-20 13:38:02 -07:00
Chris Robinson
9f9b7cf885
Make sure the context is properly locked while updating slots and sends
2009-10-20 13:02:28 -07:00
Chris Robinson
cd695d7f15
Allow creating multiple contexts on a device
2009-10-20 12:58:19 -07:00
Chris Robinson
9c0ae597cd
Make sure the effect slots and source sends are properly updated
...
Slots need to be updated due to possible frequency changes, and source sends
need to be updated in case some active sends were disabled
2009-10-20 12:53:07 -07:00
Chris Robinson
4461b4c56f
Be more tolerant with resetting the fragment size
2009-10-20 12:28:51 -07:00
Chris Robinson
93361118b7
Store a device's contexts in a dynamic array
2009-10-20 11:54:04 -07:00
Chris Robinson
50f963f6c6
Don't try to clamp the listener-to-source velocity for local sources
...
Local sources will always have a 0 VLS value
2009-10-20 11:03:16 -07:00
Chris Robinson
67c3e47ed4
Avoid handling NaN when scaling float samples for output
2009-10-20 09:48:09 -07:00
Chris Robinson
f14cf8289e
Add a method to update device-dependant effect parameters.
...
The effect state's update method will be called afterwards
2009-10-20 08:31:44 -07:00
Chris Robinson
790aa68621
Reduce indentation for CalcSourceParams
2009-10-19 13:25:40 -07:00
Chris Robinson
6d1d61026d
Be context-agnostic in the effect Create functions
...
This allows the effect Update functions to handle the playback frequency being
changed. By default the effects assume a maximum frequency of 192khz, however,
it can go higher at the cost of the sample buffers being cleared and the risk
of an abort() if reallocation fails
2009-10-19 07:46:53 -07:00
Chris Robinson
a4e3ca933b
EINTR is not a fatal write error
2009-10-19 00:33:00 -07:00
Chris Robinson
1fb58f9f8e
Fix OSS and Solaris playback loop check
2009-10-17 22:17:59 -07:00
Chris Robinson
86e0b9386d
Remove duplicate check in ALSA mmap playback
2009-10-16 10:57:58 -07:00
Chris Robinson
c7c4cf221a
Make the dry buffer part of the device
2009-10-09 01:06:33 -07:00
Chris Robinson
d6e439244a
Rename SetALCError for consistency
2009-10-07 04:32:14 -07:00
Chris Robinson
5ff225fa1b
Add missing ) in pulseaudio backend
2009-10-02 07:34:49 -07:00
Chris Robinson
2a77e840cc
Fix type casts for 7.1 output
2009-09-30 16:02:49 -07:00
Chris Robinson
00272883f6
Fallback to 16-bit or 8-bit, or mono, if ALSA doesn't accept the request
2009-09-27 08:35:10 -07:00
Chris Robinson
bd6f3b1273
Report disconnect if the device fails to reset
2009-09-27 04:58:42 -07:00
Chris Robinson
4e9767bb22
Don't store the ALSA format
2009-09-27 04:03:11 -07:00
Chris Robinson
1d54b7a266
Fix capture, too
2009-09-27 03:57:19 -07:00
Chris Robinson
c9506d939a
Make sure ALSA properly loads, and fix the thread stop condition
2009-09-27 01:12:42 -07:00
Chris Robinson
21217824b7
Avoid duplicate error handling
2009-09-27 00:58:11 -07:00
Chris Robinson
8024df2991
Load backend libs on-demand
2009-09-27 00:21:40 -07:00
Chris Robinson
f72b6fe717
Release 1.9.563
2009-09-26 01:42:21 -07:00
Chris Robinson
8d29d25d60
Condense some local variables
2009-09-24 14:51:40 -07:00
Chris Robinson
af8e7ab984
Check the source start position in alSourcePlayv instead of the mixer
2009-09-24 12:24:10 -07:00
Chris Robinson
4289d5de7d
Parse the attribute list and reset the device before creating the context
2009-09-24 11:31:01 -07:00
Chris Robinson
83734aff0e
Slightly improve the multi-channel mixing loops
2009-09-24 08:52:51 -07:00
Chris Robinson
617b6728d3
Remove the state callbacks and watch for changes synchronously
2009-09-24 00:26:41 -07:00
Chris Robinson
7a8fd6cb20
Get rid of unnecessary messages from pulseaudio
2009-09-23 08:34:15 -07:00
Chris Robinson
55da339586
Properly clean up the pulse device
2009-09-23 08:19:00 -07:00
Chris Robinson
774eae0f2f
Silence unused parameter warning
2009-09-23 07:10:23 -07:00
Chris Robinson
201b108a54
Attempt to reload backend libs when probing, if they didn't initially load
2009-09-23 01:33:58 -07:00
Chris Robinson
bdbdbcea26
Update in properly-sized chunks for PulseAudio
2009-09-23 01:24:10 -07:00
Chris Robinson
f6c1a21cf0
Properly flip the backend entries when sorting the device list
2009-09-22 04:42:46 -07:00
Chris Robinson
c953072a15
Fix reset condition check
2009-09-22 00:16:21 -07:00
Chris Robinson
93f3e9357b
(Re)allocate and clear the stereo-to-binaural filter as needed
2009-09-21 23:52:59 -07:00
Chris Robinson
8ea8b49464
Avoid locking a NULL context when a device is disconnected
2009-09-21 23:31:04 -07:00
Chris Robinson
62cef44dcb
Reinitialize the stereo-to-binaural filter after resetting the device
2009-09-21 23:25:26 -07:00
Chris Robinson
a2edc95207
Properly set the number of sends requested by the app
2009-09-21 23:18:39 -07:00
Chris Robinson
4cd41e3e08
Don't allow setting an invalid auxiliary send
2009-09-21 23:09:31 -07:00
Chris Robinson
b641f993ac
Hide the wave writer device if no output file is set
2009-09-21 05:03:40 -07:00
Chris Robinson
e2905b6bc9
Properly handle forced 32-bit float output with DSound
2009-09-21 02:57:17 -07:00
Chris Robinson
e11b59a80f
Return imediately if trying to set an unknown format
2009-09-21 02:53:33 -07:00
Chris Robinson
0ae02e8ad4
Support floating point capture for backends that can handle it
2009-09-21 02:31:33 -07:00
Chris Robinson
2cbdffab86
Create the ALSA capture ring buffer with the proper size
2009-09-21 02:14:32 -07:00
Chris Robinson
86eefdb2a8
Mix all pending periods at once instead of one at a time
2009-09-20 00:44:39 -07:00
Chris Robinson
750399ccd7
Let verify_state restore from an ALSA underrun
2009-09-20 00:40:23 -07:00
Chris Robinson
fb97ca6022
Remove left-over backend-specific period options
2009-09-16 23:29:32 -07:00
Chris Robinson
cbcaa54173
Store the number of periods in the device instead of the buffer size
...
Also keep all the fields in sync
2009-09-16 22:58:54 -07:00
Chris Robinson
94e3fca702
Remove unnecessary parameters, and rename methods
2009-09-16 00:24:44 -07:00
Chris Robinson
ffff104554
Restore the device frequency using the stream info
2009-09-16 00:08:11 -07:00
Chris Robinson
307a9dd1b2
Update the frequency with what the stream actually got set with
2009-09-15 23:14:14 -07:00
Chris Robinson
5dff8ea820
Properly terminate PortAudio when closing
2009-09-15 22:45:27 -07:00
Chris Robinson
49648fe22d
Make a GetConfigValueBool function and use it
2009-09-15 22:18:13 -07:00
Chris Robinson
9f037e8980
Pass the device to aluMixData
2009-09-15 19:30:27 -07:00
Chris Robinson
12f81bcbb9
Move the stereo-to-binaural filter to the device
2009-09-15 19:06:47 -07:00
Chris Robinson
6636131d3b
Pass the frame count to aluMixData
2009-09-15 18:19:00 -07:00
Chris Robinson
eeea9631ce
Split the source mixing loop into a separate function
...
Helps reduce the function size and indentation levels
2009-09-15 17:56:31 -07:00
Chris Robinson
f9d228c30a
Add missing context checks
2009-09-12 20:22:03 -07:00
Chris Robinson
d516f8c4bd
Update comment
2009-09-12 20:02:45 -07:00
Chris Robinson
5d1c3a0c63
Fix wave writer backend
2009-09-12 19:58:36 -07:00
Chris Robinson
396f2d6050
Mix the proper size for every update, and notify disconnects
2009-09-12 19:36:16 -07:00
Chris Robinson
e25b01c3a2
Start Solaris playback when a context is ready
2009-09-12 18:19:52 -07:00
Chris Robinson
b29a24afb0
Move the default out-of-tree build dir to build
2009-09-12 17:54:27 -07:00
Chris Robinson
d6d1dba3d2
Initialize OpenAL with a constructor call instead of first-use
2009-09-12 17:49:08 -07:00
Chris Robinson
8b36a9d121
Get rid of deinit code duplication
2009-09-12 17:29:35 -07:00
Chris Robinson
59ed9338d8
Add support for the in-progress ALC_EXT_thread_local_context extension
2009-09-12 16:45:46 -07:00
Chris Robinson
b444dea63b
Fix compilation for Windows
2009-08-28 06:33:59 -07:00
Chris Robinson
1816c8bd37
Make a copy of the default device name for the app
...
The pointer to it could otherwise change if the device list is rebuilt, which
would be bad if the app has it
2009-08-27 20:13:35 -07:00
Chris Robinson
c27948a7ee
Don't free a NULL handle
2009-08-27 19:01:12 -07:00
Chris Robinson
832dc8a585
Remove unnecessary vars and rework device name checks
2009-08-27 18:55:18 -07:00
Chris Robinson
bb121e68a6
Rebuild device lists when retrieving them
2009-08-27 06:09:33 -07:00
Chris Robinson
1ec26fd789
Dynamically allocate device lists
2009-08-27 03:55:36 -07:00
Chris Robinson
4ff4a7e3b9
Close some libs when deinitializing
2009-08-27 03:12:54 -07:00
Chris Robinson
6bb14e45ce
Store a copy of the device name in the device
2009-08-27 02:53:09 -07:00
Chris Robinson
45dc804819
Store copies of the device names in the individual backends
2009-08-27 01:47:41 -07:00
Chris Robinson
81db01ebf1
Add a method to deinitialize backends
2009-08-26 23:45:00 -07:00
Chris Robinson
06c576a945
Support disconnect for OSS and Solaris
2009-08-26 21:49:38 -07:00
Chris Robinson
929b025fd6
Support disconnect for ALSA playback and capture
...
As a consequence for capture, mmap is no longer supported. Later on, supporting
mmap capture to write directly into the ring buffer is a possibility.
2009-08-26 21:27:10 -07:00
Chris Robinson
7976de05a5
Add base support for ALC_EXT_disconnect
...
Individual backends need to be updated to handle disconnection events
2009-08-26 19:15:17 -07:00
Chris Robinson
70c88879ab
Add ALC_EXT_disconnect to alext.h
2009-08-26 18:29:25 -07:00
Chris Robinson
276ee63b99
Define PATH_MAX if it isn't already
2009-08-19 12:59:40 -07:00
Chris Robinson
487f0dde75
Print source and auxiliary slot debug warnings from alcDestroyContext
2009-08-16 16:11:22 -07:00
Chris Robinson
c8f700930a
More modifications and fixes for context checks
2009-08-16 16:02:13 -07:00
Chris Robinson
decbe4df45
Modify some context checks
2009-08-16 15:09:36 -07:00
Chris Robinson
462f27c129
Use a function to retrieve the current context in an already-locked state
...
This should help prevent race-conditions with a context being destroyed between
breing retrieved and locked
2009-08-16 14:09:23 -07:00
Chris Robinson
2d1191697a
Fix the Solaris backend
2009-08-16 13:16:41 -07:00
Chris Robinson
0b5a0d1e79
Reset the target if the databuffer being deleted is currently selected
2009-08-16 11:12:13 -07:00
Chris Robinson
0b7eb9f118
Add in-progress working extension AL_EXTX_sample_buffer_object
2009-08-16 00:54:08 -07:00
Chris Robinson
dc26261065
Support 32-bit float output
2009-08-15 13:20:35 -07:00
Chris Robinson
9bea67fb1c
Use a function to convert float to unsigned byte
2009-08-15 11:33:38 -07:00
Chris Robinson
8246bc3418
Use a custom function to get the requested format
2009-08-15 10:32:54 -07:00
Chris Robinson
01e32b58da
Fix some size checks
2009-08-15 10:01:55 -07:00
Chris Robinson
9d05ff0468
Verify the device pointer is a valid device
2009-08-15 09:55:08 -07:00
Chris Robinson
510ccc7f17
Store the effect and filter lists in the device
2009-08-15 09:39:18 -07:00
Chris Robinson
43067ed2b8
Store the buffer list in the device
2009-08-15 09:14:08 -07:00
Chris Robinson
4e4c9aef15
Calculate the buffer size and frame size when needed
2009-08-14 13:08:25 -07:00
Chris Robinson
4031ee5ef0
Fix speaker override check
2009-08-14 07:27:19 -07:00
Chris Robinson
e079291202
Remove unnecessary function parameters
2009-08-13 19:36:14 -07:00
Chris Robinson
826c641668
Hold the lock while finding a capture device to open
2009-08-13 19:19:16 -07:00
Chris Robinson
6ae845fd9e
Don't let the device frequency change when PortAudio gets a new context
2009-08-13 17:13:37 -07:00
Chris Robinson
a78fd58dca
Create PulseAudio's playback stream when the AL context is created
2009-08-13 17:08:47 -07:00
Chris Robinson
a8ae610489
Set context frequency only if it successfully starts
2009-08-13 15:35:10 -07:00
Chris Robinson
b86a1e5797
Add a note about app and system defaults
2009-08-13 13:48:06 -07:00
Chris Robinson
45552a68ce
Hold the lock while initializing context playback
2009-08-13 13:32:42 -07:00
Chris Robinson
d46655fbb2
Support the ALC_FREQUENCY context attribute
2009-08-13 13:28:35 -07:00
Chris Robinson
87fee8c504
Start DSound playback at context creation
2009-08-13 13:11:05 -07:00
Chris Robinson
9ff0617807
Don't clamp the wave writer's update size
2009-08-13 12:35:42 -07:00
Chris Robinson
243939f94f
Allow delaying playback start until context creation, and don't use UpdateSize to store the buffer size
...
This will make it possible to support the context attributes (frequency,
refresh, etc) for some backends
2009-08-13 12:28:46 -07:00
Chris Robinson
739385bd89
Add AL_EXT_BUFFER_DATA_STATIC to alext.h
2009-08-13 10:10:34 -07:00
Chris Robinson
32060f53cd
Reset the buffer played count when the queue is removed via the AL_BUFFER property
2009-08-11 14:16:30 -07:00
Chris Robinson
4ee3972f15
Update queued buffer states when source looping is toggled
2009-08-11 07:57:18 -07:00
Chris Robinson
00a9cf4a85
Remove more unneeded variables
2009-07-07 21:11:13 -07:00
Chris Robinson
1dcd538ad9
Remove unneeded variables
2009-07-07 21:01:41 -07:00
Chris Robinson
a8973514ba
Don't load functions if libpulse failed to open
2009-07-07 12:51:18 -07:00
Chris Robinson
0ac9e57d28
Store the requested mono/stereo source count and sends in the device
...
Although the properties are set as context attributes, they are queried from
the device. If multiple contexts per device are ever supported, it would not
be straight forward about where to read the values from. This way, the
attributes can be treated as device-specific attributes that are updated when
a new context is created.
2009-07-06 03:09:01 -07:00
Chris Robinson
5460e85c40
Set the right access mode for non-mmap capture
2009-07-02 20:50:12 -07:00
Chris Robinson
432f0ba34c
Specify the right format for ALSA recording
2009-07-02 20:32:19 -07:00
Chris Robinson
7e01e53445
Fix parsing of layout configuration string
2009-07-02 20:31:36 -07:00
Chris Robinson
043fe6edd2
Release 1.8.466
2009-06-07 22:30:08 -07:00
Chris Robinson
ef68e5d0ff
Protect ring buffer access with the lock
2009-06-07 21:34:05 -07:00
Chris Robinson
c6f3a4e062
Move a couple inline functions into the header
2009-06-07 20:16:41 -07:00
Chris Robinson
87ed53c7f6
Don't read deprecated config files
2009-06-07 20:12:01 -07:00
Alam Arias
89e9437b84
add check for _WAVEFORMATEXTENSIBLE_ and define _WIN32_IE before inlcuding any header
2009-06-07 19:43:42 -07:00
Chris Robinson
1454c46b5f
Use a thread-safe static inline function for printing
2009-06-07 15:42:15 -07:00
Chris Robinson
0fac1e9115
Store the max number of auxiliary slots in the device
2009-06-07 14:53:22 -07:00
Chris Robinson
f3a3358e63
Fix for MSVC
...
MSVC won't accept zero-sized arrays at the end of structs, if that struct is
used in another struct that's not also at the end. This wastes a float for each
FILTER object
2009-06-06 23:33:53 -07:00
Chris Robinson
3c122b0bef
Set an error if effect creation fails
2009-05-31 11:54:49 -07:00
Chris Robinson
7940003d06
Set an error if NaN is given for panning values
2009-05-31 11:34:07 -07:00
Chris Robinson
45b16ff456
Use the generic FILTER object for the master effect filter
...
Also fix a couple comments
2009-05-30 12:54:53 -07:00
Chris Robinson
9341f4f884
Fixup panning gain calculations
...
Clamp the panning vector magnitude to 1, and use an energy-reduction method as
the vector magnitude increases (to simulate reverb area occlusion)
2009-05-30 00:32:17 -07:00
Chris Robinson
2c20f26784
Apply slot gain on slot output, not input
2009-05-29 16:51:00 -07:00
Chris Robinson
2a21a449b4
Slot gain changes should have an immediate effect
2009-05-29 13:50:58 -07:00
Chris Robinson
74dc7090fd
Don't expose effect-specific structures
2009-05-29 13:30:50 -07:00
Chris Robinson
e12ac95d69
Use the MIN/MAX/DEFAULT macros for checking and setting the effect parameters
2009-05-29 12:40:08 -07:00
Chris Robinson
34ea7eba9e
Add preliminary support for the EAX Reverb effect
...
Not all parameters are supported yet, though it is a little more fuctional than
standard reverb
2009-05-29 01:32:54 -07:00
Chris Robinson
6d3ba44f55
Don't update the devicevalues before returning success
2009-05-27 07:02:33 -07:00
Chris Robinson
5a8ad67660
Lock the context before getting the mmap region to update
2009-05-26 14:54:59 -07:00
Chris Robinson
f1e442408b
Set the correct data size
2009-05-26 14:51:57 -07:00
Chris Robinson
a946af4463
Simplify ALSA PCM parameter retrieval
2009-05-26 10:08:27 -07:00
Chris Robinson
e01cd92d56
Set avail_min so snd_pcm_wait will wait for the full update to be ready
2009-05-26 10:03:17 -07:00
Chris Robinson
923af8c3a6
Don't update the source's gains in the sample mixing loop
...
Update copies stored on the stack instead, then update the source after mixing
2009-05-26 09:23:49 -07:00
Chris Robinson
ac04cf57fa
Make sure _CRT_SECURE_NO_WARNINGS is always defined for MSVC
2009-05-26 06:02:40 -07:00
Chris Robinson
1f6c4e01db
Properly fall back to non-mmap capture if the parameters fail
2009-05-25 16:06:03 -07:00
Chris Robinson
04135723a2
Get rid of the ugly ok() macro
2009-05-25 13:07:49 -07:00
Chris Robinson
93fbdb1e6c
Redo OSS mixing loop
2009-05-25 12:12:37 -07:00
Chris Robinson
c1de15f840
Update in descrete amounts using the update size
2009-05-25 12:01:14 -07:00
Chris Robinson
3be399c555
Do not open pulseaudio if it didn't load
2009-05-19 06:37:22 -07:00
Chris Robinson
1f5453075c
Dynamically load PulseAudio
2009-05-19 06:35:12 -07:00
Chris Robinson
33a74f1594
Clear the filter history directly
2009-05-17 22:50:07 -07:00
Chris Robinson
e4da1224cb
Optionally install the sample configuration file
2009-05-17 22:36:45 -07:00
Chris Robinson
5c2a47620c
Reformat the sample config file
2009-05-17 22:24:29 -07:00
Chris Robinson
1bfa7609d2
Make the filter functions global inline, and use it for echo
2009-05-16 23:34:26 -07:00
Chris Robinson
7e8501123a
Set some common macros in alu.h
2009-05-16 23:26:39 -07:00
Chris Robinson
c447eeb2c7
Use the source reference distance to specify full panning magnitude
...
Sources that are closer than the specified reference distance will not pan to
full magnitude, thus providing a smoother transition as it moves around near
the listener
2009-05-16 03:54:16 -07:00
Chris Robinson
ad19cea6e0
Make sure DSSPEAKER_5POINT1 is defined
2009-05-14 05:24:18 -07:00
Chris Robinson
0ce29863e3
Prevent spawning PulseAudio if it's not already running
2009-05-06 00:19:35 -07:00
Chris Robinson
7a7a4844f4
Make the filter history buffer size flexible
...
This lets the filter history buffer be as big as needed for a given use, so
that it can have a size large enough for the more demanding cases, but not be
wasteful for lesser-demanding cases, while not incuring the overhead of an
added pointer indirection
2009-04-16 05:43:09 -07:00
Chris Robinson
a2adbb1ab5
Add a PulseAudio backend
2009-04-16 05:17:42 -07:00
Chris Robinson
a97fc792d8
Increase the default maximum number of sends to 2
2009-04-14 22:18:47 -07:00
Chris Robinson
e9a6a1d6f5
Use a 2-pole filter for the wet path low-pass filter
...
This should help keep CPU use from increasing a lot when the number of sends
increases. Also changes the function names to reflect the difference
2009-04-14 22:04:18 -07:00
Chris Robinson
f245f0ef87
Make the number of source sends variable
...
The highest value is clamped to MAX_SENDS
2009-04-13 20:33:41 -07:00
Chris Robinson
a30f431b63
Reduce the number of send loops
2009-04-13 02:50:40 -07:00
Chris Robinson
58f48f20e2
Rename Standard Reverb to Reverb
2009-04-13 02:01:21 -07:00
Chris Robinson
ee1b02b709
Fix comment regarding the 3rd echo tap
2009-04-12 18:54:26 -07:00
Chris Robinson
55c790c9ff
Add the Echo effect
2009-04-12 16:01:10 -07:00
Chris Robinson
65b69f3308
Fix air absorption
2009-04-11 20:27:55 -07:00
Chris Robinson
c67fbd72dd
Pay attention to the MAX_SENDS value
2009-04-11 20:04:46 -07:00
Chris Robinson
30f57d0824
Make auxiliary effect slot count configurable
2009-04-11 18:16:05 -07:00
Chris Robinson
1c54018111
Move the WetBuffer into the effect slot object
...
This should make it easier to support multiple slots
2009-04-11 17:04:55 -07:00
Chris Robinson
e80e1b6d9f
Use LIB_SUFFIX when creating the default lib install dir
...
Thanks to Hanno Böck for pointing this out
2009-04-07 12:11:41 -07:00
Chris Robinson
437f00d6de
Add missing comment markers
2009-04-07 11:41:41 -07:00
Chris Robinson
fc6d6b1601
Use the square of the values when calculating the density gain
2009-03-21 10:42:42 -07:00
Chris Robinson
9306e36d52
Make sure M_PI is defined for reverb
2009-03-15 23:14:40 -07:00
Chris Robinson
61122a5093
Release 1.7.411
2009-03-14 22:24:59 -07:00
Chris Robinson
a8a4ff8af1
Constify some parameters
2009-03-13 23:08:15 -07:00
Chris Robinson
8a857c35ee
Calculate filter coefficients in aluMixData
2009-03-13 22:58:54 -07:00
Chris Robinson
89ddd7d8e5
Don't modify the device struct until playback succesfully starts
2009-03-13 22:16:01 -07:00
Chris Robinson
8d0c4ccb3b
The room rolloff factor can go up to 10
2009-03-13 02:12:45 -07:00
Chris Robinson
8ee47d5573
Dynamically load dsound when possible
2009-03-10 02:46:42 -07:00
Chris Robinson
9e88011417
Add a cast for setting a dummy pointer value
2009-03-10 02:20:05 -07:00
Chris Robinson
f8949ee7a1
Always add the default ALSA device even if no cards are present
2009-03-10 01:46:51 -07:00
Chris Robinson
62aa2d0ba7
Only expose the default ALSA device in standard enumeration
2009-03-10 01:28:01 -07:00
Chris Robinson
ace047d625
Append the card and device indices to the ALSA device strings
2009-03-10 01:21:42 -07:00
Chris Robinson
d6277db209
Fix alsoftrc configuration sample comments
2009-03-10 01:08:03 -07:00
Chris Robinson
7ebb28327f
Remove the SDL backend
2009-03-10 01:03:39 -07:00
Chris Robinson
86931cbde4
Add a PortAudio backend
2009-03-10 00:55:29 -07:00
Chris Robinson
6d7be151dc
Remove the unneeded path from the cross-compiler commands
2009-03-06 20:09:44 -08:00
Chris Robinson
07227b9806
Use a modified reverb model that obeys the reverb parameters better
2009-03-02 18:48:23 -08:00
Chris Robinson
8348d719cd
Clamp gain of multichannel sources
2009-02-10 15:15:49 -08:00
Chris Robinson
0fcefd865b
Install the pkgconfig file to the correct directory
2009-02-10 14:39:48 -08:00
Chris Robinson
57c2e9b5f8
Include assert.h for assert()
2009-02-02 11:18:33 -08:00
Chris Robinson
7d7fc39035
Use calculated distance from reference for air absorption
2009-01-30 10:56:25 -08:00
Chris Robinson
351105b3df
Fix incorrect comment
2009-01-30 10:53:09 -08:00
Chris Robinson
cbfc33215b
Use M_PI since it is sure to be defined
2009-01-27 07:11:58 -08:00
Chris Robinson
5a93b56673
Fix ignored return value warning
2009-01-26 08:10:05 -08:00
Chris Robinson
1f4c69c17a
Use a matrix for up- and down-mixing channels
2009-01-25 22:11:07 -08:00
Chris Robinson
f5b19fad20
Duplicate stereo onto the side channels as well as the back
2009-01-25 19:54:50 -08:00
Chris Robinson
bc60818e9a
Don't read stereo layout when output is mono
2009-01-25 19:33:52 -08:00
Chris Robinson
f82c88f016
Add options for user-configurable speaker arrangements
2009-01-25 19:20:47 -08:00
Chris Robinson
98e86decad
6.1 uses front- and back-center, not left- and right-back channels
2009-01-24 15:13:14 -08:00
Chris Robinson
aaf2c0ebd4
Seperate mixing loops depending on source channel configuration
2009-01-24 13:57:01 -08:00
Chris Robinson
778b74cae1
Reimplement panning using lookup tables, based on a patch by Christian Borss
...
This allows speaker positions to be specified by discrete angles around the
listener, providing more flexibility and configurability in placement.
Additional patches to take advantage of this are forthcoming.
2009-01-24 10:38:04 -08:00
Chris Robinson
43ee1edd97
Properly capitalize the libname in Win32
2009-01-10 21:23:53 -08:00
Chris Robinson
dd7e23740b
Remove XCOMPILEWIN32 option in favor of CMake 2.6's cross-compiling caps
2008-12-12 11:19:38 -08:00
Chris Robinson
1acd6da745
Search for SDL.h in addition to SDL/SDL.h
2008-12-12 11:09:23 -08:00
Chris Robinson
3056f91ec5
Apply the dry filter to multi-channel sources
...
Unlike mono sources, they use 2 chained one-pole filters instead of 4
2008-12-10 11:54:13 -08:00
Chris Robinson
ed03570e1a
Fix some CMake checks
2008-12-07 02:20:17 -08:00
Chris Robinson
2ec0e48d06
Protect playback device opening with a mutex lock
2008-12-07 01:07:54 -08:00
Chris Robinson
8b54d59b8c
Add an SDL backend
2008-12-07 01:05:39 -08:00
Chris Robinson
f6a4dbabdd
Add cast for setting a dummy pointer value
2008-12-06 12:17:29 -08:00
Chris Robinson
a71c291bcb
Let CMAKE_DEBUG_POSTFIX be exposed for graphical CMake front-ends
2008-12-02 02:37:51 -08:00
Chris Robinson
55b9ccc2de
Implement AL_EXTX_source_distance_model
...
As with other EXTX extensions, this is subject to change and removal as the
spec gets worked on
2008-11-25 18:56:10 -08:00
Chris Robinson
67d67a3bf6
Release 1.6.372
2008-11-21 09:16:29 -08:00
Chris Robinson
591de1ecb4
Wait until one full fragment is empty before mixing
2008-11-21 07:52:13 -08:00
Chris Robinson
3dad17c263
Make the DSound emulated fragment count configurable
2008-11-21 07:48:03 -08:00
Chris Robinson
eefc18170d
Fix a comment
2008-11-20 10:09:37 -08:00
Chris Robinson
5f84c5339d
Fix early reflection input
2008-11-19 09:14:40 -08:00
Chris Robinson
2d461379ef
Handle ALSA capture errors a bit better
2008-11-19 09:01:03 -08:00
Chris Robinson
c8123756ff
Simplify in-sample low-pass filter coefficient calculation
2008-11-18 06:35:00 -08:00
Chris Robinson
76c7789ee7
Fix low-pass coefficient calculation
2008-11-18 04:31:24 -08:00
Chris Robinson
13a2e6ef1f
Don't calculate reverb HF limit if air absorption is 1
2008-11-18 03:26:02 -08:00
Chris Robinson
0ecb34b850
Non-cross-compiled DLLs shouldn't have lib prefixed
2008-11-18 03:24:49 -08:00
Chris Robinson
1f86c48d95
Remove outdated comments and add copyright header
2008-11-17 09:32:25 -08:00
Chris Robinson
7e1295df9a
DirectSound is not explicitly dependant on windows.h
2008-11-16 04:39:12 -08:00
Chris Robinson
482b160c8a
Remove unneeded macro
2008-11-16 01:07:39 -08:00
Chris Robinson
181eb95b13
Use a better dB-to-linear gain convertion
2008-11-16 00:57:35 -08:00
Chris Robinson
c0ccd31a3e
Implement a new reverb effect
...
Code created and graciously provided by Christopher Fitzgerald
2008-11-16 00:29:49 -08:00
Chris Robinson
d72b132c57
Add an option to disable specific EFX effect types
2008-11-14 07:13:59 -08:00
Chris Robinson
506912aed7
Add cross-compiling option
2008-11-13 23:13:15 -08:00
Chris Robinson
670d70d3c9
Allow specifying another config file with the ALSOFT_CONF env var
2008-11-13 07:58:39 -08:00
Chris Robinson
010f7d12f4
Don't ramp gains when starting a sound from the beginning
2008-11-13 05:48:38 -08:00
Chris Robinson
da684564ea
Avoid unnecessary floating-point math
2008-11-11 17:59:55 -08:00
Chris Robinson
fc4c867f27
Add initial AL_EXTX_buffer_sub_data support
...
Note that this is an in-development extension, as noted by the EXTX moniker
instead of EXT. It's behavior is subject to change, and the extension string
will be removed (replaced with the official string once it's finalized).
Developers are discouraged from using this in production code, though feel
free to play around with it.
2008-11-11 05:57:32 -08:00
Chris Robinson
9ba30c4e20
Fix Win32 thread handle leak
2008-11-05 19:42:56 -08:00
Chris Robinson
15334e56cd
Be more flexible with channel count when loading IMA4 data
2008-11-02 15:30:56 -08:00
Chris Robinson
ffa42ff22c
Seperate data converters into reusable functions
2008-11-02 01:24:57 -07:00
Chris Robinson
a7c62dbabc
More padding fixes
2008-11-01 16:37:32 -07:00
Chris Robinson
eda1e41152
More buffer conversion refactoring
2008-11-01 16:35:16 -07:00
Chris Robinson
af5a5b76ec
Padding is not dependant on the frequency cutoff anymore
2008-10-31 23:32:28 -07:00
Chris Robinson
87f3a0dc16
Restructure buffer data conversion code a bit
2008-10-31 22:13:35 -07:00
Chris Robinson
2c80a80704
Fix typo preventing capture from opening
2008-10-27 23:37:56 -07:00
Chris Robinson
301a4c4a95
Append the driver and its version to the AL version string
2008-10-25 15:48:17 -07:00
Chris Robinson
8fc4a3b724
Make sure an appropriate error is set when opening a device fails
2008-10-24 19:58:49 -07:00
Chris Robinson
cb6f040005
Use plughw for capture so ALSA can convert capture data
2008-10-14 09:50:37 -07:00
Chris Robinson
b91c2e4a99
Include float.h if it exists, for _RC_CHOP and _MCW_RC
2008-10-14 09:47:32 -07:00
Chris Robinson
59a71b1454
Remove another unused source member
2008-10-10 01:31:31 -07:00
Chris Robinson
36f133a5ae
Use a modulo to keep the buffer position in range for looping sources
...
A high pitch and low buffer size can cause a lot of unnecessary iterations
otherwise, that just decrement the position
2008-10-10 01:13:32 -07:00
Chris Robinson
74a58c0d09
Clamp source position to the buffer size when it stops
2008-10-09 23:54:31 -07:00
Chris Robinson
bfa1107781
Remove unneeded source member variable
2008-10-09 23:44:48 -07:00
Chris Robinson
11397f7667
Commit missing changes
2008-10-09 20:58:12 -07:00
Chris Robinson
6e9e8239ef
Only send one channel through the wet path
2008-10-09 04:02:34 -07:00
Chris Robinson
af9932d28b
Increase max pitch to 65536
...
This should be safe now
2008-10-09 02:50:00 -07:00
Chris Robinson
87ff8a65e9
Simplify the lerp function
2008-10-09 02:32:47 -07:00
Chris Robinson
7b6f207790
Don't apply the wet path for multi-channel buffers
2008-10-09 02:28:52 -07:00
Chris Robinson
8672008e43
Skip mixing if the read position is beyond the end of the buffer
2008-10-09 01:17:39 -07:00
Chris Robinson
c8cd193346
The wet path should be silent if no effect is set on the slot
2008-10-09 01:07:02 -07:00
Chris Robinson
be292e5f0b
Don't hold the whole-number position in the fractional value
...
This will help prevent overflows when the max pitch is increased
2008-10-02 23:53:46 -07:00
Chris Robinson
3863dcc9cb
Use a new low-pass filter, based on the I3DL2 spec
...
Many thanks to Christopher Fitzgerald, for helping with it
2008-10-02 22:20:42 -07:00
Chris Robinson
a2568409fc
Implement non-mmap ALSA capture
2008-09-29 17:24:50 -07:00
Chris Robinson
6567cdd7b5
Air absorption factor is applied to the dB value, not linear gain
2008-09-22 17:01:47 -07:00
Chris Robinson
5bbf55a401
Add a variable to override the default library type with
2008-09-16 07:43:38 -07:00
Chris Robinson
4a530e2146
Fixup some source parameter calculations
2008-09-16 07:36:48 -07:00
Chris Robinson
27ba8f7b60
Fix function pointer declarations
2008-09-16 06:19:27 -07:00
Chris Robinson
6bfdb57a5b
Use a 12dB/oct rolloff instead of 24 for the lowpass filter
2008-09-13 02:46:14 -07:00
Chris Robinson
26e8ea60a5
Store pi as a static const
2008-09-13 00:44:48 -07:00
Chris Robinson
f4ea188ffa
Fix typo to get the proper minor ALC version
2008-09-12 18:07:12 -07:00
Chris Robinson
1266580420
Print EFX info when the extension is available
2008-09-12 18:05:23 -07:00
Chris Robinson
16d96eed7b
Add a Solaris playback backend
2008-09-07 14:34:14 -07:00
Chris Robinson
fa76168683
Clear the end of the buffer when at the end of the queue and not looping
2008-09-06 14:08:53 -07:00
Chris Robinson
5f3329b2c9
Don't export extension function symbols from the lib
2008-09-06 13:45:27 -07:00
Chris Robinson
db541f3cfa
Remove unneeded source struct member
2008-08-15 17:43:07 -07:00
Chris Robinson
3e19ba6ca8
Clear channel volumes when starting a source
2008-08-15 16:33:47 -07:00
Chris Robinson
ac8c082b89
Overwrite the input wet sample with the output
2008-08-14 20:44:55 -07:00
Chris Robinson
084df2a229
Allow setting the EFX doppler factor source property
2008-08-14 16:14:16 -07:00
Chris Robinson
22557070ec
Ramp channel gains to remove pops and clicks from abrupt changes
...
Thanks to Christopher Fitzgerald for helping me work on it
2008-08-14 05:43:52 -07:00
Chris Robinson
f8ef66954c
Include fenv.h if it exists for fesetround
2008-08-08 08:12:41 -07:00
Chris Robinson
ef59901e7c
Set FPU mode to round toward zero for mixing
2008-08-08 07:32:21 -07:00
Chris Robinson
cfe620ccb5
Remove unnecessary casting
2008-08-08 00:21:25 -07:00
Chris Robinson
453b015225
Prevent a 0 or negative increment for the buffer position
...
Thanks to Christopher Fitzgerald for pointing these last two problems out
2008-08-05 20:51:30 -07:00
Chris Robinson
c1cf9ae8f6
Pass a dummy variable to CreateThread to satisfy Win9x
2008-08-05 20:19:13 -07:00
Chris Robinson
f1414c650e
Release 1.5.304
2008-07-27 19:58:32 -07:00
Chris Robinson
869b041f2f
Reduce the default buffer size to 4096
...
Should help with latency issues some people have and not put too much extra
burden on the mixer, hopefully
2008-07-26 21:07:08 -07:00
Chris Robinson
8621fbb015
Improve getting and setting EFX filter parameters
2008-07-26 18:32:45 -07:00
Chris Robinson
597e01153e
Use arrays instead of pointer-to-arrays for the low-pass filter
2008-07-26 17:13:50 -07:00
Chris Robinson
d3e5fcd13e
Fix some calculations for the reverb buffer
2008-07-26 01:57:04 -07:00
Chris Robinson
3e0f9cc716
Make the filter processing function inline
2008-07-26 00:58:54 -07:00
Chris Robinson
c7e49c9f57
Implement yet another low-pass filter
...
This one using the Butterworth IIR filter design
2008-07-25 19:31:12 -07:00
Chris Robinson
e2ed8ff2bf
Use a temp pointer when realloc()ing
...
So the original data isn't lost on out-of-memory conditions
2008-07-24 13:44:26 -07:00
Chris Robinson
559c786d0c
Specify padding per buffer, and make sure it's large enough for the filter step
2008-07-24 00:41:25 -07:00
Chris Robinson
c3a7480961
Don't advertise extra samples for mixing
2008-07-23 23:27:38 -07:00
Chris Robinson
a75e75aef5
Implement an alternative low-pass filter
...
This method samples from the buffer so that it gets a time-correct 5khz stream,
which is subtracted from the original sample and has the high-frequency gain
applied, then added back.
A better method may be to average all the samples from the current one to the
one freq/5000 away, instead of bilinear filtering the two nearest freq/5000
apart. Processing cost will need to determine its viability
2008-07-23 22:29:53 -07:00
Chris Robinson
d45b1207d0
Make sure the correct libname is used for pkg-config
2008-07-23 11:58:36 -07:00
Chris Robinson
5a9e24dea1
Add a warning when building on Windows with the DSound backend disabled
2008-07-23 00:51:55 -07:00
Chris Robinson
dc8132e965
Add a pkg-config file to install on the system
2008-07-22 18:42:53 -07:00
Chris Robinson
20bcdc1ef6
Add AL_LOKI_IMA_ADPCM_format and AL_EXT_vorbis tokens to alext.h
2008-07-22 14:45:31 -07:00
Chris Robinson
93c0f61050
Clarify implicit destruction warnings
2008-07-22 14:29:27 -07:00
Chris Robinson
3a8c543f8b
Move ALC_ENUMERATE_ALL_EXT tokens to alext.h
2008-07-22 13:50:08 -07:00
Chris Robinson
9e96156451
Add AL_LOKI_WAVE_format tokens to alext.h
2008-07-22 13:45:26 -07:00
Chris Robinson
19aabd6d02
Add ALC_LOKI_audio_channel tokens to alext.h
2008-07-22 13:16:58 -07:00
Chris Robinson
87b5d7bc7b
Store extension list with a pointer, not a per-context array
2008-07-22 12:39:10 -07:00
Chris Robinson
646714b585
Set the new linking policy for CMake 2.6 to avoid warnings
2008-07-22 11:26:56 -07:00
Chris Robinson
eba60c30c5
Don't force initialization when shutting down
...
Thanks to Michael Simms
2008-07-17 18:45:21 -07:00
Chris Robinson
e66bb09156
Move (de)initialization into ALc.c and remove unneeded file
2008-07-17 18:38:07 -07:00
Chris Robinson
0042b1f80d
Implement doppler factor source property
2008-07-15 02:33:05 -07:00
Chris Robinson
6d416ee734
Add the reverb room rolloff to the source room rolloff, not override
2008-07-15 02:23:53 -07:00
Chris Robinson
97d3a45aff
Don't check the number of objects being deleted with the number currently allocated
...
Since apps can validly delete buffer 0, and delete the same source/buffer multiple times in a single call
2008-07-11 09:12:11 -07:00
Chris Robinson
9e9ff44b17
Use volatile for member variables that are changed in a different thread
2008-07-10 20:36:28 -07:00
Chris Robinson
f369be148f
Reduce the mix buffer sizes by half
...
Nearly 3MB is a bit much. Could reduce it further, but this is good enough for now.
2008-07-08 19:37:14 -07:00
Chris Robinson
3a09e446b3
Leave SourceToListener untransformed for use with untransformed velocities
...
Distance is also left untransformed so cone calculations with SoundToListener
are correct
2008-07-03 03:13:43 -07:00
Chris Robinson
2d0b12e49e
Store thread return value in the struct to avoid void*-to-uint casting
2008-06-17 19:46:37 -07:00
Chris Robinson
55e2f294ac
Allow for overriding the default lib destination with LIB_INSTALL_DIR
...
So 64-bit builds can be optionally redirected to lib64
2008-06-06 18:39:18 -07:00
Chris Robinson
2a4b467f08
Make the project explicitly C
...
So it doesn't search for an unneeded C++ compiler
2008-06-06 18:33:13 -07:00
Chris Robinson
2ae9da696a
Release 1.4.272
2008-06-04 20:47:20 -07:00
Chris Robinson
376997c3ef
Fix config value check
2008-06-04 20:44:51 -07:00
Chris Robinson
e963782b8c
Release 1.4.270
2008-06-04 19:46:31 -07:00
Chris Robinson
86c01aa62c
Install openal-info if it is built
2008-06-04 19:40:52 -07:00
Chris Robinson
15783d25e7
Don't override the format config option in DSound
2008-06-04 18:33:02 -07:00
Chris Robinson
3243f69f21
Use %AppData%\alsoft.ini for the config file in Windows
2008-06-04 18:09:21 -07:00
Chris Robinson
10a87f510c
Protect RingBufferSize calculation with the mutex
2008-06-04 17:01:44 -07:00
Chris Robinson
ca6feeda29
Make sure the lib is initialized when shutting down
...
Pretty ugly, but the destructor sequence relies in the mutex being initialized
2008-05-18 20:17:31 -07:00
Chris Robinson
cecf778de3
Add addiitonal copyright line
2008-05-18 18:44:17 -07:00
Chris Robinson
fe79ab351a
Add a simple example that prints out some OpenAL info
2008-05-18 18:40:53 -07:00
Chris Robinson
dc0a3a6653
Remove -fno-strict-aliasing as the code should be safe, now
2008-05-18 17:46:45 -07:00
Chris Robinson
fed346c285
Fix source calculations for AL_SOURCE_RELATIVE mode
...
Make sure the source position and direction are properly put into listener-
space before working with them, and don't calculate the listener velocity for
relative coordinates
2008-05-18 16:52:38 -07:00
Chris Robinson
cad9b367a5
Use pthread_mutexattr_setkind_np as a fallback to set a recursive mutex type
...
Some systems (FreeBSD) don't like setting it through pthread_mutexattr_settype
2008-05-15 21:35:51 -07:00
Chris Robinson
6e86146a25
Prepare the ALSA PCM handle before starting capture
...
Thanks to Jason Daly for pointing it out
2008-05-06 16:05:36 -07:00
Chris Robinson
49d9695ad9
Check the right struct member for the filter type
2008-04-12 07:25:18 -07:00
Chris Robinson
e15bc6b9ba
Fill the correct capture device list
2008-04-05 20:33:19 -07:00
Chris Robinson
28093a6dcb
constify the pointer that holds the filename
2008-03-22 19:05:00 -07:00
Chris Robinson
2af5498804
Define _WIN32_WINNT to 0x0500 when including windows.h
...
VC7 appears to require that value, or higher, set and fails otherwise
2008-03-01 01:39:42 -08:00
Chris Robinson
2b42d7fdb8
Don't start the DSound playback thread is startup failed
2008-03-01 00:57:37 -08:00