@hj I was sharing this progress and someone said "what about that openbsd sndiod, you can stream audio with that" so I started looking into it (it's inferior to roc-toolkit) and sure enough I see a mailing list post by @lanodan :)
@hj oooh shit man, I just got this working. Still running Bookworm on my Raspberry Pi so I didn't have a roc-toolkit package available, but I followed their docs to build and install it.
And then the problem was FreeBSD not having it packaged. So I went down that rabbithole, gave the devs some updates on their Github (packaged a missing library, fixed their build on FreeBSD) and whoaaaaaaa this works GREAT
I'm getting high quality low latency PCM stream over the network sucking the data directly from ALSA and playing out OSS directly on FreeBSD (Pulseaudio works too, but why bother)
and now I have my high quality audio again to keep me entertained while I'm working. The ffmpeg to Icecast solution I came up with worked, but it fucking sucked to be honest with like 5 seconds of latency
@feld mpd to snapcast sorta requires them being on same machine - it will be using a unix pipe (mkfifo), otherwise ROC is way more reliable and stable way of point-to-point transferring audio over LAN
@feld i use MPD to stream to snapcast, another MPD instance JUST for homeassistant tts, also to snapcast and finally i have ROC stream from my desktop to snapcast in case i want to listen to youtube in bedroom or something.
I'm currently looking into way to play off jellyfin as if it were mpd, but so far no dice. It can stream to DLNA Renderer (gmediarenderer) but it's jank and doesn't work with scrobbling
@feld rpi3. There is ESP32 (re)implementation but it's janky and more DIY than usual, especially since it'll need audio board. I also use old smartphone as a driver too but it's annoying that it lowers volume to "preserve my ear health"
@feld@hj Haha, I even still maintain sndio packaging for Gentoo, although desktop+laptop switched to pipewire. (Still got sndio on some other machines lying around, like my nas)
One issue I had with sndio that prompted the switch to pipewire on laptop+desktop is the hardcoded limit on the number of clients (can be bumped easily) and gstreamer-sndio in webkit-gtk somehow not properly closing streams. (Maybe some sandbox issue, those are the worst to debug)