hacking at mpg123
gcc -std=gnu99 *.c -lcurl -lao -lmpg123
./a.out file
or
./a.out http://stream
alex@raspberrypi:~/mpg123hack $ LOG_LEVEL=DEBUG WEB_ROOT=/home/alex/mpg123hack/resources/web/ sudo -E ./my123 /media/nugget_share/music/alex-beet/ streams playlists /home/alex/id3_cache
dependencies: libao-dev libmpg123-dev libssl-dev libmicrohttpd git version 4adf1c6d1744e1ac4cb0c88817a3726c3038b919 libwiringPi (see http://wiringpi.com/download-and-install/) libasound2-dev
libao-dev libmpg123-dev libjson-c-dev libmicrohttpd-dev libttspico-dev
todo: remove wiringPi as a dependency; just read/write to the memory addresses instead maybe? or find a different lib that's more lightweight and doesn't shell out to setup pins
config settings:
sudo amixer cset numid=3 2
sudo amixer cset numid=1 0
Notes about amixer, one can call sudo amixer cget numid=<any ID here>
to get a description and current value of audio settings
watch -n 0.2 '(git status | grep modified) && gitfixupandpush'
libmicrohttpd: wget ftp://ftp.gnu.org/gnu/libmicrohttpd/libmicrohttpd-0.9.52.tar.gz tar xzf libmicrohttpd-0.9.52.tar.gz cd libmicrohttpd-0.9.52 ./configure make make install
HTTP_PORT=8080 WEB_ROOT=./resources/web/ ./my123 '/home/alex/Downloads/alex/Soulseek Downloads/complete' streams foo
POST /playlists/load {name: "foo", playlist: ["path/a", "path/b", ...]
curl -s -XPOST 'raspberrypi.local/playlists?name=foo&track=0'
libao reads from /etc/libao.conf
configured to use alsa
sudo aplay -l
raspberrypi uses alsa; desktop uses pulse
alex@raspberrypi:~ $ sudo amixer Simple mixer control 'PCM',0 Capabilities: pvolume pvolume-joined pswitch pswitch-joined Playback channels: Mono Limits: Playback -10239 - 400 Mono: Playback 400 [100%] [4.00dB] [on]
sudo aplay Left-Right\ Channel\ Audio\ Test.mp3
notes from 2019-jan sudo amixer cset numid=3 1
sudo dd bs=4M if=/home/alex/Downloads/2018-11-13-raspbian-stretch-lite.img of=/dev/mmcblk0 conv=fsync
create /media/alex/boot/wpa_supplicant.conf with: ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev network={ ssid="YOUR_NETWORK_NAME" psk="YOUR_PASSWORD" key_mgmt=WPA-PSK }
touch /media/alex/boot/ssh
edit /media/alex/rootfs/etc/dhcpcd.conf, and include:
interface wlan0 static ip_address=192.168.0.11/24 static routers=192.168.0.1 static domain_name_servers=8.8.8.8
sudo sync sudo umount /media/alex/rootfs sudo umount /media/alex/boot
ssh pi@192.168.0.11
sudo -i useradd alex mkdir /home/alex chown alex:alex /home/alex/ usermod -s /bin/bash alex echo 'alex ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers passwd alex
#logout ssh-copy-id alex@192.168.0.11 scp .ssh/id_rsa* 192.168.0.11:.ssh/.
ssh 192.168.0.11 echo $UID # and make note that it is 1000 (or update the below fstab command)
mkdir -p /media/nugget_share/music echo '//192.168.0.3/music /media/nugget_share/music cifs uid=1000,username=alex,password=mypasswordgoeshere,iocharset=utf8,ro,nounix,file_mode=0777,dir_mode=0777 0 0' >> /etc/fstab mount -a
apt update apt upgrade apt install git wiringpi libasound2-dev libmpg123-dev libjson-c-dev libssl-dev
apt install libttspico-dev
or if it's not available and you're on a raspberry pi v1 try:
wget http://archive.raspberrypi.org/debian/pool/main/s/svox/libttspico-dev_1.0+git20130326-3+rpi1_armhf.deb wget http://archive.raspberrypi.org/debian/pool/main/s/svox/libttspico-data_1.0+git20130326-3+rpi1_all.deb wget http://archive.raspberrypi.org/debian/pool/main/s/svox/libttspico0_1.0+git20130326-3+rpi1_armhf.deb dpkg -i libttspico*.deb
libmicrohttpd: wget ftp://ftp.gnu.org/gnu/libmicrohttpd/libmicrohttpd-0.9.63.tar.gz tar xzf libmicrohttpd-0.9.63.tar.gz cd libmicrohttpd-0.9.63 ./configure make make install ldconfig
cd git clone git@github.com:alexcb/music-player.git cd music-player make sudo cp init.d-music /etc/init.d/music
cd touch streams
scp 192.168.0.10:id3_cache 192.168.0.11:id3_cache
cp music-ui.desktop ~/.local/share/applications/.