Commit graph

30 commits

Author SHA1 Message Date
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