The scaling issue is a regression introduced in 192df2280a.
The issues with the window being cropped when the app is launched in fullscreen mode is caused by using sdl2::video::WindowsBuilder::fullscreen, which resizes the display rather than stretching the window. This issue was only present in the Flatpak build.
Introduce a volume glide and a release timer to get rid of clicks on volume changes and note releases.
Although it would be possible to try and synchronise loops to zero crossings, I deemed this solution would be a lot simpler and would work more universally across the board (even for waveforms that do not end on a zero crossing).
I adjusted the timings to be as short as possible without introducing noticable clicks.
There still seem to be _some_ sources of clicking if you listen closely, but I didn't deem them distracting enough to investigate.
Freeware CS's player is also non-ideal when it comes to declicking and therefore I think this solution is good enough.
* Note: there were a couple changes that rustfmt made to the code, as well as a couple bit shifts that Clippy flagged as suspicious looking.
I resolved the bit shift warnings by applying common sense and looking at the surrounding code, however they may be wrong so please double check that it makes sense.
I tested Polyphase interpolation and nothing sounds wrong, so I suppose there shouldn't be any problems.
Co-authored-by: りき萌 <commits@liquidev.net>
Co-authored-by: alula <git@alula.me>