Commit graph

146 commits

Author SHA1 Message Date
Clownacy
35d3d20d44 Even better way 2020-10-15 14:27:16 +01:00
Clownacy
977a5eb49d Add better 3DS audio thread priority 2020-10-15 14:25:48 +01:00
Clownacy
497adce14b Add mutexes to 3DS audio backend 2020-10-15 14:22:49 +01:00
Clownacy
2f8e771333 Fix a typo 2020-10-15 14:00:55 +01:00
Clownacy
0d7ad3358b Make some filenames more consistent 2020-10-14 23:22:16 +01:00
Clownacy
d391ab77f9 Add a hardware-accelerated 3DS audio backend
Hell yes
2020-10-14 23:18:43 +01:00
Clownacy
268d68b078 Remove dead functions 2020-10-14 20:36:00 +01:00
Clownacy
f9993b264c Fix dumb typo 2020-10-11 21:18:52 +01:00
Clownacy
5b4778fb06 Fix the 3DS crash when closing
For whatever reason, the 3DS *really* doesn't like it when I do all
the audio mixing in the callback function. Instead, it seems I have
to use a dedicated thread.
2020-10-11 21:16:47 +01:00
Clownacy
6df224400c Okay never mind this doesn't avoid it at all
Seriously wtf why is it crashing
2020-10-11 16:01:27 +01:00
Clownacy
f3ff030869 Avoid 3DS crash when closing the game 2020-10-11 15:58:27 +01:00
Clownacy
2a73c12a5f 3DS cleanup 2020-10-11 15:17:00 +01:00
Clownacy
80725016f7 Add mutexes to 3DS audio backend
Doesn't seem to fix the annoying crashes though...
2020-10-11 14:42:04 +01:00
Clownacy
75a31005d1 Add basic 3DS audio support
It's using the software mixer for now. I might be able to make it
hardware-accelerated in the future.
2020-10-11 14:27:39 +01:00
Clownacy
7013c28e26 Remove an unnecessary newline 2020-10-11 14:27:10 +01:00
Clownacy
ad5785611b Change a float literal to double 2020-09-27 19:31:23 +01:00
Clownacy
4763aecdbd Correct Lanczos array initialisation
I must have forgotten that Lanczos reads backwards too
2020-09-18 00:59:05 +01:00
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
987b81c946 Fix other audio backends 2020-09-03 19:59:37 +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
ab09dc67eb Emulate the Organya thread pauses
Now there's a 100ms pause between songs.

Currently only the miniaudio backend supports this.
2020-09-03 18:14:52 +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
ca8b5ccaa1 Merge branch 'portable' into portableMinimizeHeaders
# Conflicts:
#	src/BulHit.cpp
2020-07-02 15:26:33 +02:00
Gabriel Ravier
81edd4db52 src: Restored SDL.h includes to conform to project style of including SDL2
Signed-off-by: Gabriel Ravier <gabravier@gmail.com>
2020-07-02 14:59:55 +02:00
Clownacy
6cc976d4d6 Wii U audio tweaks
Clean-up better, and neaten-up some code
2020-07-02 02:31:55 +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
1d76e25c35 Better Wii U audio cleanup 2020-06-30 20:39:20 +01:00
Clownacy
e0c67b421a Add constant to control number of Wii U buffers 2020-06-30 20:38:28 +01:00
Clownacy
371d66255b Fix popping in the Wii U audio backend 2020-06-30 20:37:16 +01:00
Clownacy
1fbdbf6015 Audio backend notes 2020-06-28 22:18:00 +01:00
Clownacy
27a621f923 Update miniaudio to v0.10.9
Had to add a small bugfix to get it to work
2020-06-24 17:40:08 +01:00
Clownacy
dae87c6106 Update Wii U audio backend 2020-06-24 17:34:25 +01:00
Clownacy
f64f924b54 Update miniaudio backend 2020-06-24 17:24:41 +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
70e431d35d Add missing(?) header 2020-06-24 16:02:28 +01:00
Clownacy
1ff5772843 Fix typo 2020-06-24 12:12:28 +01:00
Clownacy
2ee1bf131e Update miniaudio backend to new mixer 2020-06-24 01:15:21 +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
22c9987191 Dear me: Test your fixes before committing them
you complete tit-head
2020-04-24 19:49:18 +01:00
Clownacy
cbeeb7a180 Fix WiiU-Software backend buffer being 5ms
5ms is too small: it cannot be updated fast enough, resulting in
crackling coming from the gamepad speakers. Now it's 10ms, as
intended.
2020-04-24 19:42:47 +01:00
Clownacy
20440ff5e0 Missing a line 2020-04-24 17:20:32 +01:00