Re: [Savonet-users] Liquidsoap 1.2.0 is released!

2016-01-16 Thread David Baelde
Hi everybody,

Opam does not install binaries (or anything) in the usual system-wide
locations. This can't be, because you're installing as a regular user.

This means that binaries installed using opam are in opam specific
locations (somewhere inside ~/.opam) and it needs to be in your path. This
can be done automatically (through a modification of your bash_profile) if
you ask so at the end of opam init, but it is not the default. If the opam
config is not automatic, you can do it manually:

$ eval `opam config env`

Then the opam-installed binaries should be found.

Hope this helps,

David

On Fri, Jan 15, 2016 at 6:25 PM, Andrew Hyslop 
wrote:

> I have tried to install via opam... Everything looked great during install
> (surprised as I have never used opam before hehehe)... But the command
> liquidsoap is not recognized at the prompt... I usually use the ubuntu
> package but really wanted to test out 1.2
>
> *From:* Romain Beauxis 
> *Sent:* Jan 15, 2016 11:09 AM
> *To:* savonet-users
> *Subject:* Re: [Savonet-users] Liquidsoap 1.2.0 is released!
>
> Sam's right, make sur you do opam init before. Also, you should remove the
> liquidsoap installed in your system, so perhaps:
>   apt-get remove liquidsoap
>
> Romain
>
> 2016-01-14 16:13 GMT-06:00 Steffen "TechMac" Pfaffinger <
> steffen.pfaffin...@musiclovers.fm>:
>
> It worked now, but how i can use now the 1.2 version, when i type
> liquidsoap --version its srill 1.1.1
>
> Am 14.01.16 um 23:10 schrieb Sarah Alawami:
> > What flavor of Linux are you running? Are all of your compilers
> up-to-date there as well?
> >
> >> On Jan 14, 2016, at 13:39, Steffen TechMac Pfaffinger <
> steffen.pfaffin...@musiclovers.fm> wrote:
> >>
> >>
> >> Even if running not as root it fails at pcre.7.1.6
> >>
> >> Building pcre.7.1.6:
> >>ocaml setup.ml -configure --prefix /home/../.opam/system
> >>ocaml setup.ml -build
> >>ocaml setup.ml -install
> >> [ERROR] The compilation of pcre.7.1.6 failed.
> >> Removing pcre.7.1.6.
> >>ocamlfind remove pcre
> >>
> >>
> >> #=== ERROR while installing pcre.7.1.6
> >> #
> >> # opam-version 1.2.0
> >> # os   linux
> >> # command  ocaml setup.ml -build
> >> # path /home/../.opam/system/build/pcre.7.1.6
> >> # compiler system (4.01.0)
> >> # exit-code1
> >> # env-file /home/../.opam/system/build/pcre.7.1.6/pcre-16132-0c525f.env
> >> # stdout-file
> /home/../.opam/system/build/pcre.7.1.6/pcre-16132-0c525f.out
> >> # stderr-file
> /home/../.opam/system/build/pcre.7.1.6/pcre-16132-0c525f.err
> >> ### stdout ###
> >> # ...[truncated]
> >> # /home/../.opam/system/bin/ocamlfind ocamlopt -c -g -annot -bin-annot
> >> -strict-sequence -ccopt -g -ccopt -O2 -ccopt -fPIC -ccopt -DPIC -ccopt
> >> -Wall -ccopt -pedantic -ccopt -Wextra -ccopt -Wunused -ccopt
> >> -Wno-long-long -package bytes -w Aer-44 -I lib -o lib/pcre.cmx lib/
> pcre.ml
> >> # /home/../.opam/system/bin/ocamlfind ocamlopt -a -cclib -lpcre_stubs
> >> -cclib -lpcre -cclib -lpcre lib/pcre_compat.cmx lib/pcre.cmx -o
> >> lib/pcre.cmxa
> >> # /home/../.opam/system/bin/ocamlfind ocamldep -package bytes -modules
> >> examples/cloc/cloc.ml > examples/cloc/cloc.ml.depends
> >> # /home/../.opam/system/bin/ocamlfind ocamlc -c -g -annot -bin-annot
> >> -strict-sequence -I lib -package bytes -w Aer-44 -I examples/cloc -I lib
> >> -o examples/cloc/cloc.cmo examples/cloc/cloc.ml
> >> # /home/../.opam/system/bin/ocamlfind ocamlopt -c -g -annot -bin-annot
> >> -strict-sequence -I lib -package bytes -w Aer-44 -I examples/cloc -I lib
> >> -o examples/cloc/cloc.cmx examples/cloc/cloc.ml
> >> # /home/../.opam/system/bin/ocamlfind ocamlopt -g -I lib -linkpkg
> >> -package bytes lib/pcre.cmxa examples/cloc/cloc.cmx -o
> >> examples/cloc/cloc.native
> >> # + /home/../.opam/system/bin/ocamlfind ocamlopt -g -I lib -linkpkg
> >> -package bytes lib/pcre.cmxa examples/cloc/cloc.cmx -o
> >> examples/cloc/cloc.native
> >> # File "_none_", line 1:
> >> # Error: Cannot find file /home/../.opam/system/lib/bytes/bytes.cmxa
> >> # Command exited with code 2.
> >> ### stderr ###
> >> # E: Failure("Command ''/usr/local/bin/ocamlbuild' lib/libpcre_stubs.a
> >> lib/dllpcre_stubs.so lib/pcre.cma lib/pcre.cmxa lib/pcre.a
> >> examples/cloc/cloc.native examples/count_hash/count_hash.native
> >> examples/pcregrep/pcregrep.native examples/subst/subst.native -tag
> >> debug' terminated with error code 10")
> >>
> >>
> >>> Am 14.01.16 um 22:35 schrieb Romain Beauxis:
> >>> Ho, I see. You shouldn't be running opam as root, that's your problem!
> >>>
> >>> 2016-01-14 15:28 GMT-06:00 Steffen "TechMac" Pfaffinger
> >>> :
>  Hi,
>  this is kinda the log:
> 
>  [ERROR] The compilation of pcre.7.1.6 failed.
>  Removing pcre.7.1.6.
>  ocamlfind remove pcre
>  ocamlfind: [WARNING] No such directory: /root/.opam/system/lib/pcre
> 
> 

Re: [Savonet-users] Liquidsoap for web teaching

2015-03-20 Thread David Baelde
Hi,

I doubt that low latency technologies available in liquidsoap would be
mature enough for teaching. The best is probably jack, though I don't know
if many people use it these day and can testify that it's solid -- I
wouldn't bet on it...

Cheers,

David
--
Dive into the World of Parallel Programming The Go Parallel Website, sponsored
by Intel and developed in partnership with Slashdot Media, is your hub for all
things parallel software development, from weekly thought leadership blogs to
news, videos, case studies, tutorials and more. Take a look and join the 
conversation now. http://goparallel.sourceforge.net/___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] devs, anybody?

2015-02-20 Thread David Baelde
Hi Udo,

We're still around, just getting busier and busier with our day jobs.

We actually met in Paris yesterday, and talked about liquidsoap.
Although we are not planning big developments, we still intend to
maintain it. We considered to plan sprints every now and then to deal
with github tickets and so on.

In the meantime, we are delighted to see users helping each other on this list!

I hope that you'll agree that no much dev effort is needed for
liquidsoap, which is not currently facing any show-stopping issue. Of
course, there are several annoyances, and various new features would
be appreciated, but that won't be our primary concern for a while.

Cheers,

David

On Fri, Feb 20, 2015 at 3:24 PM, unosonic u...@aporee.org wrote:

 hi there,

 curious  concerned: is anybody of the developers left here?
 David, Romain, Samuel? Does your absence mean something for the
 further development of liquidsoap? Asking because LS is at
 the core of some of my (and probably other's) experiments and
 radio work, so I desperately need it... ;) hope things are well.

 bests, udo

 --
 Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
 from Actuate! Instantly Supercharge Your Business Reports and Dashboards
 with Interactivity, Sharing, Native Excel Exports, App Integration  more
 Get technology previously reserved for billion-dollar corporations, FREE
 http://pubads.g.doubleclick.net/gampad/clk?id=190641631iu=/4140/ostg.clktrk
 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users



-- 
David

--
Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
from Actuate! Instantly Supercharge Your Business Reports and Dashboards
with Interactivity, Sharing, Native Excel Exports, App Integration  more
Get technology previously reserved for billion-dollar corporations, FREE
http://pubads.g.doubleclick.net/gampad/clk?id=190641631iu=/4140/ostg.clktrk
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] just a little check on a single code line: scheduling

2015-02-09 Thread David Baelde
Yes, it looks correct to me.

Cheers,

David

On Wed, Feb 4, 2015 at 4:33 PM, Simone Dal Maso
simone.dalm...@gmail.com wrote:
 Hello,
 is it correct for Liquidsoap if I schedule a playlist on this manner?
 ***
 ({(2w and 21h01m) or (4w and 21h01m) or (6w and 16h01m) or (7w and
 16h01m)}, playlist(TECNO_PLS)),
 ***
 in a nutshell, Tuesday and Thursday at 21.01, Saturday and Sunday at 16.01.
 Is it correct this format?
 thank you.

 --
 Dive into the World of Parallel Programming. The Go Parallel Website,
 sponsored by Intel and developed in partnership with Slashdot Media, is your
 hub for all things parallel software development, from weekly thought
 leadership blogs to news, videos, case studies, tutorials and more. Take a
 look and join the conversation now. http://goparallel.sourceforge.net/
 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users



-- 
David

--
Dive into the World of Parallel Programming. The Go Parallel Website,
sponsored by Intel and developed in partnership with Slashdot Media, is your
hub for all things parallel software development, from weekly thought
leadership blogs to news, videos, case studies, tutorials and more. Take a
look and join the conversation now. http://goparallel.sourceforge.net/
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] liquidsoap book

2014-11-26 Thread David Baelde
I also subscribed and I'm looking forward to see what it looks like. This is a 
very welcome effort!

Tony Miller a écrit:
 Thank you so much everyone for your feedback. I will be sending out a
 free sample of the book to my mailing list soon, so subscribe if you
 are interested in that.

 On Wed, Nov 26, 2014 at 8:30 AM, Jonathan Candler 
 jonathancandler_...@q.com wrote: I am interested in the book as well. I 
 have already sent you my subscription email, and you should've gotten it
--
Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
from Actuate! Instantly Supercharge Your Business Reports and Dashboards
with Interactivity, Sharing, Native Excel Exports, App Integration  more
Get technology previously reserved for billion-dollar corporations, FREE
http://pubads.g.doubleclick.net/gampad/clk?id=157005751iu=/4140/ostg.clktrk
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] configure: WARNING: caml/threads.h

2014-11-03 Thread David Baelde
Hi,

Can you send your config.log so we can see what the error is?

Thanks,

David

--
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] Another strange harbor buffer plot

2014-10-27 Thread David Baelde
Hi,Depending on the DJs source client, the computers clock can have an impact too.Anyway, if this is a serious issue you might want to look at an operator that Samuel added not so long ago. Something like buffer.adaptative iirc.HTHdavidBrad Isbell a écrit:All sound cards run at slightly different rates.  What youre looking at is an encoder sending data at a slightly slower rate than you are expecting.  What is 44.1kHz to the DJ that is sending you data may very well be 44.098kHz to the rest of the world.The same problem occurs on the playback side of things.  Some clients will run faster, some will run slower.  In practice, it doesnt matter much.  Most listeners dont listen long enough for there to be a problem, and those that do will simply rebuffer for a second or two.


Brad Isbell // AudioPump
b...@audiopump.coSkype: bradisbellPhone: +1 312-488-4680



On Fri, Oct 24, 2014 at 10:55 AM, Ken Restivo k...@restivo.org wrote:Trying to wrap my brain around this data:

http://spaz.org/~ken/damfree2.pdf

Thats a DJ connecting from a good DSL setup. The degradation is very slow, and eventually hits a wall and stops, then starts again, and then begins anew its descent.

Im pretty sure their sample rate is set to 44.1khz (the same as the server), but not entirely sure. Could it be sample rate mismatch, but with the buffer taking much longer to empty than Ive seen before in sample-rate-mismatch cases? Or something else? Clocks out of sync? Its baffling.

Thanks.

-ken

--
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users
 --



--
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] tee for sources?

2014-10-10 Thread David Baelde
Hi Ken,

I'm glad you got to something that works for you. What you did with
definition names here is along the lines of the short advice I
proposed in my previous mail. However, I would not have suspected the
need for drop_metadata(). I find it weird: if you drop metadata,
there's nothing to transform next using map_metadata... or is your
map_metadata() supposed to *insert* rather than modify stuff? (i.e.
you would be using insert_missing)

The reason why I'm asking is that there is possibly a bug lying here.
It seems surprising for basic stuff like this, but on the other we're
using a mutable data structure for metadata and may have forgotten to
copy in some places...

Cheers,

David

On Thu, Oct 9, 2014 at 10:48 PM, Ken Restivo k...@restivo.org wrote:
 After some hours of struggle, I discovered that the above was the only way to 
 decouple the two sources, was to drop_metadata() on the original source, i.e.:

 original_source = input.harbor(...)
 ignore(output.dummy(fallible=true, original_source)

 new_source_1 = map_metadata(some_transform, 
 drop_metadata(original_source))
 new_source_2 = map_metadata(some_other_transform, 
 drop_metadata(original_source))

 new_source_1 = output.icecast(...)
 new_source_2 = output.file(...)

 -ken
 --
 -
 On Tue, Oct 07, 2014 at 09:46:00AM -0700, David Baelde wrote:
 Hi Ken,

 You're almost there with the first attempt. Your problem there is that 
 you're redefining source1 on the first line and this new definition is used 
 when you define source2 next.

 Hope this helps,

 David




-- 
David

--
Meet PCI DSS 3.0 Compliance Requirements with EventLog Analyzer
Achieve PCI DSS 3.0 Compliant Status with Out-of-the-box PCI DSS Reports
Are you Audit-Ready for PCI DSS 3.0 Compliance? Download White paper
Comply to PCI DSS 3.0 Requirement 10 and 11.5 with EventLog Analyzer
http://pubads.g.doubleclick.net/gampad/clk?id=154622311iu=/4140/ostg.clktrk
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] tee for sources?

2014-10-07 Thread David Baelde
Hi Ken,

You're almost there with the first attempt. Your problem there is that you're 
redefining source1 on the first line and this new definition is used when you 
define source2 next.

Hope this helps,

David


--
Meet PCI DSS 3.0 Compliance Requirements with EventLog Analyzer
Achieve PCI DSS 3.0 Compliant Status with Out-of-the-box PCI DSS Reports
Are you Audit-Ready for PCI DSS 3.0 Compliance? Download White paper
Comply to PCI DSS 3.0 Requirement 10 and 11.5 with EventLog Analyzer
http://pubads.g.doubleclick.net/gampad/clk?id=154622311iu=/4140/ostg.clktrk
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] More efficient short-circuit operators?

2014-10-06 Thread David Baelde
Hi,

You have a builtin or but it is the boolean disjunction. The one you
want here is not in the lib, but you can create it for yourself in
your script, or in your own mini library:

def or(a,b) =
  if a !=  then a else b
end

Have fun,

David

On Sat, Oct 4, 2014 at 2:03 AM, Ken Restivo k...@restivo.org wrote:
 I found myself writing this and was pretty deeply dissatisfied:

 (artist, if m['ice-name'] != 
then
  m['ice-name']
else
  m['icy-name']
end)


 I sure wish there were an or short-ciruit operator, i.e.

  (artist, or(m['ice-name] m['icy-name']))

 Is there an or, or something very like it,  somewhere and I totally missed 
 it in the documentation?

 -ken

 --
 Meet PCI DSS 3.0 Compliance Requirements with EventLog Analyzer
 Achieve PCI DSS 3.0 Compliant Status with Out-of-the-box PCI DSS Reports
 Are you Audit-Ready for PCI DSS 3.0 Compliance? Download White paper
 Comply to PCI DSS 3.0 Requirement 10 and 11.5 with EventLog Analyzer
 http://pubads.g.doubleclick.net/gampad/clk?id=154622311iu=/4140/ostg.clktrk
 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users



-- 
David

--
Slashdot TV.  Videos for Nerds.  Stuff that Matters.
http://pubads.g.doubleclick.net/gampad/clk?id=160591471iu=/4140/ostg.clktrk
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] Video beginner questions

2014-09-09 Thread David Baelde
Hi Pierre,

I'm sorry for the late reply, but I finally looked into the code of
mux_audio [1] and it turns out that you guessed right: mux kills track
information. You can read a bit about it in the comment about
Symmetric mode in the ML source. There is currently no other mode
implemented.

We could cook you a mode where one source (the audio blank in your
case, let's call it auxiliary) is infallible and has irrelevant track
information, and its data is muxed on top of the stream of the other
(master) source, whose track info would be preserved. This is not as
obvious as it seems, but I cannot explain it without entering into the
details of our (slightly flawed) streaming model.

I'll give it a shot and have you test the new feature... I don't have
much time these days but I'll do my best.

Cheers,

David

[1] https://github.com/savonet/liquidsoap/blob/master/src/conversions/mux.ml

On Sat, Aug 30, 2014 at 10:44 AM, Pierre Boutillier
pierre.boutill...@laposte.net wrote:
 Hi,
 Thanks very much to reply faster than I do !
 I’ve done extra experiments …

 Le 28 août 2014 à 12:12, David Baelde david.bae...@gmail.com a écrit :
 run « make doc » from the doc subdirectory of the liquidsoap source tree, 
 it'll
 generate your own reference.html page.
 Great

 1/ my safe file has no sound. if I put a file with sound in the queue, it 
 is played but without sound. If I try to do
 safe=mux_audio(audio=blank(),single(…)), putting a correct request (tried 2 
 different) in the queue does not fail but the file is not played … do you 
 have clue of why ?

 My guess is that you have something like output.icecast(%theora,infinite)
 Nope, I don’t.
 Well of course I did at first but your software is better than you think and 
 complains with a type error :-).
 Nether the less, my supposition is that mux_audio never reach an end of track.

 My playground is
 a = single(x)
 b = single(y)
 c = single(x)
 output.icecast(%ogg(%theora,%vorbis),[…],add([blank(),rotate([a,mux_audio(audio=blank(),rotate(b,c]))])]))

 It plays a, c, b, c, b, c ...


 2/ If I replace live=rawlive by live=video.add_text.gstreamer(…,raw live), 
 I have my received external stream with some text when a stream is received 
 as expected but if I use live=video.add_image(…,raw live), live never fails 
 and I have a black screen with my logo when no external stream is received. 
 How could I get the behavior « image with logo if (and as long as) an image 
 exists » ? More generally, is there a varient of « add » that fails as soon 
 as one of its element fails ?

 Surprisingly, we do not provide a ready-made solution for that. I'm
 not sure, but I think I would go with a track insensitive switch to
 disable the second source when the first one is not ready (you can use
 source.is_ready here). I haven't tried, please let us know if you
 manage to make it work, otherwise I'll experiment myself.
 Yes,
 add([
 rawlive
 ,switch(track_sensitive=false,[((fun () - 
 source.is_ready(rawlive)),mux_audio(audio=blank(),single(LogoIncrustation.png
  »)))])
 ])
 works as I expect!


 3/ I’m sure the information is somewhere. My live stream is fragile and 
 liquidsoap plays very well its role to fallback. Never the less, I would 
 prefer that less than 3s freeze remains freeze rather than reload the « 
 safe » video. How could I do that ?

 That's a good question, but we don't have an answer yet. It requires
 some hacking on the input.http() operator. I'm telling you because I
 know you can get into our OCaml code: I'd be happy to guide you if you
 want to try this :)
 Why not, let’s try to fix my other problems first anyway.

 Cheers,
 --
 David


 --
 Slashdot TV.
 Video for Nerds.  Stuff that matters.
 http://tv.slashdot.org/
 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users



-- 
David

--
Want excitement?
Manually upgrade your production database.
When you want reliability, choose Perforce.
Perforce version control. Predictably reliable.
http://pubads.g.doubleclick.net/gampad/clk?id=157508191iu=/4140/ostg.clktrk
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] Video beginner questions

2014-08-28 Thread David Baelde
Hi Pierre,

On Thu, Aug 28, 2014 at 10:25 AM, Pierre Boutillier
pierre.boutill...@laposte.net wrote:
 First, a rather off topic one not important one : the website is much user 
 friendly than liquidsoap —list-plugins. is there an easy way to get 
 video.add_image and input.v4l2 referred at 
 http://liquidsoap.fm/doc-svn/reference.html ?

We should do that (but I won't do it just now). You can also run make
doc from the doc subdirectory of the liquidsoap source tree, it'll
generate your own reference.html page.

 1/ my safe file has no sound. if I put a file with sound in the queue, it 
 is played but without sound. If I try to do
 safe=mux_audio(audio=blank(),single(…)), putting a correct request (tried 2 
 different) in the queue does not fail but the file is not played … do you 
 have clue of why ?

My guess is that you have something like
output.icecast(%theora,infinite) which tells liquidsoap that your
stream is pure video. The video decoder accepts to convert audio+video
to pure video if needed -- in general we try to not hide conversions,
but in that case the extra cost of decoding audio for dropping it
later made us decide otherwise.

If I guessed right, you should try %ogg(%vorbis,%theora) which is the
format describing ogg containing both vorbis audio and theora video.

 2/ If I replace live=rawlive by live=video.add_text.gstreamer(…,raw live), I 
 have my received external stream with some text when a stream is received as 
 expected but if I use live=video.add_image(…,raw live), live never fails and 
 I have a black screen with my logo when no external stream is received. How 
 could I get the behavior « image with logo if (and as long as) an image 
 exists » ? More generally, is there a varient of « add » that fails as soon 
 as one of its element fails ?

Surprisingly, we do not provide a ready-made solution for that. I'm
not sure, but I think I would go with a track insensitive switch to
disable the second source when the first one is not ready (you can use
source.is_ready here). I haven't tried, please let us know if you
manage to make it work, otherwise I'll experiment myself.

 3/ I’m sure the information is somewhere. My live stream is fragile and 
 liquidsoap plays very well its role to fallback. Never the less, I would 
 prefer that less than 3s freeze remains freeze rather than reload the « safe 
 » video. How could I do that ?

That's a good question, but we don't have an answer yet. It requires
some hacking on the input.http() operator. I'm telling you because I
know you can get into our OCaml code: I'd be happy to guide you if you
want to try this :)

Cheers,
-- 
David

--
Slashdot TV.  
Video for Nerds.  Stuff that matters.
http://tv.slashdot.org/
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] input.harbor problem

2014-05-31 Thread David Baelde
Hi,

Pure (or almost pure) silence can create problems with compression: it
is compressed so much that there is no data chunk to send for a while,
which makes streams appear dead. This is addressed in the FAQ
(although not specifically for harbor) with a suggestion on how to
stream (faint) noise instead.

Hope this helps,

David

On Wed, May 28, 2014 at 4:20 PM, Dimitris Papadimitriou
jpapad2...@gmail.com wrote:
 Hi,

 I've used liquidsoap with Airtime for my radio, which I ditched a long time
 ago, and as I would like to do some custom stuff, I decided to use
 liquidsoap with input.harbor etc. I have a serious problem though. If I
 stream silence to input.harbor, even for 1 second, liquidsoap jumps back to
 the fallback, even though I didn't disconnect. That wouldn't be a problem,
 but this also happens if a song is very silent, and in this case it keeps
 jumping from live to fallback and vice-versa, until the song has louder
 output.

 Here is my liq file(it ain't that big):

 #!/usr/bin/liquidsoap

 set(log.file.path,/tmp/script.log)
 set(log.stdout, true)
 set(server.telnet, true)
 set(harbor.bind_addr,0.0.0.0)

 # Metal Stream Setup
 #1. Normalize default playlist (generic)
 metalplaylist =
 normalize(playlist(id=metal-generic,/home/rock247/music/metal/generic))
 #3. Crossfade
 metalplaylist =
 crossfade(start_next=6.,fade_out=3.,fade_in=3.,metalplaylist)
 #4. Add Requests
 metalfp = fallback(track_sensitive=true,
 [request.equeue(id=metal-requests),metalplaylist])
 #5. Metal Live Source
 metallive = input.harbor(id=metal-live,metal,port=8080,password=...)
 #6. Create the final playlist
 metalradio = fallback(track_sensitive=false,[metallive,metalfp])
 #7. Normalize overall volume and make it infallible
 metalradio = nrj(metalradio)
 metalradio = mksafe(metalradio)

 output.shoutcast(id=metal-output,%mp3, host=localhost, port = 8000,
 name=Rock247 Test Stream, url=http://www.rock247.net;, genre=Metal,
 password = ..., metalradio)


 I have no skip/strip_blank commands or anything else, and I can't understand
 why it does this. Any help will be more than appreciated.

 Dimitris

 --
 Time is money. Stop wasting it! Get your web API in 5 minutes.
 www.restlet.com/download
 http://p.sf.net/sfu/restlet
 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users




-- 
David

--
Time is money. Stop wasting it! Get your web API in 5 minutes.
www.restlet.com/download
http://p.sf.net/sfu/restlet
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] Understanding Harbour

2014-05-31 Thread David Baelde
Hi,

I'm not sure I understand the point of the whole setup, but having all
harbors on the same port is no problem, since you have mount point
names to distinguish them.

Hope this helps,

David

On Fri, May 30, 2014 at 5:10 PM, Dane Streeter
dane.stree...@sharp-stream.com wrote:

 Hello

 I'm hoping that you can help me with my understanding of harbour for live
 streaming.

 I'm looking to create a mass harbour that ingests incoming feeds. I then
 want to use seperate individual .liq scripts to http.input from individual
 harbour feeds, do whatever we want with each of the inputs and output to
 icecast. I have attached a picture of my workflow. The key is to ensure all
 incoming feeds to the harbour are all on the same port number.

 Is this possible? I have this prototype working but having to specify an
 output at the same time which doesn't give me control of individual feeds
 outbound to icecast.

 Thanks for any help in advance.

 Dane

 --
 Time is money. Stop wasting it! Get your web API in 5 minutes.
 www.restlet.com/download
 http://p.sf.net/sfu/restlet
 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users




-- 
David

--
Time is money. Stop wasting it! Get your web API in 5 minutes.
www.restlet.com/download
http://p.sf.net/sfu/restlet
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] Executing command before playing

2014-05-31 Thread David Baelde
Hi,

If taglib supports those tag formats, then liquidsoap should support
them as well, or at least could support them easily. The first thing
to do is check what liquidsoap sees when you run liquidsoap -r
audiofile, then check the status of taglib support.

Cheers,

David

On Tue, May 27, 2014 at 8:45 PM, Arnaud G. housemu...@orange.fr wrote:
 Félix-Antoine Paradis felixp@... writes:


 Good morning,
 We have mp3s with StationPlaylist APEv2 tags for segue and cue. I would
 like to know if it's possible to read APEv2 tags directly from within
 liquidsoap or would it be possible to call a python script (py-mutagen per
 say) to prefetch the information and pass them on to a crossfade function?


 Thank's,
 Félix




 --
 Accelerate Dev Cycles with Automated Cross-Browser Testing - For FREE
 Instantly run your Selenium tests across 300+ browser/OS combos.
 Get unparalleled scalability from the best Selenium testing platform 
 available
 Simple to use. Nothing to install. Get started now for free.
 http://p.sf.net/sfu/SauceLabs

 --
 Accelerate Dev Cycles with Automated Cross-Browser Testing - For FREE
 Instantly run your Selenium tests across 300+ browser/OS combos.
 Get unparalleled scalability from the best Selenium testing platform 
 available
 Simple to use. Nothing to install. Get started now for free.
 http://p.sf.net/sfu/SauceLabs

 ==
 Hy evreryone,

 Also a liquidsoap user. I'm really interesting with this feature (get ape or
 id3 tags on mp3 songs).
 Anyone have a solution with tags from traktor ? pioneer ? or any kind of cue
 points editing softawre ?

 Thanks for your replys,

 regards,

 Arnaud



 --
 The best possible search technologies are now affordable for all companies.
 Download your FREE open source Enterprise Search Engine today!
 Our experts will assist you in its installation for $59/mo, no commitment.
 Test it for FREE on our Cloud platform anytime!
 http://pubads.g.doubleclick.net/gampad/clk?id=145328191iu=/4140/ostg.clktrk
 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users



-- 
David

--
Time is money. Stop wasting it! Get your web API in 5 minutes.
www.restlet.com/download
http://p.sf.net/sfu/restlet
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] Problem(?) with type inference of active_source

2014-05-22 Thread David Baelde
Hi,

I have just now pushed a small modification to allow type annotations
for references and active sources. Here's an example of the syntax:

# r = ((ref []) : ref([active_source])) ;;
r : ref([active_source(audio=?A,video=?B,midi=?C)]) = ref([])

Hope this helps and sorry for the delay,

David

On Sun, May 18, 2014 at 1:42 PM, okay_awright okay_awri...@ddcr.biz wrote:
 thanks david for the explanation, and I didn't even know that one could
 force the type of a variable and bypass the automatic type inference
 system: cool feature!

 On 18/05/2014 10:22, David Baelde wrote:
 Hi,

 We made strip_blank return an active source after some enhancement of
 type inference by Samuel... we knew it was still not perfect, but
 didn't expect that it would strike so soon. One solution for you woule
 be to annotate your list reference with its type, e.g. blah = ref (...
 : active_source) unfortunately active_source is not available in type
 annotations yet. So we have two choices: allow this type annotation
 (which is a good idea anyway) or revert strip_blank to return a normal
 source for now. I should be able to deal with this in a few days but
 not right now unfortunately -- Romain, Sam, don't hesitate to step in
 before that.

 Cheers,

 David

 On Sat, May 17, 2014 at 1:35 PM, okay_awright okay_awri...@ddcr.biz wrote:
 Hello everyone,

 With the recent versions of Liquidsoap, strip_blank() now outputs an
 active_source. The same scripts used to work before, but now they don't.

 Here's the output when run:
 At /usr/local/etc/liquidsoap/res/5shampoo_bridge.liq, line 64, char 36:
 this value has type
   ref([source(_)]) (inferred at
 /usr/local/etc/liquidsoap/res/5shampoo_bridge.liq, line 43, char 36-41)
 but it should be a subtype of (the type of the value at
 /usr/local/etc/liquidsoap/res/3shampoo_core.liq, line 321, char 155)
   ref([active_source(_)]) (inferred at
 /usr/local/etc/liquidsoap/res/3shampoo_core.liq, line 195, char 65-97)

 line 64 of /usr/local/etc/liquidsoap/res/5shampoo_bridge.liq references
 the item with the * before:
  _source = ref mkoutput(
  _seat_number,
  _ws_key,
  _p_key,
  _channel_id,
  _is_lv_shout,
  _lv_port,
  _lv_mntpnt,
  _ref_independent_sources,
  *_ref_independent_active_sources,
  shutdown_output,
  _last_user,
  _last_key)

 line 43 of /usr/local/etc/liquidsoap/res/5shampoo_bridge.liq is:
  _ref_independent_active_sources = ref []

 line 321 of /usr/local/etc/liquidsoap/res/3shampoo_core.liq is this,
 where char character 155 is represented by a *:
  def mkoutput(_seat_number, _ws_key, _p_key, _channel_id,
 _is_lv_shoutcast, _lv_port, _lv_mntpnt, _ref_independent_sources,
 *_ref_independent_active_sources, _shutdown, _last_user, _last_key) =

 line 195 of /usr/local/etc/liquidsoap/res/3shampoo_core.liq represents
 the line with the * before:
  ref_source = ref strip_blank(max_blank=10., !ref_source, 
 threshold=-30.)
  *_ref_independent_active_sources := list.append([!ref_source],
 !_ref_independent_active_sources)

 I don't understand why that _ref_independent_active_sources list cannot
 be automatically inferred as a list of active_source
 If I modify:
  ref_source = ref strip_blank(max_blank=10., !ref_source, 
 threshold=-30.)
 and use another operator than strip_blank (which outputs a standard
 source) then everything works as expected

 _ref_independent_active_sources is not fed with regular sources
 anywhere; line 195 of /usr/local/etc/liquidsoap/res/3shampoo_core.liq is
 the only place in all scripts where that list is supplied with data

 Thanks for your help

 --
 regards,
 okay_awright
 okay_awright AT ddcr DOT biz

 --
 Accelerate Dev Cycles with Automated Cross-Browser Testing - For FREE
 Instantly run your Selenium tests across 300+ browser/OS combos.
 Get unparalleled scalability from the best Selenium testing platform 
 available
 Simple to use. Nothing to install. Get started now for free.
 http://p.sf.net/sfu/SauceLabs
 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users





 --
 regards,
 okay_awright
 okay_awright AT ddcr DOT biz

 --
 Accelerate Dev Cycles with Automated Cross-Browser Testing - For FREE
 Instantly run your Selenium tests across 300+ browser/OS combos.
 Get unparalleled scalability from the best Selenium testing platform available
 Simple to use. Nothing to install. Get started now for free.
 http://p.sf.net/sfu/SauceLabs
 ___
 Savonet-users mailing list
 Savonet-users

Re: [Savonet-users] Problem(?) with type inference of active_source

2014-05-18 Thread David Baelde
Hi,

We made strip_blank return an active source after some enhancement of
type inference by Samuel... we knew it was still not perfect, but
didn't expect that it would strike so soon. One solution for you woule
be to annotate your list reference with its type, e.g. blah = ref (...
: active_source) unfortunately active_source is not available in type
annotations yet. So we have two choices: allow this type annotation
(which is a good idea anyway) or revert strip_blank to return a normal
source for now. I should be able to deal with this in a few days but
not right now unfortunately -- Romain, Sam, don't hesitate to step in
before that.

Cheers,

David

On Sat, May 17, 2014 at 1:35 PM, okay_awright okay_awri...@ddcr.biz wrote:
 Hello everyone,

 With the recent versions of Liquidsoap, strip_blank() now outputs an
 active_source. The same scripts used to work before, but now they don't.

 Here's the output when run:
 At /usr/local/etc/liquidsoap/res/5shampoo_bridge.liq, line 64, char 36:
this value has type
  ref([source(_)]) (inferred at
 /usr/local/etc/liquidsoap/res/5shampoo_bridge.liq, line 43, char 36-41)
but it should be a subtype of (the type of the value at
 /usr/local/etc/liquidsoap/res/3shampoo_core.liq, line 321, char 155)
  ref([active_source(_)]) (inferred at
 /usr/local/etc/liquidsoap/res/3shampoo_core.liq, line 195, char 65-97)

 line 64 of /usr/local/etc/liquidsoap/res/5shampoo_bridge.liq references
 the item with the * before:
 _source = ref mkoutput(
 _seat_number,
 _ws_key,
 _p_key,
 _channel_id,
 _is_lv_shout,
 _lv_port,
 _lv_mntpnt,
 _ref_independent_sources,
 *_ref_independent_active_sources,
 shutdown_output,
 _last_user,
 _last_key)

 line 43 of /usr/local/etc/liquidsoap/res/5shampoo_bridge.liq is:
 _ref_independent_active_sources = ref []

 line 321 of /usr/local/etc/liquidsoap/res/3shampoo_core.liq is this,
 where char character 155 is represented by a *:
 def mkoutput(_seat_number, _ws_key, _p_key, _channel_id,
 _is_lv_shoutcast, _lv_port, _lv_mntpnt, _ref_independent_sources,
 *_ref_independent_active_sources, _shutdown, _last_user, _last_key) =

 line 195 of /usr/local/etc/liquidsoap/res/3shampoo_core.liq represents
 the line with the * before:
 ref_source = ref strip_blank(max_blank=10., !ref_source, 
 threshold=-30.)
 *_ref_independent_active_sources := list.append([!ref_source],
 !_ref_independent_active_sources)

 I don't understand why that _ref_independent_active_sources list cannot
 be automatically inferred as a list of active_source
 If I modify:
 ref_source = ref strip_blank(max_blank=10., !ref_source, 
 threshold=-30.)
 and use another operator than strip_blank (which outputs a standard
 source) then everything works as expected

 _ref_independent_active_sources is not fed with regular sources
 anywhere; line 195 of /usr/local/etc/liquidsoap/res/3shampoo_core.liq is
 the only place in all scripts where that list is supplied with data

 Thanks for your help

 --
 regards,
 okay_awright
 okay_awright AT ddcr DOT biz

 --
 Accelerate Dev Cycles with Automated Cross-Browser Testing - For FREE
 Instantly run your Selenium tests across 300+ browser/OS combos.
 Get unparalleled scalability from the best Selenium testing platform available
 Simple to use. Nothing to install. Get started now for free.
 http://p.sf.net/sfu/SauceLabs
 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users



-- 
David

--
Accelerate Dev Cycles with Automated Cross-Browser Testing - For FREE
Instantly run your Selenium tests across 300+ browser/OS combos.
Get unparalleled scalability from the best Selenium testing platform available
Simple to use. Nothing to install. Get started now for free.
http://p.sf.net/sfu/SauceLabs
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] Problems with drops when streaming to icecast

2014-04-01 Thread David Baelde
Hi guys,

Yes, it sounds like a clock mismatch: alsa is slower than your
icecast. You need a buffer of some sort. With a normal buffer,
assuming the clock on your computer is pretty much the same as
icecast's clock, you'll still get the drops but inside liquidsoap so
you can decide how to cope with them.

For instance you could write
output.icecast(...,fallback([buffer(radio),default])) where radio
contains the alsa stuff, and is thus controlled by the alsa clock, and
default (and the icecast output) are free of alsa and controlled by
the default wallclock. If radio is too slow the fallback will notice a
failure and move on to default for a while.

With the adaptative buffer, the data from radio will be
stretched/compressed (there are parameters to control how much) to
avoid the failure. Obviously, the cost is audio distortion.

Now, I wanted to comment on what liquidsoap may be doing differently
from another tool. In general, we keep track of time more precisely
than other tools, e.g. ices2 for sure. Reading your log again, it
seems that you're already using a buffer, which clearly makes your
setup different from what another tool would do. One thing to try,
then, is to remove buffers completely: then the icecast output will be
alsa-controlled. Liquidsoap won't complain about clock issues, and
streaming will drop if it has too, ie. if icecast kicks you because
you're too slow, which might be less often than currently. But it's
just hiding the problem, pushing it at the level of icecast's buffers.

I hope I'm not proposing too many things to try :)

Cheers,

David

PS: You could also try passing clock_safe=false to your ALSA I/O. It
tells the operators to not use the ALSA clock, but the default
wallclock instead. This will likely result in drops at the source,
though.

--
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] playlist history

2014-04-01 Thread David Baelde
Hi Muzo,

You should be able to do this using store_metadata (makes the history
available via server) or on_metadata (calls a hook on every new item).
There's an example on
  http://savonet.sourceforge.net/doc-svn/dolebrai.html

Hope this helps,

David

On Sat, Mar 29, 2014 at 1:27 AM, Muzo Berberoglu muzo...@gmail.com wrote:
 how can i go about logging the metadata for the latest x tracks that played
 to a txt file like this?

 14:56 artist - title
 15:03 artist - title
 15:08 artist - title
 15:13 artist - title
 ...
 ...
 ...
 ...
 ...

 --

 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users




-- 
David

--
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] Multiple .liq scripts in production

2014-03-31 Thread David Baelde
Hi,

1. The purpose is to have multiple streams running. You can have
multiple streams from a single instance of liquidsoap (a single
script) but if (sets of) streams are separated it's more robust to
keep them in separated scripts (plus, you'll exploit multiple cores
better with several instances of liquidsoap).

2. Reloading is the way to go. You can setup a fallback in various
ways to limit the impact of reloading. There's also a new fast
reload command, on which Samuel might be able to comment.

Cheers,

David

On Tue, Apr 1, 2014 at 12:03 AM, Hadi Katebi hadi.kat...@gmail.com wrote:
 Hello,

 I have recently download liquidsop to see what it does and play around with
 it.

 I have two questions:

 1 . What is the purpose of having multiple .liq scripts in production? Can I
 switch between multiple scripts while liquidsoap is running?

 2. Once I update a .liq script, how should I put my changes into effect?
 Should I restart the daemon? If I do that, the stream stops and I need to
 refresh the player to connect to the new stream which is of course not
 desirable.

 Thanks,
 Hadi

 --

 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users




-- 
David

--
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] Command to refresh LS playlist

2014-03-24 Thread David Baelde
Hi,

We lack a complete documentation of commands; they are not
auto-documented like other objects (builtins, settings, etc). So no, I
do not see any document to show you regarding reload.

If you're not yet familiar with the server, there is a tutorial:
http://savonet.sourceforge.net/doc-svn/server.html

Otherwise, just try and type playlist_id.reload in the server,
that's all there is to it. You should notice a reload after that, and
probably see it in the logs too.

Cheers,

David

On Sat, Mar 22, 2014 at 6:06 PM, Leonardo Almeida
leona...@webplace.com.br wrote:
 Have any URL document or example to use reload command (usable through the
 server) ?

 Regards,

 --
 Leonardo Almeida

 --
 Learn Graph Databases - Download FREE O'Reilly Book
 Graph Databases is the definitive new guide to graph databases and their
 applications. Written by three acclaimed leaders in the field,
 this first edition is now available. Download your free book today!
 http://p.sf.net/sfu/13534_NeoTech
 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users




-- 
David

--
Learn Graph Databases - Download FREE O'Reilly Book
Graph Databases is the definitive new guide to graph databases and their
applications. Written by three acclaimed leaders in the field,
this first edition is now available. Download your free book today!
http://p.sf.net/sfu/13534_NeoTech
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] Command to refresh LS playlist

2014-03-24 Thread David Baelde
Hi daniel,

Yes you are right, reloading a full script involves restarting
everything. However this has been made faster with recent additions by
Samuel: essentially everything is restarted, but within the
application, which saves a little bit of time and avoids some shell
scripting to wait for proper shutdown, etc. I don't know the details
of how to use it, though.

Cheers,

David

--
Learn Graph Databases - Download FREE O'Reilly Book
Graph Databases is the definitive new guide to graph databases and their
applications. Written by three acclaimed leaders in the field,
this first edition is now available. Download your free book today!
http://p.sf.net/sfu/13534_NeoTech
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] Command to refresh LS playlist

2014-03-22 Thread David Baelde
The playlist source has a reload command (usable through the server,
e.g. telnet) for reloading its playlist.

Hope this helps,

David

On Fri, Mar 21, 2014 at 5:51 PM, Leonardo Almeida
leona...@webplace.com.br wrote:

 Have any command to refresh LS playlist without have to restart it (and dont
 stop music streaming).

 We already use reload on LIQ file, but when refresh start to repeat musics,
 we need a solution to only refresh when i run command.


 Regards,

 --
 Leonardo Almeida

 --
 Learn Graph Databases - Download FREE O'Reilly Book
 Graph Databases is the definitive new guide to graph databases and their
 applications. Written by three acclaimed leaders in the field,
 this first edition is now available. Download your free book today!
 http://p.sf.net/sfu/13534_NeoTech
 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users




-- 
David

--
Learn Graph Databases - Download FREE O'Reilly Book
Graph Databases is the definitive new guide to graph databases and their
applications. Written by three acclaimed leaders in the field,
this first edition is now available. Download your free book today!
http://p.sf.net/sfu/13534_NeoTech
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] Dynamic Playlists on Windows

2014-03-21 Thread David Baelde
Hi,

The playlist operator has a reload command, as well as an uri
command which can be used to set a new playlist file. You should be
able to use those, either from inside your liquidsoap script (using
server.execute) or from outside (using the telnet or unix socket
interface) to update your playlists based on the time.

HTH

David

On Mon, Mar 17, 2014 at 5:38 PM, William Hetherington w...@willwh.com wrote:
 I opened the following issue over at github:
 https://github.com/savonet/liquidsoap/issues/158

 I thought I'd ask the same question on the mailing list. I'm terribly sorry
 for the duplication!



 Hi folks,

 I have the following scenario and I wonder if anyone can provide some input:

 Playlists with the following file name structure, and the following
 structure:

 MMDDYY00.pls (where 00 is midnight)

 They are just a list of files to playout.

 I have this working in windows with something like this:

 liquidsoap.exe output.shoutcast(%mp3, host='192.168.0.15', port = 9050,
 password = 'CKDwqgewergewhuTML', mksafe(playlist('06021400.pls')))

 I would like to dynamically reload the playlist, based on it's name, every
 hour.

 I can see this would be simply in linux, with a quick python script.

 Can anyone point me in the direction of doing this with windows?


 --
 Learn Graph Databases - Download FREE O'Reilly Book
 Graph Databases is the definitive new guide to graph databases and their
 applications. Written by three acclaimed leaders in the field,
 this first edition is now available. Download your free book today!
 http://p.sf.net/sfu/13534_NeoTech
 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users




-- 
David

--
Learn Graph Databases - Download FREE O'Reilly Book
Graph Databases is the definitive new guide to graph databases and their
applications. Written by three acclaimed leaders in the field,
this first edition is now available. Download your free book today!
http://p.sf.net/sfu/13534_NeoTech
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] Shell variable in Liquidsoap

2014-03-21 Thread David Baelde
The script language has the argv() function which is just what you're
looking for. Command-line arguments that are to be passed to the
script should come after --, e.g. liquidsoap test.liq -- 8000.

HTH

David

On Mon, Mar 17, 2014 at 9:35 PM, wit...@ravir.pl wfbzyki...@wp.pl wrote:
 Hello!

 Is it possible to give liquidsoap's script a parameter from shell? I'm 
 running my script like that:
 $ liquidsoap test.liq

 I would like to give extra parameter for port number where it should streams 
 signal, example:
 $ liquidsoap test.liq 8000

 Is it possible? How to catch such parameter in script?



 --
 Learn Graph Databases - Download FREE O'Reilly Book
 Graph Databases is the definitive new guide to graph databases and their
 applications. Written by three acclaimed leaders in the field,
 this first edition is now available. Download your free book today!
 http://p.sf.net/sfu/13534_NeoTech
 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users



-- 
David

--
Learn Graph Databases - Download FREE O'Reilly Book
Graph Databases is the definitive new guide to graph databases and their
applications. Written by three acclaimed leaders in the field,
this first edition is now available. Download your free book today!
http://p.sf.net/sfu/13534_NeoTech
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] Cannot compile camlimages-4.1.1

2014-02-13 Thread David Baelde
Or maybe revert to an older version of camlimages? It certainly used
to be compatible with OCaml  4.0.

Cheers,

David

On Tue, Feb 11, 2014 at 9:36 PM, Samuel Mimram smim...@gmail.com wrote:
 Hi,

 Yes it is relevant: this is the same error and apparently you need
 OCaml version 4.0 (at least) to compile the latest version of
 camlimages. So I would advise either to update you ocaml compiler, or
 drop ocamlimages (you probably don't need it for liquidsoap unless you
 are doing video and are using images...)

 ++

 Sam.

 On Tue, Feb 11, 2014 at 4:00 PM,  mailingli...@audiodef.com wrote:
 I'm sorry I took so long to get back to this.

 I appreciate the reply, but this doesn't seem relevant to me. I have
 nothing called opam. I am on Gentoo Linux.

 Thanks,
 Damien

 On , Daniel James wrote:
 Hi Damien,
 File exif.ml, line 21, characters 15-29:
 Error: Unbound value Sys.big_endian

 See: https://github.com/ocaml/opam-repository/issues/962
 Cheers!

 Daniel

 --
 Android apps run on BlackBerry 10
 Introducing the new BlackBerry 10.2.1 Runtime for Android apps.
 Now with support for Jelly Bean, Bluetooth, Mapview and more.
 Get your Android app in front of a whole new audience.  Start now.
 http://pubads.g.doubleclick.net/gampad/clk?id=124407151iu=/4140/ostg.clktrk
 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users

 --
 Android apps run on BlackBerry 10
 Introducing the new BlackBerry 10.2.1 Runtime for Android apps.
 Now with support for Jelly Bean, Bluetooth, Mapview and more.
 Get your Android app in front of a whole new audience.  Start now.
 http://pubads.g.doubleclick.net/gampad/clk?id=124407151iu=/4140/ostg.clktrk
 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users



-- 
David

--
Android apps run on BlackBerry 10
Introducing the new BlackBerry 10.2.1 Runtime for Android apps.
Now with support for Jelly Bean, Bluetooth, Mapview and more.
Get your Android app in front of a whole new audience.  Start now.
http://pubads.g.doubleclick.net/gampad/clk?id=124407151iu=/4140/ostg.clktrk
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] Cannot compile camlimages-4.1.1

2014-02-13 Thread David Baelde
Ok, sorry about that. Maybe you'll have better luck contacting the
maintainers of camlimages? I've looked at their bitbucket repo, and
there's actually already an open issue saying that it doesn't compile
(https://bitbucket.org/camlspotter/camlimages/issue/10/camlimage-doesnt-compile).

Good luck,

David

On Fri, Feb 14, 2014 at 4:00 AM, Damien Moody mailingli...@audiodef.com wrote:
 Upgrading ocaml did not make a difference.

 I have masked the latest camlimages on all my machines that use it, as
 well as in my stage4 tarball on gentoostudio.org, because camlimages
 universally fails for me in this way on every single machine I try to
 upgrade it on.

 I hope that I can either get this resolved or that a future version will
 work.

 On 02/13/14 08:11, David Baelde wrote:
 Or maybe revert to an older version of camlimages? It certainly used
 to be compatible with OCaml  4.0.

 Cheers,

 David

 On Tue, Feb 11, 2014 at 9:36 PM, Samuel Mimram smim...@gmail.com wrote:
 Hi,

 Yes it is relevant: this is the same error and apparently you need
 OCaml version 4.0 (at least) to compile the latest version of
 camlimages. So I would advise either to update you ocaml compiler, or
 drop ocamlimages (you probably don't need it for liquidsoap unless you
 are doing video and are using images...)

 ++

 Sam.

 On Tue, Feb 11, 2014 at 4:00 PM,  mailingli...@audiodef.com wrote:
 I'm sorry I took so long to get back to this.

 I appreciate the reply, but this doesn't seem relevant to me. I have
 nothing called opam. I am on Gentoo Linux.

 Thanks,
 Damien

 On , Daniel James wrote:
 Hi Damien,
 File exif.ml, line 21, characters 15-29:
 Error: Unbound value Sys.big_endian
 See: https://github.com/ocaml/opam-repository/issues/962
 Cheers!

 Daniel
 --
 Android apps run on BlackBerry 10
 Introducing the new BlackBerry 10.2.1 Runtime for Android apps.
 Now with support for Jelly Bean, Bluetooth, Mapview and more.
 Get your Android app in front of a whole new audience.  Start now.
 http://pubads.g.doubleclick.net/gampad/clk?id=124407151iu=/4140/ostg.clktrk
 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users
 --
 Android apps run on BlackBerry 10
 Introducing the new BlackBerry 10.2.1 Runtime for Android apps.
 Now with support for Jelly Bean, Bluetooth, Mapview and more.
 Get your Android app in front of a whole new audience.  Start now.
 http://pubads.g.doubleclick.net/gampad/clk?id=124407151iu=/4140/ostg.clktrk
 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users




 --
 Android apps run on BlackBerry 10
 Introducing the new BlackBerry 10.2.1 Runtime for Android apps.
 Now with support for Jelly Bean, Bluetooth, Mapview and more.
 Get your Android app in front of a whole new audience.  Start now.
 http://pubads.g.doubleclick.net/gampad/clk?id=124407151iu=/4140/ostg.clktrk
 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users



-- 
David

--
Android apps run on BlackBerry 10
Introducing the new BlackBerry 10.2.1 Runtime for Android apps.
Now with support for Jelly Bean, Bluetooth, Mapview and more.
Get your Android app in front of a whole new audience.  Start now.
http://pubads.g.doubleclick.net/gampad/clk?id=124407151iu=/4140/ostg.clktrk
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] caml/trheads.h not usable

2014-02-11 Thread David Baelde
Yes, this is strange. Where did you get the original configure, one of
our tarballs? A diff with the configure generated by bootstrap might
be useful.

Cheers,

David

On Tue, Feb 11, 2014 at 12:52 PM, Leonard de Ruijter leesv...@lder.me wrote:
 An update:
 It seems that the warning disappears and everything works correctly
 after bootstrapping ocaml-alsa. I however thought bootstrapping was only
 needed for the git source branch?

 Leonard
 On 2/11/2014 11:48 AM, Leonard de Ruijter wrote:
 Hello,

 I get the following warning when compiling ocaml-alsa on Arch Linux:
 checking caml/threads.h usability... no
 checking caml/threads.h presence... yes
 configure: WARNING: caml/threads.h: present but cannot be compiled
 configure: WARNING: caml/threads.h: check for missing prerequisite
 headers?
 configure: WARNING: caml/threads.h: see the Autoconf documentation
 configure: WARNING: caml/threads.h: section Present But Cannot Be
 Compiled
 configure: WARNING: caml/threads.h: proceeding with the compiler's result
 configure: WARNING: ##
 -- ##
 configure: WARNING: ## Report this to
 savonet-users@lists.sourceforge.net ##
 configure: WARNING: ##
 -- ##
 checking for caml/threads.h... no

 Is it a real problem that threads.h isn't usable for alsa in order to
 have liquidsoap to support multiple threads? it seems the other packages
 could use threads.h just fine.

 Regards,
 Leonard

 --
 Android apps run on BlackBerry 10
 Introducing the new BlackBerry 10.2.1 Runtime for Android apps.
 Now with support for Jelly Bean, Bluetooth, Mapview and more.
 Get your Android app in front of a whole new audience.  Start now.
 http://pubads.g.doubleclick.net/gampad/clk?id=124407151iu=/4140/ostg.clktrk
 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users


 --
 Android apps run on BlackBerry 10
 Introducing the new BlackBerry 10.2.1 Runtime for Android apps.
 Now with support for Jelly Bean, Bluetooth, Mapview and more.
 Get your Android app in front of a whole new audience.  Start now.
 http://pubads.g.doubleclick.net/gampad/clk?id=124407151iu=/4140/ostg.clktrk
 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users



-- 
David

--
Android apps run on BlackBerry 10
Introducing the new BlackBerry 10.2.1 Runtime for Android apps.
Now with support for Jelly Bean, Bluetooth, Mapview and more.
Get your Android app in front of a whole new audience.  Start now.
http://pubads.g.doubleclick.net/gampad/clk?id=124407151iu=/4140/ostg.clktrk
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] caml/trheads.h not usable

2014-02-11 Thread David Baelde
Hi,

You can just send us the fixed configure, or run diff fixed
configure original one.

Cheers,

David

On Tue, Feb 11, 2014 at 9:45 PM, Leonard de Ruijter leesv...@lder.me wrote:
 I use the official 1.1.1 full tarball. What's the best way to generate a
 diff?

 Regards,
 Leonard

 On 2/11/2014 9:15 PM, David Baelde wrote:
 Yes, this is strange. Where did you get the original configure, one of
 our tarballs? A diff with the configure generated by bootstrap might
 be useful.

 Cheers,

 David

 On Tue, Feb 11, 2014 at 12:52 PM, Leonard de Ruijter leesv...@lder.me 
 wrote:
 An update:
 It seems that the warning disappears and everything works correctly
 after bootstrapping ocaml-alsa. I however thought bootstrapping was only
 needed for the git source branch?

 Leonard
 On 2/11/2014 11:48 AM, Leonard de Ruijter wrote:
 Hello,

 I get the following warning when compiling ocaml-alsa on Arch Linux:
 checking caml/threads.h usability... no
 checking caml/threads.h presence... yes
 configure: WARNING: caml/threads.h: present but cannot be compiled
 configure: WARNING: caml/threads.h: check for missing prerequisite
 headers?
 configure: WARNING: caml/threads.h: see the Autoconf documentation
 configure: WARNING: caml/threads.h: section Present But Cannot Be
 Compiled
 configure: WARNING: caml/threads.h: proceeding with the compiler's result
 configure: WARNING: ##
 -- ##
 configure: WARNING: ## Report this to
 savonet-users@lists.sourceforge.net ##
 configure: WARNING: ##
 -- ##
 checking for caml/threads.h... no

 Is it a real problem that threads.h isn't usable for alsa in order to
 have liquidsoap to support multiple threads? it seems the other packages
 could use threads.h just fine.

 Regards,
 Leonard

 --
 Android apps run on BlackBerry 10
 Introducing the new BlackBerry 10.2.1 Runtime for Android apps.
 Now with support for Jelly Bean, Bluetooth, Mapview and more.
 Get your Android app in front of a whole new audience.  Start now.
 http://pubads.g.doubleclick.net/gampad/clk?id=124407151iu=/4140/ostg.clktrk
 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users


 --
 Android apps run on BlackBerry 10
 Introducing the new BlackBerry 10.2.1 Runtime for Android apps.
 Now with support for Jelly Bean, Bluetooth, Mapview and more.
 Get your Android app in front of a whole new audience.  Start now.
 http://pubads.g.doubleclick.net/gampad/clk?id=124407151iu=/4140/ostg.clktrk
 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users




 --
 Android apps run on BlackBerry 10
 Introducing the new BlackBerry 10.2.1 Runtime for Android apps.
 Now with support for Jelly Bean, Bluetooth, Mapview and more.
 Get your Android app in front of a whole new audience.  Start now.
 http://pubads.g.doubleclick.net/gampad/clk?id=124407151iu=/4140/ostg.clktrk
 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users



-- 
David

--
Android apps run on BlackBerry 10
Introducing the new BlackBerry 10.2.1 Runtime for Android apps.
Now with support for Jelly Bean, Bluetooth, Mapview and more.
Get your Android app in front of a whole new audience.  Start now.
http://pubads.g.doubleclick.net/gampad/clk?id=124407151iu=/4140/ostg.clktrk
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] Savonet-users Digest, Vol 89, Issue 5

2014-02-11 Thread David Baelde
Ok, that bug seems to be known and fixed:
  
https://github.com/savonet/shine/commit/0025bb843c4431b1d294944a6c37d4aa1b3e67c1

You need to upgrade shine (not ocaml-shine) to that fixed version. I
don't know if Romain and Samuel release new versions of libshine,
apart from the git repo.

Cheers,

David

On Mon, Feb 10, 2014 at 11:22 AM, Pranas Gudaitis pra...@takas.lt wrote:
 Hi David!

 It just crashes with segfault and it's due to nothing to encode for shine:


 [New Thread 0xb1fc2460 (LWP 19205)]

 Program received signal SIGSEGV, Segmentation fault.
 [Switching to Thread 0xb1fc2460 (LWP 19205)]
 shine_BF_freePartHolder (thePH=0x0) at src/lib/formatbits.c:295
 295   free( thePH-part-element );
 (gdb)

 i have some file recordings defined which record to a file when some
 incoming source is active.
 as incoming sources are not active all the time, it crashes instead of just
 doing nothing.


 thanks,
 p


 Message: 2
 Date: Mon, 10 Feb 2014 09:07:46 +0100
 From: David Baelde david.bae...@gmail.com
 Subject: Re: [Savonet-users] current git source results in
 disfunctional liquidsoap on raspbian
 To: savonet-users@lists.sourceforge.net
 savonet-users@lists.sourceforge.net
 Message-ID:
 cafqqufhpv-uvg9e_b2lhrzju1zcqh1bhmqymxgchjh1rgfe...@mail.gmail.com
 Content-Type: text/plain; charset=ISO-8859-1

 Hi,

 I do not know of current issues with liquidsoap's git version, but
 there might be problem with shine. Last time I tried using shine, it
 was on a pi and it crashed... And I see an unmerged pull request from
 a contributor to ocaml-shine on github.

 In any case it would be helpful to say what does not work for you.
 Perhaps the above proposed fix is relevant.

 Cheers,

 David

 On Thu, Jan 30, 2014 at 6:55 PM, Pranas Gudaitis pra...@takas.lt wrote:
 hi peeps!

 just checking if it's just me or for real the current git source is still
 unusable for working build?
 i've git-pull`d past weeks but nothing new appeared and the last issue
 was
 liquidsoap crashing due to shine encoder having nothing to do (let's say
 encoding to file is described, but no incoming source is active so
 nothing
 gets encoded)

 is there a quick way to work around? i'd like to make a challenge for ma
 pi
 to take over radio from the windows machine which also has problems with
 savonet occasionally locking files - unable to delete.

 regards,
 p


 --
 Managing the Performance of Cloud-Based Applications
 Take advantage of what the Cloud has to offer - Avoid Common Pitfalls.
 Read the Whitepaper.
 http://pubads.g.doubleclick.net/gampad/clk?id=121051231iu=/4140/ostg.clktrk
 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users



-- 
David

--
Android apps run on BlackBerry 10
Introducing the new BlackBerry 10.2.1 Runtime for Android apps.
Now with support for Jelly Bean, Bluetooth, Mapview and more.
Get your Android app in front of a whole new audience.  Start now.
http://pubads.g.doubleclick.net/gampad/clk?id=124407151iu=/4140/ostg.clktrk
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] liquidsoap crashed: too many open files

2014-02-10 Thread David Baelde
Hi Alexander,

Here is a list of features that use pipes in liquidsoap:

src/decoder/external_decoder.ml
src/decoder/gstreamer_decoder.ml
src/encoder/gstreamer_encoder.ml
src/io/gstreamer_io.ml
src/operators/video_text_gstreamer.ml
src/outputs/pipe_output.ml
src/protocols/extproto.ml
src/tools/harbor.ml

You said that you do not use any external encoder/decoder. What about
gstreamer input/output/encoder? And harbor?

We only have a part of your liq script, and it is already far from
minimal. So for now it is hard to know from where the file descriptor
(pipe) leak comes. Try to remove one feature, see if the bug still
shows up -- if the number of pipes has doubled after 30mn, it's still
there. It would be really helpful if you could try to simplify your
script as much as possible to obtain a minimal script with which we
can reproduce the issue.

Thanks,

David

--
Managing the Performance of Cloud-Based Applications
Take advantage of what the Cloud has to offer - Avoid Common Pitfalls.
Read the Whitepaper.
http://pubads.g.doubleclick.net/gampad/clk?id=121051231iu=/4140/ostg.clktrk
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] current git source results in disfunctional liquidsoap on raspbian

2014-02-10 Thread David Baelde
Hi,

I do not know of current issues with liquidsoap's git version, but
there might be problem with shine. Last time I tried using shine, it
was on a pi and it crashed... And I see an unmerged pull request from
a contributor to ocaml-shine on github.

In any case it would be helpful to say what does not work for you.
Perhaps the above proposed fix is relevant.

Cheers,

David

On Thu, Jan 30, 2014 at 6:55 PM, Pranas Gudaitis pra...@takas.lt wrote:
 hi peeps!

 just checking if it's just me or for real the current git source is still
 unusable for working build?
 i've git-pull`d past weeks but nothing new appeared and the last issue was
 liquidsoap crashing due to shine encoder having nothing to do (let's say
 encoding to file is described, but no incoming source is active so nothing
 gets encoded)

 is there a quick way to work around? i'd like to make a challenge for ma pi
 to take over radio from the windows machine which also has problems with
 savonet occasionally locking files - unable to delete.

 regards,
 p


 --
 WatchGuard Dimension instantly turns raw network data into actionable
 security intelligence. It gives you real-time visual feedback on key
 security issues and trends.  Skip the complicated setup - simply import
 a virtual appliance and go from zero to informed in seconds.
 http://pubads.g.doubleclick.net/gampad/clk?id=123612991iu=/4140/ostg.clktrk
 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users



-- 
David

--
Managing the Performance of Cloud-Based Applications
Take advantage of what the Cloud has to offer - Avoid Common Pitfalls.
Read the Whitepaper.
http://pubads.g.doubleclick.net/gampad/clk?id=121051231iu=/4140/ostg.clktrk
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] Broken pipe

2014-02-10 Thread David Baelde
Hi,

Liquidsoap warns about clients leaving suddenly but really it does
not matter at all: iirc, it's as if the client exited normally as far
as liquidsoap is concerned.

I tried on a liquidsoap -t 'output.dummy(blank())' and I can
definitely reconnect after a killed telnet session. Note that when I
kill the first session I get the disconnected without saying goodbye
error but not the Broken pipe line. I'm on a relatively recent git
build (Liquidsoap 1.1.1+scm
git://github.com/savonet/liquidsoap.git@05fc245e72d87d4b87d00f867fd06b62c95abba0:20140128:085435).

It would be nice if you could minimize your issue to nail what's
causing it, and possibly give us something to reproduce.

Cheers,

David

On Mon, Jan 20, 2014 at 1:57 PM, JD Buys jdb...@gmail.com wrote:
 Hi,

 I am running liquidsoap with --debug and inserting metadata, songs into the
 queue etc with the socket interface.

 The problem is that I am randomly getting the following message in the log:

 [server:4] Broken pipe in write()
 [server:3] Client unix socket  disconnected without saying goodbye..!

 Then I have to restart liquidsoap for everything to work as normal again.
 I have tried increasing the generic and non blocking queues, but with no
 success.

 This problem happens very randomly and I have not yet been able to reproduce
 it on demand.

 Any ideas?

 Thanks,

 JD

 --
 CenturyLink Cloud: The Leader in Enterprise Cloud Services.
 Learn Why More Businesses Are Choosing CenturyLink Cloud For
 Critical Workloads, Development Environments  Everything In Between.
 Get a Quote or Start a Free Trial Today.
 http://pubads.g.doubleclick.net/gampad/clk?id=119420431iu=/4140/ostg.clktrk
 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users




-- 
David

--
Managing the Performance of Cloud-Based Applications
Take advantage of what the Cloud has to offer - Avoid Common Pitfalls.
Read the Whitepaper.
http://pubads.g.doubleclick.net/gampad/clk?id=121051231iu=/4140/ostg.clktrk
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] Fallback

2014-02-10 Thread David Baelde
Hi,

With your code if the http source(s) can't connect, and the queue is
empty, I don't see to what it should fallback.

In any case, an http source does not produce anything when it fails to
connect, and thus in those cases the fallback will fall back to the
next source just as it would do with any other sources that fails to
stream.

Cheers,

David

On Fri, Feb 7, 2014 at 3:25 PM, Leonard de Ruijter leesv...@lder.me wrote:
 Does a fallback to blank take place when you assign mksafe(source2) to
 your output?

 On 2/7/2014 3:22 PM, JD Buys wrote:
 The get_source_by_order method does work correctly, but you can test it
 with fallback(track_sensitive=false,[source1,source2,source3]) and then
 starting for e.g source2, then you will see source2 trying to connect
 but obviously failing, and no fallback.

 JD


 On Fri, Feb 7, 2014 at 4:03 PM, Leonard de Ruijter leesv...@lder.me
 mailto:leesv...@lder.me wrote:

 Hi,

 Are you sure the get_source_by_order function is working properly?
 Where's this function meant for? Is there anything against
 fallback(track_sensitive=false,[source1,source2,source3])?

 On 2/7/2014 2:51 PM, JD Buys wrote:
   Hi,
  
   Here's a part of my script:
  
   source1=request.queue(id=queue,length=10.0)
  
 
 source2=input.http(id=source2,http://localhost/mount1,autostart=false,timeout=3.)
  
 
 source3=input.http(id=source3,http://localhost/mount2,autostart=false,timeout=3.)
  
   def the_source
   fallback(track_sensitive=false,[get_source_by_order(first),
   get_source_by_order(second), get_source_by_order(third)])
   end
  
   source=the_source
   source=audio_to_stereo(id=source,source)
   source=server.insert_metadata(id=source, source)
   add_skip_command(source)
  
   source = mksafe(source)
  
  
 
 output.icecast(%fdkaac(channels=2,bitrate=32,samplerate=44100,aot=mpeg4_he_aac_v2,transmux=adts,
   sbr_mode=true),host=10.111.125.5,port=80, password=password,
   mount=mount3,source)
  
  
  
   On Fri, Feb 7, 2014 at 3:44 PM, Leonard de Ruijter
 leesv...@lder.me mailto:leesv...@lder.me
   mailto:leesv...@lder.me mailto:leesv...@lder.me wrote:
  
   Hello,
  
   Could you give a code example? That might help me and others
 help you
   solve the issue.
  
   Regards,
   Leonard
  
   On 2/7/2014 2:38 PM, JD Buys wrote:
 Hi,

 How do I get a http.input source to fallback when it can't
 connect to
 the source?

 I keep getting Connection failed: Internal http error.
 in the
   log, but
 no fallback.

 Thanks,

 JD



  
 
 --
 Managing the Performance of Cloud-Based Applications
 Take advantage of what the Cloud has to offer - Avoid Common
   Pitfalls.
 Read the Whitepaper.

  
 
 http://pubads.g.doubleclick.net/gampad/clk?id=121051231iu=/4140/ostg.clktrk



 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 mailto:Savonet-users@lists.sourceforge.net
   mailto:Savonet-users@lists.sourceforge.net
 mailto:Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users

  
  
 
 --
   Managing the Performance of Cloud-Based Applications
   Take advantage of what the Cloud has to offer - Avoid Common
 Pitfalls.
   Read the Whitepaper.
  
 
 http://pubads.g.doubleclick.net/gampad/clk?id=121051231iu=/4140/ostg.clktrk
   ___
   Savonet-users mailing list
   Savonet-users@lists.sourceforge.net
 mailto:Savonet-users@lists.sourceforge.net
   mailto:Savonet-users@lists.sourceforge.net
 mailto:Savonet-users@lists.sourceforge.net
   https://lists.sourceforge.net/lists/listinfo/savonet-users
  
  
  
  
  
 
 --
   Managing the Performance of Cloud-Based Applications
   Take advantage of what the Cloud has to offer - Avoid Common
 Pitfalls.
   Read the Whitepaper.
  
 
 http://pubads.g.doubleclick.net/gampad/clk?id=121051231iu=/4140/ostg.clktrk
  
  
  
   ___
   Savonet-users mailing list
   Savonet-users@lists.sourceforge.net
 

Re: [Savonet-users] liquidsoap crashed: too many open files

2014-01-30 Thread David Baelde
Hi Alexander,

Thanks for the extra info. Nothing to worry about regarding liquidget,
it's a harmless wrapper around wget. The logs are useful, as they
point to pipes rather than downloaded files. You must be using some
feature (external encoder, maybe) that uses pipes for interprocess
communication, and that does not close them properly. That being said,
372 temporary files is still a lot, but that must be a different
problem... do you kill -9 liquidsoap instances, by any chance?

Cheers,

David

On Wed, Jan 29, 2014 at 12:46 PM, Alexander truenr...@gmail.com wrote:
 Hello!
 I've also added your email directly to recipients list (in case sourcefourge
 lists will crop attachments). Please find answers on your questions below:

 Are you using the standard resolver for http, that is wget?
 Hmm.. i suppose that we use wget. ./configure script shows in table
 following data (and i have wget installed):
 * Additional libraries
- wget URI resolver : requires wget at runtime

 But, in liquidsoap logs i found following line: '[protocols.external:3]
 Found /usr/local/lib/liquidsoap/scm/liquidget'. So, i am not sure.


 Do you have a reasonable number of alive requests? You can see this using
 the request.alive server command. On the server you can also perform
 request.trace to see what happened to a request.
 I had to enable telnet and to restart stations (usually we use only
 sockets). So, i am not sure it would be informative enough. Anyway, i am
 attaching tcp.log file with server commands execution log.


 Can you identify the too many files in ls -l /proc/liq pid/fd? If they
 are the downloaded files, you should see temporary file names
 starting with liq. It would be useful to check if these files are all the
 downloaded files so far or only some.
 I see only one downloaded file there. All others are pipes (oh god, how many
 of them i can see here!). Please find station-11-fd.log file attached with
 output for 1 liquidsoap process.

 One suggestion: as liquidsoap puts all files in /tmp folder, i just checked
 how many files are there. 372 audio files (that are certainly donwloaded via
 liquidsoap). It should be too many files for 15 liquidsoap processes working
 at one time.


 Just to be sure, can you reproduce the issue without cue_cut?
 Of course, i have disabled it and restarted all stations, i will continue
 reporting if liquidsoap processes will die again.


 Hope this information helps. Thanks for your response!


 2014-01-29 David Baelde david.bae...@gmail.com

 Hi,

 No clue so far, so I'll ask a few questions instead.

 * Are you using the standard resolver for http, that is wget?

 * Do you have a reasonable number of alive requests? You can see this
 using the request.alive server command. On the server you can also
 perform request.trace to see what happened to a request.

 * Can you identify the too many files in ls -l /proc/liq pid/fd?
 If they are the downloaded files, you should see temporary file names
 starting with liq. It would be useful to check if these files are
 all the downloaded files so far or only some.

 * Just to be sure, can you reproduce the issue without cue_cut?

 Thanks,

 David


 --
 WatchGuard Dimension instantly turns raw network data into actionable
 security intelligence. It gives you real-time visual feedback on key
 security issues and trends.  Skip the complicated setup - simply import
 a virtual appliance and go from zero to informed in seconds.

 http://pubads.g.doubleclick.net/gampad/clk?id=123612991iu=/4140/ostg.clktrk
 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users




 --
 Kind regards,
 Alexander.



-- 
David

--
WatchGuard Dimension instantly turns raw network data into actionable 
security intelligence. It gives you real-time visual feedback on key
security issues and trends.  Skip the complicated setup - simply import
a virtual appliance and go from zero to informed in seconds.
http://pubads.g.doubleclick.net/gampad/clk?id=123612991iu=/4140/ostg.clktrk
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] Segfault

2014-01-30 Thread David Baelde
From what I see (I may be missing some context) there is no reason to
blame duppy. The segfault is from caml_c_call, and the backtrace there
gives no information. A quick googling tells me that this could be a
stack overflow. Can you indicate which version of OCaml you are using?
One way to get more info here is to compile liquisoap in ocaml
bytecode (stack overflow would be an exception, with a backtrace
telling us what is happening) by configuring with --disable-nativecode
and recompiling.

On Tue, Jan 28, 2014 at 2:09 PM, JD Buys jdb...@gmail.com wrote:
 For interest sake, here is the backtrace for the segfault with the original
 ocaml-duppy:

 #0  0x008d3a5b in caml_c_call ()
 (gdb) thread apply all bt

 Thread 15 (Thread 0x2ac8f8d5d140 (LWP 30441)):
 #0  0x003805c0e9c8 in do_sigwait () from /lib64/libpthread.so.0
 #1  0x003805c0ea6d in sigwait () from /lib64/libpthread.so.0
 #2  0x008bc602 in caml_wait_signal ()
 #3  0x007eac73 in camlDtools__wait_signal_1309 () at dtools.ml:527
 #4  0x007eadba in camlDtools__main_1313 () at dtools.ml:566
 #5  0x007eaf54 in camlDtools__catch_1324 () at dtools.ml:573
 #6  0x0066bfc1 in camlMain__Make_1287 () at main.ml:622
 #7  0x00668ea5 in camlRunner__entry ()
 #8  0x00661ee9 in caml_program ()
 #9  0x008d3ac2 in caml_start_program ()
 #10 0x00380461cbc0 in ?? () from /lib64/ld-linux-x86-64.so.2
 #11 0x00380461cbc0 in ?? () from /lib64/ld-linux-x86-64.so.2
 #12 0x in ?? ()

 Thread 14 (Thread 30521):
 #0  0x003805c0d654 in __lll_lock_wait () from /lib64/libpthread.so.0
 #1  0x003805c10341 in _L_cond_lock_989 () from /lib64/libpthread.so.0
 #2  0x003805c1020f in __pthread_mutex_cond_lock () from
 /lib64/libpthread.so.0
 #3  0x003805c0b0b4 in pthread_cond_wait@@GLIBC_2.3.2 () from
 /lib64/libpthread.so.0
 #4  0x008bbb62 in caml_condition_wait ()
 #5  0x007e41d2 in camlDuppy__queue_1114 () at duppy.ml:298
 #6  0x0079862e in camlTutils__queue_1190 () at tools/tutils.ml:197
 #7  0x00797eda in camlTutils__fun_1346 () at tools/tutils.ml:136
 #8  0x0084af19 in camlThread__fun_1081 () at thread.ml:37
 #9  0x008d3ac2 in caml_start_program ()
 #10 0x19bfa7d0 in ?? ()
 #11 0x in ?? ()

 Thread 13 (Thread 30522):
 #0  0x0038048ce122 in select () from /lib64/libc.so.6
 #1  0x008bc4ec in caml_thread_tick ()
 #2  0x003805c0683d in start_thread () from /lib64/libpthread.so.0
 #3  0x0038048d4f8d in clone () from /lib64/libc.so.6

 Thread 12 (Thread 30523):
 #0  0x003805c0d654 in __lll_lock_wait () from /lib64/libpthread.so.0
 #1  0x003805c08f4a in _L_lock_1034 () from /lib64/libpthread.so.0
 #2  0x003805c08e0c in pthread_mutex_lock () from /lib64/libpthread.so.0
 #3  0x008bcb9f in caml_mutex_lock ()
 #4  0x007e404a in camlDuppy__queue_1114 () at duppy.ml:269
 #5  0x0079862e in camlTutils__queue_1190 () at tools/tutils.ml:197
 #6  0x00797eda in camlTutils__fun_1346 () at tools/tutils.ml:136
 #7  0x0084af19 in camlThread__fun_1081 () at thread.ml:37
 #8  0x008d3ac2 in caml_start_program ()
 #9  0x19bfa8b0 in ?? ()
 #10 0x003804809088 in ?? () from /lib64/libc.so.6
 #11 0x2ac8f8b524c8 in ?? ()
 #12 0x in ?? ()

 Thread 11 (Thread 30524):
 #0  0x003805c0b019 in pthread_cond_wait@@GLIBC_2.3.2 () from
 /lib64/libpthread.so.0
 #1  0x008bbb62 in caml_condition_wait ()
 #2  0x007e41d2 in camlDuppy__queue_1114 () at duppy.ml:298
 ---Type return to continue, or q return to quit---
 #3  0x0079862e in camlTutils__queue_1190 () at tools/tutils.ml:197
 #4  0x00797eda in camlTutils__fun_1346 () at tools/tutils.ml:136
 #5  0x0084af19 in camlThread__fun_1081 () at thread.ml:37
 #6  0x008d3ac2 in caml_start_program ()
 #7  0x19c5d830 in ?? ()
 #8  0x003804809088 in ?? () from /lib64/libc.so.6
 #9  0x2ac8f8b524c8 in ?? ()
 #10 0x in ?? ()

 Thread 10 (Thread 30525):
 #0  0x003805c0d654 in __lll_lock_wait () from /lib64/libpthread.so.0
 #1  0x003805c10341 in _L_cond_lock_989 () from /lib64/libpthread.so.0
 #2  0x003805c1020f in __pthread_mutex_cond_lock () from
 /lib64/libpthread.so.0
 #3  0x003805c0b0b4 in pthread_cond_wait@@GLIBC_2.3.2 () from
 /lib64/libpthread.so.0
 #4  0x008bbb62 in caml_condition_wait ()
 #5  0x007e41d2 in camlDuppy__queue_1114 () at duppy.ml:298
 #6  0x0079862e in camlTutils__queue_1190 () at tools/tutils.ml:197
 #7  0x00797eda in camlTutils__fun_1346 () at tools/tutils.ml:136
 #8  0x0084af19 in camlThread__fun_1081 () at thread.ml:37
 #9  0x008d3ac2 in caml_start_program ()
 #10 0x19bf8e80 in ?? ()
 #11 0x003804809088 in ?? () from /lib64/libc.so.6
 #12 0x2ac8f8b524c8 in ?? ()
 #13 0x in ?? ()

 Thread 9 

Re: [Savonet-users] Harbor.input issue in build from git

2014-01-28 Thread David Baelde
Hi,

Looking at the code which caused the assertion failure, I thought it
should be cleanup up a bit:
  https://github.com/savonet/liquidsoap/pull/152

(Next time I need to remember not to open an issue in addition to the
pull request.)

Cheers,

David

--
WatchGuard Dimension instantly turns raw network data into actionable 
security intelligence. It gives you real-time visual feedback on key
security issues and trends.  Skip the complicated setup - simply import
a virtual appliance and go from zero to informed in seconds.
http://pubads.g.doubleclick.net/gampad/clk?id=123612991iu=/4140/ostg.clktrk
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] liquidsoap crashed: too many open files

2014-01-28 Thread David Baelde
Hi,

No clue so far, so I'll ask a few questions instead.

* Are you using the standard resolver for http, that is wget?

* Do you have a reasonable number of alive requests? You can see this
using the request.alive server command. On the server you can also
perform request.trace to see what happened to a request.

* Can you identify the too many files in ls -l /proc/liq pid/fd?
If they are the downloaded files, you should see temporary file names
starting with liq. It would be useful to check if these files are
all the downloaded files so far or only some.

* Just to be sure, can you reproduce the issue without cue_cut?

Thanks,

David

--
WatchGuard Dimension instantly turns raw network data into actionable 
security intelligence. It gives you real-time visual feedback on key
security issues and trends.  Skip the complicated setup - simply import
a virtual appliance and go from zero to informed in seconds.
http://pubads.g.doubleclick.net/gampad/clk?id=123612991iu=/4140/ostg.clktrk
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] liquidsoap crashed: too many open files

2014-01-27 Thread David Baelde
Hi Alexander,

Could you please describe a little bit how you use dynamic requests?
At least, I need to know what parameters (queue, etc.) you are using
but the kind of protocol involved is probably useful too.

Cheers,

David

On Fri, Jan 24, 2014 at 10:26 AM, Alexander truenr...@gmail.com wrote:
 Issue still reproduces, every day.
 I found http://dev.sourcefabric.org/browse/LS-508, where it is said that bug
 was fixed...

 Have no idea how to workaround this... please assist :(


 2014/1/19 Alexander truenr...@gmail.com

 Hello,

 We use request.dynamic to play files from remote server (via http).
 Yesterday i've found liquidsoap crashed, could you please help to research?
 In log i saw following lines:

 2014/01/18 14:55:16 [request.dynamic_5970:3] Finished with
 /tmp/liq7e1fc7.mp3.
 2014/01/18 14:55:16 [request.dynamic_5970:3] Prepared /tmp/liqef6b8f.mp3
 (RID 1).
 2014/01/18 14:55:16 [threads:2] Queue generic queue #1 crashed with
 exception Sys_error(/tmp/liq5a2504.mp3: Too many open files)
 2014/01/18 14:55:16 [threads:2] Raised by primitive operation at file
 filename.ml, line 206, characters 16-75
 Re-raised at file filename.ml, line 209, characters 36-37
 Called from file protocols/extproto.ml, line 45, characters 14-21
 Called from file request.ml, line 584, characters 20-64
 Called from file request.ml, line 610, characters 12-27
 Called from file sources/request_source.ml, line 356, characters 22-49
 Called from file sources/request_source.ml, line 340, characters 13-26
 Called from file duppy.ml, line 351, characters 20-24
 Called from file duppy.ml, line 131, characters 61-77
 Called from file duppy.ml, line 253, characters 14-23
 Called from file duppy.ml, line 280, characters 9-26
 Called from file tools/tutils.ml, line 207, characters 19-55

 2014/01/18 14:55:16 [threads:1] PANIC: Liquidsoap has crashed, exiting..
 2014/01/18 14:55:16 [threads:1] Please report at:
 savonet-us...@lists.sf.net



 --
 Kind regards,
 Alexander.




 --
 Kind regards,
 Alexander.

 --
 CenturyLink Cloud: The Leader in Enterprise Cloud Services.
 Learn Why More Businesses Are Choosing CenturyLink Cloud For
 Critical Workloads, Development Environments  Everything In Between.
 Get a Quote or Start a Free Trial Today.
 http://pubads.g.doubleclick.net/gampad/clk?id=119420431iu=/4140/ostg.clktrk
 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users




-- 
David

--
WatchGuard Dimension instantly turns raw network data into actionable 
security intelligence. It gives you real-time visual feedback on key
security issues and trends.  Skip the complicated setup - simply import
a virtual appliance and go from zero to informed in seconds.
http://pubads.g.doubleclick.net/gampad/clk?id=123612991iu=/4140/ostg.clktrk
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] Encoder info

2014-01-27 Thread David Baelde
Hi,

I do not understand what you're asking for. Getting a string from an
encoder is not problematic, just tested in --interactive:

 # string_of(%vorbis);;
- : string = %ogg(%vorbis(quality=0.30,channels=2,samplerate=44100))

The question must be about how to get the current encoder, but that is
not well defined, as there might be several streams running with
various encoders. At the time when you setup an output with a given
encoder, you could log what it is though.

Hope this helps,

David

On Wed, Jan 22, 2014 at 12:32 PM, JD Buys jdb...@gmail.com wrote:
 Hi,

 How can I get the to_string of the current encoder?

 Thanks,

 JD

 --
 CenturyLink Cloud: The Leader in Enterprise Cloud Services.
 Learn Why More Businesses Are Choosing CenturyLink Cloud For
 Critical Workloads, Development Environments  Everything In Between.
 Get a Quote or Start a Free Trial Today.
 http://pubads.g.doubleclick.net/gampad/clk?id=119420431iu=/4140/ostg.clktrk
 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users




-- 
David

--
WatchGuard Dimension instantly turns raw network data into actionable 
security intelligence. It gives you real-time visual feedback on key
security issues and trends.  Skip the complicated setup - simply import
a virtual appliance and go from zero to informed in seconds.
http://pubads.g.doubleclick.net/gampad/clk?id=123612991iu=/4140/ostg.clktrk
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] Burst

2013-12-31 Thread David Baelde
That's possible in theory (at least with the wallclock, which we fully
control) but there's no implemented feature for users to do this. Why
would you want to do that, and how would you like to be able to do it?

Cheers,

David

On Thu, Dec 19, 2013 at 2:42 PM, JD Buys jdb...@gmail.com wrote:
 Hi,

 Is it possible to burst for example 10s of audio and then change the clock
 back to the wallclock?

 JD

 --
 Rapidly troubleshoot problems before they affect your business. Most IT
 organizations don't have a clear picture of how application performance
 affects their revenue. With AppDynamics, you get 100% visibility into your
 Java,.NET,  PHP application. Start your 15-day FREE TRIAL of AppDynamics
 Pro!
 http://pubads.g.doubleclick.net/gampad/clk?id=84349831iu=/4140/ostg.clktrk
 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users




-- 
David

--
Rapidly troubleshoot problems before they affect your business. Most IT 
organizations don't have a clear picture of how application performance 
affects their revenue. With AppDynamics, you get 100% visibility into your 
Java,.NET,  PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro!
http://pubads.g.doubleclick.net/gampad/clk?id=84349831iu=/4140/ostg.clktrk
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] Queue issue

2013-12-31 Thread David Baelde
Hi,

With ocaml code compiled to native code, a stack overflow can become a
segfault. I would be interested to know where the stack overflow
occurred, and it should be easy to fix once we know.

To know that, the best way is to compile liquidsoap to bytecode
(./configure --disable-nativecode) then you'll get a proper stack
overflow exception with a backtrace telling what caused it.

Thanks,

David

On Thu, Dec 19, 2013 at 9:29 AM, JD Buys jdb...@gmail.com wrote:
 Hi Samuel,

 I ran LS with the latest source build and still experience segfault issues,
 and then read the OCaml installation instructions and saw that changing
 ulimit -s to a higher value might work.
 For some reason my stack limit was 1024 so I changed it to 10240 and my
 segfault issues seem to be gone for now.

 JD


 On Wed, Dec 11, 2013 at 8:56 PM, Samuel Mimram smim...@gmail.com wrote:

 Hi,

 Thanks for letting us know. I am building ocaml-taglib with OCaml
 3.12.1 without any problem here (so, no need for OCaml 4.0).

 ++

 Sam.

 On Wed, Dec 11, 2013 at 7:51 PM, JD Buys jdb...@gmail.com wrote:
  Hi Samuel,
 
  It does seem to be related, and I see we are still using taglib 0.3.1.
  I will update it to the latest from the git repo, and install it, and
  let
  you know if it fixes the problem.
 
  There might be one little snag though, because apparently you need OCaml
  4
  to build the new taglib and we are still running on 3.12.1.
 
  JD
 
 
  On Wed, Dec 11, 2013 at 8:06 PM, Samuel Mimram smim...@gmail.com
  wrote:
 
  Hi,
 
  Your issue seems to be related to
  https://github.com/savonet/liquidsoap/issues/53 and I have added your
  mail there. This has been on the TODO list for a long time, however
  this bug is not an easy one to track down... Would it be possible for
  you to provide us with the script you are using?
 
  ++
 
  Sam.
 
  On Mon, Dec 2, 2013 at 3:42 PM, JD Buys jdb...@gmail.com wrote:
   Hi guys,
  
   Sometimes when I do a call to the LS server via a unix socket
   connection
   I
   don't get any response from the LS server, and then attaching GDB to
   it
   I
   get this stack trace.
  
   Can anyone maybe help interpret this stack trace?
  
   Thread 14 (Thread 0x7ff252f67700 (LWP 5443)):
   #0  pthread_cond_wait@@GLIBC_2.3.2 () at
   ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
   #1  0x0071f160 in caml_condition_wait ()
   #2  0x00734884 in caml_c_call ()
   #3  0x7ff255424230 in ?? ()
   #4  0x7ff230022168 in ?? ()
   #5  0x00a928c8 in camlDuppy__29 ()
   #6  0x00a65d70 in camlTutils__56 ()
   #7  0x7ff2303fc300 in ?? ()
   #8  0x006026fe in camlTutils__queue_1213 ()
   #9  0x7ff252f66ce0 in ?? ()
   #10 0x0060253d in camlTutils__queue_1213 ()
   #11 0x7ff230023ea8 in ?? ()
   #12 0x in ?? ()
  
   Thread 13 (Thread 0x7ff252766700 (LWP 5444)):
   #0  0x7ff257a83de3 in select () at
   ../sysdeps/unix/syscall-template.S:81
   #1  0x0071e73e in caml_thread_tick ()
   #2  0x7ff25bd21f6e in start_thread (arg=0x7ff252766700) at
   pthread_create.c:311
   #3  0x7ff257a8b9cd in clone () at
   ../sysdeps/unix/sysv/linux/x86_64/clone.S:113
  
   Thread 12 (Thread 0x7ff251f65700 (LWP 5445)):
   #0  pthread_cond_wait@@GLIBC_2.3.2 () at
   ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
   #1  0x0071f160 in caml_condition_wait ()
   #2  0x00734884 in caml_c_call ()
   #3  0x7ff255423470 in ?? ()
   #4  0x7ff230022180 in ?? ()
   #5  0x00a928c8 in camlDuppy__29 ()
   #6  0x00a65d70 in camlTutils__56 ()
   #7  0x7ff2303fc300 in ?? ()
   #8  0x006026fe in camlTutils__queue_1213 ()
   #9  0x7ff251f64ce0 in ?? ()
   #10 0x0060253d in camlTutils__queue_1213 ()
   #11 0x7ff230023e28 in ?? ()
   #12 0x in ?? ()
  
   Thread 11 (Thread 0x7ff251764700 (LWP 5446)):
   #0  pthread_cond_wait@@GLIBC_2.3.2 () at
   ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
   #1  0x0071f160 in caml_condition_wait ()
   #2  0x00734884 in caml_c_call ()
   #3  0x7ff255423b50 in ?? ()
   #4  0x7ff230022198 in ?? ()
   #5  0x00a65d40 in camlTutils__53 ()
   #6  0x00a65d70 in camlTutils__56 ()
   ---Type return to continue, or q return to quit---
   #7  0x7ff2303fc300 in ?? ()
   #8  0x006026bb in camlTutils__queue_1213 ()
   #9  0x7ff251763ce0 in ?? ()
   #10 0x0060253d in camlTutils__queue_1213 ()
   #11 0x7ff230023da8 in ?? ()
   #12 0x in ?? ()
  
   Thread 10 (Thread 0x7ff250f63700 (LWP 5447)):
   #0  0x7ff257a83de3 in select () at
   ../sysdeps/unix/syscall-template.S:81
   #1  0x00721998 in unix_select ()
   #2  0x00734884 in caml_c_call ()
   #3  0x7ff250f62cb0 in ?? ()
   #4  0x00645eee in camlDuppy__f_1157 ()
   #5  0x000b in ?? ()
   #6  0x0003 in ?? ()
   #7  

Re: [Savonet-users] liquidsoap reload watch

2013-12-31 Thread David Baelde
Hi,

I just tested the feature, it works here. I'll describe the steps I
followed, you can do the same or describe in details what you did and
what you observed.

1. I filled /tmp/all with a lot of files (all of my audio library)

2. I ran ./src/liquidsoap scripts/pervasives.liq
'out(playlist(reload_mode=watch,/tmp/all))'

3. The logs said Successfully loaded a playlist of 212 tracks.

4. I edited /tmp/all to remove all files except for one album (not the
one that was playing, to be sure to tell the difference)

5. After saving, I see in the logs Loading playlist followed by
Successfully loaded a playlist of 48 tracks soon after.

6. At the end of the song, a new song from the edited playlist played.

Hope this helps,

David

On Tue, Dec 24, 2013 at 2:39 PM, gwado gw...@hotmail.com wrote:
 David Baelde david.baelde@... writes:


 I believe this issue should be discussed on the mailing list. There
 you'll get advice from other people who probably do similar things to
 you, but without a playlist. If not, we can ask several users what
 they think of removing the limitation on reloading empty playlists:
 I'm reluctant to remove it, since it might very well be critical to
 avoid missed reloads for several users.

 --
 Rapidly troubleshoot problems before they affect your business. Most IT
 organizations don't have a clear picture of how application performance
 affects their revenue. With AppDynamics, you get 100% visibility into your
 Java,.NET,  PHP application. Start your 15-day FREE TRIAL of AppDynamics 
 Pro!
 http://pubads.g.doubleclick.net/gampad/clk?id=84349351iu=/4140/ostg.clktrk



 Hi,

 i continue the discussion about reload_mode=watch.
 I can see that it doesnt work.
 Ex : i change all playlists but nothing happens except if i restart
 liquidsoap service.

 My version of liquidsoap is 1.0.1 on Ubuntu Server 13.04



 --
 Rapidly troubleshoot problems before they affect your business. Most IT
 organizations don't have a clear picture of how application performance
 affects their revenue. With AppDynamics, you get 100% visibility into your
 Java,.NET,  PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro!
 http://pubads.g.doubleclick.net/gampad/clk?id=84349831iu=/4140/ostg.clktrk
 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users



-- 
David

--
Rapidly troubleshoot problems before they affect your business. Most IT 
organizations don't have a clear picture of how application performance 
affects their revenue. With AppDynamics, you get 100% visibility into your 
Java,.NET,  PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro!
http://pubads.g.doubleclick.net/gampad/clk?id=84349831iu=/4140/ostg.clktrk
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] no reconnect on second source after network failure

2013-12-11 Thread David Baelde
Hi Peter,

This kind of problem does not ring a bell...

Just to clarify, your script is essentially only a
fallback([input.http(...),input.http(...),single(...)])?

Sharing your script and a log file of when the problem happens could help.

Cheers,

DAvid

On Wed, Dec 11, 2013 at 8:18 PM, Peter Retep peter_re...@gmx.de wrote:
 Hi,

 we are running two http input streams, where the second one is the fallback 
 of the first one.
 Additional there is a fallback of the second, that plays a local file.
 Usually this works perfect for years now.

 In the last months I have seen the following situation seldomly:
 If both streams are not available due to external network errors and later 
 the first one reconnects after network is available again,
 the second one does not get reconnected again, but stays in polling mode 
 after becoming generally available.

 As the LS version we are running is not very fresh, it can be that this is 
 fixed right now,
 so just to let you now...

 liquidsoap --version
 Liquidsoap 1.1.1+scm 
 (git://github.com/savonet/liquidsoap.git@6685817cb4b88c7092b1add3f29f56a33ede00b3:20130526:181509)
 Copyright (c) 2003-2013 Savonet team
 Liquidsoap is open-source software, released under GNU General Public License.
 See http://liquidsoap.fm for more information.

 Please tell me if you need additional informations.

 BR, Peter


 --
 Rapidly troubleshoot problems before they affect your business. Most IT
 organizations don't have a clear picture of how application performance
 affects their revenue. With AppDynamics, you get 100% visibility into your
 Java,.NET,  PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro!
 http://pubads.g.doubleclick.net/gampad/clk?id=84349831iu=/4140/ostg.clktrk
 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users



-- 
David

--
Rapidly troubleshoot problems before they affect your business. Most IT 
organizations don't have a clear picture of how application performance 
affects their revenue. With AppDynamics, you get 100% visibility into your 
Java,.NET,  PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro!
http://pubads.g.doubleclick.net/gampad/clk?id=84349831iu=/4140/ostg.clktrk
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] Transcoding Mono wma to mono Icecast MP3

2013-12-01 Thread David Baelde
Hi guys,

I'm wondering, technically, is there a way for the mplayer input to
enforce that its input stream matches its type, so as to avoid such
problems?

Cheers,

David

On Sat, Nov 2, 2013 at 8:10 PM, Eduardo Martinez
erm13marti...@gmail.com wrote:
 Samuel,

 This worked perfectly.  Thank you very much!

 On Nov 2, 2013 9:56 AM, Samuel Mimram smim...@gmail.com wrote:

 Hi,

 This is because the stream is mono and you are requesting stereo. In
 order to correct this please add the following definition of
 input.mplayer at the beginning of your file:

 def input.mplayer(~id=input.mplayer,
  ~restart=true,~restart_on_error=false,
  ~buffer=0.2,~max=10.,s) =
   input.external(id=id,restart=restart,
  restart_on_error=restart_on_error,
  buffer=buffer,max=max,
  mplayer -really-quiet -af channels=2 -ao
 pcm:file=/dev/stdout \
 -vc null -vo null #{quote(s)} 2/dev/null)
 end

 It is adapted from input.external, I just added the -af channels=2
 option to mplayer and now it seems to work nicely!

 Cheers,

 Samuel.

 On Fri, Nov 1, 2013 at 10:26 PM, Eduardo Martinez
 erm13marti...@gmail.com wrote:
  Hello.
 
  I have the following script used to transcode a mms wma mono stream into
  Icecast MP3,
 
  The conversion is successful, but unfortunately the audio output sounds
  like
  chipmunks.
 
  s =
 
  input.mplayer(mms://a1477.l3760635476.c37606.g.lm.akamaistream.net/D/1477/37606/v0001/reflector:35476,
  buffer=10., max=60.)
  s = drop_video(s)
  s = mksafe(s)
 
  output.icecast(
%mp3(bitrate=32 ,samplerate=44100),
mount=/test,
host=x.x.x.x, port=80, password=x.x.x.x,
s)
 
  I am running liquidsoap 1.1.1, compiled from source.
 
  Any help is greatly appreciated.
 
 
  --
  Android is increasing in popularity, but the open development platform
  that
  developers love is also attractive to malware creators. Download this
  white
  paper to learn more about secure code signing practices that can help
  keep
  Android apps secure.
 
  http://pubads.g.doubleclick.net/gampad/clk?id=65839951iu=/4140/ostg.clktrk
  ___
  Savonet-users mailing list
  Savonet-users@lists.sourceforge.net
  https://lists.sourceforge.net/lists/listinfo/savonet-users
 


 --
 Android is increasing in popularity, but the open development platform
 that
 developers love is also attractive to malware creators. Download this
 white
 paper to learn more about secure code signing practices that can help keep
 Android apps secure.

 http://pubads.g.doubleclick.net/gampad/clk?id=65839951iu=/4140/ostg.clktrk
 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users


 --
 Android is increasing in popularity, but the open development platform that
 developers love is also attractive to malware creators. Download this white
 paper to learn more about secure code signing practices that can help keep
 Android apps secure.
 http://pubads.g.doubleclick.net/gampad/clk?id=65839951iu=/4140/ostg.clktrk
 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users




-- 
David

--
Rapidly troubleshoot problems before they affect your business. Most IT 
organizations don't have a clear picture of how application performance 
affects their revenue. With AppDynamics, you get 100% visibility into your 
Java,.NET,  PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro!
http://pubads.g.doubleclick.net/gampad/clk?id=84349351iu=/4140/ostg.clktrk
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] Changing active mounts

2013-12-01 Thread David Baelde
Hi Michael,

This is definitely possible. In fact, similar things have been
discussed on this list, a little googling should give you some leads.
Also one of our tutorials covers something similar:
http://savonet.sourceforge.net/doc-svn/on2_part2.html

Cheers,

David

On Thu, Oct 31, 2013 at 1:51 AM, Micheal Luttrull
michealluttr...@gmail.com wrote:
 I've looked through all the documentation, api references, etc and I'm not
 quite sure how to (if it can be done) overcome my obstacle.

 I'm part of a small crew of djs who mix live regularly via icecast around
 the world to one server. Currently I have

 Default feed (silence usually, but sometimes a playlist)
 One input.harbor for dj's to connect to.
 One output.icecast to stream to the main server.
 One output.file to dump the stream to a local file on the server.

 This works, however only one dj can connect to inputharbor at a time, which
 is understandable.

 What I'd like to do is setup multiple input.harbors for the djs to connect
 to so a dj can connect at their convenience to verify functioning properly
 etc, while waiting for the previous dj to finish. As it stands right now, I
 give them the info and cross my fingers that they input it all properly. My
 aim is to have multiple (2 or 3 harbors), and then using liquidget or post
 requests, specify a harbor to go live and fed out the output.icecast and
 output.file.

 Can this be accomplished? Any help or direction on this would be greatly
 appreciated. I was thinking of maybe requests or playlists, just not sure
 how to wrap my head around it at the moment.

 Thanks,
 Micheal

 --
 Android is increasing in popularity, but the open development platform that
 developers love is also attractive to malware creators. Download this white
 paper to learn more about secure code signing practices that can help keep
 Android apps secure.
 http://pubads.g.doubleclick.net/gampad/clk?id=65839951iu=/4140/ostg.clktrk
 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users




-- 
David

--
Rapidly troubleshoot problems before they affect your business. Most IT 
organizations don't have a clear picture of how application performance 
affects their revenue. With AppDynamics, you get 100% visibility into your 
Java,.NET,  PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro!
http://pubads.g.doubleclick.net/gampad/clk?id=84349351iu=/4140/ostg.clktrk
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] liquidsoap reload watch

2013-11-30 Thread David Baelde
I believe this issue should be discussed on the mailing list. There
you'll get advice from other people who probably do similar things to
you, but without a playlist. If not, we can ask several users what
they think of removing the limitation on reloading empty playlists:
I'm reluctant to remove it, since it might very well be critical to
avoid missed reloads for several users.

--
Rapidly troubleshoot problems before they affect your business. Most IT 
organizations don't have a clear picture of how application performance 
affects their revenue. With AppDynamics, you get 100% visibility into your 
Java,.NET,  PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro!
http://pubads.g.doubleclick.net/gampad/clk?id=84349351iu=/4140/ostg.clktrk
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] Soft restart of script?

2013-11-30 Thread David Baelde
Hi James,

For your first question you could use on_end() to call for a restart
if needed. For the second one, I did not investigate the options right
now, so I cannot help.

Cheers,

David

On Tue, Nov 19, 2013 at 2:58 PM, Daniel James
daniel.ja...@sourcefabric.org wrote:
 Hi all,

 Regarding https://github.com/savonet/liquidsoap/issues/49 is there any
 way we can issue a script reload command which waits for the current
 playing source item to complete before it executes the reload?

 Also I would welcome any tips on reducing the amount of time it takes to
 restart Liquidsoap or reload with an updated script. We would like to
 minimise dead air to the point where it is not noticeable by the listener.

 Cheers!

 Daniel

 --
 Shape the Mobile Experience: Free Subscription
 Software experts and developers: Be at the forefront of tech innovation.
 Intel(R) Software Adrenaline delivers strategic insight and game-changing
 conversations that shape the rapidly evolving mobile landscape. Sign up now.
 http://pubads.g.doubleclick.net/gampad/clk?id=63431311iu=/4140/ostg.clktrk
 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users



-- 
David

--
Rapidly troubleshoot problems before they affect your business. Most IT 
organizations don't have a clear picture of how application performance 
affects their revenue. With AppDynamics, you get 100% visibility into your 
Java,.NET,  PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro!
http://pubads.g.doubleclick.net/gampad/clk?id=84349351iu=/4140/ostg.clktrk
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] Segfault streaming

2013-11-30 Thread David Baelde
Hi,

In case of a segfault, the core dump is useful. Just inspect it with
gdb following the guidelines here
https://wiki.sourcefabric.org/display/LS/Debugging to make sure you
inspect all threads. Then send us what gdb says. Usually that's all we
would get from the core dump.

Cheers,

David

On Thu, Oct 31, 2013 at 5:13 PM, Henrik Palm hp...@rcseurope.com wrote:
 I run Liquidsoap 1.0.0 on an Arm device (Utilite) with Ubuntu 12.04.

 As soon as I try to play a standard mp3 stream I get segmentation fault
 (core dumped)

 The log say absolutely nothing.



 So, newbie warning here:

 1. How do I get some useful information from the log? I.e what loglevel is
 needed?

 2. Is the core file of some use, and can I send it to anyone?

 3. Some obvious issue I might have forgot about?



 Thanks

 / Henrik




 --
 Android is increasing in popularity, but the open development platform that
 developers love is also attractive to malware creators. Download this white
 paper to learn more about secure code signing practices that can help keep
 Android apps secure.
 http://pubads.g.doubleclick.net/gampad/clk?id=65839951iu=/4140/ostg.clktrk
 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users




-- 
David

--
Rapidly troubleshoot problems before they affect your business. Most IT 
organizations don't have a clear picture of how application performance 
affects their revenue. With AppDynamics, you get 100% visibility into your 
Java,.NET,  PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro!
http://pubads.g.doubleclick.net/gampad/clk?id=84349351iu=/4140/ostg.clktrk
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] Dynamic file loop

2013-11-30 Thread David Baelde
Hi Leonard,

The single() source does not require a static source, at least if you
allow it to be fallible -- which is usually easy to allow by using
mksafe or a fallback to a simple source such as sine or noise. So you
should be able to use a say:.. request for single.

I don't understand what you mean about files being locked on your computer.

Also, why can't you synthesize once and then play the generated static
file? I mean, it's always the same message, right?

HTH

David

On Tue, Nov 26, 2013 at 8:16 PM, Leonard de Ruijter leesv...@lder.me wrote:
 Hello,

 As a fallback in my script, i have a single file containing a text to
 speech message saying that there's no broadcast yet, along with
 information about the next broadcast. So on every broadcast, this file
 should be regenerated. The single operator however requires a static
 source, and on my Windows pc the input file is locked and can't be
 changed. Is there a way to accomplish my goal and allow the contents of
 a file to be changed when it is continuously being streamed?
 Regards,
 Leonard

 --
 Rapidly troubleshoot problems before they affect your business. Most IT
 organizations don't have a clear picture of how application performance
 affects their revenue. With AppDynamics, you get 100% visibility into your
 Java,.NET,  PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro!
 http://pubads.g.doubleclick.net/gampad/clk?id=84349351iu=/4140/ostg.clktrk
 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users



-- 
David

--
Rapidly troubleshoot problems before they affect your business. Most IT 
organizations don't have a clear picture of how application performance 
affects their revenue. With AppDynamics, you get 100% visibility into your 
Java,.NET,  PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro!
http://pubads.g.doubleclick.net/gampad/clk?id=84349351iu=/4140/ostg.clktrk
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] liquidsoap reload watch

2013-11-20 Thread David Baelde
Hi,

Don't you get an informative log message such as Got an empty list:
keeping the old one?

Currently we treat an empty playlist as an error [1]. I don't like
this design choice so much right now, but that's how it is. If you
want to empty the playlist, try putting a dummy request in it (e.g.
nothing:).

Hope this helps,

David

[1] 
https://github.com/savonet/liquidsoap/blob/master/src/sources/playlist.ml#L232

--
Shape the Mobile Experience: Free Subscription
Software experts and developers: Be at the forefront of tech innovation.
Intel(R) Software Adrenaline delivers strategic insight and game-changing 
conversations that shape the rapidly evolving mobile landscape. Sign up now. 
http://pubads.g.doubleclick.net/gampad/clk?id=63431311iu=/4140/ostg.clktrk
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] on_shutdown on errors

2013-11-20 Thread David Baelde
Hi,

Yes it will run on_shutdown functions when it shuts down because of an
error... unless of course the error kills liquidsoap instantly, for
example if it is a segfault. But most errors are exceptions which
trigger a log message and clean shutdown.

Cheers,

David

On Wed, Nov 20, 2013 at 6:56 PM, Leonard de Ruijter leesv...@lder.me wrote:
 Hello,

 I want to have liquidsoap execute a certain function on shutdown. Is
 this function also called on an error, for example when a script crashes
 after it has been running for an amount of time?

 Regards,
 Leonard

 --
 Shape the Mobile Experience: Free Subscription
 Software experts and developers: Be at the forefront of tech innovation.
 Intel(R) Software Adrenaline delivers strategic insight and game-changing
 conversations that shape the rapidly evolving mobile landscape. Sign up now.
 http://pubads.g.doubleclick.net/gampad/clk?id=63431311iu=/4140/ostg.clktrk
 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users



-- 
David

--
Shape the Mobile Experience: Free Subscription
Software experts and developers: Be at the forefront of tech innovation.
Intel(R) Software Adrenaline delivers strategic insight and game-changing 
conversations that shape the rapidly evolving mobile landscape. Sign up now. 
http://pubads.g.doubleclick.net/gampad/clk?id=63431311iu=/4140/ostg.clktrk
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] interpolate string in output.file filename

2013-11-20 Thread David Baelde
Hi,

Good guess, the approach you're trying won't work because the #{..} is
interpreted when creating the string. The output.file doesn't see it
anymore and cannot interpolate.

(Additionally, you should have written ...#{!current_dj}... rather
than #{current_dj} to see the contents of the reference instread of
the reference instead, which is printed as ref(contents).)

To do what you want, I believe the best available way is to use
reopen_on_metadata, and the $(..) notation for interpolating metadata
in the filename. These two features are (partially) documented in the
help of output.file(). Here's also a snippet from
http://savonet.sourceforge.net/doc-svn/scripts/users_radiopi.liq.

title = '$(if $(title),$(title),Emission inconnue)$(if $(artist),
 par  $(artist)) - %m-%d-%Y, %H:%M:%S'
output.file(%vorbis, reopen_on_metadata=true,
fallible=true,
/data/archives/brutes/ ^ title ^ .ogg,
live)

Cheers,

David

On Wed, Nov 20, 2013 at 2:49 PM, Tony Miller mcfiredr...@gmail.com wrote:
 Hi,

 I'm trying to interpolate a ref  in the filename for output.filename:

 output.file(%mp3,
 /mnt/wat/datafruits-#{current_dj}-%d-%m-%Y-%H:%M:%S.mp3,
 live_dj,fallible=true)

 which gets set in my auth function for input.harbor:

 def dj_auth(user,password) =
   u = get_user(user,password)
   p = get_password(user,password)
   #get the output of the php script
   ret = get_process_lines(bundle exec ./dj_auth.rb #{u} #{p})
   #ret has now the value of the live client (dj1,dj2, or djx), or
 ERROR/unknown
   ret = list.hd(ret)
   #return true to let the client transmit data, or false to tell
 harbor to decline
   if ret == true then
 title_prefix := LIVE NOW ♫✩ -- #{u} ✩♪
 current_dj := #{u}
 true
   else
 false
   end
 end

 live_dj = 
 input.harbor(datafruits,port=9000,auth=dj_auth,on_disconnect=on_disconnect)

 But when I see the filename its simply this:
   datafruits-ref()-08-09-2013-20:08:45.mp3

 I'm guessing the string is only interpolated at the beginning of the
 script being run, or its interpolated before the dj_auth function is
 run. Any ideas?

 Also I noticed this in the docs for output.file:
 (unlabeled) (string): Filename where to output the stream. Some
 strftime conversion specifiers are available: %SMHdmY. You can also
 use $(..) interpolation notation for metadata.

 What does it mean by $(..), was that supposed to be #{..} ?

 Thanks again,


 --
 -Tony Miller
 github.com/mcfiredrill
 @freedrull
 freedrool.us

 --
 Shape the Mobile Experience: Free Subscription
 Software experts and developers: Be at the forefront of tech innovation.
 Intel(R) Software Adrenaline delivers strategic insight and game-changing
 conversations that shape the rapidly evolving mobile landscape. Sign up now.
 http://pubads.g.doubleclick.net/gampad/clk?id=63431311iu=/4140/ostg.clktrk
 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users



-- 
David

--
Shape the Mobile Experience: Free Subscription
Software experts and developers: Be at the forefront of tech innovation.
Intel(R) Software Adrenaline delivers strategic insight and game-changing 
conversations that shape the rapidly evolving mobile landscape. Sign up now. 
http://pubads.g.doubleclick.net/gampad/clk?id=63431311iu=/4140/ostg.clktrk
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] Number of assigned clocks keeps growing

2013-11-17 Thread David Baelde
Hi,

In case you're not receiving notifications, I believe I fixed the
issue, in branch LS-132.

This makes me realize that funny things will happen in the sort of
situation we're considering. If an active source is attached to the
inner clock of cue_cut, it only lives through cue_cut, who is
responsible for animating that clock. This active source would
typically be an output.dummy, but possibly something more useful like
an icecast output.. which is a bad idea from the beginning because it
will stream at max speed during when cue_cut() cuts something away.

With the fix, the behavior is the same as before (active sources stop)
but because the clock is garbage collected the attached active sources
should be able to die as well. I need to check this by running more
tests. This may give rise to a tricky workaround for your another
problem you had where you had forgotten to explicitly shutdown a
strip_blank: if you can attach the strip_blank to the clock of an
operator such as a (useless) cue_cut, it may die automatically with
that operator.

Cheers,

David

On Sun, Nov 17, 2013 at 1:05 AM, okay_awright okay_awri...@ddcr.biz wrote:
 Big thanks!

 On 16/11/2013 23:19, David Baelde wrote:
 Hi,

 Good catch, I confirm the issue! cue_cut (and probably also cross and
 smart_cross) operators are garbage collected but leave their clock
 behind. Something is preventing those from being claimed by the GC.

 I have created an issue on github:
 https://github.com/savonet/liquidsoap/issues/132

 This shouldn't be a big problem as the extra sources will cost no CPU
 at all and close to no memory either.

 Thanks,

 David

 --
 DreamFactory - Open Source REST  JSON Services for HTML5  Native Apps
 OAuth, Users, Roles, SQL, NoSQL, BLOB Storage and External API Access
 Free app hosting. Or install the open source package on any LAMP server.
 Sign up and see examples for AngularJS, jQuery, Sencha Touch and Native!
 http://pubads.g.doubleclick.net/gampad/clk?id=63469471iu=/4140/ostg.clktrk
 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users



 --
 regards,
 okay_awright
 okay_awright AT ddcr DOT biz

 --
 DreamFactory - Open Source REST  JSON Services for HTML5  Native Apps
 OAuth, Users, Roles, SQL, NoSQL, BLOB Storage and External API Access
 Free app hosting. Or install the open source package on any LAMP server.
 Sign up and see examples for AngularJS, jQuery, Sencha Touch and Native!
 http://pubads.g.doubleclick.net/gampad/clk?id=63469471iu=/4140/ostg.clktrk
 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users



-- 
David

--
DreamFactory - Open Source REST  JSON Services for HTML5  Native Apps
OAuth, Users, Roles, SQL, NoSQL, BLOB Storage and External API Access
Free app hosting. Or install the open source package on any LAMP server.
Sign up and see examples for AngularJS, jQuery, Sencha Touch and Native!
http://pubads.g.doubleclick.net/gampad/clk?id=63469471iu=/4140/ostg.clktrk
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] Number of assigned clocks keeps growing

2013-11-16 Thread David Baelde
Hi,

Good catch, I confirm the issue! cue_cut (and probably also cross and
smart_cross) operators are garbage collected but leave their clock
behind. Something is preventing those from being claimed by the GC.

I have created an issue on github:
https://github.com/savonet/liquidsoap/issues/132

This shouldn't be a big problem as the extra sources will cost no CPU
at all and close to no memory either.

Thanks,

David

--
DreamFactory - Open Source REST  JSON Services for HTML5  Native Apps
OAuth, Users, Roles, SQL, NoSQL, BLOB Storage and External API Access
Free app hosting. Or install the open source package on any LAMP server.
Sign up and see examples for AngularJS, jQuery, Sencha Touch and Native!
http://pubads.g.doubleclick.net/gampad/clk?id=63469471iu=/4140/ostg.clktrk
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] Number of assigned clocks keeps growing

2013-11-13 Thread David Baelde
Hi,

On Tue, Nov 12, 2013 at 10:13 PM, okay_awright okay_awri...@ddcr.biz wrote:
 When you say crossing operators do you mean functions that need at
 least two sources to operate like fallback() etc or more like add() and
 the like?

I meant cross(), smart_cross() and what's derived from them. These are
special because they combine part of a stream with another part of the
same stream. In order to do this without creating weird side effects
for other operators, they require exclusive control over the flow of
time of the source, which is done by creating a special clock just for
the crossing operator.

 Do I need to watch out for other potential tricky commands and corner cases?

All operator creating clocks might affect your experiment. Apart from
crossing, soundcard I/O come to mind.

 I also use once or twice some output.dummy in order to get hold of a
 reference I would later use, if I recycle that reference (I replace its
 associated value by another output.something(source)) does that old
 reference and its corresponding clock get garbage collected or a do I
 absolutely need to issue a source.shutdown() on top of it beforehand?

Many outputs, such as output.dummy, output.icecast, etc. do not
require a special clock and will thus be attached to the default
clock. So they should not lead to an ever increasing number of clocks.
However, if you create dummy outputs dynamically, you probably also
want to pay attention to shutting them down so they can be garbage
collected.

Good luck minimizing the issue!

David

--
DreamFactory - Open Source REST  JSON Services for HTML5  Native Apps
OAuth, Users, Roles, SQL, NoSQL, BLOB Storage and External API Access
Free app hosting. Or install the open source package on any LAMP server.
Sign up and see examples for AngularJS, jQuery, Sencha Touch and Native!
http://pubads.g.doubleclick.net/gampad/clk?id=63469471iu=/4140/ostg.clktrk
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] How not to shut down Liquidsoap when output stops

2013-11-13 Thread David Baelde
Hi,

This is because strip_blank() is active: it lives on its own to pull
data during stripping. As all other active sources you have to shut it
down so it unregisters from the clock and unused stuff can be
collected. Of course this is a bit silly, strip_blank is not really
useful alone, unlike outputs... but for now we don't have a finer
mechanism for treating it specially. We could introduce a notion of
weak active source that kills itself when no strong active source
needs it (or anything interacting with it) but that's not something
trivial to add. (Don't hesitate to create an issue, though, it's an
interesting thing to consider at some point!)

Cheers,

David

On Mon, Nov 4, 2013 at 12:38 AM, okay_awright okay_awri...@ddcr.biz wrote:
 Hello,

 apparently all intermediate source transformation functions are shut
 down with a source.shutdown() applied on an output.x EXCEPT
 strip_blank() - there might be more examples than that though.

 I call strip_blank() like that in my script:
 ref_source := strip_blank(length=10., !ref_source, threshold=-30.)

 How to force it to shut down too?

 See here, it doesn't say it goes down unlike the other functions, why is
 it still linked to itself BTW (?):

 2013/10/22 23:44:30 [lang:3] channel Test has stopped
 2013/10/22 23:44:30 [compress_6228:4] Activations changed: static=[],
 dynamic=[].
 2013/10/22 23:44:30 [source:4] Source compress_6228 gets down.
 2013/10/22 23:44:30 [normalize_6227:4] Activations changed: static=[],
 dynamic=[].
 2013/10/22 23:44:30 [source:4] Source normalize_6227 gets down.
 2013/10/22 23:44:30 [fallback_6226:4] Activations changed: static=[],
 dynamic=[].
 2013/10/22 23:44:30 [source:4] Source fallback_6226 gets down.
 2013/10/22 23:44:30 [normalize_6211:4] Activations changed: static=[],
 dynamic=[].
 2013/10/22 23:44:30 [source:4] Source normalize_6211 gets down.
 2013/10/22 23:44:30 [on_metadata_6210:4] Activations changed: static=[],
 dynamic=[].
 2013/10/22 23:44:30 [source:4] Source on_metadata_6210 gets down.
 2013/10/22 23:44:30 [strip_blank_6209:4] Activations changed:
 static=[strip_blank_6209], dynamic=[].
 2013/10/22 23:44:30 [smart_cross_6222:4] Activations changed:
 static=[fallback_6226:normalize_6227:compress_6228:/play:/play], dynamic=[].
 2013/10/22 23:44:30 [smart_cross_6222:4] Activations changed: static=[],
 dynamic=[].
 2013/10/22 23:44:30 [source:4] Source smart_cross_6222 gets down.
 2013/10/22 23:44:30 [sequence_6394:4] Activations changed: static=[],
 dynamic=[].
 2013/10/22 23:44:30 [source:4] Source sequence_6394 gets down.
 2013/10/22 23:44:30 [smart_cross_6222_after:4] Activations changed:
 static=[], dynamic=[].
 2013/10/22 23:44:30 [source:4] Source smart_cross_6222_after gets down.
 2013/10/22 23:44:30 [on_metadata_6221:4] Activations changed: static=[],
 dynamic=[smart_cross_6222].
 2013/10/22 23:44:30 [on_metadata_6221:4] Activations changed: static=[],
 dynamic=[].
 2013/10/22 23:44:30 [source:4] Source on_metadata_6221 gets down.
 2013/10/22 23:44:30 [on_track_6220:4] Activations changed: static=[],
 dynamic=[].
 2013/10/22 23:44:30 [source:4] Source on_track_6220 gets down.
 2013/10/22 23:44:30 [normalize_6219:4] Activations changed: static=[],
 dynamic=[].
 2013/10/22 23:44:30 [source:4] Source normalize_6219 gets down.
 2013/10/22 23:44:30 [eat_blank_6218:4] Activations changed: static=[],
 dynamic=[].
 2013/10/22 23:44:30 [source:4] Source eat_blank_6218 gets down.
 2013/10/22 23:44:30 [skip_blank_6217:4] Activations changed: static=[],
 dynamic=[].
 2013/10/22 23:44:30 [source:4] Source skip_blank_6217 gets down.
 2013/10/22 23:44:30 [cue_cut_6213:4] Activations changed: static=[],
 dynamic=[].
 2013/10/22 23:44:30 [source:4] Source cue_cut_6213 gets down.
 2013/10/22 23:44:30 [queue_1:4] Activations changed: static=[], dynamic=[].
 2013/10/22 23:44:30 [source:4] Source queue_1 gets down.

 On 23/10/2013 00:07, okay_awright wrote:
 Hello!
 Thanks Romain it actually works (I think)!
 Setting an very large return value for on_error and forcing a
 source.shutdown() on the active_source of the output.x did the trick:
 the output stops but Liquidsoap still runs!

 Thanks!

 P.S. Now I have some errors when I try to re-open an output.X with the
 same parameters as the one that just failed :), but I think it has to do
 with my script, I'll investigate. Maybe I also need to perform a
 source.shutdown individually on all sources that are combined to produce
 the active_source that has just stopped?

 2013/10/22 23:44:38 [clock.wallclock_main:2] Error when starting /play:
 Lang.Invalid_value(_, A source is already register for this
 mountpointpoint '/' and port 8030.)!
 2013/10/22 23:44:38 [clock.wallclock_main:3] Raised at file list.ml,
 line 144, characters 16-25
 2013/10/22 23:44:38 [/play:1] Got ill-balanced activations (from /play)!
 2013/10/22 23:44:38 [clock:2] Error when leaving output /play: File
 source.ml, line 396, characters 10-16: Assertion failed!

 Longer log snippet attached.


 On 

Re: [Savonet-users] Contact for project

2013-11-13 Thread David Baelde
Hi guys,

I don't know why this isn't happening on the list, but I dug into this
anyway... the zip is not convenient for reporting errors. Here is the
interesting bit, after running make:

make[3]: Entering directory
`/home/stefano/Downloads/tools/liquidsoap-1.1.1-full/ocaml-gstreamer-0.2.0/src'
ocamlc -c -cc gcc -ccopt -fPIC -g -O2 -pthread
-I/usr/local/include/gstreamer-1.0 -I/usr/local/include/glib-2.0
-I/usr/local/lib/glib-2.0/include   -pthread
-I/usr/local/include/gstreamer-1.0 -I/usr/local/include/glib-2.0
-I/usr/local/lib/glib-2.0/include   -Wall -DNATIVE_CODE \
-DPIC -fPIC -pthread -I/usr/local/include/gstreamer-1.0
-I/usr/local/include/glib-2.0 -I/usr/local/lib/glib-2.0/include   -pthread
-I/usr/local/include/gstreamer-1.0 -I/usr/local/include/glib-2.0
-I/usr/local/lib/glib-2.0/include\
-o gstreamer_stubs.o  gstreamer_stubs.c
gstreamer_stubs.c:8:26: error: caml/threads.h: No such file or directory
gstreamer_stubs.c: In function ‘ocaml_gstreamer_init’:
gstreamer_stubs.c:40: warning: implicit declaration of function
‘caml_release_runtime_system’
gstreamer_stubs.c:45: warning: implicit declaration of function
‘caml_acquire_runtime_system’
gstreamer_stubs.c: In function ‘appsrc_need_data_cb’:
gstreamer_stubs.c:823: warning: implicit declaration of function
‘caml_c_thread_register’
gstreamer_stubs.c:827: warning: implicit declaration of function
‘caml_c_thread_unregister’
make[3]: *** [gstreamer_stubs.o] Error 2

I'd say that you have an outdated version of OCaml or an incomplete
installation of OCaml, missing some headers. On my system here is the
relevant file:

baelde@noko ~ $ grep caml_c_thread /usr/include/caml/*h
/usr/include/caml/threads.h:CAMLextern int caml_c_thread_register(void);
...

Hope this helps,

David


-- 
David
--
DreamFactory - Open Source REST  JSON Services for HTML5  Native Apps
OAuth, Users, Roles, SQL, NoSQL, BLOB Storage and External API Access
Free app hosting. Or install the open source package on any LAMP server.
Sign up and see examples for AngularJS, jQuery, Sencha Touch and Native!
http://pubads.g.doubleclick.net/gampad/clk?id=63469471iu=/4140/ostg.clktrk___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] Number of assigned clocks keeps growing

2013-11-12 Thread David Baelde
Hi,

In principle unused clocks should be garbage collected. This may take
some time, but you can try to trigger it using the garbage_collect()
builtin.

I'm interested in investigating this issue if you're still puzzled by
it, but I would need a simple script to play with. You must be using
more than icecast, otherwise only the default wallclock would be
involved. Perhaps crossing operators?

Cheers,

David

On Mon, Nov 4, 2013 at 1:58 AM, okay_awright okay_awri...@ddcr.biz wrote:
 Hello,
 I have a problem related to the number of clocks that keeps growing and
 never decreases or remain stable.
 Here's my setup, in a few words:

 1) Create an output.icecast (i.e. ref_source := output.icecast(...))
 iff an error occurs:
 2) Destroy that active_source (i.e. source.shutdown(!ref_source))
 3) go back to 1)

 It works fine, but apparently the number of assigned clocks keeps
 growing after each cycle (according to the logs), but that number should
 remain stable in my case, right?
 Will the garbage collector take care of the unused sources later on?

 Do you have advices on how to troubleshoot this problem?
 Is source.shutdown() enough to guarantee that any clock used by this
 active source will be freed?

 --
 regards,
 okay_awright
 okay_awright AT ddcr DOT biz

 --
 Android is increasing in popularity, but the open development platform that
 developers love is also attractive to malware creators. Download this white
 paper to learn more about secure code signing practices that can help keep
 Android apps secure.
 http://pubads.g.doubleclick.net/gampad/clk?id=65839951iu=/4140/ostg.clktrk
 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users



-- 
David

--
November Webinars for C, C++, Fortran Developers
Accelerate application performance with scalable programming models. Explore
techniques for threading, error checking, porting, and tuning. Get the most 
from the latest Intel processors and coprocessors. See abstracts and register
http://pubads.g.doubleclick.net/gampad/clk?id=60136231iu=/4140/ostg.clktrk
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] hello

2013-11-10 Thread David Baelde
Thanks for your message, Seth, and welcome to the list!

On Sat, Nov 9, 2013 at 11:40 PM, hurstseth405 hurstseth...@gmail.com wrote:
 I just have to say that you have a grate peace of soft were.

 --
 November Webinars for C, C++, Fortran Developers
 Accelerate application performance with scalable programming models. Explore
 techniques for threading, error checking, porting, and tuning. Get the most
 from the latest Intel processors and coprocessors. See abstracts and register
 http://pubads.g.doubleclick.net/gampad/clk?id=60136231iu=/4140/ostg.clktrk
 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users



-- 
David

--
November Webinars for C, C++, Fortran Developers
Accelerate application performance with scalable programming models. Explore
techniques for threading, error checking, porting, and tuning. Get the most 
from the latest Intel processors and coprocessors. See abstracts and register
http://pubads.g.doubleclick.net/gampad/clk?id=60136231iu=/4140/ostg.clktrk
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] Simple things should be simple

2013-11-10 Thread David Baelde
Hi Roland,

You encountered a known (but rare) issue with type inference. The
first item in your list is an active source (live produces data on its
own) while the second is passive. Type inference should check that all
items in the list have the same type, but our naive algorithm forces
this type to be the canonical type for the first item, ie.
active_source in your case. It should pick source which is a common
subtype of your two items.

For reference, the problem has been reported here (and there is even a
patch that we should review.. thanks for bringing this back in our
minds):
  http://dev.sourcefabric.org/browse/LS-551

The quick fix for now is to give the right type yourself, as shown in
the following session:

$ liquidsoap --interactive
[...]

# fun()-fallback([input.pulseaudio(),sine()]);;
At line 1, char 41-42:
  this value has type
source(_)
  but it should be a subtype of (the type of the value at line 1, char 34-35)
active_source(_)

# fun()-fallback([(input.pulseaudio():source),sine()]);;
- : ()-source(audio=?#A+1,video=0,midi=0) = fun

Cheers,

David

On Sat, Nov 9, 2013 at 1:02 PM, Roland Schwarz
roland.schw...@blackspace.at wrote:
 Dear All!

 Recently I discovered liquidsoap while I was searching for an
 alternative to ices. Well it works really good and soon my appetite was
 whetted and I tried to do more. Yet I am pulling my hair out. The
 following simple script just keeps on telling me:

 At line 11, char 53:
   this value has type
 source(_) (inferred at line 8, char 18-27)
   but it should be a subtype of (the type of the value at line 11, char 46)
 active_source(_) (inferred at /usr/lib/liquidsoap/1.1.1/utils.liq,
 line 159, char 5-75)


 Can anyone please give me a hint what I am doing wrong?
 (I am using liquidsoap --version  Liquidsoap 1.1.1)

 The script:
 
 #!/usr/bin/liquidsoap -t

 set(log.file, false)
 set(log.stdout, true)
 set(log.level, 3)
 set(server.telnet, true)

 jingle = playlist(jingle)
 live = in()

 stream = fallback(track_sensitive=false,[live,jingle])

 out(stream)
 

 The subdirectory jingle/ contains a few mp3's and yes they play fine if
 I say stream = jingle

 Thank you so much!
 Roland






 --
 _
   _  _  | Roland Schwarz aka. speedsnail
  |_)(_  | sip:speedsn...@ekiga.net
  | \__) | mailto:roland.schw...@blackspace.at
 | http://www.blackspace.at

 --
 November Webinars for C, C++, Fortran Developers
 Accelerate application performance with scalable programming models. Explore
 techniques for threading, error checking, porting, and tuning. Get the most
 from the latest Intel processors and coprocessors. See abstracts and register
 http://pubads.g.doubleclick.net/gampad/clk?id=60136231iu=/4140/ostg.clktrk
 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users



-- 
David

--
November Webinars for C, C++, Fortran Developers
Accelerate application performance with scalable programming models. Explore
techniques for threading, error checking, porting, and tuning. Get the most 
from the latest Intel processors and coprocessors. See abstracts and register
http://pubads.g.doubleclick.net/gampad/clk?id=60136231iu=/4140/ostg.clktrk
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] list.remove and functions in lists

2013-11-10 Thread David Baelde
FYI, I have created an entry on github for this issue:
  https://github.com/savonet/liquidsoap/issues/124

--
November Webinars for C, C++, Fortran Developers
Accelerate application performance with scalable programming models. Explore
techniques for threading, error checking, porting, and tuning. Get the most 
from the latest Intel processors and coprocessors. See abstracts and register
http://pubads.g.doubleclick.net/gampad/clk?id=60136231iu=/4140/ostg.clktrk
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] Encode once, stream twice?

2013-10-31 Thread David Baelde
Hi Shaun,

I'm not sure I understand your suggestion. Liquidsoap can send raw PCM
data to harbor, or jack but not to icecast as far as I know. What do
you have in mind?

David

On Thu, Oct 31, 2013 at 9:02 AM, Shaun Dewberry
shaun.dewbe...@gmail.com wrote:
 Hi,

 For scenario B:
 What about having a simple non-encoding liquidsoap script running on your
 endpoint servers feeding the local icecast/shoutcast and have it collect the
 stream from multiple sources and build in the logic to switch between those
 sources if there is a problem with one?

 Just a thought...

 Shaun.


 On Wed, Oct 30, 2013 at 2:57 PM, Matt Camp m...@noise.net.nz wrote:

 On 30 Oct 2013, at 09:42, David Baelde david.bae...@gmail.com wrote:

  Hi Matt,
 
  A long time ago, Liquidsoap could do what you're looking for. We
  dropped it when moving to a better design, making things more uniform
  by treating outputs like other operators. So it's possible (and not
  very hard technically) to do this, but it requires some thinking and a
  fair amount of coding. I'm not sure we have the time for that right
  now... I guess it depends on the pressure/help from the community.
 

 Thanks, that has answered my question... I just wasn't sure if it was
 something that liquidsoap could already do to improve efficiency.

 I don't really think there is a lot of point investing too much energy in
 adding this feature, at least not specifically for supporting low-power
 encoder systems...

 I've now tested liquidsoap on a variety of embedded arm platforms, and
 while the raspberry pi gets the most media attention, it's also by far the
 most inferior. It's probably still the cheapest, but when you consider you
 can get double the CPU power for around £5 more it doesn't really make sense
 as an audio encoder.

 These embedded systems are evolving so rapidly (8-core 2ghz available is
 few months) that I doubt CPU power will really be a problem for long
 anywhere other than the extreme budget end of the scale.

 As for my use cases the main two are:

 A: streaming to both icecast and shoutcast simultaneously (yes, shoutcast
 can relay an icecast stream, but it's messy when dealing with lots of
 streams and it also usually means the relayed stream can't be listed in the
 shoutcast yp directory)

 B: streaming to two separate icecast servers. I run a network of servers
 with multiple front-end servers relaying off a pair (actually more) of
 back-end icecast servers which the sources connect to. This all works, but
 there are cases such as Internet routing issues or server failure where the
 source encoder can no longer reach the first source icecast server. DNS
 records with multiple IPs sort of works with some encoders, but there is
 still usually a period where the whole stream is missing before the source
 encoder connects to the other source server... If there was a source stream
 going to both source servers then failover would be a lot faster, and likely
 not even drop the stream for the listeners.

 In both cases I want to send an identical stream to more than one
 server But it's still totally doable now with liquidsoap I was just
 wondering if there was a more efficient way to do it.

 Cheers.




 --
 Android is increasing in popularity, but the open development platform
 that
 developers love is also attractive to malware creators. Download this
 white
 paper to learn more about secure code signing practices that can help keep
 Android apps secure.

 http://pubads.g.doubleclick.net/gampad/clk?id=65839951iu=/4140/ostg.clktrk
 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users




 --
 http://www.dewberry.co.za
 .gsm +27 83 415 5201

 Don't ignore your dreams; don't work too much; say what you think; cultivate
 friendships; be happy.

 --
 Android is increasing in popularity, but the open development platform that
 developers love is also attractive to malware creators. Download this white
 paper to learn more about secure code signing practices that can help keep
 Android apps secure.
 http://pubads.g.doubleclick.net/gampad/clk?id=65839951iu=/4140/ostg.clktrk
 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users




-- 
David

--
Android is increasing in popularity, but the open development platform that
developers love is also attractive to malware creators. Download this white
paper to learn more about secure code signing practices that can help keep
Android apps secure.
http://pubads.g.doubleclick.net/gampad/clk?id=65839951iu=/4140/ostg.clktrk

Re: [Savonet-users] Encode once, stream twice?

2013-10-31 Thread David Baelde
Hi Shaun,

What you're describing is a nice way to combine two sources into one
while encoding only the combined source, by using harbor with raw data
between sources. However, the issue discussed here is about having a
single source stream to two different icecast; for this problem I
don't see a similar solution.

Cheers,

David

On Thu, Oct 31, 2013 at 11:22 AM, Shaun Dewberry
shaun.dewbe...@gmail.com wrote:
 Hi

 I might be waaay off - haven't worked on my liquidsoap stuff in quite some
 time, but I was thinking something along the lines of this:

 server1_source audio - server1_output.harbor - edgeserver_input.harbor
 with check for failover to alternate stream - edgeserver_icecast/shoutcast
 edge server
 server2_source audio - server2_output.harbor - edgeserver_input.harbor2

 Or perhaps output.gstreamer/input.gstreamer.


 Shaun.





 On Thu, Oct 31, 2013 at 12:05 PM, David Baelde david.bae...@gmail.com
 wrote:

 Hi Shaun,

 I'm not sure I understand your suggestion. Liquidsoap can send raw PCM
 data to harbor, or jack but not to icecast as far as I know. What do
 you have in mind?

 David

 On Thu, Oct 31, 2013 at 9:02 AM, Shaun Dewberry
 shaun.dewbe...@gmail.com wrote:
  Hi,
 
  For scenario B:
  What about having a simple non-encoding liquidsoap script running on
  your
  endpoint servers feeding the local icecast/shoutcast and have it collect
  the
  stream from multiple sources and build in the logic to switch between
  those
  sources if there is a problem with one?
 
  Just a thought...
 
  Shaun.
 
 
  On Wed, Oct 30, 2013 at 2:57 PM, Matt Camp m...@noise.net.nz wrote:
 
  On 30 Oct 2013, at 09:42, David Baelde david.bae...@gmail.com wrote:
 
   Hi Matt,
  
   A long time ago, Liquidsoap could do what you're looking for. We
   dropped it when moving to a better design, making things more uniform
   by treating outputs like other operators. So it's possible (and not
   very hard technically) to do this, but it requires some thinking and
   a
   fair amount of coding. I'm not sure we have the time for that right
   now... I guess it depends on the pressure/help from the community.
  
 
  Thanks, that has answered my question... I just wasn't sure if it was
  something that liquidsoap could already do to improve efficiency.
 
  I don't really think there is a lot of point investing too much energy
  in
  adding this feature, at least not specifically for supporting low-power
  encoder systems...
 
  I've now tested liquidsoap on a variety of embedded arm platforms, and
  while the raspberry pi gets the most media attention, it's also by far
  the
  most inferior. It's probably still the cheapest, but when you consider
  you
  can get double the CPU power for around £5 more it doesn't really make
  sense
  as an audio encoder.
 
  These embedded systems are evolving so rapidly (8-core 2ghz available
  is
  few months) that I doubt CPU power will really be a problem for long
  anywhere other than the extreme budget end of the scale.
 
  As for my use cases the main two are:
 
  A: streaming to both icecast and shoutcast simultaneously (yes,
  shoutcast
  can relay an icecast stream, but it's messy when dealing with lots of
  streams and it also usually means the relayed stream can't be listed in
  the
  shoutcast yp directory)
 
  B: streaming to two separate icecast servers. I run a network of
  servers
  with multiple front-end servers relaying off a pair (actually more) of
  back-end icecast servers which the sources connect to. This all works,
  but
  there are cases such as Internet routing issues or server failure where
  the
  source encoder can no longer reach the first source icecast server. DNS
  records with multiple IPs sort of works with some encoders, but there
  is
  still usually a period where the whole stream is missing before the
  source
  encoder connects to the other source server... If there was a source
  stream
  going to both source servers then failover would be a lot faster, and
  likely
  not even drop the stream for the listeners.
 
  In both cases I want to send an identical stream to more than one
  server But it's still totally doable now with liquidsoap I was
  just
  wondering if there was a more efficient way to do it.
 
  Cheers.
 
 
 
 
 
  --
  Android is increasing in popularity, but the open development platform
  that
  developers love is also attractive to malware creators. Download this
  white
  paper to learn more about secure code signing practices that can help
  keep
  Android apps secure.
 
 
  http://pubads.g.doubleclick.net/gampad/clk?id=65839951iu=/4140/ostg.clktrk
  ___
  Savonet-users mailing list
  Savonet-users@lists.sourceforge.net
  https://lists.sourceforge.net/lists/listinfo/savonet-users
 
 
 
 
  --
  http://www.dewberry.co.za
  .gsm +27 83 415 5201
 
  Don't ignore your dreams; don't work too much; say what

Re: [Savonet-users] Encode once, stream twice?

2013-10-30 Thread David Baelde
Hi Matt,

A long time ago, Liquidsoap could do what you're looking for. We
dropped it when moving to a better design, making things more uniform
by treating outputs like other operators. So it's possible (and not
very hard technically) to do this, but it requires some thinking and a
fair amount of coding. I'm not sure we have the time for that right
now... I guess it depends on the pressure/help from the community.

I see that streaming from very low-power computers is a popular
experience these days, but I'm still unconvinced that it's an
interesting future for liquidsoap. For instance, I had a friend run
liquidsoap on a medium-power board for his home radio, then he
switched to raspberry and liquidsoap was too CPU consuming. He decided
to switch to a (admittedly hackish) solution based on mpd, which he
really likes. I'm not too sad about it, and I'd rather keep liquidsoap
nice and simple than target every possible application.

I'd be happy to keep this discussion going. Tell us why you (and the
world) really need mutualized encoding :p

Cheers,

David

PS: Since airtime builds on liquidsoap, I don't see how it could not
have the same limitation. I guess its three outputs are encoded
separately.

On Mon, Oct 28, 2013 at 11:08 AM, Daniel James
daniel.ja...@sourcefabric.org wrote:
 Hi Matt,

 I'm actually more interested in being able to feed an icecast server and
 a shoutcast server simultaneously from one liquidsoap instance. (without
 relaying)

 Airtime supports up to three independent output streams, you might like
 to take a look at the implementation there.

 Cheers!

 Daniel

 --
 October Webinars: Code for Performance
 Free Intel webinars can help you accelerate application performance.
 Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from
 the latest Intel processors and coprocessors. See abstracts and register 
 http://pubads.g.doubleclick.net/gampad/clk?id=60135991iu=/4140/ostg.clktrk
 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users



-- 
David

--
Android is increasing in popularity, but the open development platform that
developers love is also attractive to malware creators. Download this white
paper to learn more about secure code signing practices that can help keep
Android apps secure.
http://pubads.g.doubleclick.net/gampad/clk?id=65839951iu=/4140/ostg.clktrk
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] Encode once, stream twice?

2013-10-30 Thread David Baelde
On Wed, Oct 30, 2013 at 11:13 AM, Daniel James
daniel.ja...@sourcefabric.org wrote:
 Yes, you can have different bitrates and codecs for each of the three
 outputs - I only mentioned this solution because relaying is not required.

The point here is not what you can have, but what you cannot have: if
the codec, bitrates, etc. are the same for several outputs, you still
have multiple (redundant) encoding of the data.

Cheers,

David

--
Android is increasing in popularity, but the open development platform that
developers love is also attractive to malware creators. Download this white
paper to learn more about secure code signing practices that can help keep
Android apps secure.
http://pubads.g.doubleclick.net/gampad/clk?id=65839951iu=/4140/ostg.clktrk
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] Encode once, stream twice?

2013-10-30 Thread David Baelde
Ok, I'm happy to focus on other things for now, then. Thanks for
sharing your expertise!

David

On Wed, Oct 30, 2013 at 1:57 PM, Matt Camp m...@noise.net.nz wrote:
 On 30 Oct 2013, at 09:42, David Baelde david.bae...@gmail.com wrote:

 Hi Matt,

 A long time ago, Liquidsoap could do what you're looking for. We
 dropped it when moving to a better design, making things more uniform
 by treating outputs like other operators. So it's possible (and not
 very hard technically) to do this, but it requires some thinking and a
 fair amount of coding. I'm not sure we have the time for that right
 now... I guess it depends on the pressure/help from the community.


 Thanks, that has answered my question... I just wasn't sure if it was 
 something that liquidsoap could already do to improve efficiency.

 I don't really think there is a lot of point investing too much energy in 
 adding this feature, at least not specifically for supporting low-power 
 encoder systems...

 I've now tested liquidsoap on a variety of embedded arm platforms, and while 
 the raspberry pi gets the most media attention, it's also by far the most 
 inferior. It's probably still the cheapest, but when you consider you can get 
 double the CPU power for around £5 more it doesn't really make sense as an 
 audio encoder.

 These embedded systems are evolving so rapidly (8-core 2ghz available is few 
 months) that I doubt CPU power will really be a problem for long anywhere 
 other than the extreme budget end of the scale.

 As for my use cases the main two are:

 A: streaming to both icecast and shoutcast simultaneously (yes, shoutcast can 
 relay an icecast stream, but it's messy when dealing with lots of streams and 
 it also usually means the relayed stream can't be listed in the shoutcast yp 
 directory)

 B: streaming to two separate icecast servers. I run a network of servers with 
 multiple front-end servers relaying off a pair (actually more) of back-end 
 icecast servers which the sources connect to. This all works, but there are 
 cases such as Internet routing issues or server failure where the source 
 encoder can no longer reach the first source icecast server. DNS records with 
 multiple IPs sort of works with some encoders, but there is still usually a 
 period where the whole stream is missing before the source encoder connects 
 to the other source server... If there was a source stream going to both 
 source servers then failover would be a lot faster, and likely not even drop 
 the stream for the listeners.

 In both cases I want to send an identical stream to more than one server 
 But it's still totally doable now with liquidsoap I was just wondering if 
 there was a more efficient way to do it.

 Cheers.



 --
 Android is increasing in popularity, but the open development platform that
 developers love is also attractive to malware creators. Download this white
 paper to learn more about secure code signing practices that can help keep
 Android apps secure.
 http://pubads.g.doubleclick.net/gampad/clk?id=65839951iu=/4140/ostg.clktrk
 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users



-- 
David

--
Android is increasing in popularity, but the open development platform that
developers love is also attractive to malware creators. Download this white
paper to learn more about secure code signing practices that can help keep
Android apps secure.
http://pubads.g.doubleclick.net/gampad/clk?id=65839951iu=/4140/ostg.clktrk
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] smooth_add broken again in git?

2013-10-27 Thread David Baelde
Hi Thomas,

Thanks for the fast feedback! I'll document the fix and merge it asap.

Cheers,

David

On Sat, Oct 26, 2013 at 9:24 PM, T. Bühlmann tom...@tbuhl.ch wrote:
 Hi David

 Am 26.10.2013 00:43, schrieb David Baelde:
 FYI I have a proposed fix in branch LS-115
 (https://github.com/savonet/liquidsoap/commits/LS-115) you're welcome
 to check it out and see if it fixes things for you. For me it does,
 but I need to work a bit more on some of my tests, and sleep, before I
 can close this mess, hopefully for good this time. The issue has been
 around since september 2012!
 Well, i hope you had  a good night then? :)

 Your fix from branch LS-115 works also for me.
 For real-world testing i took my regular script and added a smooth_add()
 every minute.
 It now runs for over 2 hours without problems.

 smooth_add() is (in my opinion) one the coolest function of LS.
 Makes it very easy to add automatich time announcments.

 Thanks again!

 --Tom
 On Fri, Oct 25, 2013 at 3:38 PM, David Baelde david.bae...@gmail.com wrote:
 Thanks for the report Thomas!

 I'm ashamed that we still/again have a problem with smooth_add. I have
 reproduced against the very latest version, and files an issue on
 which I plan to work right now:
https://github.com/savonet/liquidsoap/issues/115

 Cheers,

 David

 On Tue, Oct 22, 2013 at 5:34 PM, Romain Beauxis to...@rastageeks.org 
 wrote:
 Ok thanks, will try to reproduce.

 2013/10/22 Thomas Bühlmann tom...@tbuhl.ch:
 Am 22.10.2013 17:05, schrieb Thomas Bühlmann:
 Am 22.10.2013 14:27, schrieb Romain Beauxis:
 Hi Thomas,

 2013/10/9 Thomas Bühlmann tom...@tbuhl.ch:
 Today i found some time to get latest liquidosoap-full git and compile.
 It's version: Liquidsoap 1.1.1+scm
 (git://github.com/savonet/liquidsoap.git@b7dad534b3c51dfb7f35742cbab806bc92a899f9:20131009:202232)
 There i find he old smooth_add bug: it starts fading to special, but
 doesn't return to normal.
 It just sits at

 [single_4944:3] Finished with /music/news/time.mp3.
 [amplify_4948:3] End of the current overriding.
 and can only be killed.

 The same script works with an older version.
 In my case: Liquidsoap 1.1.1+scm
 (git://github.com/savonet/liquidsoap.git@dfcf79c10c580abcd35451799f99deeb46d0bfd8:20130825:110844)
 The code basically looks like this:

 sa=playlist.safe(...)
 sa=amplify(1.,override=replay_gain,day)

 sb=single (annotate:foo=\bla\:/music/news/time.mp3)
 
 .
 radio=smooth_add(delay=0.9,p=0.3, normal=sa, special=switch([({(1h-6h) 
 and
 00m00s),sb)]))

 output.icecast( ,radio)

 Can anybody confirm this or is there an error on my side?
 We recently fixed a bug in smart_crossfade that sounds similar to
 this. Can you reproduce the issue with the current git code?

 Thanks,
 Romain
 Hi Romain
 In this case I'll fetch git again this evening and retry.

 Thanks,
 Tom
 Hello!

 I already had time to fetch latest git.
 I have now:
 Liquidsoap 1.1.1+scm
 (git://github.com/savonet/liquidsoap.git@b7dad534b3c51dfb7f35742cbab806bc92a899f9:20131022:172243)

 Unfortunately the error persists.  :(

 --Tom
 --
 October Webinars: Code for Performance
 Free Intel webinars can help you accelerate application performance.
 Explore tips for MPI, OpenMP, advanced profiling, and more. Get the 
 most from
 the latest Intel processors and coprocessors. See abstracts and 
 register 
 http://pubads.g.doubleclick.net/gampad/clk?id=60135991iu=/4140/ostg.clktrk
 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users
 --
 October Webinars: Code for Performance
 Free Intel webinars can help you accelerate application performance.
 Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most 
 from
 the latest Intel processors and coprocessors. See abstracts and register 
 
 http://pubads.g.doubleclick.net/gampad/clk?id=60135991iu=/4140/ostg.clktrk
 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users

 --
 October Webinars: Code for Performance
 Free Intel webinars can help you accelerate application performance.
 Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most 
 from
 the latest Intel processors and coprocessors. See abstracts and register 
 http://pubads.g.doubleclick.net/gampad/clk?id=60135991iu=/4140/ostg.clktrk
 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users
 --
 October Webinars: Code for Performance
 Free Intel

Re: [Savonet-users] monitor level output / telnet

2013-10-26 Thread David Baelde
Hi Peter,

For the first issue, this is really annoying. On newer versions of
git, it complains that set-upstream is deprecated, and warns us unless
we perform an annoying renaming to set-upstream-to. We should have
expected that this new name does not work on older versions. The real
problem is that we don't have a good enough understanding of what
these options do... Anyway your solution is good, it should have no
bad effect, but we should do something better.

The second point is surprising. What version of ocaml do you have? The
problematic integer is 2147483647, i.e. 2**31-1: it should be the max
positive integer on OCaml, where the type int is signed and
represented on 31 bits. What's your arch and version of OCaml?

Cheers,

David

On Fri, Oct 25, 2013 at 8:58 PM, Peter Retep peter_re...@gmx.de wrote:
 Hi,

 I finally found some time to check the new separate channel DB output feature
 and therefore wanted to build the latest version from git on Ubuntu 12.4 LTS.

 1)
 After doing git clone in a fresh directory,
 make init exited with following errors:

 git fetch
 git branch --set-upstream-to=origin/master master
 error: unknown option `set-upstream-to=origin/master'

 I assume --set-upstream-to is not supported by the current Ubuntu LTS
 git version 1.7.0.4

 I did remove the git branch commands from Makefile.git and went on.
 (I do not know if this works for my usecase: to get the newest version
 from the repository)

 2)

 After bootstrap and configure I finally got a syntax error at compiling:

 OCAMLDEP
 File tools/utils.ml, line 636, characters 16-26:
 Error: Integer literal exceeds the range of representable integers of type int
 File configure.mli, line 84, characters 15-21:
 Error: Syntax error
 OCAMLOPT -c tools/stdlib.ml
 OCAMLOPT -c tools/doc.ml
 OCAMLOPT -c tools/plug.ml
 OCAMLOPT -c tools/utils.ml
 File tools/utils.ml, line 636, characters 16-26:
 Error: Integer literal exceeds the range of representable integers of type int

 Do you have any ideas?

 Thanks in advance,

 Peter

 Am 04.10.2013 13:10, schrieb Peter Retep:
 Hi Romain,

 thanks for your response.

 I wrote 3 separate issues at github (#102, #103, #104)
 to split the request into separate units that can be priorized as you like 
 it.

 * RMS channel separation
 * setting RMS duration
 * dynamically adding or removing multiple RMS monitors with different 
 durations

 Best regards,
 Peter


 Am 01.10.2013 21:15, schrieb Romain Beauxis:
 Hi Peter,

 2013/9/29 Peter Retep peter_re...@gmx.de mailto:peter_re...@gmx.de
 Hello again,

 I finally remembered it was called rms and server.rms.
 which worked out of the box.

 Is there the possibility to get the RMS separated for each channel?
 Is there also the possibility to dynamically set the duration, the RMS is 
 to be calculated for?
 This would allow to request the current peak (with small duration), but 
 also medium and long duration RMS)?
 None of that is currently available, I think. If you would be kind enough 
 to open a feature request on github I'd be glad to look at it:
   https://github.com/savonet/liquidsoap/issues/new

 Romain


 --
 October Webinars: Code for Performance
 Free Intel webinars can help you accelerate application performance.
 Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most 
 from
 the latest Intel processors and coprocessors. See abstracts and register 
 http://pubads.g.doubleclick.net/gampad/clk?id=60134791iu=/4140/ostg.clktrk


 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users

 --
 October Webinars: Code for Performance
 Free Intel webinars can help you accelerate application performance.
 Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from
 the latest Intel processors and coprocessors. See abstracts and register 
 http://pubads.g.doubleclick.net/gampad/clk?id=60134791iu=/4140/ostg.clktrk
 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users



 --
 October Webinars: Code for Performance
 Free Intel webinars can help you accelerate application performance.
 Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from
 the latest Intel processors and coprocessors. See abstracts and register 
 http://pubads.g.doubleclick.net/gampad/clk?id=60135991iu=/4140/ostg.clktrk
 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users



-- 
David


Re: [Savonet-users] monitor level output / telnet

2013-10-26 Thread David Baelde
Ton patch a l'air raisonnable, passer à Int32 c'est safe, mais quand
même je comprends pas pourquoi l'entier précédent était pas bon en 32
bits...

On Sat, Oct 26, 2013 at 11:23 AM, Samuel Mimram smim...@gmail.com wrote:
 Hi,

 On Fri, Oct 25, 2013 at 8:58 PM, Peter Retep peter_re...@gmx.de wrote:
 I finally found some time to check the new separate channel DB output feature
 and therefore wanted to build the latest version from git on Ubuntu 12.4 LTS.

 1)
 After doing git clone in a fresh directory,
 make init exited with following errors:

 git fetch
 git branch --set-upstream-to=origin/master master
 error: unknown option `set-upstream-to=origin/master'

 I assume --set-upstream-to is not supported by the current Ubuntu LTS
 git version 1.7.0.4

 I did remove the git branch commands from Makefile.git and went on.
 (I do not know if this works for my usecase: to get the newest version
 from the repository)

 I will let Romain answer on this one, but I think that as long as you
 get some code, it should be fine :)

 2)

 After bootstrap and configure I finally got a syntax error at compiling:

 OCAMLDEP
 File tools/utils.ml, line 636, characters 16-26:
 Error: Integer literal exceeds the range of representable integers of type 
 int

 I guess that you are on a 32 bits arch. I just commited a patch to fix this 
 one.

 File configure.mli, line 84, characters 15-21:
 Error: Syntax error

 This one is more tricky. We are using a recent feature of the OCaml
 compiler. I'll try to see what I can do. On your side, you don't have
 a way to update the ocaml package I suppose ?

 OCAMLOPT -c tools/stdlib.ml
 OCAMLOPT -c tools/doc.ml
 OCAMLOPT -c tools/plug.ml
 OCAMLOPT -c tools/utils.ml
 File tools/utils.ml, line 636, characters 16-26:
 Error: Integer literal exceeds the range of representable integers of type 
 int

 Same as above, should be fixed.

 Cheers,

 Samuel.

 --
 October Webinars: Code for Performance
 Free Intel webinars can help you accelerate application performance.
 Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from
 the latest Intel processors and coprocessors. See abstracts and register 
 http://pubads.g.doubleclick.net/gampad/clk?id=60135991iu=/4140/ostg.clktrk
 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users



-- 
David

--
October Webinars: Code for Performance
Free Intel webinars can help you accelerate application performance.
Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from 
the latest Intel processors and coprocessors. See abstracts and register 
http://pubads.g.doubleclick.net/gampad/clk?id=60135991iu=/4140/ostg.clktrk
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] smooth_add broken again in git?

2013-10-25 Thread David Baelde
Thanks for the report Thomas!

I'm ashamed that we still/again have a problem with smooth_add. I have
reproduced against the very latest version, and files an issue on
which I plan to work right now:
  https://github.com/savonet/liquidsoap/issues/115

Cheers,

David

On Tue, Oct 22, 2013 at 5:34 PM, Romain Beauxis to...@rastageeks.org wrote:
 Ok thanks, will try to reproduce.

 2013/10/22 Thomas Bühlmann tom...@tbuhl.ch:
 Am 22.10.2013 17:05, schrieb Thomas Bühlmann:
 Am 22.10.2013 14:27, schrieb Romain Beauxis:
 Hi Thomas,

 2013/10/9 Thomas Bühlmann tom...@tbuhl.ch:
 Today i found some time to get latest liquidosoap-full git and compile.
 It's version: Liquidsoap 1.1.1+scm
 (git://github.com/savonet/liquidsoap.git@b7dad534b3c51dfb7f35742cbab806bc92a899f9:20131009:202232)
 There i find he old smooth_add bug: it starts fading to special, but
 doesn't return to normal.
 It just sits at

 [single_4944:3] Finished with /music/news/time.mp3.
 [amplify_4948:3] End of the current overriding.
 and can only be killed.

 The same script works with an older version.
 In my case: Liquidsoap 1.1.1+scm
 (git://github.com/savonet/liquidsoap.git@dfcf79c10c580abcd35451799f99deeb46d0bfd8:20130825:110844)
 The code basically looks like this:

 sa=playlist.safe(...)
 sa=amplify(1.,override=replay_gain,day)

 sb=single (annotate:foo=\bla\:/music/news/time.mp3)
 
 .
 radio=smooth_add(delay=0.9,p=0.3, normal=sa, special=switch([({(1h-6h) and
 00m00s),sb)]))

 output.icecast( ,radio)

 Can anybody confirm this or is there an error on my side?
 We recently fixed a bug in smart_crossfade that sounds similar to
 this. Can you reproduce the issue with the current git code?

 Thanks,
 Romain
 Hi Romain
 In this case I'll fetch git again this evening and retry.

 Thanks,
 Tom

 Hello!

 I already had time to fetch latest git.
 I have now:
 Liquidsoap 1.1.1+scm
 (git://github.com/savonet/liquidsoap.git@b7dad534b3c51dfb7f35742cbab806bc92a899f9:20131022:172243)

 Unfortunately the error persists.  :(

 --Tom
 --
 October Webinars: Code for Performance
 Free Intel webinars can help you accelerate application performance.
 Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most 
 from
 the latest Intel processors and coprocessors. See abstracts and register 
 http://pubads.g.doubleclick.net/gampad/clk?id=60135991iu=/4140/ostg.clktrk
 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users

 --
 October Webinars: Code for Performance
 Free Intel webinars can help you accelerate application performance.
 Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most 
 from
 the latest Intel processors and coprocessors. See abstracts and register 
 http://pubads.g.doubleclick.net/gampad/clk?id=60135991iu=/4140/ostg.clktrk
 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users


 --
 October Webinars: Code for Performance
 Free Intel webinars can help you accelerate application performance.
 Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from
 the latest Intel processors and coprocessors. See abstracts and register 
 http://pubads.g.doubleclick.net/gampad/clk?id=60135991iu=/4140/ostg.clktrk
 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users

 --
 October Webinars: Code for Performance
 Free Intel webinars can help you accelerate application performance.
 Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from
 the latest Intel processors and coprocessors. See abstracts and register 
 http://pubads.g.doubleclick.net/gampad/clk?id=60135991iu=/4140/ostg.clktrk
 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users



-- 
David

--
October Webinars: Code for Performance
Free Intel webinars can help you accelerate application performance.
Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from 
the latest Intel processors and coprocessors. See abstracts and register 
http://pubads.g.doubleclick.net/gampad/clk?id=60135991iu=/4140/ostg.clktrk
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net

Re: [Savonet-users] smooth_add broken again in git?

2013-10-25 Thread David Baelde
FYI I have a proposed fix in branch LS-115
(https://github.com/savonet/liquidsoap/commits/LS-115) you're welcome
to check it out and see if it fixes things for you. For me it does,
but I need to work a bit more on some of my tests, and sleep, before I
can close this mess, hopefully for good this time. The issue has been
around since september 2012!

On Fri, Oct 25, 2013 at 3:38 PM, David Baelde david.bae...@gmail.com wrote:
 Thanks for the report Thomas!

 I'm ashamed that we still/again have a problem with smooth_add. I have
 reproduced against the very latest version, and files an issue on
 which I plan to work right now:
   https://github.com/savonet/liquidsoap/issues/115

 Cheers,

 David

 On Tue, Oct 22, 2013 at 5:34 PM, Romain Beauxis to...@rastageeks.org wrote:
 Ok thanks, will try to reproduce.

 2013/10/22 Thomas Bühlmann tom...@tbuhl.ch:
 Am 22.10.2013 17:05, schrieb Thomas Bühlmann:
 Am 22.10.2013 14:27, schrieb Romain Beauxis:
 Hi Thomas,

 2013/10/9 Thomas Bühlmann tom...@tbuhl.ch:
 Today i found some time to get latest liquidosoap-full git and compile.
 It's version: Liquidsoap 1.1.1+scm
 (git://github.com/savonet/liquidsoap.git@b7dad534b3c51dfb7f35742cbab806bc92a899f9:20131009:202232)
 There i find he old smooth_add bug: it starts fading to special, but
 doesn't return to normal.
 It just sits at

 [single_4944:3] Finished with /music/news/time.mp3.
 [amplify_4948:3] End of the current overriding.
 and can only be killed.

 The same script works with an older version.
 In my case: Liquidsoap 1.1.1+scm
 (git://github.com/savonet/liquidsoap.git@dfcf79c10c580abcd35451799f99deeb46d0bfd8:20130825:110844)
 The code basically looks like this:

 sa=playlist.safe(...)
 sa=amplify(1.,override=replay_gain,day)

 sb=single (annotate:foo=\bla\:/music/news/time.mp3)
 
 .
 radio=smooth_add(delay=0.9,p=0.3, normal=sa, special=switch([({(1h-6h) 
 and
 00m00s),sb)]))

 output.icecast( ,radio)

 Can anybody confirm this or is there an error on my side?
 We recently fixed a bug in smart_crossfade that sounds similar to
 this. Can you reproduce the issue with the current git code?

 Thanks,
 Romain
 Hi Romain
 In this case I'll fetch git again this evening and retry.

 Thanks,
 Tom

 Hello!

 I already had time to fetch latest git.
 I have now:
 Liquidsoap 1.1.1+scm
 (git://github.com/savonet/liquidsoap.git@b7dad534b3c51dfb7f35742cbab806bc92a899f9:20131022:172243)

 Unfortunately the error persists.  :(

 --Tom
 --
 October Webinars: Code for Performance
 Free Intel webinars can help you accelerate application performance.
 Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most 
 from
 the latest Intel processors and coprocessors. See abstracts and register 
 http://pubads.g.doubleclick.net/gampad/clk?id=60135991iu=/4140/ostg.clktrk
 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users

 --
 October Webinars: Code for Performance
 Free Intel webinars can help you accelerate application performance.
 Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most 
 from
 the latest Intel processors and coprocessors. See abstracts and register 
 http://pubads.g.doubleclick.net/gampad/clk?id=60135991iu=/4140/ostg.clktrk
 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users


 --
 October Webinars: Code for Performance
 Free Intel webinars can help you accelerate application performance.
 Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most 
 from
 the latest Intel processors and coprocessors. See abstracts and register 
 http://pubads.g.doubleclick.net/gampad/clk?id=60135991iu=/4140/ostg.clktrk
 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users

 --
 October Webinars: Code for Performance
 Free Intel webinars can help you accelerate application performance.
 Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from
 the latest Intel processors and coprocessors. See abstracts and register 
 http://pubads.g.doubleclick.net/gampad/clk?id=60135991iu=/4140/ostg.clktrk
 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users



 --
 David



-- 
David

--
October Webinars: Code for Performance
Free

Re: [Savonet-users] playlis.once - first track playing twice!

2013-10-08 Thread David Baelde
Hi,

We need to understand the difference between you and I. What version
of liquidsoap are you running?

I'm running the git version 5499b892e0e8c328b8342727eda43485645bc933.
I tried twice_simpl.liq this morning, I heard the transition again. To
make things clear I'm talking about the initial transition from the
sine to the music, that you should hear about a few seconds. (You can
change the duration of the delay which makes the music initially
unavailable on line 6, so the transition might be more obvious.)

It would be surprising that you don't get the same behaviour with the
same version of liquidsoap.

The log you attached is for the script twice.liq. I tried this one
again too, and confirm that I can hear the fading sine caused b the
transition.

Cheers,

David

On Tue, Oct 8, 2013 at 2:30 PM, Сергей Иванов genu...@tut.by wrote:
 Hello, David!
 Thank You for fast reply!


 2013/10/5 David Baelde david.bae...@gmail.com

 Hi,

 I simplified your script to try it on my end, on a dev version of liq.
 You'll find my version attached. (There are a few comments at the
 beginning, that could help you although they are probably not relevant
 for the current issue. I also attach a script that is simplified based
 on the assumption that the beginning stuff is irrelevant, focusing on
 the fallback transition.)

 These two scripts work for me. The first one is very close to your
 setup, the second is minimized. I had to artificially delay the
 availability of songs, to witness the to_music transition. But after
 that I can hear it (and see it) clearly. Do these two scripts work for
 you?

 Hope this helps,

 David

 PS: We would also be interested if you could reproduce the error
 visible in your logs, with the exception raised from taglib.


 I just now found the time to check your script. The problem remains the
 exact same. Maybe it is something else? Currently, I'm using Ubuntu Server
 12.04 LTS with all current updates. The server has 2GB RAM, processor Intel
 Xeon 3050@1.2GHz. Music and audio are on the local disk, the news on the
 samba share. I checked the local news in mp3 - the same result, I definitely
 did not hear the mix during the transition from news to music.

 The exception always appears when liquidsoap open an uncoded wav file. I
 attached log file to message/


 --
 October Webinars: Code for Performance
 Free Intel webinars can help you accelerate application performance.
 Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most
 from
 the latest Intel processors and coprocessors. See abstracts and register 

 http://pubads.g.doubleclick.net/gampad/clk?id=60134791iu=/4140/ostg.clktrk
 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users



 --
 October Webinars: Code for Performance
 Free Intel webinars can help you accelerate application performance.
 Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most
 from
 the latest Intel processors and coprocessors. See abstracts and register 
 http://pubads.g.doubleclick.net/gampad/clk?id=60134071iu=/4140/ostg.clktrk
 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users




-- 
David

--
October Webinars: Code for Performance
Free Intel webinars can help you accelerate application performance.
Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from 
the latest Intel processors and coprocessors. See abstracts and register 
http://pubads.g.doubleclick.net/gampad/clk?id=60134071iu=/4140/ostg.clktrk
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] Using exe_ext on Debian/Ubuntu

2013-10-05 Thread David Baelde
Hi Daniel,

There might be a version mismatch between your liquidsoap binary and
your .liq scripts. On my development version, the variable exe_ext
isdefined as a builtin (from src/lang/lang_builtins.ml) with its
content obtained from src/configure.ml. I didn't check when it
appeared exactly, and in which releases it is included.

Anyway, your solution is safe for Ubuntu, and I don't foresee any
unwanted side-effect.

Cheers,

David

On Fri, Oct 4, 2013 at 6:07 PM, Daniel James
daniel.ja...@sourcefabric.org wrote:
 Hi all,

 Trying to improve our Liquidsoap binary packages for Debian/Ubuntu, I
 noticed that liquidsoap/src/configure.ml says by default:

 let libs_dir = /usr/local/lib/liquidsoap/scm

 If I drop all of the scripts normally installed with Liquidsoap into
 that directory, they all seem to work with our binary except
 externals.liq, which blocks Liquidsoap from starting:

 At /usr/local/lib/liquidsoap/scm/externals.liq, line 19 char 29 - line
 20 char 0:
   the variable exe_ext used here has not been previously defined.

 I see exe_ext is used when running on Windows, presumably to put .exe on
 the end of external binary names such as mpcdec and metaflac. I can work
 around this by putting:

 exe_ext=

 at the top of externals.liq. But if there is a more elegant solution,
 I'd like to hear about it :-)

 Building from source on the same machine, it works fine without this change.

 Cheers!

 Daniel

 --
 October Webinars: Code for Performance
 Free Intel webinars can help you accelerate application performance.
 Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from
 the latest Intel processors and coprocessors. See abstracts and register 
 http://pubads.g.doubleclick.net/gampad/clk?id=60134791iu=/4140/ostg.clktrk
 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users



-- 
David

--
October Webinars: Code for Performance
Free Intel webinars can help you accelerate application performance.
Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from 
the latest Intel processors and coprocessors. See abstracts and register 
http://pubads.g.doubleclick.net/gampad/clk?id=60134791iu=/4140/ostg.clktrk
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] Time remaining problem

2013-10-05 Thread David Baelde
Hi,

On Fri, Oct 4, 2013 at 8:43 AM, JD Buys jdb...@gmail.com wrote:
 If I call skip then the song skips, but if I just leave everything the song
 never finishes, so it looks like there's some kind of deadlock.

Do you mean that the song never finishes _from the viewpoint of the
shoutcast output_? In other words, tracks are merged together. This
could be the result of an abusive transition, or perhaps a known bug
with crossfading in the latest release
(https://github.com/savonet/liquidsoap/issues/98)?

Hope this helps,

David

--
October Webinars: Code for Performance
Free Intel webinars can help you accelerate application performance.
Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from 
the latest Intel processors and coprocessors. See abstracts and register 
http://pubads.g.doubleclick.net/gampad/clk?id=60134791iu=/4140/ostg.clktrk
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] Conservative on request.queue

2013-10-05 Thread David Baelde
Hi guys,

Requests associated to local files are instantly resolved when
created, so the primary/secondary distinction does not matter.

Chris, if you want to resolve more requests in advance, just increase
the length of the primary queue using the length parameter. Most
requests will be considered has having duration default_duration, so
if you set length to be N*default_duration you should get N requests
resolved in advance.

Hope this helps,

David

On Fri, Oct 4, 2013 at 1:24 AM, Romain Beauxis rom...@liquidsoap.fm wrote:
 2013/10/1 Chris Everest chrisever...@gmail.com

 On Tue, Oct 1, 2013 at 3:06 PM, Romain Beauxis to...@rastageeks.org
 wrote:

 Hi Chris,2013/9/26 Chris Everest chrisever...@gmail.com

 Thanks for the traces. Unfortunately, I don't see anything wrong with
 them.. What you see is that the file is downloaded with a .flac extension,
 that the flac decoder picks it up and that the taglib metadata decoder
 rejects it.

 This is how it is supposed to happen, taglib is set to accept only mp3
 files by default and the flac metadata decoder is supposed to decode the
 file's metadata.

 What happens when you download the file manually and run liquidsoap -r
 /path/to/file.flac ?

 Thanks,
 Romain


 Picking a random flac file, I download and initiate liquidsoap manually.
 It seems to work fine.  And when adding to request.queue the first request
 resolves fine too.  It's the subsequent requests that get placed into the
 secondary queue that don't get resolve metadata until the request is
 prepared as the next track.

 I see now. I'm not exactly sure why it works differently with local files
 then. I will have a look at the code but could you also share the
 request.resolve logs with a local file by any chance?

 Thanks,
 Romain


 --
 October Webinars: Code for Performance
 Free Intel webinars can help you accelerate application performance.
 Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most
 from
 the latest Intel processors and coprocessors. See abstracts and register 
 http://pubads.g.doubleclick.net/gampad/clk?id=60134791iu=/4140/ostg.clktrk
 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users




-- 
David

--
October Webinars: Code for Performance
Free Intel webinars can help you accelerate application performance.
Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from 
the latest Intel processors and coprocessors. See abstracts and register 
http://pubads.g.doubleclick.net/gampad/clk?id=60134791iu=/4140/ostg.clktrk
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] playlis.once - first track playing twice!

2013-10-05 Thread David Baelde
Hi,

I simplified your script to try it on my end, on a dev version of liq.
You'll find my version attached. (There are a few comments at the
beginning, that could help you although they are probably not relevant
for the current issue. I also attach a script that is simplified based
on the assumption that the beginning stuff is irrelevant, focusing on
the fallback transition.)

These two scripts work for me. The first one is very close to your
setup, the second is minimized. I had to artificially delay the
availability of songs, to witness the to_music transition. But after
that I can hear it (and see it) clearly. Do these two scripts work for
you?

Hope this helps,

David

PS: We would also be interested if you could reproduce the error
visible in your logs, with the exception raised from taglib.


twice.liq
Description: Binary data


twice_simpl.liq
Description: Binary data
--
October Webinars: Code for Performance
Free Intel webinars can help you accelerate application performance.
Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from 
the latest Intel processors and coprocessors. See abstracts and register 
http://pubads.g.doubleclick.net/gampad/clk?id=60134791iu=/4140/ostg.clktrk___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] how to get 6 track in one request

2013-09-09 Thread David Baelde
Hi,

You cannot merge two requests into one at the level of requests and
protocols, but you can merge two tracks into one at the level of
sources.

You could add metadata (using the annotate protocol) to your requests
when they need to be merged with the next one, and use smart_cross()
to merge tracks when you see that metadata. For merging tracks you can
use a simple transition involving sequence(merge=true).

Note that we have introduced a bug in sequence() five months ago that
would probably hit you when using it here (it would make sequence()
merge all tracks, not only the first two). I fixed it today, make sure
you don't have a broken version:
https://github.com/savonet/liquidsoap/commit/3f272c65a957024314e75873afa32b27f15e7b08

Hope this helps,

David

On Sat, Sep 7, 2013 at 1:00 PM, kino admin k...@crimeworld-game.com wrote:
 i use request.dynamic and python script, python script output 1 track, but
 python create very high load and i want get a lot of tracks one request
 python

 --
 Learn the latest--Visual Studio 2012, SharePoint 2013, SQL 2012, more!
 Discover the easy way to master current and previous Microsoft technologies
 and advance your career. Get an incredible 1,500+ hours of step-by-step
 tutorial videos with LearnDevNow. Subscribe today and save!
 http://pubads.g.doubleclick.net/gampad/clk?id=58041391iu=/4140/ostg.clktrk
 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users




-- 
David

--
Learn the latest--Visual Studio 2012, SharePoint 2013, SQL 2012, more!
Discover the easy way to master current and previous Microsoft technologies
and advance your career. Get an incredible 1,500+ hours of step-by-step
tutorial videos with LearnDevNow. Subscribe today and save!
http://pubads.g.doubleclick.net/gampad/clk?id=58041391iu=/4140/ostg.clktrk
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] input.http transition problem

2013-07-03 Thread David Baelde
Hi Daniele,

The safe_blank source is inside mksafe(). The operator switches to
that blank source when your source has nothing to send. The stuff
about transitions can be ignored here.

So essentially, all this is saying is that your http input has failed
to provide a stream. Here it looks like it's not caused by a permanent
disconnection but rather but a network lag causing the internal buffer
to empty. Disconnections would be logged, but the buffer underrun is
only logged at level 4 (debug).

Hope this helps,

David

On Wed, Jul 3, 2013 at 1:12 AM, Daniele kkstyl...@gmail.com wrote:
 hi all, i have liquid soap working for a month but in this week i have a
 problem, the stream have 2 o 3 times in a song silent hole (2 second)

 this is my code (stripped):


 autodj = mksafe(input.http(ip:port/source))

 live = input.external(while true; do mplayer -really-quiet -ao
 pcm:file=/dev/stdout -vc null -vo null
 rtsp://8x.xx..xx/live/diretta2/dev/null; sleep 1; done)

 radio = fallback(track_sensitive=false,[live,autodj])

 output.icecast(……….

 in the log file i have this:

 2013/07/02 23:57:42 [mksafe:3] Switch to http_4916 with transition.
 2013/07/02 23:57:50 [http_4916:3] New metadata chunk: ? -- Phillip Phillips
 - Gone, Gone, Gone.
 2013/07/03 00:01:18 [http_4916:3] New metadata chunk: ? -- Will I Am Feat
 Britney Spears - Scream And Shout.
 2013/07/03 00:01:27 [mksafe:3] Switch to safe_blank with forgetful
 transition.
 2013/07/03 00:01:29 [mksafe:3] Switch to http_4916 with transition.
 2013/07/03 00:02:43 [mksafe:3] Switch to safe_blank with forgetful
 transition.
 2013/07/03 00:02:45 [mksafe:3] Switch to http_4916 with transition.
 2013/07/03 00:05:58 [http_4916:3] New metadata chunk: ? -- Bon Jovi - Wanted
 Dead Or Alive (Single Version).
 2013/07/03 00:06:30 [mksafe:3] Switch to safe_blank with forgetful
 transition.
 2013/07/03 00:06:33 [mksafe:3] Switch to http_4916 with transition.
 2013/07/03 00:08:07 [mksafe:3] Switch to safe_blank with forgetful
 transition.
 2013/07/03 00:08:09 [mksafe:3] Switch to http_4916 with transition.
 2013/07/03 00:10:02 [http_4916:3] New metadata chunk: ? -- Lykke Li - I
 Follow Rivers.

 i think the trouble is on mksafe(input.http()), i don't understand why
 theres th transition to safe_blank.. Any suggestions?

 --
 This SF.net email is sponsored by Windows:

 Build for Windows Store.

 http://p.sf.net/sfu/windows-dev2dev
 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users




-- 
David

--
This SF.net email is sponsored by Windows:

Build for Windows Store.

http://p.sf.net/sfu/windows-dev2dev
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] Ocaml to convert playlist items to a hash or dynamically access entries?

2013-06-21 Thread David Baelde
Hi Bill,

I played a bit with liquidsoap. Prepend is even more tricky to use
than I remembered. In the end the only stable solution I have starts
the intro jingle by a synthesized sound, to wait for files to be
ready. I did not find a way to force a dynamically created file source
to be immediately ready.

# pushing shows using telnet
show = request.queue(id=rec)

def intro(metadata)
  x = (if metadata[tag] ==  then a else b end)
  l = [ /tmp/a.wav, /tmp/#{x}.wav ]
  sequence(merge=true,
   list.append([sine(220.,duration=0.5)],
   list.append(list.map(single,l),
   [fail()])))
end

output.pulseaudio(fallible=true,prepend(show,intro))

I hope it can be a useful starting point for you. Let me know if this
kind of solution fits your needs.

Cheers,

David

On Thu, Jun 20, 2013 at 11:24 PM, Bill Burton bbur...@mail.com wrote:
 Hello David,

 Thanks for your reply.

 Comments inline ...

 On Wed, Jun 19, 2013 at 3:02 PM, David Baelde david.bae...@gmail.com
 wrote:

 Hi Bill,

 Your goal is not an easy one, but that should be doable. I'll try to
 guide you a bit. First, you need to decide how to insert this
 introduction file before your shows (either live or replays). I see
 two ways. You could prepend the intro before launching the show, and
 in that case you should look at prepend(). Or you could superpose/mix
 the intro while the show starts, which you could do using a
 (smart)cross() transition.


 Actually, there are no shows involved (as far is this functionality goes).
 This is a client side application that would primarily be used to record a
 live show.  Think it should be sufficient to use sequence() to play the
 generated intro followed by in().

 For existing recordings, I would be happy to have just enough liquidsoap to
 dynamically create the intro in a file by itself. Then I could manually with
 other tools prepend it to the existing recording since then I can avoid
 reencoding the original file and losing quality in the process.

 So all I need is a function generate_intro() that can take an optional date
 parameter (defaulting to today's date) and returning a stream that has the
 dynamically generated intro with static recording and date recording parts
 combined. Then I should be able to use it something like this:

 s = sequence([ generate_intro(), in() ])

 output(%mp3(...), s)


 Provided Ctrl+C can properly close the file being recorded, that's fine.
 I've written custom commands to start/stop the recording via telnet but
 that's not an absolute requirement.

 I saw in another post you used playlist.parse() to test a huge playlist so
 I'm wondering if that could be used to convert a playlist to a hash or other
 usable format that would support dynamically accessing certain entries in a
 playlist?


 It's not only a matter of taste: I suspect that the second solution is
 easier, because it will be more tolerant to the time it takes to
 prepare the intro files. If you go for prepending, then you'll provide
 prepend with a function that builds the source producing the intro,
 and you have to make sure that the intro track is immediately ready in
 that source, otherwise it will be skipped. Depending on how you
 actually prepare the intro, it may force you to wait that one or
 several requests are ready in the construction function, which will
 block streaming -- scary. Also, prepending will delay the live show,
 and if it delays it too much some data may be dropped from the live
 source's buffers -- you can't delay live stuff that easily.


 Based on what I mentioned previously, all that would happen is when
 recording is started, the generated intro would be output first taking maybe
 10-15 seconds and then the input switches to the sound card via in().



 So I would go with cross() or smartcross(). Try playing with them to
 unconditionnally insert one file as an intro, then try several files.
 Finally you can try making this file selection dependent on metadata.

 Regarding the cookbook, I know it's not ideal.. but that's pretty much
 all we have for now. The scripting language is not OCaml, it's our own
 for various reasons. And currently I don't know of any tuto outside of
 our docs. The mailing list itself is kind of a huge messy cookbook
 too, for example I believe we've already discussed metadata-dependent
 transition functions, notably in *cross().


 Okay. I've been on the list for a few months but will look some more in the
 Archives.

 Bottom line is it seems to me liquidsoap could be a very good tool for
 various types of audio processing tasks that have nothing to do with
 programming live shows.  I also have plans to use it for audio relays in and
 out of Airtime and bulk transcoding of files.  There seem to be a lot of
 possibilities that could be explored.

 Thanks for your help!,
 -Bill



 Cheers,

 David

 On Wed, Jun 19, 2013 at 6:16 AM, Bill Burton bbur...@mail.com wrote:
  Hello,
 
  I'm trying to figure out

Re: [Savonet-users] Liquidsoap - http ... Buffer overrun: Dropping 0.03s.

2013-06-21 Thread David Baelde
Hi Alexander,

On Thu, Jun 20, 2013 at 11:10 PM, Alexander Schremmer
a...@alexanderweb.de wrote:
 The process itself only needs 40% CPU of 400% (dual core, dual
 threaded).

There's one more thing to say: liquidsoap essentially only uses one
core at a time. There are two reasons for this: in the streaming
model, one clock = one thread; two threads cannot execute OCaml code
at the same time.

Do you have the catchup problem if you enable only one
encoder/output? If not, then I suggest you try to re-enable the other
ones, but in separate clocks (cf. doc, also I've explained that a few
times on the ML). That way, they will compute in different threads,
and the C part of the computation (that is, encoding) can be
parallelized.

Hope this helps,
--
David

--
This SF.net email is sponsored by Windows:

Build for Windows Store.

http://p.sf.net/sfu/windows-dev2dev
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] request.queue smart_cross issues

2013-06-20 Thread David Baelde
Hi Alexander,

From the description you give, and the code you show, I don't see any
reason why things would go wrong.

However, I think it might be useful that you also show your transition
function. You are using references very intensively, even in places
where they are not necessary, and I'm wondering if this could have
lead to a bug in your transition function -- something like a bad
state left after the first execution of the transition, preventing the
next executions to do their job.

More specifically, in the script above, radio does not need to be a
ref. The successive instantiations of the radio reference could be
inlined into simple definitions (radio = this ; radio = that(radio) ;
etc) to the same effect. The only uses of !radio I see are executed at
initialization time: the content of the reference cell is retrieved at
that time, after which it is not looked up anymore, so any change of
the contents of the reference would be useless -- I don't see any such
instantiation in your code, so there's no real problem so far.

Hope this helps,

David

On Thu, Jun 20, 2013 at 2:57 AM, Alexander Groleau awg...@xbetanet.com wrote:
 Forgot to mention that this is 1.1.1 pulled from latest git full :).


 On Wed, Jun 19, 2013 at 2:23 PM, Alexander Groleau awg...@xbetanet.com
 wrote:

 Hello,

 I am having an issue getting my request.queue to work with smart_cross :(.

 I set up a queue (id=schedule) and used telnet to send some song files
 to it. I sent the first file and it plays just fine. Additionally, as soon
 as it starts, I sent a second file to my queue via telnet. The first
 smart_cross transition between the initial two songs worked perfectly and I
 outputted to the log (Transititons: Triaging..., Transitions: Song:
 End/Begin) from my transition function so I know it was being hit.
 Additionally, I found the [smart_cross_5481:3] Analysis: -27.207545dB /
 -23.319877dB (6.02s / 1.98s) output in the log.

 Now, when the second song begins, I send a third file via telnet.
 Unfortunately, the second and third songs and any subsequent files sent via
 telnet fail to smart_cross. They simply play back to back and my transition
 function never gets called any longer. Additionally, I no longer see any
 smart_cross messages. It is as if the smart_cross function gets completely
 detached.

 Are there any gotchas I should be concerned with in regards to the usage
 of a request.queue and smart_cross? I have tried playing with the
 conservative flags on the queue and the smart_cross function to no success.

 Thanks and great work with this platform!

 - Alex Groleau (awg...@xbetanet.com)

 Highlights of my Script
 -

 # queue setup
 radio = ref audio_to_stereo(request.queue(id = 'schedule'))

 # added some tracking functions
 radio := on_track(track_start, !radio)
 radio := on_end(delay = !jingle_end_padding, track_end, !radio)

 # crossfading
 radio := smart_cross(width = !transition_width, duration =
 !transition_duration, transition, !radio)

 # add jingles end function
 jingles = on_end(delay = 1., jingle_end, jingles)
 # quiet detection
 radio := on_blank(threshold = !jingle_quiet_threshold, max_blank =
 !jingle_quiet_duration, min_noise = !jingle_noise_duration, on_noise =
 quiet_off, quiet_on, !radio)
 # mix in jingles during quiet (use delay here?)
 radio := add(normalize = false, [
 !radio,
 switch([({ !quiet_detected and not !advertisement_playing and not
 !track_beginning and not !track_ending }, jingles)])
 ])

 # output
 output.ao(!radio)

 My Log File

 E:\Users\Alexander\Documents\GDM Radio\Projects\Liquidsoap
 1.1.1liquidsoap.exe
 ..\CloudCast\liquidsoap\cloudcast.liq
 2013/06/19 13:45:42  LOG START
 2013/06/19 13:45:42 [protocols.external:3] Found wget.exe.
 2013/06/19 13:45:42 [main:3] Liquidsoap 1.1.1
 2013/06/19 13:45:42 [main:3] Using: graphics=[distributed with Ocaml]
 pcre=0.1.0
  dtools=0.3.1 duppy=0.5.1 cry=0.2.2 mm=0.2.1 xmlplaylist=0.1.3
 lastfm=0.3.0 ogg=
 0.4.5 vorbis=0.6.1 opus=0.1.0 speex=0.2.0 mad=0.4.4 flac=0.1.1
 flac.ogg=0.1.1 dy
 nlink=[distributed with Ocaml] lame=0.3.2 shine=0.1.1 frei0r=0.1.0
 aacplus=0.2.1
  voaacenc=0.1.0 fdkaac=0.1.0 theora=0.3.0 schroedinger=0.1.0 gavl=0.1.5
 ao=0.2.0
  samplerate=0.1.2 taglib=0.3.1 camomile=0.8.4 faad=0.3.2 soundtouch=0.1.7
 portau
 dio=0.2.0 ladspa=0.1.4 yojson=1.0.3 winsvc=0.0.1
 2013/06/19 13:45:42 [harbor:3] Adding HTTP handler for 'GET /restart' on
 port 12
 34
 2013/06/19 13:45:42 [frame:3] Using 44100Hz audio, 25Hz video, 44100Hz
 master.
 2013/06/19 13:45:42 [frame:3] Frame size must be a multiple of 1764 ticks
 = 1764
  audio samples = 1 video samples.
 2013/06/19 13:45:42 [frame:3] Targetting 'frame.duration': 0.04s = 1764
 audio sa
 mples = 1764 ticks.
 2013/06/19 13:45:42 [frame:3] Frames last 0.04s = 1764 audio samples = 1
 video s
 amples = 1764 ticks.
 2013/06/19 13:45:42 [CloudCast:2] Settings: advertisement_genre =
 Advertisement
 2013/06/19 13:45:42 [CloudCast:2] Settings: 

Re: [Savonet-users] request.queue smart_cross issues

2013-06-20 Thread David Baelde
Hi Alexander,

If the same script works with 1.1.0 and not 1.1.1 then it's a bigger
problem than a scripting mistake, you're right. I'll try to run some
tests of my own with smart_crossfade soon. In the meantime, if you
have a minimized example showing the difference of behavior between
the two versions, that would be really useful to share.

Thanks,

David

On Thu, Jun 20, 2013 at 5:40 PM, Alexander Groleau awg...@xbetanet.com wrote:
 With or without references on radio causes the issue. I had it as a
 reference as the full version of my script dynamically creates the output
 sources. In fact, I just did the simplest test of feeding a directory
 playlist of songs into the smart_crossfade function with the predefined
 transition and it still only crossfades the first two songs. I can reproduce
 this in both Windows 8 and on Debian Squeeze. This simple script and my more
 complex script crossfade perfectly in 1.1.0. Something seems to be wrong
 with 1.1.1 for me :/.

 Thanks,
 Alex


 On Thu, Jun 20, 2013 at 4:17 AM, David Baelde david.bae...@gmail.com
 wrote:

 Hi Alexander,

 From the description you give, and the code you show, I don't see any
 reason why things would go wrong.

 However, I think it might be useful that you also show your transition
 function. You are using references very intensively, even in places
 where they are not necessary, and I'm wondering if this could have
 lead to a bug in your transition function -- something like a bad
 state left after the first execution of the transition, preventing the
 next executions to do their job.

 More specifically, in the script above, radio does not need to be a
 ref. The successive instantiations of the radio reference could be
 inlined into simple definitions (radio = this ; radio = that(radio) ;
 etc) to the same effect. The only uses of !radio I see are executed at
 initialization time: the content of the reference cell is retrieved at
 that time, after which it is not looked up anymore, so any change of
 the contents of the reference would be useless -- I don't see any such
 instantiation in your code, so there's no real problem so far.

 Hope this helps,

 David

 On Thu, Jun 20, 2013 at 2:57 AM, Alexander Groleau awg...@xbetanet.com
 wrote:
  Forgot to mention that this is 1.1.1 pulled from latest git full :).
 
 
  On Wed, Jun 19, 2013 at 2:23 PM, Alexander Groleau awg...@xbetanet.com
  wrote:
 
  Hello,
 
  I am having an issue getting my request.queue to work with smart_cross
  :(.
 
  I set up a queue (id=schedule) and used telnet to send some song
  files
  to it. I sent the first file and it plays just fine. Additionally, as
  soon
  as it starts, I sent a second file to my queue via telnet. The first
  smart_cross transition between the initial two songs worked perfectly
  and I
  outputted to the log (Transititons: Triaging..., Transitions: Song:
  End/Begin) from my transition function so I know it was being hit.
  Additionally, I found the [smart_cross_5481:3] Analysis: -27.207545dB
  /
  -23.319877dB (6.02s / 1.98s) output in the log.
 
  Now, when the second song begins, I send a third file via telnet.
  Unfortunately, the second and third songs and any subsequent files sent
  via
  telnet fail to smart_cross. They simply play back to back and my
  transition
  function never gets called any longer. Additionally, I no longer see
  any
  smart_cross messages. It is as if the smart_cross function gets
  completely
  detached.
 
  Are there any gotchas I should be concerned with in regards to the
  usage
  of a request.queue and smart_cross? I have tried playing with the
  conservative flags on the queue and the smart_cross function to no
  success.
 
  Thanks and great work with this platform!
 
  - Alex Groleau (awg...@xbetanet.com)
 
  Highlights of my Script
  -
 
  # queue setup
  radio = ref audio_to_stereo(request.queue(id = 'schedule'))
 
  # added some tracking functions
  radio := on_track(track_start, !radio)
  radio := on_end(delay = !jingle_end_padding, track_end, !radio)
 
  # crossfading
  radio := smart_cross(width = !transition_width, duration =
  !transition_duration, transition, !radio)
 
  # add jingles end function
  jingles = on_end(delay = 1., jingle_end, jingles)
  # quiet detection
  radio := on_blank(threshold = !jingle_quiet_threshold, max_blank =
  !jingle_quiet_duration, min_noise = !jingle_noise_duration, on_noise =
  quiet_off, quiet_on, !radio)
  # mix in jingles during quiet (use delay here?)
  radio := add(normalize = false, [
  !radio,
  switch([({ !quiet_detected and not !advertisement_playing and not
  !track_beginning and not !track_ending }, jingles)])
  ])
 
  # output
  output.ao(!radio)
 
  My Log File
 
  E:\Users\Alexander\Documents\GDM Radio\Projects\Liquidsoap
  1.1.1liquidsoap.exe
  ..\CloudCast\liquidsoap\cloudcast.liq
  2013/06/19 13:45:42  LOG START
  2013/06/19 13:45:42 [protocols.external:3] Found wget.exe.
  2013/06/19 13:45:42 [main:3

Re: [Savonet-users] Ocaml to convert playlist items to a hash or dynamically access entries?

2013-06-19 Thread David Baelde
Hi Bill,

Your goal is not an easy one, but that should be doable. I'll try to
guide you a bit. First, you need to decide how to insert this
introduction file before your shows (either live or replays). I see
two ways. You could prepend the intro before launching the show, and
in that case you should look at prepend(). Or you could superpose/mix
the intro while the show starts, which you could do using a
(smart)cross() transition.

It's not only a matter of taste: I suspect that the second solution is
easier, because it will be more tolerant to the time it takes to
prepare the intro files. If you go for prepending, then you'll provide
prepend with a function that builds the source producing the intro,
and you have to make sure that the intro track is immediately ready in
that source, otherwise it will be skipped. Depending on how you
actually prepare the intro, it may force you to wait that one or
several requests are ready in the construction function, which will
block streaming -- scary. Also, prepending will delay the live show,
and if it delays it too much some data may be dropped from the live
source's buffers -- you can't delay live stuff that easily.

So I would go with cross() or smartcross(). Try playing with them to
unconditionnally insert one file as an intro, then try several files.
Finally you can try making this file selection dependent on metadata.

Regarding the cookbook, I know it's not ideal.. but that's pretty much
all we have for now. The scripting language is not OCaml, it's our own
for various reasons. And currently I don't know of any tuto outside of
our docs. The mailing list itself is kind of a huge messy cookbook
too, for example I believe we've already discussed metadata-dependent
transition functions, notably in *cross().

Cheers,

David

On Wed, Jun 19, 2013 at 6:16 AM, Bill Burton bbur...@mail.com wrote:
 Hello,

 I'm trying to figure out how to dynamically string together individual
 entries on several playlists for the purpose of making an introduction that
 includes a date and prepended to a recording made on the specific date.

 My primary use case is a liquidsoap script that records from the sound card
 and at the start of the file, outputs an introduction that includes the
 spoken date of the recording.  There is also a backlog of older recordings
 for which I want to prepend the same intro based on the date the recording
 was made.

 I realize that say:... could be used but for now this script runs on
 Windows where that feature is not available and in any case, I want more
 control over the way the introduction and date is spoken by using my own
 recordings.

 Have made recordings to three files:

 years.mp3 - current and future years
 months.mp3 - twelve months
 days.mp3 - 1st - 31st

 Have created a cue sheet for each file to separate out the numbers in each
 file so playlist() should be able to read each file and from that determine
 the elements based on the associated cue sheet.

 What I'm assuming is that if there's a way to convert each playlist to a
 hash with the key being the entry name in the playlist from the cue sheet,
 then the key could be used to access the correct recordings dynamically to
 speak the specified date by playing all the entries in the correct order.

 Maybe there's some better way to organize the recordings to support this?

 Right now, I'm having trouble understanding the API docs for liquidsoap
 without any examples.  Also, the Cookbook and examples don't cover a lot of
 Ocaml syntax.

 Are there any particularly helpful sites on learning Ocaml?  The few bits of
 code I've tried don't seem to work in liquidsoap.

 My background is mostly Java, Ruby and Perl if that matters at all.

 Thanks for any assistance,
 -Bill


 --
 This SF.net email is sponsored by Windows:

 Build for Windows Store.

 http://p.sf.net/sfu/windows-dev2dev
 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users




-- 
David

--
This SF.net email is sponsored by Windows:

Build for Windows Store.

http://p.sf.net/sfu/windows-dev2dev
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] Limit on playlist()

2013-06-18 Thread David Baelde
Hi Gilou,

What kind of playlist format are you using? I just tested with a 10k
playlist and it worked reasonably:

$ time liquidsoap
'print(string_of(list.nth(playlist.parse(~/tmp/10k.txt),0)))'

It also works well when just doing out(playlist(~/tmp/10k.txt)). I'm
using the same file on each line, but I don't think that it triggers
any optimization.

That being said, the code can certainly be optimized. I could easily
do it if it's about the basic playlist parser -- for more structures
formats, it might be more difficult and even impossible when we use an
external lib.

Cheers,

David

On Tue, Jun 18, 2013 at 3:24 AM, Gilou contact+...@gilouweb.com wrote:
 Hi,

 Is there a file number limit on playlist() ? I tried to do it on a 2000+
 list, and it choke on it, using 100% CPU. It was still streaming the
 fallback though, good job on that hehe..

 Anyway, it seems limiting to 2000 works.. But maybe that's a bug.. Or
 maybe we are just not supposed to have playlists that big...

 Cheers

 Gilou

 --
 This SF.net email is sponsored by Windows:

 Build for Windows Store.

 http://p.sf.net/sfu/windows-dev2dev
 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users



-- 
David

--
This SF.net email is sponsored by Windows:

Build for Windows Store.

http://p.sf.net/sfu/windows-dev2dev
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] Limit on playlist()

2013-06-18 Thread David Baelde
Hi Gilou,

Thanks for investigating more. I wonder what it could be. If you're
using a regular playlist (not playlist.safe) then the files are not
checked in advance, so really the only thing that changes with the
size of the playlist is parsing time. What you said is consistent with
this: you have the same problem with a smaller playlist. After that
point, one possible source of slowdown is if a file takes forever to
check before loading into the queue. Perhaps can you identify
problematic files and see how long liquidsoap -r file takes on it.

Good luck,

David

On Tue, Jun 18, 2013 at 9:01 PM, Gilou contact+...@gilouweb.com wrote:
 Le 18/06/2013 10:24, Gilou a écrit :
 Le 18/06/2013 08:43, David Baelde a écrit :
 Hi Gilou,

 What kind of playlist format are you using? I just tested with a 10k
 playlist and it worked reasonably:

 Normal playlist, but it seems I'm hitting another bug.. I restricted all
 the list to 500 elements, but after some time (between 1 and 6 hour),
 liq start using all my CPU again.. So I need to do some more investigation..

 I'm running 1.1.1, on a .m3u (text, really) playlist made of .mp3s 
 .m4a.. my next step is to use only .mp3 and see how that goes..

 Yeah.. I think the issue is more related to some kind of files than the
 playlist size in the end.. I restricted to .mp3, and it seems steady.
 Still investigating. .m4a / AAC seems to be guilty.. Anything bad to
 know about those files on liquidsoap ?

 Cheers,
 Gilles


 Cheers
 Gilles

 $ time liquidsoap
 'print(string_of(list.nth(playlist.parse(~/tmp/10k.txt),0)))'

 It also works well when just doing out(playlist(~/tmp/10k.txt)). I'm
 using the same file on each line, but I don't think that it triggers
 any optimization.

 That being said, the code can certainly be optimized. I could easily
 do it if it's about the basic playlist parser -- for more structures
 formats, it might be more difficult and even impossible when we use an
 external lib.

 Cheers,

 David

 On Tue, Jun 18, 2013 at 3:24 AM, Gilou contact+...@gilouweb.com wrote:
 Hi,

 Is there a file number limit on playlist() ? I tried to do it on a 2000+
 list, and it choke on it, using 100% CPU. It was still streaming the
 fallback though, good job on that hehe..

 Anyway, it seems limiting to 2000 works.. But maybe that's a bug.. Or
 maybe we are just not supposed to have playlists that big...

 Cheers

 Gilou

 --
 This SF.net email is sponsored by Windows:

 Build for Windows Store.

 http://p.sf.net/sfu/windows-dev2dev
 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users





 --
 This SF.net email is sponsored by Windows:

 Build for Windows Store.

 http://p.sf.net/sfu/windows-dev2dev
 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users



 --
 This SF.net email is sponsored by Windows:

 Build for Windows Store.

 http://p.sf.net/sfu/windows-dev2dev
 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users



-- 
David

--
This SF.net email is sponsored by Windows:

Build for Windows Store.

http://p.sf.net/sfu/windows-dev2dev
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] Development

2013-06-18 Thread David Baelde
Hi,

Yeah, it may take a while before you get used to OCaml, depending on
where you come from. But it's worth it, it's a great language. You can
find books and tutorials online, I don't have any particular
recommendation, see what fits your style.

Concerning the architecture of the liquidsoap sources, we don't have
enough docs on that. One thing that can help, though, is to run make
doc and have a look at the generated HTML files in autodoc/liquidsoap
-- all this is from the liquidsoap subdirectory, not from toplevel in
liquidsoap-full.

You certainly don't need to understand all parts of liquidsoap. If you
are looking for something specific, some bug or feature you'd like to
address, or just some part of the code you'd like to play with, don't
hesitate to ask where to look.

Have fun,

David

On Tue, Jun 18, 2013 at 9:59 AM, JD Buys jdb...@gmail.com wrote:
 Thanks David,

 I compiled Liquidsoap and everything works.

 I have just not done any OCAML at all so I am still trying to figure out how
 everything is put together and structured, and which classes does what.

 Little bit of a learning curve ahead...=)

 JD


 On Tue, Jun 18, 2013 at 9:51 AM, David Baelde david.bae...@gmail.com
 wrote:

 Hi and welcome,

 If you can compile the latest sources (from github) then you can
 change them and contribute. Compiling from source is a bit long the
 first time because you need to install several packages. However, it's
 nothing unusual and quite easy if you're running a linux distribution
 that has all the necessary packages -- liquidsoap devs use debian,
 fwiw.

 There are a few pages online that could help:
 http://savonet.sourceforge.net/doc-svn/build.html
 https://wiki.sourcefabric.org/display/CC/Building+Liquidsoap+from+Source

 Hope this helps,

 David

 On Tue, Jun 18, 2013 at 9:41 AM, JD Buys jdb...@gmail.com wrote:
  Hi Guys,
 
  What is the best way to get started in setting up a dev environment in
  order
  to maybe help improve or fix some of the liquidsoap bugs?
 
  JD
 
 
  --
  This SF.net email is sponsored by Windows:
 
  Build for Windows Store.
 
  http://p.sf.net/sfu/windows-dev2dev
  ___
  Savonet-users mailing list
  Savonet-users@lists.sourceforge.net
  https://lists.sourceforge.net/lists/listinfo/savonet-users
 



 --
 David


 --
 This SF.net email is sponsored by Windows:

 Build for Windows Store.

 http://p.sf.net/sfu/windows-dev2dev
 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users



 --
 This SF.net email is sponsored by Windows:

 Build for Windows Store.

 http://p.sf.net/sfu/windows-dev2dev
 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users




-- 
David

--
This SF.net email is sponsored by Windows:

Build for Windows Store.

http://p.sf.net/sfu/windows-dev2dev
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] Liquidsoap - http ... Buffer overrun: Dropping 0.03s.

2013-06-18 Thread David Baelde
Hi guys,

These issues are hard to fix, as they depend on a lot of factors. We
should keep watching out for what liquidsoap could do better, but so
far I don't see how the tool itself could help here.

Instead, I thought I would do a quick recap on what overruns/underruns
and we need to catchup are and what causes them. You may know all
this already, and it might not help much because in the end anything
can be caused by anything. In a sense, all it says is that liquidsoap
can't do any better on that... please contradict me on that :p

The catchup thing is when liquidsoap did not manage to compute its
stream fast enough for sending on time. In my experience this is
caused by lack of CPU, so I'd advise to look this way. It could be
that a latency on the filesystem or network is making things late, but
we are trying to minimize this kind of interference because streaming
on time is the priority. The bottom line is look for CPU first, but if
you think you've spotted another cause let us know so we can discuss
potential solutions.

A buffer underrun could be caused by a network lag, a slow source, or
liquidsoap being too slow on something else to read from the source
and fill its buffer. A buffer overrun could also be caused by
liquidsoap being too slow to consume the buffer. (A typical situation
where you get lots of overruns is if you don't always read a live
stream, the solution is to put a dummy output on that stream so that
it always gets consumed.) However, it could also be that the source is
too fast. This happens: not all computers have the same clock, and not
all streaming software deal with time in the same way. If you have
relatively rare and periodic overruns that don't seem to be correlated
with CPU spikes or catchup, this is probably the cause.

Cheers,

David

On Mon, Jun 17, 2013 at 8:53 AM, Akos Veres ve...@akos.me wrote:
 I'm experiencing the same issues every day, didn't quite manage to fix it. I
 had bigger drouputs, like streams actually stopping, then I stopped the
 skip_blank feature thinking my CPU is under heavy dosage, it did make the
 stream drops stop, but the overrun is still there.

 Any fix is welcome.

 Best regards,
 Ákos Veres

 _
 http://akos.me - A little about me.


 On Fri, Jun 14, 2013 at 6:15 PM, Alexander Schremmer a...@alexanderweb.de
 wrote:

 On 12.06.2013 10:20, Alexander Schremmer wrote:

  Are the times when this problem happens consistent? Try setting the
  the
  CPU priority of Liquidsoap to the max and see if that helps:
 
  No, but the other processes might demand resources irregularly.
 
  I will give it a boost to -5 (-19 sounds a bit hazardous given that I
  have seen LS eating 100% in the past).
 
  Now I have another issue left: after I set a metadata item via telnet, I
  get spurious skips that look like this in the logs:
 
  2013/06/12 10:16:24 [server:3] New client: localhost.
  2013/06/12 10:16:24 [server:3] Client localhost disconnected without
  saying goodbye..!
  2013/06/12 10:16:26 [clock.wallclock_main:2] We must catchup 1.05
  seconds!
 
  And the audio skips for maybe 300 ms in the stream when listening. What
  could be the reason? Interestingly, it always happens shortly after
  these telnet connections but never in a song.

 And today we got 90 seconds outage because of a cascade of problems in
 Liquidsoap. It started with the error message Buffer overrun: Dropping
 0.03s. and ended with both icecast sinks reconnecting, and then it
 needed still 80 seconds till they started working.
 Anybody an idea what could have caused this?

 Kind regards,
 Alexander


 --
 This SF.net email is sponsored by Windows:

 Build for Windows Store.

 http://p.sf.net/sfu/windows-dev2dev
 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users



 --
 This SF.net email is sponsored by Windows:

 Build for Windows Store.

 http://p.sf.net/sfu/windows-dev2dev
 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users




-- 
David

--
This SF.net email is sponsored by Windows:

Build for Windows Store.

http://p.sf.net/sfu/windows-dev2dev
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] Help me understand how playlists reload, please!

2013-04-26 Thread David Baelde
Hi Chris,

The answer is A, as you probably observed yourself. If you want the
playlist to reload when the switch leaves it, you could use a special
effect with a side condition that triggers reload (by issuing a server
command).

If you have unusual file scheduling constraints, there's a point where
it won't make sense to struggle with the simple operators of
liquidsoap, and using a request.dynamic with a custom function or
external script will be simpler. In your example, adding one
transition is simple enough, but keep this in mind if you plan to go
further.

Cheers,

David

On Fri, Apr 19, 2013 at 3:53 PM, Christopher Muldrow
cmuld...@freelancestar.com wrote:
 I'm struggling with some timing issues with some switches, and I THINK I've
 narrowed down the problem to a misunderstanding on my part of how the reload
 on a playlist works.

 Let's say I've got two playlists I've created that are both about an hour
 long, made up of multiple songs. Each one has a file as the very first
 song on the playlist that needs to be played every hour as the new
 playlist starts.

 Now, I set those up as so:

 timelessdrive1 = playlist(mode=normal, prefix=replay_gain:,
 reload_mode=watch, /mnt/musicMount/playlists/timelessdrive2.m3u)
 timelessdrive2 = playlist(mode=normal, prefix=replay_gain:,
 reload_mode=watch, /mnt/musicMount/playlists/timelessLEGALID12550.m3u)

 And I decided I want to write a switch to schedule these, so I do that:

 default = switch([
 ({0h-0h59m}, timelessdrive1),
 ({1h-1h59m}, timelessdrive2),
 ({2h-2h59m}, timelessdrive1)
 ])

 Now, let's say that I don't quite play all the tracks in timelessdrive1
 before my switch hits. (Let's say it's an hour and 15 minutes instead of an
 hour)

 When I switch BACK to timelessdrive1 at 2 a.m., will it A) start where I
 left off the first time I switched from it or B) go back to the beginning of
 the playlist when I call it the second time?

 If the answer is A, how should I call the playlists to make it behave as B?

 Thanks in advance!

 --
 Chris Muldrow
 Chief Digital Officer
 The Free Lance-Star Companies
 cmuld...@freelancestar.com
 540-368-5006

 --
 Precog is a next-generation analytics platform capable of advanced
 analytics on semi-structured data. The platform includes APIs for building
 apps and a phenomenal toolset for data science. Developers can use
 our toolset for easy data analysis  visualization. Get a free account!
 http://www2.precog.com/precogplatform/slashdotnewsletter
 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users




-- 
David

--
Try New Relic Now  We'll Send You this Cool Shirt
New Relic is the only SaaS-based application performance monitoring service 
that delivers powerful full stack analytics. Optimize and monitor your
browser, app,  servers with just a few lines of code. Try New Relic
and get this awesome Nerd Life shirt! http://p.sf.net/sfu/newrelic_d2d_apr
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] Help me understand how playlists reload, please!

2013-04-26 Thread David Baelde
It wouldn't change much. The difference in playlist.once is that it
doesn't reload automatically. What you need here is to force
reloading, almost the opposite.

On Fri, Apr 26, 2013 at 3:05 PM, Christopher Muldrow
cmuld...@freelancestar.com wrote:
 David, if I used playlist.once instead of playlist, would it still behave as
 described?


 On Fri, Apr 26, 2013 at 3:15 AM, David Baelde david.bae...@gmail.com
 wrote:

 Hi Chris,

 The answer is A, as you probably observed yourself. If you want the
 playlist to reload when the switch leaves it, you could use a special
 effect with a side condition that triggers reload (by issuing a server
 command).

 If you have unusual file scheduling constraints, there's a point where
 it won't make sense to struggle with the simple operators of
 liquidsoap, and using a request.dynamic with a custom function or
 external script will be simpler. In your example, adding one
 transition is simple enough, but keep this in mind if you plan to go
 further.

 Cheers,

 David

 On Fri, Apr 19, 2013 at 3:53 PM, Christopher Muldrow
 cmuld...@freelancestar.com wrote:
  I'm struggling with some timing issues with some switches, and I THINK
  I've
  narrowed down the problem to a misunderstanding on my part of how the
  reload
  on a playlist works.
 
  Let's say I've got two playlists I've created that are both about an
  hour
  long, made up of multiple songs. Each one has a file as the very first
  song on the playlist that needs to be played every hour as the new
  playlist starts.
 
  Now, I set those up as so:
 
  timelessdrive1 = playlist(mode=normal, prefix=replay_gain:,
  reload_mode=watch, /mnt/musicMount/playlists/timelessdrive2.m3u)
  timelessdrive2 = playlist(mode=normal, prefix=replay_gain:,
  reload_mode=watch,
  /mnt/musicMount/playlists/timelessLEGALID12550.m3u)
 
  And I decided I want to write a switch to schedule these, so I do that:
 
  default = switch([
  ({0h-0h59m}, timelessdrive1),
  ({1h-1h59m}, timelessdrive2),
  ({2h-2h59m}, timelessdrive1)
  ])
 
  Now, let's say that I don't quite play all the tracks in timelessdrive1
  before my switch hits. (Let's say it's an hour and 15 minutes instead of
  an
  hour)
 
  When I switch BACK to timelessdrive1 at 2 a.m., will it A) start where I
  left off the first time I switched from it or B) go back to the
  beginning of
  the playlist when I call it the second time?
 
  If the answer is A, how should I call the playlists to make it behave as
  B?
 
  Thanks in advance!
 
  --
  Chris Muldrow
  Chief Digital Officer
  The Free Lance-Star Companies
  cmuld...@freelancestar.com
  540-368-5006
 
 
  --
  Precog is a next-generation analytics platform capable of advanced
  analytics on semi-structured data. The platform includes APIs for
  building
  apps and a phenomenal toolset for data science. Developers can use
  our toolset for easy data analysis  visualization. Get a free account!
  http://www2.precog.com/precogplatform/slashdotnewsletter
  ___
  Savonet-users mailing list
  Savonet-users@lists.sourceforge.net
  https://lists.sourceforge.net/lists/listinfo/savonet-users
 



 --
 David


 --
 Try New Relic Now  We'll Send You this Cool Shirt
 New Relic is the only SaaS-based application performance monitoring
 service
 that delivers powerful full stack analytics. Optimize and monitor your
 browser, app,  servers with just a few lines of code. Try New Relic
 and get this awesome Nerd Life shirt! http://p.sf.net/sfu/newrelic_d2d_apr

 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users




 --
 Chris Muldrow
 Chief Digital Officer
 The Free Lance-Star Companies
 cmuld...@freelancestar.com
 540-368-5006

 --
 Try New Relic Now  We'll Send You this Cool Shirt
 New Relic is the only SaaS-based application performance monitoring service
 that delivers powerful full stack analytics. Optimize and monitor your
 browser, app,  servers with just a few lines of code. Try New Relic
 and get this awesome Nerd Life shirt! http://p.sf.net/sfu/newrelic_d2d_apr
 ___
 Savonet-users mailing list
 Savonet-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/savonet-users




-- 
David

--
Try New Relic Now  We'll Send You this Cool Shirt
New Relic is the only SaaS-based application performance monitoring service 
that delivers powerful full stack analytics. Optimize and monitor your
browser, app,  servers with just a few lines of code. Try New Relic
and get this awesome Nerd Life shirt! http://p.sf.net/sfu

Re: [Savonet-users] http://vassalborofriends.org/wp-content/themes/modernity/btqal.html

2013-03-26 Thread David Baelde
For the record, I have removed w...@sbcglobal.net from the list of
addresses from which mail is automatically accepted to the
savonet-users lists.

--
Own the Future-Intelreg; Level Up Game Demo Contest 2013
Rise to greatness in Intel's independent game demo contest.
Compete for recognition, cash, and the chance to get your game 
on Steam. $5K grand prize plus 10 genre and skill prizes. 
Submit your demo by 6/6/13. http://p.sf.net/sfu/intel_levelupd2d
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] Having Trouble With Playlist merge_tracks()

2013-03-25 Thread David Baelde
Hi,

Thanks for your feedback. It seems like could be related to the other
recent report on smooth_add(), which boiled down to a problem with
sequence(). I intend to investigate both issues by the end of the
week.

Cheers,

David

--
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_d2d_mar
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] Playing Cuesheets

2013-03-24 Thread David Baelde
On Sun, Mar 24, 2013 at 1:43 PM, daslicht anso...@gmail.com wrote:
 init: security exit, root euid (user).

This is liquidsoap telling you to not run it as root, for security
reasons. Run it as normal user, or as a specially created liquidsoap
user.

Cheers,

David

--
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_d2d_mar
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] Playing CueSheets / on Track events ?

2013-03-24 Thread David Baelde
Hi,

On Sat, Mar 23, 2013 at 7:32 PM, daslicht anso...@gmail.com wrote:
 * Play a cue sheet

You seem to have figured this one out yourself, using cue_cut().

 * Return current song (can I call a LiquidSoup Script with PHP or NodeJS?)

If you need to query liquidsoap for the current song, then a simple
on_air server command should do. You can also use the store_metadata()
which stores the last N metadata packets it sees, and offers a telnet
command for reading them.

 * Call Script on Song change (call PHP or NodeJS)

For this you have on_track (or on_metadata, it usually doesn't make a
big difference). If you need to call an external script you have
system(). For example: source =
on_track(fun(m)-system(/path/to/script),source). Or something like
fun(m)-system(/path/to/script ^quote(m[title])) if you want to
pass a metadata to the script being called.

If you have basic needs and a minimum scripting ability, you should be
able to write your own scripts along the lines I indicated.

HTH
-- 
David

--
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_d2d_mar
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] Having Trouble With Playlist merge_tracks()

2013-03-24 Thread David Baelde
Hi guys,

What could be happening here is that the third file is not resolved
fast enough, so there is a tiny gap before it, and merge_track() won't
do anything about it.

The sequence() operator that is behind merge_tracks is not logging
much, so it won't help in confirming the diagnostic. But in any, you
need to do something to avoid the risk of a gap, given that your files
are so short.

One solution is to use playlist.safe() because it resolves requests in
advance (iirc) and see if it helps. Another solution could be to use a
queue in which you manually put your files -- this way, you don't even
have to merge tracks.

Hope this helps,
-- 
David

--
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_d2d_mar
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] Help with clocks

2013-03-24 Thread David Baelde
Hi kronos,

Thanks for the details.  Since all outputs are meant to broadcast the
same content, only at different bitrates, it makes sense to have
everything in one liquidsoap instance.

So your script is basically of the following form:

# Lots of stuff to eventually define the radio source
# The last operation seems to be  radio = mean(radio)

output.icecast(...,radio)
output.icecast(...,radio) # another bitrate
etc.

In that case all you need to do is (as shown in more details on the
clocks official documentation) change each output into this:

clock.assign_new(id=something_informative,
  [output.icecast(..., # same params
 mksafe(buffer(radio)))])

What this does is setup a new clock (thread) for that output, and
install a buffer to adjust to the source's clock.

Again, using clocks may avoid that all outputs reset at the same time,
*if* the cause for the lag is isolated to one output.

Cheers,

David

--
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_d2d_mar
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] Help with clocks

2013-03-22 Thread David Baelde
Hi kronos,

On Thu, Mar 21, 2013 at 11:30 PM,  liquids...@aolohr.com wrote:
 We are running six streams from a single script (128, 96, 64 and 32 kbps
 mp3; 64 and 32 kbps ogg - all Icecast 2.x) under LS 1.0.0.

The first question is whether you need those six outputs to belong to
the same script. Otherwise, the best way to isolate them is to run six
separate scripts.

If your six streams share a common source, then it makes sense to use
clocks. I can help you install them, but I need the relevant portion
of the script, ie. where the six streams start to differ.

Using clocks will isolate streams, so that if the problem causing the
catchup is limited to only one stream, then only that stream's output
will be reset.

 I have attempted to isolate the problem, but have determined it
 cannot be CPU, memory, bandwidth, nor network lag.

Do you have a soundcard input somewhere? could it be the disk?

Cheers,
-- 
David

--
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_d2d_mar
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] ramping values

2013-03-20 Thread David Baelde
Hi Rob,

I agree with you, I think it would be good to be able to do more
inside liquidsoap. In fact it's been one of our projects for a long
time, but we are not sure yet how to do it, and we don't have much
time to work on this. But please stick around, it'll happen, and we'd
love to have you involved when it happens: we'll need users like you
to script the old features (and new ones) on top of the new language.

Cheers,

David

--
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_d2d_mar
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] public directory's

2013-03-07 Thread David Baelde
Not sure that this is the answer, but there is a drop_metadata()
operator which you can use to strip metadata off a stream before
sending to icecast/shoutcast, so there would be no way that the info
is sent to those servers.

HTH

David

--
Symantec Endpoint Protection 12 positioned as A LEADER in The Forrester  
Wave(TM): Endpoint Security, Q1 2013 and remains a good choice in the  
endpoint security space. For insight on selecting the right partner to 
tackle endpoint security challenges, access the full report. 
http://p.sf.net/sfu/symantec-dev2dev
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


Re: [Savonet-users] liquidsoap aborts with exception Alsa.Unknown_error(-1073741824)

2013-03-07 Thread David Baelde
Hi Peter,

 1) install the int overflow patch before configure, make, make install

I'm confused by this... This might be a dumb question (I do not fully
remember the thread) but why are you using an old version of
ocaml-alsa (the latest one has the int overflow patch already
applied)?

Cheers,
-- 
David

--
Symantec Endpoint Protection 12 positioned as A LEADER in The Forrester  
Wave(TM): Endpoint Security, Q1 2013 and remains a good choice in the  
endpoint security space. For insight on selecting the right partner to 
tackle endpoint security challenges, access the full report. 
http://p.sf.net/sfu/symantec-dev2dev
___
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users


  1   2   3   4   5   6   7   8   9   10   >