This is great! I read about this project, but at the time it required manually patching PulseAudio and then installing it, which is never a good thing to do unless you are using a distro like Gentoo. I use KDE Neon (Ubuntu derivative), so it was a big no-no for me. But this is quite handy as it comes packaged and ready to use! Thanks for that!
I’m curious if folks here have an opinion (never known Linux folks to have one of those
) on if/how routing audio through JACK affects audio quality?
Clementine was giving me all sort of issues on my Mac, chewing up almost a whole CPU even when not playing anything, music scrubber not working, etc. I just tried Strawberry and it’s working flawlessly.
I’m using two Raspberry Pis, each with a SPIDF out HAT, one running Volumio, the other running MoOde. I’ve found I like Vikumio more, but I use the MoOde to resample via SoX, I’ve found is easir to configure on MoOde. Both UIs are lacking in certain respects, but I just use them to stream UPNP audio to a DAC, which I control via a control point on my iDevices, so I never actually deal with the UIs except to configure.
I also have an old Mac Mini that I use as a music server (Kodi), and I keep wondering whether I should replace MacOS with a lightweight Linux distro. Every once in a while my music hiccups, most likely because of some random MacOS process that doesn’t need to be running!
If you are using the Pi’s just for upnp into a DAC, have you tried RopieeeXL?
Anyone here using JamesDSP? Among other features are importing of APO settings text files and selecting presets from the AutoEQ database (a lot like the Qudelix 5K).
In my ongoing crusade to escape the things MusicBee on Windows can do, that no app I’ve found on Linux can, I scored a victory today. My objective was to take my playlists in .m3u format and export the tracks listed in them to a microSD card, which I would then use in a digital audio player. The DAP in question only supports up to 20k tracks in its database, and I have well over 30k in my library.
With the help of the Perplexity chatbot, I managed to get a script that exports music tracks referenced in the playlists on my desktop to the mounted microSD card.
To understand what the below does you need to know that the location of my playlists is in ~/Documents/Playlists, my music library is in ~/Music, and the destination for the exported files is a microSD card named 256, mounted in /media/$USER/256 folder. The desktop music folders and their files in the list of playlists will find their way to the path /media/$USER/256/Music.
I saved the script with the name export-to-256.sh and made it executable. I then opened a terminal where the script is located and executed it as ./export-to256.sh.
This whole business was a success, but took a while to get to what I wanted and there were errors along the way to be ironed-out. In the end the chatbot was indeed a good bot.
------------------ Script Below ------------------
#!/usr/bin/env bash
set -euo pipefail
Your main music library root
LIB=“$HOME/Music”
Your microSD card mountpoint (adjust if needed)
DEST=“/media/$USER/256”
Directory where your .m3u playlists live
PL_DIR=“$HOME/Documents/Playlists”
Explicit list of playlists
PLAYLISTS=(
“Misfit Anthems.m3u”
“Leaves’ Eyes Instrumentals.m3u”
“Within Temptation Instrumental Albums.m3u”
“Covers.m3u”
“Eluveitie Instrumental.m3u”
“Foreign Language Vocals.m3u”
“Rotation.m3u”
)
echo “Using DEST: $DEST”
echo “Checking that DEST exists and is writable…”
if [ ! -d “$DEST” ]; then
echo “ERROR: DEST directory does not exist: $DEST”
exit 1
fi
if ! test -w “$DEST”; then
echo “ERROR: DEST is not writable: $DEST”
exit 1
fi
total_files=0
copied_files=0
skipped_missing=0
for pl in “${PLAYLISTS[@]}”; do
PLAYLIST=“$PL_DIR/$pl”
echo
echo “=== Processing playlist: $PLAYLIST ===”
if [ ! -f “$PLAYLIST” ]; then
echo " (not found, skipping)"
continue
fi
Read playlist lines in the same shell (no pipeline),
stripping CR and ignoring comments/blank lines.
while IFS= read -r line; do
Strip possible trailing CR from Windows line endings
line=${line%$‘\r’}
Skip blank lines and comment lines (#EXTM3U, #EXTINF, etc.)
[[ -z “$line” || “$line” == \#* ]] && continue
total_files=$((total_files + 1))
Make relative paths absolute under LIB
if [[ “$line” != /* ]]; then
SRC=“$LIB/$line”
else
SRC=“$line”
fi
Strip library root so we mirror only under Music/
REL=“${SRC#$LIB/}”
TARGET_DIR=“$DEST/Music/$(dirname “$REL”)”
if [ ! -f “$SRC” ]; then
echo " MISSING: $SRC"
skipped_missing=$((skipped_missing + 1))
continue
fi
mkdir -p “$TARGET_DIR”
if cp -vu – “$SRC” “$TARGET_DIR”/; then
copied_files=$((copied_files + 1))
fi
done < “$PLAYLIST”
done
echo
echo “=== Export finished ===”
echo " Total entries seen: $total_files"
echo " Files copied: $copied_files"
echo " Missing/not copied: $skipped_missing"
read -rp “Done. Press Enter to close…”