Chris Robinson
04b62f77e3
Set the output format according to the speaker setup reported by directsound
2008-01-25 05:02:00 -08:00
Chris Robinson
029dff3f40
Use both write pointers from the directsound buffer lock
2008-01-25 04:42:44 -08:00
Chris Robinson
781e4e5be4
Remove an unneceesary pointer check and decrease indentation
2008-01-21 14:54:15 -08:00
Chris Robinson
f3dddb5e99
Remove unnecessary duplicate thunk lookups
2008-01-21 14:33:42 -08:00
Chris Robinson
9a5e892cad
Small formatting updates
2008-01-20 22:16:28 -08:00
Chris Robinson
0317362662
Remove duplicate function
2008-01-20 19:22:39 -08:00
Chris Robinson
6b403a76e8
Don't access ALSource for every sample mix
2008-01-20 19:20:24 -08:00
Chris Robinson
543eb9d217
Don't use a multiple lists for extensions
2008-01-19 20:02:40 -08:00
Chris Robinson
bc963463f3
Add an option for setting the max number of sources
2008-01-19 19:38:06 -08:00
Chris Robinson
86b7b3d54b
Remove duplication of setting the max source count
2008-01-19 19:28:34 -08:00
Chris Robinson
799ba1f954
Use less ambiguous config file names
2008-01-19 18:18:14 -08:00
Chris Robinson
1a3e39e452
Remove some unnecessary duplicate math, which was making long lines
2008-01-19 00:49:05 -08:00
Chris Robinson
7dc73815ae
Remove some branches
2008-01-18 21:39:09 -08:00
Chris Robinson
4caf2c7edd
Implement AL_EFFECT_REVERB
...
Here is a quick description of how the reverb effect works:
+--->---+*(4)
| V new sample
+-----+---+---+ |
|extra|ltr|ref| <- +*(1)
+-----+---+---+
(3,5)*| |*(2)
+-->|
V
out sample
1) Apply master reverb gain to incoming sample and place it at the head of the
buffer. The master reverb gainhf was already applied when the source was
initially mixed.
2) Copy the delayed reflection sample to an output sample and apply the
reflection gain.
3) Apply the late reverb gain to the late reverb sample
4) Copy the end of the buffer, applying a decay gain and the decay hf ratio,
and add to the late reverb.
5) Copy the late reverb sample, adding to the output sample.
Then the head and sampling points are shifted forward, and done again for each
new sample. The extra buffer length is determined by the Reverb Density
property. A value of 0 gives a length of 0.1 seconds (long, with fairly
distinct echos) , and 1 gives 0.075 seconds (short, indistinct echos).
The decay gain is calculated such that after a number of loops to satisfy the
Decay Time, a sample will be 1/32768th as powerful (virtually insignificant to
the resulting output, and only getting further reduced). It is calculated as:
DecayGain = pow(1.0f/32768.0f, 1.0/(DecayTime/ExtraLength));
Things to note: Reverb Diffusion is not currently handled, nor is Decay HF
Limit. Decay HF Ratios above 1 probably give incorrect results. Also, this
method likely sucks, but it's the best I can come up with before release. :)
2008-01-18 21:25:40 -08:00
Chris Robinson
1b9d740244
Remove duplicated source freeing code
2008-01-18 00:56:01 -08:00
Chris Robinson
497ada9c77
Buffer size fixes. Partially reverts the ALSA buffer size "fix"
2008-01-18 00:28:25 -08:00
Chris Robinson
43cfc097de
Don't dereference ALContext if there's no context yet
...
Patch by Evgeny A. Marchenko
2008-01-17 12:57:22 -08:00
Chris Robinson
6735fc7911
Add missing config.h includes
2008-01-16 14:09:04 -08:00
Chris Robinson
be34dbe608
Don't include alAuxEffectSlot.h in alSource.h
2008-01-16 14:01:24 -08:00
Chris Robinson
8ad16145f6
Make sure sources are deleted with the context
2008-01-16 13:27:15 -08:00
Chris Robinson
4742dedb45
Don't clamp wet gain if there's no send slot, and move slot gain calculation
...
To remove an extra if check
2008-01-16 13:00:35 -08:00
Chris Robinson
10a9bc62bf
Store a reference to the effect slot in a source's send, not a copy
2008-01-16 12:43:25 -08:00
Chris Robinson
24f433b938
Remove unneeded variables
2008-01-15 21:57:50 -08:00
Chris Robinson
abc69dd3d0
Use acosf when available
2008-01-15 21:23:14 -08:00
Chris Robinson
03ca50fa70
Use the previous low-pass filter again, as it seems to match the intended output better
2008-01-15 18:29:21 -08:00
Chris Robinson
b95fcf5da1
Store effect slots in the context
2008-01-15 16:22:39 -08:00
Chris Robinson
df07e8a65b
Add support for AL_LOKI_quadriphonic
2008-01-14 16:11:15 -08:00
Chris Robinson
729f076c3b
Reduce indentation
2008-01-14 15:38:15 -08:00
Chris Robinson
dfc0118b8b
Add an option for disabling ALSA mmap
2008-01-14 15:30:52 -08:00
Chris Robinson
d9ef062caf
Avoid busy waiting when waiting for suspend to clear
2008-01-14 13:23:49 -08:00
Chris Robinson
2b8ce3b4cf
Let the mmap thread start the pcm stream when it's full
...
Instead of filling it with silence and starting it before the thread is active
2008-01-14 13:07:41 -08:00
Chris Robinson
a27b855a39
Make sure the stream is playing when it's full
2008-01-14 12:59:44 -08:00
Chris Robinson
1634b69faf
Don't restart the stream right after preparing it
...
It needs to be filled, first
2008-01-14 12:51:36 -08:00
Chris Robinson
59fa1f90d5
Don't attempt to recover the ALSA stream when filling silence
...
Since it was just prepared, any error would likely mean bigger problems
2008-01-14 12:49:21 -08:00
Chris Robinson
7a4870bd97
Close dangling devices when exiting
2008-01-14 10:54:33 -08:00
Chris Robinson
a552e32a9a
Destroy context if closing a device with one
2008-01-14 10:42:11 -08:00
Chris Robinson
29c6238b52
Keep track of open devices
2008-01-14 10:39:54 -08:00
Chris Robinson
38db8eb64b
Reorder setting of some variables
2008-01-12 07:36:22 -08:00
Chris Robinson
3bbbf8a025
Merge branch 'master' into efx-experiment
2008-01-11 17:19:08 -08:00
Chris Robinson
978764cb6b
Don't limit output wave filename size
2008-01-11 15:27:56 -08:00
Chris Robinson
893ecf1af2
Fix the Wave Writer's reliance on ftell
...
So output can work on FIFOs
2008-01-11 15:18:26 -08:00
Chris Robinson
aa453b4e9e
Use Sleep instead of usleep
2008-01-11 14:55:35 -08:00
Chris Robinson
f8089d2026
Don't double-close a handle on error
2008-01-11 13:23:37 -08:00
Chris Robinson
40241b4e97
Don't attempt to open ALSA playback/capture if it didn't load
2008-01-11 13:00:30 -08:00
Chris Robinson
f10408739e
Add a wave file writing backend
2008-01-11 09:32:22 -08:00
Chris Robinson
bc56c00a9a
Allow querying of ALC_MONO_SOURCES and ALC_STEREO_SOURCES
...
Based on a patch by Xavier Bouchoux
2008-01-10 08:24:23 -08:00
Chris Robinson
1e3ad2f9ce
Use a more reliable thread loop for DSound, instead of a Win32 timer
...
Also use a simpler method for calculating the read/write location
2008-01-08 07:09:25 -08:00
Chris Robinson
9c97f07ec9
Remove unneeded silence field
2008-01-07 00:26:10 -08:00
Chris Robinson
90d825e7f8
Fix lone ALC_REFRESH query case
2008-01-06 03:36:01 -08:00
Chris Robinson
1178e900eb
Don't allow 0 periods
2008-01-06 01:27:26 -08:00