Chris Robinson
2b9064cb6e
Move the ALcomplex and FFT functions to a separate file
2018-05-15 18:31:41 -07:00
Chris Robinson
197e88cdcc
Avoid using unsigned values for signed
2018-05-15 01:20:39 -07:00
Chris Robinson
43dccc8807
Add a faster double-to-int converter for x87 builds
2018-05-14 18:00:43 -07:00
Chris Robinson
be30e6bf8f
Don't assume the FPU is round-to-zero in the pitch shifter
2018-05-04 04:53:50 -07:00
Chris Robinson
ac8dbd7a56
Add a specific function for truncating float-to-int conversions
2018-05-03 22:02:32 -07:00
Chris Robinson
af90d89b6b
Use a fixed-point scale for the pitch shifter frequency index
2018-05-03 17:06:55 -07:00
Chris Robinson
1cc6983b96
Use doubles for the pitch shifter's FFTs and processing
2018-04-24 21:40:41 -07:00
Chris Robinson
9c5307a48a
Rename BiquadState to BiquadFilter
2018-04-04 18:07:46 -07:00
Chris Robinson
869637af2e
Apply biquad and T60 filters using transposed direct form II
2018-04-03 10:15:35 -07:00
Chris Robinson
f757fbce4d
Fix Hanning -> Hann window name
2018-03-24 14:18:29 -07:00
Chris Robinson
413d55aaa5
Fix a couple comments about coordinate handedness
2018-03-24 07:02:27 -07:00
Raulshc
6d8062a2a7
EFX: Align some arrays used in intrinsics ( #180 )
2018-03-24 05:43:56 -07:00
Chris Robinson
6990478369
Rename ALfilterState/Type to BiquadState/Type
2018-03-23 14:52:59 -07:00
Chris Robinson
63c35248be
Some formatting cleanup
2018-03-22 11:32:23 -07:00
Chris Robinson
6685e0a078
Don't use an ALsizei for a potentially negative value
2018-03-22 11:11:45 -07:00
Chris Robinson
7789cc8e32
Define the Hanning window globally once for the pitch shifter
2018-03-22 09:55:15 -07:00
Chris Robinson
1d6622aa2b
Fix a delta phase offset calculation in the pitch shifter
...
tmp can be negative, and &1 is not the same as %2 in that case.
2018-03-22 08:56:48 -07:00
Chris Robinson
eeff730034
Hold some immediate values on the stack
2018-03-22 08:49:35 -07:00
Chris Robinson
23fd7451d0
Avoid some memset calls in the pitch shifter process loop
2018-03-22 08:49:22 -07:00
Chris Robinson
bc3a96308e
Use appropriately-sized buffers for the pitch shifter
2018-03-22 08:05:48 -07:00
Chris Robinson
7a23330ffe
Move the filter implementation to a separate directory
2018-03-22 07:05:40 -07:00
Chris Robinson
091e676db3
Move mixer sources into a sub-directory
2018-03-22 05:06:15 -07:00
Chris Robinson
6ad171781a
Use the global MixSamples for the pitch shifter output
2018-03-22 03:13:09 -07:00
Chris Robinson
d157d66678
Change a parameter type to float since that's what it's used as
2018-03-22 02:13:40 -07:00
Chris Robinson
4da6364fc2
Slightly restructure the pitch-shifter process loop
2018-03-22 02:10:51 -07:00
Chris Robinson
7b95753cf7
Fix typo (Substraction -> Subtraction) and rename related function
2018-03-21 23:10:12 -07:00
Chris Robinson
0a6c17c544
Don't auto-attenuate the pitch shifter output
2018-03-21 09:32:04 -07:00
Chris Robinson
f11d7eeadf
Don't use mutable fields for constant values
2018-03-21 09:23:58 -07:00
Chris Robinson
22a7bcd5ad
Avoid placing a 2K sample buffer on the stack
2018-03-21 09:01:32 -07:00
Chris Robinson
ecc51c8c55
Clean up some code formatting in the pitch shifter source
...
Clean up excessive newlines and extra-long comments, move static inline
definitions to their declarations.
2018-03-21 08:56:26 -07:00
kcat
c40b4ce3f2
Merge pull request #177 from Raulshc/Pitch-shifter
...
EFX:Pitch shifter
2018-03-21 08:35:09 -07:00
Raulshc
c38854fe3d
EFX:Own size for pitch shifter buffers
2018-03-19 16:48:00 +01:00
Chris Robinson
df6e4617e4
Fix the reverb panning behavior to better fit the spec
...
Previously it would attenuate the response from direction opposite to the
vector, whereas the property descriptions say it should simply move all
reflections toward the given direction.
2018-03-19 06:41:38 -07:00
Raulshc
6fd23f0984
EFX:Pitch Shifter implementation
...
Add pitch shifter effect using standard phase vocoder, based on work of Stephan Bernsee. Only mono signal processing by now.
2018-03-18 17:47:17 +01:00
Chris Robinson
3fde27d890
Use a macro template to define similar functions
2018-03-15 00:28:49 -07:00
Chris Robinson
445f63f350
Remove an extraneous +
2018-03-14 23:59:20 -07:00
Chris Robinson
942abab8f9
Move a loop into a function
2018-03-13 03:45:24 -07:00
Chris Robinson
52dee31270
Only calculate the modulation samples once for all 4 channels
2018-03-08 17:48:22 -08:00
Chris Robinson
22d3e3b563
Simplify modulator effect index updating
2018-03-08 17:48:21 -08:00
Chris Robinson
a211c2f5e4
Avoid AL prefix on internal effect state factory types
...
Also avoid using the generic V/V0 macros for them
2018-02-28 19:37:12 -08:00
Chris Robinson
b5aa0c0759
Remove the unnecessary ComputeAmbientGains
2018-02-18 23:56:51 -08:00
Chris Robinson
7a974b2460
Combine the vector reverse and partial scatter where they're together
2018-02-18 23:56:51 -08:00
Chris Robinson
1e93122470
Remove unused reverb modulation code
...
Still unsure how to handle reverb modulation without some kind of reference
output, so remove the related functions to not waste CPU time. It'll remain in
the Git history should it ever need to be resurrected.
2018-02-10 19:50:42 -08:00
Chris Robinson
20bee69955
Attempt to improve the reverb panning vectors
...
This should now retain the original orientation of the soundfield and merely
focus on the panning vector direction, as intended.
2018-02-08 01:18:40 -08:00
Chris Robinson
4cd04f192d
Alter tha curve of the density-related delay scale
...
The delay scale is roughly linear with respect to room size, however the
density is not linear with room size. The density is calculated by taking the
room size cubed, then normalized by some factor. Unnormalizing the density and
taking the cube root restores the original room size to use as a delay scale.
The patch also alters the delay and all-pass line lengths to be based on a 1
meter room size, so the the room size recovered from the density acts as a
direct multiple for the desired target length.
Note that the room scale range is unchanged (5m to 50m), so the minimum and
maximum delays are the same. It should also be noted that 50m may not be the
correct room size for a density value of 1. A density value of 1 corresponds to
an environment size of roughly 2.52m when converted from EAX (DENSITY_SCALE
should be 16 rather than 125000), but sizes that low result in undesirable
resonance in the feedback, indicating other changes are necessary for that to
work.
2018-02-08 00:05:29 -08:00
Chris Robinson
da1ee3baba
Revert "Don't fade the all-pass delay changes"
...
This reverts commit 799dfb732b4f49198d72649e86955ea82f45f229.
2018-02-04 19:57:22 -08:00
Chris Robinson
99f0377ae3
Construct error messages using parameterized values
2018-01-25 15:59:59 -08:00
Chris Robinson
2ded5547ba
Provide messages for the remaining AL errors
2018-01-24 17:07:01 -08:00
Chris Robinson
e80b016cbe
Use a global RowMixerFunc
2018-01-16 12:18:59 -08:00
Chris Robinson
14a0df03e8
Do more samples at once with the distortion effect
2018-01-16 08:49:15 -08:00