Todo List: sndio migration

2019-02-03 - Márcio Silva

As sndio follows the same goals as our packaging guidelines in stability and security concerns, we have decided to remove PulseAudio and use sndio as our default provider of sound server.

Every linked packages needs to be rebuild. There will likely be broken packages.

It is a todo list of packages that either have a direct dependency on pulseaudio/libpulse or link to libpulse*.so*

PulseAudio removal reasons:
* Has buffering issues which cause sound to stutter, jitter, and basically sound like crap.
* Doesn’t actually support some of the sampling rates it advertises to clients (eg. insufficient checking on its operational parameters).
* Almost never works with the hardware mixer (eg. changing volume either creates noise, doesn’t work, or mutes the whole channel and makes it UN-adjustable).
* Skips and jitters in scenarios with other system services as they try to do (often very little) tasks on the system.
* Misidentifies mixer controls (eg. headphone port is wrong or missing, line out is mismatched).
* Bugs out or overreacts to sound events like removing a headphone from the headphone jack.
* SIGSEGV then takes some client apps with it.
* Often skips or jitters the audio while adjusting volume.
* Breaks or jitters input streams when adjusting line-in or mic volume.
* Often has a freak out when one client plays at one rate then another client uses a faster rate. The first (slower) client then goes at the higher rate and you get Alvin and the Chipmunks.

Further details:
* https://aliver.wordpress.com/2016/02/17/why-i-dislike-pulseaudio/

sndio implementation reasons:
* Provides a lightweight audio & MIDI server
* Fully documented user-space API to access either the server or directly the hardware in a uniform way.
* Designed to work for desktop applications, but pays special attention to synchronization mechanisms and reliability required by music applications.
* Perform re-sampling and format conversions; for instance to allow a program that requires 44.1 kHz sample frequency to use a device that supports 48 kHz only.
* Mix and route the sound of multiple programs; this allows multiple programs to use the audio device concurrently.
* Split an audio device into sub-devices, for instance allowing one program to use the front speakers and another program to use the rear speakers as they were independent simple stereo devices.
* Allow one program to record what other programs play.
* Route audio and MIDI data through the network; this allows programs running on one computer to use the sound card of another computer.
* Route MIDI data between programs, allowing one program to send MIDI data to another program as it was a hardware MIDI port. For instance for a MIDI sequencer to control a soft synthesizer.
* Start, stop and relocate synchronously a group of audio programs allowing multiple small programs to work together. This can be controlled through standard MIDI Machine Control (MMC) protocol, for instance from within a MIDI sequencer.
* Expose the sound card clock as MIDI timecode (MTC), allowing MIDI programs (eg. sequencers) or MIDI hardware to be synchronized to audio streams.

Further details:
* http://www.sndio.org/

Add sndio packages:
* lib32-libsndio
* libsndio
* sndio
* <plasma-sndio ?>
* <projectm-sndio ?> (needs a sndio port)
* <sndio-alsa ?>
* <sndio-bluetooth ?>
* <sndio-equalizer ?>
* <sndio-gconf ?>
* <sndio-jack ?>
* <sndio-lirc ?>
* <sndio-oss ?>
* <sndio mixer ?> (like pamixer or ponymix)
* <sndio preferences ?> (like paprefs)
* <sndio volume control ?> (like pavucontrol)
* <xfce4-sndio-plugin ?> (needs a sndio port)

Remove pulseaudio packages:
* empathy
* lib32-libasyncns
* lib32-libcanberra-pulse
* lib32-libpulse
* libasyncns
* libcanberra-pulse
* libpulse
* pamixer
* paprefs
* pavucontrol
* pavucontrol-qt
* plasma-pa
* ponymix
* projectm-pulseaudio
* pulseaudio
* pulseaudio-alsa
* pulseaudio-bluetooth
* pulseaudio-equalizer
* pulseaudio-gconf
* pulseaudio-jack
* pulseaudio-lirc
* pulseaudio-zeroconf
* xfce4-pulseaudio-plugin

Rebuild packages without pulseaudio and/or with sndio:
* a52dec
* allegro
* allegro-legacy
* alsa-plugins (needs a sndio port)
* audacious-plugins
* audacity
* avidemux
* avidemux-cli
* blueman
* cairo-dock-plug-ins
* cdemu-daemon
* celt
* cinnamon-desktop
* cinnamon-settings-daemon
* clementine
* cmus
* conky
* deadbeef
* deepin-api
* deepin-daemon
* deepin-go-lib
* deepin-metacity
* deepin-mutter
* dolphin-emu
* dosbox
* efl
* enlightenment16
* espeak
* festival
* ffmpeg (sndio support)
* ffmpeg2.8 (sndio support)
* flite
* fluidsynth
* freerdp
* gens
* gens-gs
* gespeaker
* gogglesmm
* gmerlin
* gnome-bluetooth
* gnome-settings-daemon
* gnome-shell
* gnunet
* gqrx
* gst-plugins-base
* gst-plugins-good
* gtk-vnc
* guvcview
* higan
* hydrogen
* i3status
* iceape-uxp
* icedove-uxp
* iceweasel-uxp
* java7-openjdk
* java8-openjdk
* jdk7-openjdk
* jdk8-openjdk
* jre7-openjdk
* jre8-openjdk
* julius
* kdemultimedia-kmix
* kmix
* kodi
* lib32-alsa-plugins
* lib32-fluidsynth
* lib32-gst-plugins-base
* lib32-gst-plugins-good
* lib32-libao
* lib32-libcanberra
* lib32-libcanberra-sndio
* lib32-libmikmod
* lib32-openal
* lib32-sdl
* lib32-sdl2
* libao
* libcanberra
* libcanberra-gstreamer
* libcanberra-sndio
* libdca
* libmatemixer
* libmikmod
* libquicktime
* libringclient
* libsndfile
* linphone
* lmms
* lxqt-panel
* mate-settings-daemon
* mediastreamer
* moc
* mpg123
* mumble
* musescore
* mythtv
* openal
* opus-tools
* ossp
* pcsx2
* phonon
* phonon-qt4
* phonon-qt4-gstreamer
* phonon-qt5
* phonon-qt5-gstreamer
* plasma-meta
* plib
* portaudio
* portmidi
* projectm
* ptlib
* qemu
* qemu-headless
* qmmp
* qt5-base
* qt5-multimedia
* retroarch
* ring
* ring-daemon
* scummvm
* sdl
* sdl2
* shairport-sync
* simplescreenrecorder
* sonic-visualiser
* sox
* speech-dispatcher
* speex
* spice-glib
* spice-gtk3
* squeak-vm
* transcode
* vice
* vibe
* vlc
* wine-stable
* xine-lib
* xmms2

Link to lists of pkgbase values:

Filter Todo List Packages

Select filter criteria
0 packages displayed out of 0 total packages.
Arch Repository Name Current Version Staging Version Maintainers Status Last Touched By