sm64pc / sm64ex

Fork of https://github.com/sm64-port/sm64-port with additional features.
1.57k stars 482 forks source link

Audio crackling with Pipewire(possibly also Pulseaudio?) on Raspberry Pi #567

Open megatog615 opened 3 months ago

megatog615 commented 3 months ago

Describe the bug On Raspberry Pi (in my case a CM4), when using the default SDL_AUDIODRIVER, audio is incredibly crackly. When setting SDL_AUDIODRIVER to "alsa" (SDL_AUDIODRIVER=alsa ./sm64.us.f3dex2e.arm) audio quality is restored.

To Reproduce SDL will default to using pulse/pipewire (from what I can tell) and will have crackly audio. Launching the game using SDL_AUDIODRIVER=alsa should result in correct audio.

Expected behavior From what I understand, even using alsa will still have the audio routed to the pipewire daemon. It should produce the same audio on both.

Desktop: You will need a Raspberry Pi using Raspberry Pi OS with pipewire installed as a sound daemon.

fgsfdsfgs commented 3 months ago

Wow, I see Pulse hasn't changed at all in 10 years. Anyway, I don't think I can do anything about this other than maybe provide a setting for which audiodriver to use.

vanfanel commented 1 month ago

Pulse is a piece of shit. Simply avoid it as much as you can. There's no way around it. It's not a problem of the engine, indeed: sm64-ex is fantastic and sounds perfectly well on a sane audio stack like plain Alsa.

Pulse is one of those projects that seemed to be tailored to destroy the GNU/Linux ecosystem from inside, and probably it was. His creator is still at it, he's now openly working for Microsoft.

megatog615 commented 1 month ago

Wow, I see Pulse hasn't changed at all in 10 years. Anyway, I don't think I can do anything about this other than maybe provide a setting for which audiodriver to use.

This is a good solution. I'm guessing this would be done with SDL_SetHint?

In any case it is strange that setting the variable to alsa sounds correct even though Pipewire is still intercepting it.