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 25b9c3d0c15e959d544f5d0ac7ea507ea5f6d69f.
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