Re: [Savonet-users] Liquidsoap 1.2.0 is released!
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 Hyslopwrote: > 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
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?
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
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
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
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
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?
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?
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?
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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?
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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?
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?
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?
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?
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?
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?
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
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
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?
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?
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!
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
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
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
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!
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
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
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?
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.
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
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
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?
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()
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()
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
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.
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!
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!
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
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()
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
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 ?
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()
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
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
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
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
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)
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