Re: [SlimDevices: Plugins] Pipe Squeezelite to Icecast
Hellsblade wrote: > Upsampling is maybe the way to go. I tried the -u parameter and took the > example > Code: > > -u hMX > > and let LMS play random albums with different khz most are 44100 and > the seem to play at the right pitch. Still confused :confused:, but at > least I have something working for now :D 37388 I don't get the concept about audiobitrate and or icy bitrate here need some studying. :p +---+ |Filename: Screenshot 2022-03-02 at 10.32.22.png| |Download: http://forums.slimdevices.com/attachment.php?attachmentid=37388| +---+ Hellsblade's Profile: http://forums.slimdevices.com/member.php?userid=4283 View this thread: http://forums.slimdevices.com/showthread.php?t=112809 ___ plugins mailing list plugins@lists.slimdevices.com http://lists.slimdevices.com/mailman/listinfo/plugins
Re: [SlimDevices: Plugins] Pipe Squeezelite to Icecast
Hellsblade wrote: > It's no that I need that. It's just the difference between the working > and not working. A really funny thing is I found albums playing on > normal pitch :confused: So the input from LMS is doing something with > squeezelite and ices. the properties of the album is 224kbps or 320 CBR > *48kHz* MP3. > > forcing -r 48100 gives high pitch again. :confused::confused: Upsampling is maybe the way to go. I tried the -u parameter and took the example Code: -u hMX and let LMS play random albums with different khz most are 44100 and the seem to play at the right pitch. Still confused :confused:, but at least I have something working for now :D Hellsblade's Profile: http://forums.slimdevices.com/member.php?userid=4283 View this thread: http://forums.slimdevices.com/showthread.php?t=112809 ___ plugins mailing list plugins@lists.slimdevices.com http://lists.slimdevices.com/mailman/listinfo/plugins
Re: [SlimDevices: Plugins] Pipe Squeezelite to Icecast
Matt Drown wrote: > squeezelite is going to take any input and turn it into pcm uncompressed > 16 bit audio. (flac/mp3/ogg/etc) > > ICES (not icecast) is going to read that and send ONLY ogg-vorbis > upstream. The upstream either needs to deal with this, or you need to > use a different tool. > > In my usecase Azuracast is my receiver, and accepts ogg-vorbis and > re-encodes to mp3. > > > If you need something other than ogg-vorbis streamed out of squeezelite, > you can't use ICES, you need another tool that accepts STDIN as input. > Darkice appears to send mp3 data, but my metadata update script is only > going to push metadata via ICES. It's no that I need that. It's just the difference between the working and not working. A really funny thing is I found albums playing on normal pitch :confused: So the input from from is doing something with squeezelite and ices. the properties of the album is 224kbps CBR *48kHz* MP3. forcing -r 48100 gives high pitch again. :confused::confused: Hellsblade's Profile: http://forums.slimdevices.com/member.php?userid=4283 View this thread: http://forums.slimdevices.com/showthread.php?t=112809 ___ plugins mailing list plugins@lists.slimdevices.com http://lists.slimdevices.com/mailman/listinfo/plugins
Re: [SlimDevices: Plugins] Pipe Squeezelite to Icecast
squeezelite is going to take any input and turn it into pcm uncompressed 16 bit audio. (flac/mp3/ogg/etc) ICES (not icecast) is going to read that and send ONLY ogg-vorbis upstream. The upstream either needs to deal with this, or you need to use a different tool. In my usecase Azuracast is my receiver, and accepts ogg-vorbis and re-encodes to mp3. If you need something other than ogg-vorbis streamed out of squeezelite, you can't use ICES, you need another tool that accepts STDIN as input. Darkice appears to send mp3 data, but my metadata update script is only going to push metadata via ICES. Matt Drown's Profile: http://forums.slimdevices.com/member.php?userid=69476 View this thread: http://forums.slimdevices.com/showthread.php?t=112809 ___ plugins mailing list plugins@lists.slimdevices.com http://lists.slimdevices.com/mailman/listinfo/plugins
Re: [SlimDevices: Plugins] Pipe Squeezelite to Icecast
Matt Drown wrote: > You could try adding "-r 44100" onto squeezelite, but I suspect there is > some difference in x86 (where I'm running it) and on your raspberry pi. No difference there. I think it is already 44100 by default. >From what I see in the ices log It starting in VBR 44100 2 channels and Icecast shows ogg vorbis. When I connect to icecast with the Radiocaster (windows) tool it shows an audio mpeg stream and this is not happening. I can not seem to find any option to change this with ices2. Can squeezelite or ices force this? My mp3 library have many different formats CBR and VBR. Hellsblade's Profile: http://forums.slimdevices.com/member.php?userid=4283 View this thread: http://forums.slimdevices.com/showthread.php?t=112809 ___ plugins mailing list plugins@lists.slimdevices.com http://lists.slimdevices.com/mailman/listinfo/plugins
Re: [SlimDevices: Plugins] Pipe Squeezelite to Icecast
You could try adding "-r 44100" onto squeezelite, but I suspect there is some difference in x86 (where I'm running it) and on your raspberry pi. Matt Drown's Profile: http://forums.slimdevices.com/member.php?userid=69476 View this thread: http://forums.slimdevices.com/showthread.php?t=112809 ___ plugins mailing list plugins@lists.slimdevices.com http://lists.slimdevices.com/mailman/listinfo/plugins
Re: [SlimDevices: Plugins] Pipe Squeezelite to Icecast
Hellsblade wrote: > Thanks for the tip. I will give it a shot. Oh wow. That works and seems to be stable even the metadata gets filled.:cool: But... There's always a but. It seems that the pitch of the stream goes on double speed. In LMS the length looks normal, so it must be ices? Code: 1 /home/pi/Templates/sqlite ices.log 4 0 /home/pi/Templates/sqlite/ices.pid Testing123 Country Rock Ices 2.0.3 http://192.198.1.29:8000/rpilite stdinpcm 44100 2 1 /home/pi/Templates/sqlite/metadata.txt 192.168.1.29 8000 xxx /rpilite 44100 2 Hellsblade's Profile: http://forums.slimdevices.com/member.php?userid=4283 View this thread: http://forums.slimdevices.com/showthread.php?t=112809 ___ plugins mailing list plugins@lists.slimdevices.com http://lists.slimdevices.com/mailman/listinfo/plugins
Re: [SlimDevices: Plugins] Pipe Squeezelite to Icecast
Matt Drown wrote: > Just an update, you don't need pulse audio if you just want to stream > out, just pipe squeezlite output directly to ices: > > > Code: > > squeezelite -s 192.168.0.100 -a 16 -o - | ices ices-conf.xml > > > > > -s to point to the LMS > -a to specify 16bit pcm data > -o to send the output to stdout, make sure to leave the "-" in there Tanks for the tip. I will give it a shot. Hellsblade's Profile: http://forums.slimdevices.com/member.php?userid=4283 View this thread: http://forums.slimdevices.com/showthread.php?t=112809 ___ plugins mailing list plugins@lists.slimdevices.com http://lists.slimdevices.com/mailman/listinfo/plugins
Re: [SlimDevices: Plugins] Pipe Squeezelite to Icecast
Just an update, you don't need pulse audio if you just want to stream out, just pipe squeezlite output directly to ices: Code: squeezelite -s 192.168.0.100 -a 16 -o - | ices ices-conf.xml -s to point to the LMS -a to specify 16bit pcm data -o to send the output to stdout, make sure to leave the "-" in there Matt Drown's Profile: http://forums.slimdevices.com/member.php?userid=69476 View this thread: http://forums.slimdevices.com/showthread.php?t=112809 ___ plugins mailing list plugins@lists.slimdevices.com http://lists.slimdevices.com/mailman/listinfo/plugins
Re: [SlimDevices: Plugins] Pipe Squeezelite to Icecast
Matt Drown wrote: > Here's my full ices config file, minus passwords. Thx for the help. But my ices2 seems to be unstable for me. So i gave darkice a try with what seems to be a more stable result. I use the standard the standard compiled squeezebox pointing to the default output (according to -l its pointing to pulseaudio?) Code: [default- Playback/recording through the PulseAudio sound server] So i used Code: ./squeezelite -n Test -z -o default and catch the output with darkice pointing to icecast and also to the device=default (the only one working) when starting So now the sound is playing on my hdmi output and it has a stable mp3 stream in icecast. So i'm happy with that. One issue left is there is no song title etc. in the stream. Instead of your metadata script which gave me different results (i must be doing something wrong), someone gave me an ncat/lua script that works also. It seems that darkice can not point to a changing txt file or any metadata in a stream except the parameters in darkice.cfg that go the server. All the info I want shows up in the LMS interface anyway. Maybe I will/can find an option for that. But at least I can now turn off my windows VM for now :). Greetings, Henk. Hellsblade's Profile: http://forums.slimdevices.com/member.php?userid=4283 View this thread: http://forums.slimdevices.com/showthread.php?t=112809 ___ plugins mailing list plugins@lists.slimdevices.com http://lists.slimdevices.com/mailman/listinfo/plugins
Re: [SlimDevices: Plugins] Pipe Squeezelite to Icecast
Here's my full ices config file, minus passwords. Code: 1 /home/jukebox/logs ices.log 2048 4 0 /home/jukebox/ices.pid AutoDJ In Effect RAD10X Robot https://rad10x.com/ stdinpcm 44100 2 1 /home/jukebox/metadata.txt radio.rad10x.com 8080 NoPasswordHere / 0 9 44100 2 And Running: Code: $ parec -v | ices-2.0.3/src/ices ices-conf.xml Opening a recording stream with sample specification 's16le 2ch 44100Hz' and channel map 'front-left,front-right'. Connection established. Stream successfully created. Buffer metrics: maxlength=4194304, fragsize=352800 Using sample spec 's16le 2ch 44100Hz', channel map 'front-left,front-right'. Connected to device Radio.monitor (index: 1, suspended: no). Time: 14452.230 sec; Latency: -1209014 usec. Matt Drown's Profile: http://forums.slimdevices.com/member.php?userid=69476 View this thread: http://forums.slimdevices.com/showthread.php?t=112809 ___ plugins mailing list plugins@lists.slimdevices.com http://lists.slimdevices.com/mailman/listinfo/plugins
Re: [SlimDevices: Plugins] Pipe Squeezelite to Icecast
Hellsblade wrote: > Thanks for the tips. They all work without a problem except for ices2 > > > Code: > > > What do you think the final parec pipe command should look like? The content of ices-conf.xml is in the previous answer. > Greetings Henk> > > > The funny thing that happens when I use the working ices-config.xml > with parec the stream in icecast starts working :rolleyes: > > Code: > > parec -v | ices2 ices-conf.xml > Opening a recording stream with sample specification 's16le 2ch 44100Hz' and channel map 'front-left,front-right'. > Connection established. > Stream successfully created. > Buffer metrics: maxlength=4194304, fragsize=352800 > Using sample spec 's16le 2ch 44100Hz', channel map 'front-left,front-right'. > Connected to device alsa_output.platform-bcm2835_audio.analog-stereo.monitor (index: 1, suspended: no). > Time: 451.531 sec; Latency: -56404 usec. > > > It presents itself as an ogg vorbis stream. And i get audio from it on > the icecast mountpoint. > But the script doesn't catch any metadata. > I throw in the towel :mad: Hellsblade's Profile: http://forums.slimdevices.com/member.php?userid=4283 View this thread: http://forums.slimdevices.com/showthread.php?t=112809 ___ plugins mailing list plugins@lists.slimdevices.com http://lists.slimdevices.com/mailman/listinfo/plugins
Re: [SlimDevices: Plugins] Pipe Squeezelite to Icecast
ralphy wrote: > You need to append .monitor to the parec device. Thanks for the tips. They all work without a problem except for ices2 Code: parec -v | ices2 ices-conf.xml Opening a recording stream with sample specification 's16le 2ch 44100Hz' and channel map 'front-left,front-right'. Connection established. Stream successfully created. Buffer metrics: maxlength=4194304, fragsize=352800 Using sample spec 's16le 2ch 44100Hz', channel map 'front-left,front-right'. Connected to device alsa_output.platform-bcm2835_audio.analog-stereo.monitor (index: 1, suspended: no). [2022-02-23 13:34:28] INFO ices-core/main IceS 2.0.3 started... [2022-02-23 13:34:28] EROR playlist-builtin/playlist_open_module No playlist type given, cannot initialise playlist module [2022-02-23 13:34:28] EROR input/input_loop Couldn't initialise input module "playlist" [2022-02-23 13:34:28] INFO ices-core/main Shutdown complete What do you think the final parec pipe command should look like? The content of ices-conf.xml is in the previous answer. Greetings Henk Hellsblade's Profile: http://forums.slimdevices.com/member.php?userid=4283 View this thread: http://forums.slimdevices.com/showthread.php?t=112809 ___ plugins mailing list plugins@lists.slimdevices.com http://lists.slimdevices.com/mailman/listinfo/plugins
Re: [SlimDevices: Plugins] Pipe Squeezelite to Icecast
bpa wrote: > You could enable logging for output on squeezelite to see if (a) Radio > is opened ok and (ii) data is sent to Radio. Good tip I got an error about libmad.so. Code: [12:56:49.649937] load_mad:375 dlerror: libmad.so.0: cannot open shared object file: No such file or directory After installing libmad0 and restricting the the stream to only use mp3 (why not) it started streaming. Code: ./oldsqueezelite -n RPI -d all=debug -f test.log -c mp3 -o Radio & Ices2 still gives me the same error Code: parec | ices2 ices-conf.xml [2022-02-23 13:03:58] INFO ices-core/main IceS 2.0.3 started... [2022-02-23 13:03:58] EROR playlist-builtin/playlist_open_module No playlist type given, cannot initialise playlist module [2022-02-23 13:03:58] EROR input/input_loop Couldn't initialise input module "playlist" [2022-02-23 13:03:58] INFO ices-core/main Shutdown complete Code: 1 /home/pi/Templates/sqlite ices.log 4 1 /home/pi/Templates/sqlite/ices.pid stdinpcm 44100 2 1 /home/pi/Templates/sqlite/metadata.txt Hellsblade's Profile: http://forums.slimdevices.com/member.php?userid=4283 View this thread: http://forums.slimdevices.com/showthread.php?t=112809 ___ plugins mailing list plugins@lists.slimdevices.com http://lists.slimdevices.com/mailman/listinfo/plugins
Re: [SlimDevices: Plugins] Pipe Squeezelite to Icecast
You need to append .monitor to the parec device. Code: parec -v -d Radio -r test.pcm Opening a recording stream with sample specification 's16le 2ch 44100Hz' and channel map 'front-left,front-right'. Connection established. Stream error: No such entity Code: parec -v -d Radio.monitor -r test.pcm Opening a recording stream with sample specification 's16le 2ch 44100Hz' and channel map 'front-left,front-right'. Connection established. Stream successfully created. Buffer metrics: maxlength=4194304, fragsize=352800 Using sample spec 's16le 2ch 44100Hz', channel map 'front-left,front-right'. Connected to device Radio.monitor (7, not suspended). I'd also suggest that you enable logging, "lock-down" squeezelite-pulse to 44100Hz, tell the server that squeezelite support a higher sample rate so it doesn't resample and then have squeezelite resample any stream that is not 44100. You might also need to daemonize (run it in the background) squeezelite using the -z option. squeezelite -d all=debug -f squeezelite.log -Z 384000 -r 44100-44100 -u E You can play the pcm file using aplay to confirm. Well I don't have icecast setup. Code: aplay -f cd test.pcm Playing raw data 'test.pcm' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo Ralphy *1*-Touch, *5*-Classics, *3*-Booms, *2*-UE Radio 'Squeezebox client builds' (https://sourceforge.net/projects/lmsclients/files/) 'donations' (https://www.paypal.com/cgi-bin/webscr?cmd=_donations=LL5P6365KQEXN=CA_name=Squeezebox%20client%20builds_code=USD=PP%2dDonationsBF%3abtn_donate_SM%2egif%3aNonHosted) always appreciated. ralphy's Profile: http://forums.slimdevices.com/member.php?userid=3484 View this thread: http://forums.slimdevices.com/showthread.php?t=112809 ___ plugins mailing list plugins@lists.slimdevices.com http://lists.slimdevices.com/mailman/listinfo/plugins
Re: [SlimDevices: Plugins] Pipe Squeezelite to Icecast
You could enable logging for output on squeezelite to see if (a) Radio is opened ok and (ii) data is sent to Radio. bpa's Profile: http://forums.slimdevices.com/member.php?userid=1806 View this thread: http://forums.slimdevices.com/showthread.php?t=112809 ___ plugins mailing list plugins@lists.slimdevices.com http://lists.slimdevices.com/mailman/listinfo/plugins
Re: [SlimDevices: Plugins] Pipe Squeezelite to Icecast
Matt Drown wrote: > You can specify the LMS server from squeezelite command line if it isn't > showing up, obviously update the ip address to your server ip. > > Code: > > squeezelite -s 192.168.0.100 -o Radio > > it's working for me already with the -n option, but it does not generate output. When I use the non pulse version and start it with Code: squeezelite -n HDMI -o hw:CARD=b2,DEV=0 & I get output on my HDMI port (great quality btw) So the problem is with the pulse version. The 'Radio' output is listed with -l and accepted but not used as a stream Matt Drown wrote: > When you run ICES it will generate the PID file, as long as you have it > specified in the ICES config file. Then your metadata script will grab > it. The problem here it is not accepting my playlist module, so no pidfile; Code: [2022-02-23 10:47:31] INFO ices-core/main IceS 2.0.3 started... [2022-02-23 10:47:31] EROR playlist-builtin/playlist_open_module No playlist type given, cannot initialise playlist module [2022-02-23 10:47:31] EROR input/input_loop Couldn't initialise input module "playlist" If i use ices together with a config file for Icecast (only difference there is a stream included) It works normal. Matt Drown wrote: > If running "PAREC" by itself doesn't do anything, then ICES won't be > able to send any sound. PAREC by default will pull from the > pulse-audio and send PCM data out STDOUT onto your terminal window if > you just run it without "piping" it to ICES. When i do parec -v without the pipe it shows its streaming. > Make sure that squeezelite is working, and you are sending audio there > (there will be no sound, but LMS will show you playing). That only works for me with the standard version. I've been reading Jackd is also an option, but very hard to configure without a GUI. So my next step will be installing a Virtual Debian machine with a GUI, and see if I can get it work from there. Thanks for the help. Greetings Henk. Hellsblade's Profile: http://forums.slimdevices.com/member.php?userid=4283 View this thread: http://forums.slimdevices.com/showthread.php?t=112809 ___ plugins mailing list plugins@lists.slimdevices.com http://lists.slimdevices.com/mailman/listinfo/plugins
Re: [SlimDevices: Plugins] Pipe Squeezelite to Icecast
You can specify the LMS server from squeezelite command line if it isn't showing up, obviously update the ip address to your server ip. Code: squeezelite -s 192.168.0.100 -o Radio When you run ICES it will generate the PID file, as long as you have it specified in the ICES config file. Then your metadata script will grab it. I'm running ICES2.0.3, so yes, ICES2 is the correct one. If running "PAREC" by itself doesn't do anything, then ICES won't be able to send any sound. PAREC by default will pull from the pulse-audio and send PCM data out STDOUT onto your terminal window if you just run it without "piping" it to ICES. Make sure that squeezelite is working, and you are sending audio there (there will be no sound, but LMS will show you playing). Hellsblade wrote: > The last three commands are giving me some problems; > Squeezelite -o Radio did not show up in LMS (i used the precompiled > pulsaudio version from sourceforge squeezelite-pulse-1.9.9.1392-armhf). > No errors when executing the command. When I added -n pulse -z > (daemonize) LMS finds it but i doesn't start playing when i add a > playlist > > Metadata script starts and fills with a different macaddress/player, but > first needed to do a touch on the pidfile. because it doesn't exist > (yet) > > I could not find ices for the pi. so I installed ices2, but it can not > read the input file (broken pipe). > > So i think I am close, but need a little help to configure ices2 and or > squeezelite. > > Thanks in advance. > > Greetings Henk Matt Drown's Profile: http://forums.slimdevices.com/member.php?userid=69476 View this thread: http://forums.slimdevices.com/showthread.php?t=112809 ___ plugins mailing list plugins@lists.slimdevices.com http://lists.slimdevices.com/mailman/listinfo/plugins
Re: [SlimDevices: Plugins] Pipe Squeezelite to Icecast
Matt Drown wrote: > Any questions, feel free to ask. > > > Code: > > > #Startup Pulseaudio > pulseaudio --start > > #Create the Radio "sink" > pactl load-module module-null-sink sink_name=Radio sink_properties="device.description='Radio'" > > #Run squeezelite, ensure that you have the pulse audio version > squeezelite -o Radio > > #Run the metadata-update.sh script in the background (the script above)./m > ./metadata-update.sh & > > #Run PAREC piped into ICES > parec | ices ices-conf.xml > > > The last three commands are giving me some problems; Squeezelite -o Radio did not show up in LMS (i used the precompiled pulsaudio version from sourceforge). No errors when executing the command. When I added -n pulse -z (daemonize) LMS finds it but i doesn't start playing when i add a playlist Metadata script starts and fills with a different macaddress/player, but first needed to do a touch on the pidfile. because it doesn't exist (yet) I could not find ices for the pi. so I installed ices2, but it can not read the input file (broken pipe). So i think I am close, but need a little help to configure ices2 and or squeezelite. Thanks in advance. Greetings Henk Hellsblade's Profile: http://forums.slimdevices.com/member.php?userid=4283 View this thread: http://forums.slimdevices.com/showthread.php?t=112809 ___ plugins mailing list plugins@lists.slimdevices.com http://lists.slimdevices.com/mailman/listinfo/plugins
Re: [SlimDevices: Plugins] Pipe Squeezelite to Icecast
Here's what's working right now for me, including metadata updates to an Azuracast radio. It's slightly above "hack" status, but appears to be working. I get really small pops every now and again, and I haven't narrowed it down to metadata updates, or something with buffering, or just the inherent issues with flac->pcm->ogg->mp3 workflow here. You can listen at https://rad10x.com/ To get it working, configure your ices.conf with the delta below. Save the metadata-update-script.sh, make it executable, and just run it in the background, it doesn't output anything normally. Then setup the pulseaudio, squeezelite, and parec piped to ices. Queue music up and your should see things operating. The script to do the metadata does no error checking, so permissions, etc, may throw it off. But it should be pretty clear what it's doing. I didn't bother getting rid of the quotes in the Title/Artist, that's for the next iteration. Any questions, feel free to ask. ices-conf.xml file. You need to make sure your PID file matches the Metatdata update script below, and your input needs a file to read metadata from. This is not the complete config, just the items you need to ensure you have. Update the file names as needed. Code: /home/jukebox/ices.pid stdinpcm 44100 2 1 /home/jukebox/metadata.txt Metadata Update bash script. MAC needs to updated to the MAC address of the squeezebox client (you can look at the LMS Settings->Information Tab to find it. METATIME is how often to scan for metadata updates. ICESPID is the pid file written, so we can send the USR1 signal to retransmit the metadata. METAFILE needs to match the ICES.CONF file above. METATEMP is just used for temporary caching, we only update metadata on song changes. Code: #!/bin/bash LMSIP=127.0.0.1 MAC=10:bf:48:7b:36:c3 METATIME=5 ICESPID=/home/jukebox/ices.pid METAFILE=/home/jukebox/metadata.txt METATEMP=/home/jukebox/metatemp.txt while [ 1 ] do command='{"id": 1, "method": "slim.request", "params":["'$MAC'", ["'artist'", "'?'"]]}' artist=`eval "curl -q -s -X POST -d '"$command"' "$LMSIP":9000/jsonrpc.js"` echo $artist |grep -Po '"_artist":".*?"' | cut -d: -f 2 >$METATEMP command='{"id": 2, "method": "slim.request", "params":["'$MAC'", ["'title'", "'?'"]]}' title=`eval "curl -q -s -X POST -d '"$command"' "$LMSIP":9000/jsonrpc.js"` echo $title | grep -Po '"_title":".*?"' | cut -d: -f 2 >>$METATEMP diff -q ${METATEMP} ${METAFILE} >/dev/null status=$? if [ $status -ne 0 ] ; then cp -f ${METATEMP} ${METAFILE} kill -USR1 `cat ${ICESPID}` #echo "Updating Track Info" fi sleep $METATIME done Pulse Radio Setup - Squeezelite outputs audio to "Radio" channel, and PAREC pulls PCM from it: Code: #Startup Pulseaudio pulseaudio --start #Create the Radio "sink" pactl load-module module-null-sink sink_name=Radio sink_properties="device.description='Radio'" #Run squeezelite, ensure that you have the pulse audio version squeezelite -o Radio #Run the metadata-update.sh script in the background (the script above)./m ./metadata-update.sh & #Run PAREC piped into ICES parec | ices ices-conf.xml Matt Drown's Profile: http://forums.slimdevices.com/member.php?userid=69476 View this thread: http://forums.slimdevices.com/showthread.php?t=112809 ___ plugins mailing list plugins@lists.slimdevices.com http://lists.slimdevices.com/mailman/listinfo/plugins
Re: [SlimDevices: Plugins] Pipe Squeezelite to Icecast
d6jg wrote: > I have the json metadata working but not the Squeezelite piped to > Icecast. Perhaps we could trade the two? d6jg, maybe I'm misreading what you are working on, but in case it might be helpful, I messed around with snd-aloop (as bpa mentioned) some time ago 'in this thread.' (https://forums.slimdevices.com/showthread.php?112536-Alpine-Linux-Bluetooth-and-Squeezelite-Experiments) The fossil link I posted in that thread (which was supposed to be to my versioned source files) doesn't work, I took that stuff down but if you want me to verify if the below asound.conf (copied from the thread) was my final version I can do that. I said in that thread: > I've tested everything again and it's all working well. I paired my > headphones, my phone, and my wife's phone and was able to play prime > music from my phone, youtube audio from my wife's phone, music from > squeezelite all at the same time streamed to my bluetooth headset > synchronized with the onboard audio. Not that you'd ever want to do > that, but it worked. Contents of /etc/asound.conf Code: # duplicate audio to all Loopback channels pcm.!default plug:aloopx pcm.aloopx { type route; slave.pcm { type multi; slaves.a.pcm "aloop0"; slaves.b.pcm "aloop1"; slaves.c.pcm "aloop2"; slaves.d.pcm "aloop3"; slaves.e.pcm "aloop4"; slaves.f.pcm "aloop5"; slaves.g.pcm "aloop6"; slaves.h.pcm "aloop7"; slaves.a.channels 2; slaves.b.channels 2; slaves.c.channels 2; slaves.d.channels 2; slaves.e.channels 2; slaves.f.channels 2; slaves.g.channels 2; slaves.h.channels 2; bindings.0.slave a; bindings.0.channel 0; bindings.1.slave a; bindings.1.channel 1; bindings.2.slave b; bindings.2.channel 0; bindings.3.slave b; bindings.3.channel 1; bindings.4.slave c; bindings.4.channel 0; bindings.5.slave c; bindings.5.channel 1; bindings.6.slave d; bindings.6.channel 0; bindings.7.slave d; bindings.7.channel 1; bindings.8.slave e; bindings.8.channel 0; bindings.9.slave e; bindings.9.channel 1; bindings.10.slave f; bindings.10.channel 0; bindings.11.slave f; bindings.11.channel 1; bindings.12.slave g; bindings.12.channel 0; bindings.13.slave g; bindings.13.channel 1; bindings.14.slave h; bindings.14.channel 0; bindings.15.slave h; bindings.15.channel 1; } ttable.0.0 1; ttable.1.1 1; ttable.0.2 1; ttable.1.3 1; ttable.0.4 1; ttable.1.5 1; ttable.0.6 1; ttable.1.7 1; ttable.0.8 1; ttable.1.9 1; ttable.0.10 1; ttable.1.11 1; ttable.0.12 1; ttable.1.13 1; ttable.0.14 1; ttable.1.15 1; } pcm.aloop0 { type dmix ipc_key 1024 slave { pcm "hw:Loopback,0,0" rate 48000 channels 2 period_size 1024 buffer_size 8192 } bindings { 0 0 1 1 } } pcm.aloop1 { type dmix ipc_key 2048 slave { pcm "hw:Loopback,0,1" rate 48000 channels 2 period_size 1024 buffer_size 8192 } bindings { 0 0 1 1 } } pcm.aloop2 { type dmix ipc_key 4096 slave { pcm "hw:Loopback,0,2" rate 48000 channels 2 period_size 1024 buffer_size 8192 } bindings { 0 0 1 1 } } pcm.aloop3 { type dmix ipc_key 8092 slave { pcm "hw:Loopback,0,3" rate 48000 channels 2 period_size 1024 buffer_size 8192 } bindings { 0 0 1 1 } } pcm.aloop4 { type dmix ipc_key 16184 slave { pcm "hw:Loopback,0,4" rate 48000 channels 2 period_size 1024 buffer_size 8192 } bindings { 0 0 1 1 } } pcm.aloop5 { type dmix ipc_key 32368 slave { pcm "hw:Loopback,0,5" rate 48000 channels 2 period_size 1024 buffer_size 8192 } bindings { 0 0 1 1 } } pcm.aloop6 { type dmix ipc_key 64736 slave { pcm "hw:Loopback,0,6" rate 48000 channels 2 period_size 1024 buffer_size 8192 } bindings { 0 0 1 1 } } pcm.aloop7 { type dmix ipc_key 129472 slave { pcm "hw:Loopback,0,7" rate 48000 channels 2 period_size 1024 buffer_size 8192 } bindings { 0 0 1 1 } } sodface's Profile: http://forums.slimdevices.com/member.php?userid=19057 View this thread: http://forums.slimdevices.com/showthread.php?t=112809 ___ plugins mailing list plugins@lists.slimdevices.com http://lists.slimdevices.com/mailman/listinfo/plugins
Re: [SlimDevices: Plugins] Pipe Squeezelite to Icecast
Matt Drown wrote: > > I don't have metadata running, was looking to grab the info from the > json, but having some issues crafting up the correct messages, if anyone > has this working, please let me know. I just want to extract current > playing title/artist, and dump into a file. > > Hope this helps someone. Here's something I hacked together a while back. Only requirement is cJSON, which is a very basic json parser in C. current.c: Code: #include #include #include #include #include /* socket, connect */ #include /* struct sockaddr_in, struct sockaddr */ #include /* struct hostent, gethostbyname */ #include "cJSON.h" #include "lms.h" void error(const char *msg) { perror(msg); exit(0); } int post(char *host, int portno, char *q, char *buf, int buflen) { int i; struct hostent *server; struct sockaddr_in serv_addr; int sockfd, bytes, sent, received, total, message_size; char *message; char *response = buf; /* How big is the message? */ message_size=0; message_size+=strlen("%s %s HTTP/1.0\r\nPOST /jsonrpc.js"); message_size+=strlen(q)+strlen("\r\n"); message_size+=strlen("Content-Length: %d\r\n")+10; /* content length */ message_size+=strlen("\r\n"); /* blank line */ /* allocate space for the message */ message=malloc(message_size); /* fill in the parameters */ sprintf(message,"POST /jsonrpc.js HTTP/1.0\r\n"); sprintf(message+strlen(message),"Content-Length: %d\r\n",strlen(q)); strcat(message,"\r\n");/* blank line */ strcat(message,q); strcat(message,"\r\n"); /* create the socket */ sockfd = socket(AF_INET, SOCK_STREAM, 0); if (sockfd < 0) error("ERROR opening socket"); /* lookup the ip address */ server = gethostbyname(host); if (server == NULL) error("ERROR, no such host"); /* fill in the structure */ memset(_addr,0,sizeof(serv_addr)); serv_addr.sin_family = AF_INET; serv_addr.sin_port = htons(portno); memcpy(_addr.sin_addr.s_addr,server->h_addr,server->h_length); /* connect the socket */ if (connect(sockfd,(struct sockaddr *)_addr,sizeof(serv_addr)) < 0) error("ERROR connecting"); /* send the request */ total = strlen(message); sent = 0; do { bytes = write(sockfd,message+sent,total-sent); if (bytes < 0) error("ERROR writing message to socket"); if (bytes == 0) break; sent+=bytes; } while (sent < total); /* receive the response */ memset(response,0,buflen); total = buflen-1; received = 0; do { bytes = read(sockfd,response+received,total-received); if (bytes < 0) error("ERROR reading response from socket"); if (bytes == 0) break; received+=bytes; } while (received < total); /* * if the number of received bytes is the total size of the * array then we have run out of space to store the response * and it hasn't all arrived yet - so that's a bad thing */ if (received == total) error("ERROR storing complete response from socket"); /* close the socket */ close(sockfd); free(message); return 0; } int main(void) { char query[2048]; char param[1024]; char decoded[2048]; char *q = query; char *p = param; char *d = decoded; char *r; int arraylen, i; int status = 1; cJSON *results = NULL; cJSON *result = NULL; cJSON *items = NULL; cJSON *item = NULL; cJSON *json = NULL; char *host = "192.168.68.121"; int port = 9000; q = "{ \"id\": 1, \"method\": \"slim.request\", \"params\": [\"4c:e1:73:42:26:0c\",[\"path\", \"?\"]]}"; post(host,port,q,decoded,2048); r = strstr(decoded,"{"); strcpy(decoded,r); json = cJSON_Parse(decoded); if (json == NULL) { const char *error_ptr = cJSON_GetErrorPtr(); if (error_ptr != NULL) { fprintf(stderr, "Error before %s\n", error_ptr); } status = 0; } results = cJSON_GetObjectItemCaseSensitive(json, "result"); cJSON_ArrayForEach(result, results) { cJSON *path = cJSON_GetObjectItemCaseSensitive(result, "_path"); if (cJSON_IsString(result) && (result->valuestring != NULL)) { p = result->valuestring; } else { printf("Error getting path\n"); } } query[0] = '\0'; sprintf(query,"{\"method\":\"slim.request\",\"params\":[\"4c:e1:73:42:26:0c\",[\"songinfo\",0,99,\"url:%s\"]]}",p); cJSON_Delete(json); p = param; post(host,port,query,decoded,2048); r = strstr(decoded,"{"); strcpy(decoded,r); json = cJSON_Parse(decoded); if (json == NULL) { const char *error_ptr = cJSON_GetErrorPtr(); if (error_ptr != NULL) { fprintf(stderr, "Error before %s\n", error_ptr); } status = 0; } results = cJSON_GetObjectItem(json, "result"); items = cJSON_GetObjectItem(results, "songinfo_loop"); cJSON_ArrayForEach(item, items) { if (cJSON_IsString(item->child) && (item->child->valuestring != NULL)) { printf("%s=%s\n",
Re: [SlimDevices: Plugins] Pipe Squeezelite to Icecast
For some reason my attempt at sending "macaddr title ?" in json wasn't working, while sending other commands are. I assume i'm mis-formatting something in my json, any pointers? Matt Drown's Profile: http://forums.slimdevices.com/member.php?userid=69476 View this thread: http://forums.slimdevices.com/showthread.php?t=112809 ___ plugins mailing list plugins@lists.slimdevices.com http://lists.slimdevices.com/mailman/listinfo/plugins
Re: [SlimDevices: Plugins] Pipe Squeezelite to Icecast
Matt Drown wrote: > Paste in json docs, would love to see them. > > Let me know if you have any issues with the above docs. This is all > working on squeezelite on centos8-stream for me. Ran it for 24 hours > without issue into streaming radio. Its more complicated than that. In my implementation we use a reverse proxy and an instance of node.js. A detected track change triggers calls via node.js to the fully Proxied LMS and grabs all the metadata and triggers an MAI lookup for lyrics, review and bio. Jim https://jukeradio.double6.net VB2.4[/B] STORAGE *QNAP TS419P (NFS) [B]Living Room* Joggler & Pi4/Khadas -> Onkyo TXNR686 -> Celestion F20s *Office* Joggler & Pi3 -> Denon RCD N8 -> Celestion F10s *Dining Room* SB Radio *Bedroom (Bedside)* Pi Zero+DAC ->ToppingTP21 ->AKG Headphones *Bedroom (TV) & Bathroom* SB Touch ->Denon AVR ->Mordaunt Short M10s + Kef ceiling speakers *Guest Room* Joggler > Topping Amp -> Wharfedale Modus Cubes d6jg's Profile: http://forums.slimdevices.com/member.php?userid=44051 View this thread: http://forums.slimdevices.com/showthread.php?t=112809 ___ plugins mailing list plugins@lists.slimdevices.com http://lists.slimdevices.com/mailman/listinfo/plugins
Re: [SlimDevices: Plugins] Pipe Squeezelite to Icecast
d6jg wrote: > I have the json metadata working but not the Squeezelite piped to > Icecast. Perhaps we could trade the two? Paste in json docs, would love to see them. Let me know if you have any issues with the above docs. This is all working on squeezelite on centos8-stream for me. Ran it for 24 hours without issue into streaming radio. Matt Drown's Profile: http://forums.slimdevices.com/member.php?userid=69476 View this thread: http://forums.slimdevices.com/showthread.php?t=112809 ___ plugins mailing list plugins@lists.slimdevices.com http://lists.slimdevices.com/mailman/listinfo/plugins
Re: [SlimDevices: Plugins] Pipe Squeezelite to Icecast
Matt Drown wrote: > I went to try this and have it working on a x86 box with the following > setup: > > > Code: > > #Startup Pulseaudio > pulseaudio --start > > #Create the Radio "sink" > pactl load-module module-null-sink sink_name=Radio sink_properties="device.description='Radio'" > > #Run squeezelite, ensure that you have the pulse audio version > squeezelite -o Radio > > #Run PAREC piped into ICES > parec | ices ices-conf.xml > > > > > Code: > > #ices.conf input section > > stdinpcm > 44100 > 2 > > > > > I don't have metadata running, was looking to grab the info from the > json, but having some issues crafting up the correct messages, if > anyone has this working, please let me know. I just want to extract > current playing title/artist, and dump into a file. > > Hope this helps someone. I have the json metadata working but not the Squeezelite piped to Icecast. Perhaps we could trade the two? Jim https://jukeradio.double6.net VB2.4[/B] STORAGE *QNAP TS419P (NFS) [B]Living Room* Joggler & Pi4/Khadas -> Onkyo TXNR686 -> Celestion F20s *Office* Joggler & Pi3 -> Denon RCD N8 -> Celestion F10s *Dining Room* SB Radio *Bedroom (Bedside)* Pi Zero+DAC ->ToppingTP21 ->AKG Headphones *Bedroom (TV) & Bathroom* SB Touch ->Denon AVR ->Mordaunt Short M10s + Kef ceiling speakers *Guest Room* Joggler > Topping Amp -> Wharfedale Modus Cubes d6jg's Profile: http://forums.slimdevices.com/member.php?userid=44051 View this thread: http://forums.slimdevices.com/showthread.php?t=112809 ___ plugins mailing list plugins@lists.slimdevices.com http://lists.slimdevices.com/mailman/listinfo/plugins
Re: [SlimDevices: Plugins] Pipe Squeezelite to Icecast
I went to try this and have it working on a x86 box with the following setup: Code: #Startup Pulseaudio pulseaudio --start #Create the Radio "sink" pactl load-module module-null-sink sink_name=Radio sink_properties="device.description='Radio'" #Run squeezelite, ensure that you have the pulse audio version squeezelite -o Radio #Run PAREC piped into ICES parec | ices ices-conf.xml Code: #ices.conf input section stdinpcm 44100 2 I don't have metadata running, was looking to grab the info from the json, but having some issues crafting up the correct messages, if anyone has this working, please let me know. I just want to extract current playing title/artist, and dump into a file. Hope this helps someone. Matt Drown's Profile: http://forums.slimdevices.com/member.php?userid=69476 View this thread: http://forums.slimdevices.com/showthread.php?t=112809 ___ plugins mailing list plugins@lists.slimdevices.com http://lists.slimdevices.com/mailman/listinfo/plugins
Re: [SlimDevices: Plugins] Pipe Squeezelite to Icecast
bpa wrote: > IIRC if you try to pipe STDOUT from squeezelite - you get get problems - > flow control, silence etc. Can't remember the detail but is has been > tried before > > Do not use parec using STDIN is default - specify the pulseaudio input > aka sink. > > Best to play squeezelite into a pulse audio device (i.e. sink) and then > use parec with "-monitor-stream" (a sink) or "-d" to capture the audio > from source. > > Command line "pactl list" will show what's available/happening or GUI > "Pulseaudio Volume Control" to see the device being used. Look at > before and after starting to play something on a a squeezelite (from a > command line under same parent process e.g. from a command shell) user - > you'll see the devices. > > An alternative to Pulseaudio would be to use ALSA loop devices - > squeezelite play to an ALSA loop device and then record from matching > source. Maybe simpler to use than pulseaudio once loop device is setup > (e.g. snd-aloop) - not sure how to set stream particulars - probably > force them from squeezelite . Other ALSA way - snoop on a real output > device. Thanks VB2.4[/B] STORAGE *QNAP TS419P (NFS) [B]Living Room* - Joggler & SB3 -> Onkyo TS606 -> Celestion F20s *Office* - Pi3+Sreen -> Sony TAFE320 -> Celestion F10s / Pi2+DAC & SB3 -> Onkyo CRN755 -> Wharfedale Modus Cubes *Dining Room* -> SB Boom *Kitchen* -> UE Radio (upgraded to SB Radio) *Bedroom (Bedside)* - Pi2+DAC ->ToppingTP21 ->AKG Headphones *Bedroom (TV)* - SB Touch ->Sherwood AVR ->Mordaunt Short M10s Everything controlled by iPeng d6jg's Profile: http://forums.slimdevices.com/member.php?userid=44051 View this thread: http://forums.slimdevices.com/showthread.php?t=112809 ___ plugins mailing list plugins@lists.slimdevices.com http://lists.slimdevices.com/mailman/listinfo/plugins
Re: [SlimDevices: Plugins] Pipe Squeezelite to Icecast
d6jg wrote: > I have had a bit of a read and I see that pacrec can be configured to > take input from STDIN. If I sent Squeezelite to STDOUT would that work I > wonder. > Thanks for the note about running as a service IIRC if you try to pipe STDOUT from squeezelite - you get get problems - flow control, silence etc. Can't remember the detail but is has been tried before Do not use parec using STDIN is default - specify the pulseaudio input aka sink. Best to play squeezelite into a pulse audio device (i.e. sink) and then use parec with "-monitor-stream" (a sink) or "-d" to capture the audio from source. Command line "pactl list" will show what's available/happening or GUI "Pulseaudio Volume Control" to see the device being used. Look at before and after starting to play something on a a squeezelite (from a command line under same parent process e.g. from a command shell) user - you'll see the devices. bpa's Profile: http://forums.slimdevices.com/member.php?userid=1806 View this thread: http://forums.slimdevices.com/showthread.php?t=112809 ___ plugins mailing list plugins@lists.slimdevices.com http://lists.slimdevices.com/mailman/listinfo/plugins
Re: [SlimDevices: Plugins] Pipe Squeezelite to Icecast
bpa wrote: > Using pulseaudio - squeezelite cannot be run as a service unless > pulseaudio is configured system wide. The normal and recommended config > for pulseaudio is on a per user see > https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/WhatIsWrongWithSystemWide/ I have had a bit of a read and I see that pacrec can be configured to take input from STDIN. If I sent Squeezelite to STDOUT would that work I wonder. Thanks for the note about running as a service VB2.4[/B] STORAGE *QNAP TS419P (NFS) [B]Living Room* - Joggler & SB3 -> Onkyo TS606 -> Celestion F20s *Office* - Pi3+Sreen -> Sony TAFE320 -> Celestion F10s / Pi2+DAC & SB3 -> Onkyo CRN755 -> Wharfedale Modus Cubes *Dining Room* -> SB Boom *Kitchen* -> UE Radio (upgraded to SB Radio) *Bedroom (Bedside)* - Pi2+DAC ->ToppingTP21 ->AKG Headphones *Bedroom (TV)* - SB Touch ->Sherwood AVR ->Mordaunt Short M10s Everything controlled by iPeng d6jg's Profile: http://forums.slimdevices.com/member.php?userid=44051 View this thread: http://forums.slimdevices.com/showthread.php?t=112809 ___ plugins mailing list plugins@lists.slimdevices.com http://lists.slimdevices.com/mailman/listinfo/plugins
Re: [SlimDevices: Plugins] Pipe Squeezelite to Icecast
d6jg wrote: > Thanks bpa. Thats somewhere to start. Using pulseaudio - squeezelite cannot be run as a service unless pulseaudio is configured system wide. The normal and recommended config for pulseaudio is on a per user see https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/WhatIsWrongWithSystemWide/ bpa's Profile: http://forums.slimdevices.com/member.php?userid=1806 View this thread: http://forums.slimdevices.com/showthread.php?t=112809 ___ plugins mailing list plugins@lists.slimdevices.com http://lists.slimdevices.com/mailman/listinfo/plugins
Re: [SlimDevices: Plugins] Pipe Squeezelite to Icecast
bpa wrote: > Probably using pulseaudio and then using parec providing the source for > icecast Thanks bpa. Thats somewhere to start. VB2.4[/B] STORAGE *QNAP TS419P (NFS) [B]Living Room* - Joggler & SB3 -> Onkyo TS606 -> Celestion F20s *Office* - Pi3+Sreen -> Sony TAFE320 -> Celestion F10s / Pi2+DAC & SB3 -> Onkyo CRN755 -> Wharfedale Modus Cubes *Dining Room* -> SB Boom *Kitchen* -> UE Radio (upgraded to SB Radio) *Bedroom (Bedside)* - Pi2+DAC ->ToppingTP21 ->AKG Headphones *Bedroom (TV)* - SB Touch ->Sherwood AVR ->Mordaunt Short M10s Everything controlled by iPeng d6jg's Profile: http://forums.slimdevices.com/member.php?userid=44051 View this thread: http://forums.slimdevices.com/showthread.php?t=112809 ___ plugins mailing list plugins@lists.slimdevices.com http://lists.slimdevices.com/mailman/listinfo/plugins
Re: [SlimDevices: Plugins] Pipe Squeezelite to Icecast
Probably using pulseaudio and then using parec providing the source for icecast bpa's Profile: http://forums.slimdevices.com/member.php?userid=1806 View this thread: http://forums.slimdevices.com/showthread.php?t=112809 ___ plugins mailing list plugins@lists.slimdevices.com http://lists.slimdevices.com/mailman/listinfo/plugins
[SlimDevices: Plugins] Pipe Squeezelite to Icecast
Can anyone help? Im looking for a way of piping Squeezelite output to an Icecast server. I can do it by using a players audio output into the input of the Icecast server via Liquidsoap but Im looking for a method of doing it without going analogue at any stage. I can do it using Squeezelite and an encoder on a Windows PC so there must be a way in Linux (Centos 8) preferably not using any gui. Anyone? VB2.4[/B] STORAGE *QNAP TS419P (NFS) [B]Living Room* - Joggler & SB3 -> Onkyo TS606 -> Celestion F20s *Office* - Pi3+Sreen -> Sony TAFE320 -> Celestion F10s / Pi2+DAC & SB3 -> Onkyo CRN755 -> Wharfedale Modus Cubes *Dining Room* -> SB Boom *Kitchen* -> UE Radio (upgraded to SB Radio) *Bedroom (Bedside)* - Pi2+DAC ->ToppingTP21 ->AKG Headphones *Bedroom (TV)* - SB Touch ->Sherwood AVR ->Mordaunt Short M10s Everything controlled by iPeng d6jg's Profile: http://forums.slimdevices.com/member.php?userid=44051 View this thread: http://forums.slimdevices.com/showthread.php?t=112809 ___ plugins mailing list plugins@lists.slimdevices.com http://lists.slimdevices.com/mailman/listinfo/plugins