Hello;

I can’t even begin to figure out what is happing here. I have a win32 gen of 
Liquidsoap. I have tried to do a simple command  “Liquidsoap 
Out(single(‘xxx.mp3’))”. The command appears to execute then hangs with no 
audio playing. If I use the same command with a streaming server as source it 
plays perfectly! Is there something I’m missing??? BTW I’ve tested a number of 
files with different formats with no success.

Any help would be greatly appreciated.

Best

Joe Panarello

 

From: Martin Knapp [mailto:[email protected]] 
Sent: Wednesday, December 06, 2017 5:06 PM
To: [email protected]
Subject: Re: [Savonet-users] on_blank for automatic Raspi shutdown after vinyl 
streaming?

 

 

Hi Nick (I repost my answer because I just got a notification about its being 
to big)





The problem is that LS won‘t start any longer when I add the cod to the liq 
file.

Even if I only add





IsStarted = false





it doesn‘t work anymore.





What I have now is (I took out the = you‘d put after def dostartup() becuase I 
thought it‘s a typo?):





#!/usr/bin/liquidsoap

# set the path and permissions for the logfile

set("log.file.path","/var/log/liquidsoap/phono.log")

set("log.file.perms",777)

#set("log.unix_timestamps",true)





#input from soundcard

phono = input.alsa(bufferize=true,fallible=false,device="hw:0")





isStarted = false





def dostartup()

  # We have started playing, so set the flag

  isStarted := true

end





def handler()

  if !isStarted then

    system("/etc/liquidsoap/shut_on_blank.sh")

  end

end





source = on_blank(

                        max_blank=60.0,

                on_noise=dostartup,

                        handler,

                        phono

                        )





#stream it to local icecast, default port and password

output.icecast(%ogg(%flac(samplerate=44100,channels=2,compression=5,bits_per_sample=16)),
 mount="/phono", name="Phono", format="audio/ogg", description="Turntable 
FLAC", url="http://192.168.178.200 <http://192.168.178.200&/#8221> &#8221;", 
genre = "Misc", source)





Regards

Martin


Am 06.12.2017 um 22:49 schrieb Nicholas Vrtis <[email protected]>:

Yes.. what you have should work.  Didn't include the source statement in my 
notes, since I was just trying to give the example on how to set/access 
variables in functions.

 

Nick

 

On Wed, Dec 6, 2017 at 4:36 PM, Martin Knapp <[email protected]> wrote:

Thanks Nick, but isn‘t the on_noise part lacking in your suggestion, the one 
that is meant to trigger dostartup?

Could it be integrated this way?

 

source = on_blank(

max_blank=60.0,

                on_noise=dostartup,

handler,

phono

)

 

Regards

Martin


Am 06.12.2017 um 22:02 schrieb Nicholas Vrtis <[email protected]>:

Hi Martin..

 

Try this:

 

In the mainline of your script.

isStarted = false

 

def dostartup() =
  # We have started playing, so set the flag

  isStarted := true
end

 

def handler()

  if !isStarted then
    system("/etc/liquidsoap/shut_on_blank.sh")

  end
end





basically, when you want to set an external value from within a function you 
use := instead of just =

when you want to reference it, put a ! (exclamation point) in front it of.





(and for 'completeness' you use something like this if you want it in quotes 
"#{!alsaDevice}"    )





Nick

 

On Wed, Dec 6, 2017 at 3:07 PM, Martin Knapp <[email protected]> wrote:

Thanks again Nick, I really appreciate your help - and I feel pretty ashamed 
for not having found the documentation you‘ve pointed me to. 

Delaying shutdown with max_blank works perfectly, even with higher values (600) 
Regarding on_noise and the variables, I‘ve spent a couple of hours studying the 
documentation and the sample code, but didn‘t get very far. It‘s not trivial 
for a non-programmer like me with only some superficial php and perl 
knowledges. But I‘ll keep on trying.

Thanks & best regards

Martin


Am 05.12.2017 um 22:41 schrieb Nicholas Vrtis <[email protected]>:

Martin,

 

If you look at the documentation for on_blank 
(http://liquidsoap.info/doc-dev/reference.html#on_blank), you can set the 
on_blank(max_blank=40.0, handler, phono)

 

Note that max_blank takes a float, or you need the period.

 

You can also specify an on_noise=dostartup

 

So, what I would do is have the 'handler' check a Boolean to make sure the song 
has started, and only shutdown if it has.

 

Then in the dostartup function, I would change the Boolean so that when 
'handler' is called the next time (which would be after the end of the song), 
it would issue the shutdown.

 

Check some of the examples on how to get and set a variable within functions.

 

Nick

 

 

On Tue, Dec 5, 2017 at 5:22 AM, Martin Knapp <[email protected]> wrote:

Hi,
it works! 30 seconds after finishing the playback the Raspi shuts down - thanks 
again, Nick!
I imagine that 30 sec. is the default value. It's a little short, however, when 
it comes to jumping of the sofa, running to the turntable and put another 
record to play ;)
I've read that with Liquidsoap's blank operators you can fine-tune the length 
and threshold parameters.
I have been trying to do so with on_blank, following the samples for skip_blank 
etc.:

   source = on_blank(handler,length=120.,phono)

The result is that Liquidsoap doesn't start any longer.

Hence my questions (it seems that bthere is no documentation on the on_blank 
params?):
1. How can I define the minimum length a blank must have in order to be 
recognized as such?
2. How can I avoid that the shutdown script is triggered after starting the 
Raspi and before any record has been played, e.g. in cases that it takes longer 
to find the record, clean it etc.?

In other words: The perfect setup for this vinyl streamer would be:
- Start the Raspi
- Liquidsoap is waiting (indefinitely) for the first record to be played
- Liquidsoap triggers the shutdown script after the amount of time defined for 
on_blank recognition.
Thanks & best regards
Martin



Am 04.12.2017 um 12:35 schrieb Nicholas Vrtis:

It looks like you are trying to output the source 'phono', but it is the source 
'source' that has the 'on_blank'. 

It might be helpful to see the log to see what it happening, and to put a print 
in the on blank handler to make sure it is actually being triggered.

 

Nick

 

On Mon, Dec 4, 2017 at 4:36 AM, Federico Allegretti <[email protected]> wrote:

And how do you resolve?

 

Il 01/dic/2017 01:15 PM, "Martin Knapp" <[email protected]> ha scritto:

Hi,
Please apologize if I bring my question (below) up again, It seems that I just 
can't resolve the on_blank issue by myself. I would be very grateful for being 
pointed to some additional information and/or examples (if they exist).
Regards
Martin

Am 23.11.2017 um 21:19 schrieb Martin Knapp:

Good morning everybody,
in the Slimdevices forums (LMS, squeezelite etc.) we've been looking for a way 
to shut down a Raspberry Pi automatically after playing some music when no 
sound is detected on the sound card any longer. This can be helpful in our 
cases where we are recording or streaming "vinyl" from vintage turntables into 
a multiroom enabled system like LMS.
For creating and transmitting the vinyl stream (FLAC), I use Liquidsoap and 
Icecast. That works pretty fine, and I'm very thankful for having discovered 
Liquidsoap.
My recipe is:

#!/usr/bin/liquidsoap
# set the path and permissions for the logfile
set("log.file.path","/var/log/liquidsoap/phono.log")
set("log.file.perms",777)
#set("log.unix_timestamps",true)
#input from soundcard
phono = input.alsa(bufferize=true,fallible=false,device="hw:0")
#stream it to local icecast, default port and password
output.icecast(%ogg(%flac(samplerate=44100,channels=2,compression=5,bits_per_sample=16)),
 mount="/phono", name="Phono", format="audio/ogg", description="Turntable 
FLAC", url= <http://192.168.178.200&#8221;> "http://192.168.178.200&#8221;";, 
genre = "Misc", phono)

Now we have been looking at the on_blank operator described in 
http://liquidsoap.fm/doc-dev/blank.html, which seems to be able to do the job 
of shutting down the Pi after finishing the playback of a vinyl record. I 
created a shut down script (shut_on_blank.sh, owner: root) and tried to insert:

  def handler()
  system("/etc/liquidsoap/shut_on_blank.sh")
  end
  source = on_blank(handler,phono)

into the .liq file above, but the result was that the entire stream generation 
didn't work any longer.

What am I doing wrong?

The second question that arose was whether the length of the blank to be 
detected as such can be configured with on_blank, too - as it seems to be 
possible with max_blank= for strip_blank. When searching through the mailing 
list, I also found a post saying that the default threshold for blank detection 
is -40db, and that it can be adjusted - but not how/where. It seems that we 
weren't able to find further information on this in the docs. 

Thanks for your help & best regards
Martin

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Savonet-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/savonet-users

Reply via email to