Clownacy
bc165d0f0a
Remove Organya-sleeping
...
Turns out that 'Sleep' call is ran on the *main* thread.
I have absolutely no idea why the game does this.
2020-09-04 02:26:31 +01:00
Clownacy
7abab0039b
Pre-convert the Organya callback timer
...
Oh no, I used the naughty 'm' word :(
2020-09-03 19:19:55 +01:00
Clownacy
be6f46fabd
Refactor audio software mixer
...
Now the various backends have far less duplicate code, and are part
of a separate backend system specifically for the software mixer.
Now, any modifications to the MixSoundsAndUpdateOrganya function
will apply to all backends, instead of needing to manually be applied
to each one.
2020-09-03 19:19:50 +01:00
Clownacy
fbcb2f5f56
Optimise the linear-interpolator a little
...
Doesn't have to do two sets of shifts
2020-09-03 16:01:46 +01:00
Clownacy
b68eb076ca
Rename a variable
2020-09-03 15:00:07 +01:00
Clownacy
47543eb382
Another Lanczos optimisation
2020-09-03 14:38:56 +01:00
Clownacy
67ee8b9829
Optimise the Lanczos resampler some more
2020-09-03 14:28:04 +01:00
Clownacy
9f002b6180
Convert Lanczos resampler from double to float
...
Forgot that C++98 has a float version of `sin`.
2020-09-01 19:57:08 +01:00
Clownacy
9a79041c6c
Optimise the Lanczos resampler a little
...
Apprently floating-point divisions are slower than multiplications
2020-08-31 17:28:35 +01:00
Clownacy
48386d443b
Add optional Lanczos filter to the audio mixer
...
Should be higher-quality than the linear-interpolator, but also much
slower, so it's disabled by default.
2020-08-31 16:07:25 +01:00
Clownacy
39067057c1
Fix some code formatting
2020-08-29 18:10:59 +01:00
Clownacy
845ee1b96f
Don't store subsample offset as long
...
Only a short is needed.
2020-08-25 02:44:54 +01:00
Gabriel Ravier
32c8795ead
src: Cleaned up includes to only (and always) include what we use
...
Signed-off-by: Gabriel Ravier <gabravier@gmail.com>
2020-07-01 18:26:22 +02:00
Clownacy
1fbdbf6015
Audio backend notes
2020-06-28 22:18:00 +01:00
Clownacy
3fa4a91dc1
Reword audio backend logic
...
This will make it easier to integrate into the enhanced branch, and
also improved audio quality slightly (samples are mixed as 16-bit
instead of 8-bit).
2020-06-24 17:03:13 +01:00
Clownacy
1ff5772843
Fix typo
2020-06-24 12:12:28 +01:00
Clownacy
479fff2ccf
New mostly-integer-only sound mixer
...
The mixer itself is integer-only, but the millibel stuff is still
float-based (I don't know if it's worth adding a 10001-value-long
lookup table to replace it).
Anyway, according to a quick test, this new mixer is significantly
faster than the old floating-point one - rarely going above 100
clock() ticks per callback, with the old one almost always running
above that.
For now, only the SDL2 backend supports it - I'll add the others in
upcoming commits.
This will no-doubt cause problems with the enhanced (lite) branch,
where clownaudio always outputs float samples.
2020-06-24 01:11:02 +01:00
Clownacy
4f80ff4139
Correct a typo
2020-04-19 19:44:06 +01:00
Clownacy
051d12f434
Stop shouldn't rewind the sound
...
According to the DirectSound docs, stop doesn't rewind.
https://docs.microsoft.com/en-us/previous-versions/ms817375%28v%3dmsdn.10%29
2020-04-17 23:47:45 +01:00
Clownacy
6456649e11
Pre-process audio in the software mixer
...
This should improve performance slightly
2020-04-06 19:52:53 +01:00
Clownacy
5daea02ac6
Change the audio backend API
...
Removes locking and unlocking: instead, samples are passed to Create.
2020-04-06 19:44:45 +01:00
Clownacy
9fd95e720c
Whoops, remove a leftover std::
2020-04-06 13:49:57 +01:00
Clownacy
ba9ccec945
Change double to float
...
A quick test with godbolt shows this produces smaller (and presumably
faster) code.
2020-04-06 13:48:44 +01:00
Clownacy
545948584a
Different optimisation for software-mixer
...
`trunc` can resolve to a library call, while a cast-to-int doesn't
appear to. Since the mixer already does a cast-to-int when retrieving
samples, I can kill two birds with one stone.
2020-04-06 13:40:39 +01:00
Clownacy
1016411fa4
Cleanup
2020-04-06 13:37:53 +01:00
Gabriel Ravier
81e3259535
Backends/Audio/SoftwareMixer: Optimized fmod(x, 1.0)
to x - trunc(x)
...
Signed-off-by: Gabriel Ravier <gabravier@gmail.com>
2020-04-05 23:04:59 +02:00
Gabriel Ravier
1cf4200051
Merge branch 'portable' into improvePerformance2
2020-04-05 19:33:13 +02:00
Clownacy
bcd883e767
Fix weird buzzing in the software mixer
...
Not really sure why this causes it, but apparently it does.
2020-04-05 18:17:38 +01:00
Gabriel Ravier
afd3abecc4
Correctly used Attributes.h instead of a definition directly in SoftwareMixer.cpp
...
Signed-off-by: Gabriel Ravier <gabravier@gmail.com>
2020-04-03 00:43:34 +02:00
Clownacy
732d3bbc5c
Split software audio mixer to its own file
...
This will be shared between the SDL2 and miniaudio backends,
eliminating all that digusting duplicate code.
2020-03-31 12:14:20 +01:00