Music player for CPC with M4
#!/bin/bash | |
CPCIP=${CPCIP:-192.168.1.22} | |
DB=${DB:-DSK} | |
shopt -s nocaseglob | |
function playdsk { | |
# Get the exact filename | |
local dsk="$1" | |
if ! test -e "$dsk" | |
then | |
dsk=$(ls "$DB"/*"$dsk"* 2>/dev/null) | |
if test -z "$dsk" | |
then | |
echo unable to find a DSK | |
exit 1 | |
fi | |
fi | |
# Extract the unique file | |
local fname=$(iDSK "$dsk" -l 2>&1 | grep '0$' | sed -e 's/0$//') | |
iDSK "$dsk" -g "$fname" > /dev/null 2> /dev/null || (iDSK "$dsk" -g "$fname" ; exit -1) | |
test -e "$fname" || (echo ERROR while extracting $fname from $dsk ; exit 1) | |
# Play it | |
local fname2=$(echo $fname| sed -e 's/ //g') | |
mv "$fname" "$fname2" | |
xfer -y "$CPCIP" "$fname2" | |
rm "$fname2" | |
} | |
function list { | |
ls "$DB"/*.dsk | column | |
} | |
function random { | |
while read dsk | |
do | |
echo $dsk | |
playdsk "$dsk" | |
read -p "PRESS ENTER TO PLAY NEXT MUSIC" < /dev/tty | |
done < <(list | sort -R) | |
} | |
case $1 in | |
play) | |
playdsk "$2" | |
;; | |
list) | |
list | |
;; | |
sync) | |
#TODO add something to automatically download all these great songs (a list of links ?) | |
;; | |
random) | |
random | |
;; | |
help) | |
cat<<EOF | |
Music player for CPC with M4 by Krusty/Benediction. | |
This small script has been mainly created to listened on a real CPC the musics of SuTekH Of Epyteor. | |
It can of course be used for any other music spreaded in a similar way (but to DSK of SuTekH are way more interesting with animations). | |
Usage: | |
$0 play DSK/B2B6\ By\ Triace\ \(2017\)\(SuTekH\ Of\ Epyteor\).dsk # Play the music contained in the specified DSK | |
$0 play b2b6 # Play the music in the DSK file in the database that continas the specified string | |
$0 list # List the collection | |
$0 random # Play the collection in a random order | |
Known limitations: | |
- Do not work with DSK containing several files | |
- Random play needs to manually change the music | |
- If the CPC player needs the user to press a key before playing the music you still have to do it | |
Pre-requisits: | |
- iDSK | |
- xfer | |
Environement vaariables of interest: | |
- CPCIP: IP address of the M4 card | |
- DB: folder of the database of DSK | |
EOF | |
esac |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment