Re: [Savonet-users] liquidsoap doesn't release mount points
Le Wednesday 01 April 2009 23:12:26 Romeo, vous avez écrit : Hi, again! Hi ! i have solved the problem by rewriting feed method with this code. Thanks, that was indeed the solution ! Patch adapted and applied, thanks ! Romain PS: Shall I credit Romeo on the changelog ? -- ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] Output AAC
Hi ! Le Friday 03 April 2009 23:02:30 Romeo, vous avez écrit : is it possible to steam AAC to icecast using internal liquidsoap encoder? i mentioned that you have output.file.aac operator, but not output.icecast.aac Watch this mailing list, this might come quite soon... :-) Romain -- ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] Output AAC
Le Saturday 04 April 2009 11:26:04 Gilles PIETRI, vous avez écrit : Don't cry for me.. Argentiina :) Thanks for your work Romain, I really look forward to making liquidsoap cry, the shouting became really annoying! Here is the (fixed) changelog ! Switched to custom implementation of the shout protocols ! New with this: * Support for arbitrary headerless formats using content-type and external encoding process * Wrappers updated for lame and shoutcast, added custom irc, aim and icq headers for shoutcast. fixes #192 * Added wrappers for icecast and shoutcast using aacplusenc. fixes #220 and #136 * Completely rewrote external encoder start/stop mechanisms. Now relies strictly on the encoding process' good behaviour. See (updated) documentation for more details. * Added restart_encoder_delay to regulary restart the encoder. Useful for lame and aacplusenc encoders since they tend to fail after some time. Defaults to 3600 seconds for these encoders. Of course, this might not be bug prone, so feel free to test and report :) Enjoy ! Romain -- Say I remember, when we used to sit, In the gouvernement yard in Trenchtown, (...) In this great future, you can't forget the past, So dry your tears I say, No woman no cry... -- ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] Thank You
Le Monday 06 April 2009 08:53:11 Romeo, vous avez écrit : Thank You for adding a possibility to specify a mime type at output.external operator !!! Thanks ! I am not yet satisfied by the current external encoder code. It will be worked out soon. Romain -- ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] output restart failure
Hi all ! Le Tuesday 07 April 2009 15:10:28 David Baelde, vous avez écrit : Probably, ocaml-cry is not sending the same exceptions as ocaml-shout, and we are not yet catching them all in the way they should be treated. Here, my feeling is that ocaml-cry should not raise Sys_error exceptions. We'll look into that. In the meantime, feel free to fill in a bug report. Yep, I confirm the suspicion on ocaml-cry. However, this could also be the external encoder if used (didn't have time to look in details). I will look at this as soon as possible. Romain -- This SF.net email is sponsored by: High Quality Requirements in a Collaborative Environment. Download a free trial of Rational Requirements Composer Now! http://p.sf.net/sfu/www-ibm-com ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] input.jackd - regular pop
Le Wednesday 08 April 2009 13:20:25 David Baelde, vous avez écrit : The question concerning the initial bug report is: do you see any such message in your logs when you hear those pops? I didn't notice this log in the bjack code. You probably should test with ao to see the message. Romain -- This SF.net email is sponsored by: High Quality Requirements in a Collaborative Environment. Download a free trial of Rational Requirements Composer Now! http://p.sf.net/sfu/www-ibm-com ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] liquidsoap FreeBSD 7
Le Thursday 09 April 2009 00:41:57 Orama Avis, vous avez écrit : Good afternoon, Hi ! I am now retrying FreeBSD build, this time from trunk. My configure args are following: ./configure CPPFLAGS=-I/usr/local/include LDFLAGS=-L/usr/local/lib however make still is unable find libs: gmake[3]: `libao_stubs.a' is up to date. ocamlmklib \ -o ao_stubs ao_stubs.o -lao \ /usr/bin/ld: cannot find -lao I have checked, libao.so is in /usr/local/lib Indeed, I had not seen this. Apparently the -L option is not passed to ocamlmklib. I have found a variable which makes it work: Index: Makefile.in === --- Makefile.in (révision 6515) +++ Makefile.in (copie de travail) @@ -30,6 +30,7 @@ ACLIBS = @LIBS@ @libao_LIBS@ LDFLAGS = @LDFLAGS@ @libao_LDFLAGS@ CLIBS = $(ACLIBS:-l%=%) +LIBDIRS = $(LDFLAGS:-L%=%) CC = @CC@ CFLAGS = @CFLAGS@ @libao_CFLAGS@ -Wall -DCAML_NAME_SPACE CPPFLAGS = @CPPFLAGS@ Using this patch, the compilation should hopefully be sucessful. I don't know however if this is the good place to add this and if the LDFLAGS will always contain value of the form -L%.. I have added our specialist for these questions, Julien, which may help in solving this issue.. Romain -- This SF.net email is sponsored by: High Quality Requirements in a Collaborative Environment. Download a free trial of Rational Requirements Composer Now! http://p.sf.net/sfu/www-ibm-com ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] Stopping dynamic.request from prefetching songs
Le Wednesday 08 April 2009 20:44:41 Robert McAuley, vous avez écrit : Hello all, Hi ! I run a radio station where users request and then vote for what song they want to hear next. The voting part is critical - each song is run through an election, and then that song is played immediately as the next song. The process is controlled via an executable program, and I have been using Ices' script input to handle this. This immediate decision process is the problem I am having with LiquidSoap and its dynamic.request input. On start of LiquidSoap, it executes the script twice, always keeping one song in queue ahead of the one currently playing. This makes the voting process on my site not immediate, which is not desired behaviour from my perspective. I have tried setting the length setting to 1., however, that hasn't changed the prefetching behaviour. Is there a way to stop dynamic.request from prefetching? Or must I use JACK or something similar to make sure LiquidSoap does not try prefetching? Ok, I understand a bit better now your issue :) Have you try to reverse the behaviour ? I mean that, instead of letting liquidsoap pull the next song, use a request.{queue,equeue} and push the songs as soon as they are elected ? In this case, the behaviour should be much more immediate, but you would have to provide a fallback source for the cases when there are no next song on the queue.. Romain -- This SF.net email is sponsored by: High Quality Requirements in a Collaborative Environment. Download a free trial of Rational Requirements Composer Now! http://p.sf.net/sfu/www-ibm-com ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] Liquidsoap Controller using Django an Python
Hi ! Le Wednesday 08 April 2009 16:20:29 Chris Everest, vous avez écrit : I have much to learn about ocaml and liquidsoap's internals. This tool only uses the telnet interface, but I am finding that python is super clean and easy to work with. Add in Django and I can concentrate on the interfaces (to liquidsoap and the end user) rather than all the other tedious web stuff. No need to learn OCaml, indeed telnet interface should be sufficient :) By the way, we were considering adding a machine-interpretable output to the server instead of the human-oriented one that we currently only support. We though about using some JSON. Since this is mainly oriented toward a better interaction with GUI or web applications, do you believe this format would be useful for you ? See: http://savonet.rastageeks.org/ticket/140 On the same track, we discussed adding per-session data, such as the possibility to login into the server and have specific rights and commands. See: http://savonet.rastageeks.org/ticket/142 Feel free to make any remark, here or preferably directly in the tickets :) I am currently focusing on error handling so that I can get this current code out to everyone. As well I am trying to stay as close to the python/django design as possible. Many thanks, I am looking forward to see this :-) Romain -- This SF.net email is sponsored by: High Quality Requirements in a Collaborative Environment. Download a free trial of Rational Requirements Composer Now! http://p.sf.net/sfu/www-ibm-com ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] Taglib problem, svn upgrading problem
Le Monday 13 April 2009 19:27:18 Austin Seraphin, vous avez écrit : Hi. Hi ! I've recently begun using Liquidsoap. I upgraded from an older svn version to the latest stable 0.9..0 release. When I did, I noticed errors like the following: TagLib: MPEG::Header::parse() -- Invalid sample rate. TagLib: MPEG::Properties::read() -- Page headers were invalid. These happen when trying to read .ogg files, so I'd guess that liquidsoap tries to use taglib's mp3 tagging on the wrong file format, hence the errors. Unfortunately, these errors keep outputting on the console, making it unusable for anything else. Hmm.. These messages are not really an issue. If you don't like them, I think you should simply run liquidsoap in a screen, as a daemon, or simply telling it to redirect its messages to /dev/null: liquidsoap (...) /dev/null 21 I then tried upgrading to the latest svn, and ran into another interesting problem. After building it, it could not find output.icecast.vorbis, and related icecast and shoutcast output plugins. I asked on the #savonet channel, and someone suggested using ocaml-cry instead. I added this to the PACKAGES file, after seeing it in the PACKAGES.default file. Firstly, ocaml-cry didn't have a valid configuration file. An error on line 32 (if memory serves) of the main ./configure script said @echo instead of echo. It couldn't find the configure script for ocaml-cry, so I used autoconf to build it. The configuration and making worked for ocaml-cry, but then later on, it gave this: In outputs/icecast2.ml: Error: Unbound value Cry.ogg_audio So there you have my current state. I don't know if upgrading to the latest svn will fix my taglib problem, and the ocaml-cry has some related issues. I hope this email helps. your problem with ocaml-cry comes from the fact that you need to bootstrap again. Hence, you should do again the whole compilation process, from the toplevel, which is: ./bootstrap ./configure make clean make The current state of the toplevel build, with PACKAGE.default, is not really useful. We should do something about it soon.. Romain -- This SF.net email is sponsored by: High Quality Requirements in a Collaborative Environment. Download a free trial of Rational Requirements Composer Now! http://p.sf.net/sfu/www-ibm-com ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] large media library
Le Thursday 16 April 2009 16:04:59 Brandon Casci, vous avez écrit : Hello Hi ! I've learned a lot over the past few weeks. A setup with live source, that's backed up by a local media source. Good ! Just curious, do any of you have large media libraries? 10,000 tracks or more? If so, how do you handle keeping your playlists fresh and interesting? In the past I've used tools which selects songs from a database with various rules applied to the selection, to ensure interesting rotation. On Dolebrai we are using an external database. Its seems more appropriate to me for dealing with large sets of data. At least that's what database are about after all :) Romain -- Stay on top of everything new and different, both inside and around Java (TM) technology - register by April 22, and save $200 on the JavaOne (SM) conference, June 2-5, 2009, San Francisco. 300 plus technical and hands-on sessions. Register today. Use priority code J9JMT32. http://p.sf.net/sfu/p ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] input.http with flac icecast stream
Le Thursday 16 April 2009 15:57:22 Chris Everest, vous avez écrit : Don't rack your brain or prioritize. I can still use output.file.flac() to the local file system, so that's really where I need the lossless encoding. Oki :) I guess you are using the latest SVN version for a correct FLAC output support. The code which implements it, output.file.external, is still a bit young, don't hesitate to report any issue :) By the way there is currently no output.file.flac.. Did you make one yourself or you were talking about a prospective ? This operator can be added quite quickly (it is defined at the level of the liquidsoap scripting language). Romain -- Stay on top of everything new and different, both inside and around Java (TM) technology - register by April 22, and save $200 on the JavaOne (SM) conference, June 2-5, 2009, San Francisco. 300 plus technical and hands-on sessions. Register today. Use priority code J9JMT32. http://p.sf.net/sfu/p ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] large media library
Le Thursday 16 April 2009 23:33:22 Brandon Casci, vous avez écrit : That sounds good. How do you have liquidsoap getting query results? Also are your query result simply track URI's We use a request.dynamic source that pulls the result from a custom script. The query result is not only a URI, we pass additional informations using the annotate protocol. For instance: annotate:bla=foo,id=1234:/path/to/file.mp3 Will add the two metadata bla and id with their respective values to the metadata of the file mentioned at the end. The general grammar for this query is: annotate:label=value,(...):URI where URI can be another protocol, such as ftp:// for instance.. Romain -- Stay on top of everything new and different, both inside and around Java (TM) technology - register by April 22, and save $200 on the JavaOne (SM) conference, June 2-5, 2009, San Francisco. 300 plus technical and hands-on sessions. Register today. Use priority code J9JMT32. http://p.sf.net/sfu/p ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] large media library
Le Friday 17 April 2009 09:23:12 Brandon Casci, vous avez écrit : I've been checking out this script. It's interesting! http://savonet.sourceforge.net/doc-svn/dolebrai.html What language is the liq script based on? It's unlike anything I'm used to. Well, it is a liquidsoap script, so the language is liquidsoap itself :) I've read about specific functions in the API docs, but I'm still unclear. These areas for example ### default = single(id=default,default) s = request.dynamic(id=scheduler,default_duration=30.,length=1., fun () - request(get_process_output(#{scripts}/scheduler.pl 2 #{scripts}/log))) s = fallback([ request.queue(id=q), s, default ]) ### default = single(id=default,default) I understand what is happening here, you're taking an individual mp3 file, and setting up to be a source. s = request.dynamic(id=scheduler,default_duration=30.,length=1., fun () - request(get_process_output(#{scripts}/scheduler.pl 2 #{scripts}/log))) This is a little confusing to me. I understand this is probably the source which calls a perl script, which queries your database and outputs a result in the annotated format you mentioned. I don't understand the purpose of fun(). I noticed fun() is defined in an add_protocol function, and is setup to take parameters. Though no parameters are passed in though request.dynamic, at least not in a way I understand. Can you explain what's happening here? Well, you basically got it right :) fun is a keyword specific to functional language. In fact: fun (x) - print(x) is equivalent to: def f(x) = print(x) end It is not really equivalent in the sense that there can be syntactic side- effects, but that's the idea.. Hence, here: fun () - request(get_process_output(#{scripts}/scheduler.pl 2 #{scripts}/log)) Is a function that takes no value and returns a new query. In particular: get_process_output: returns the output of the script. request: create a request based on the output of this script. Romain -- Stay on top of everything new and different, both inside and around Java (TM) technology - register by April 22, and save $200 on the JavaOne (SM) conference, June 2-5, 2009, San Francisco. 300 plus technical and hands-on sessions. Register today. Use priority code J9JMT32. http://p.sf.net/sfu/p ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] large media library
Le vendredi 17 avril 2009 10:07:37, Brandon Casci a écrit : I think I get it. fun - is a way to create a anonymous function, and you'd probably use fun() - if your function code is only a single line and used in one place. You would go with a full def, if your custom function were more advanced or was used repeatedly. Correct? Yep ! add_protocol(dolebrai, fun (arg,delay) - get_process_lines(#{scripts}dolebrai-filename #{quote(arg)})) In this case, the function has two args, arg and delay. How are the values for those arguments being supplied? I don't see any explicit calls to to add_protocol. Yes. This function registers a new request protocol. It will be used when a request of the form: dolebrai:arg is received. The two arguments are the arg (part after dolebrai:) and the delay for getting the song (usually 60 seconds). This possibility is very useful if you want to extend liquidsoap's capabilities for fetching songs or applying a treatement to the song. I'm not sure there if you sense much need for this, but if you help me understand the language I can try to write a code generator for simple use cases. Maybe something something like a config file that defines how you want tracks rotated, backup sources and so on, and a ruby script (that's what I use most) that generates a .liq based on contents of config. Héhé, nice idea. I have written a similar thing which you can find here: http://savonet.rastageeks.org/browser/trunk/liq-contrib/simpleliq.in However, it is nothing serious and was just a proof-of-concept. But, clearly, a tool to generate a script based on some fixed parameters would be a great thing for newcomers who don't want (yet) to program their streams but still benefit from the flexibility :) Romain -- Stay on top of everything new and different, both inside and around Java (TM) technology - register by April 22, and save $200 on the JavaOne (SM) conference, June 2-5, 2009, San Francisco. 300 plus technical and hands-on sessions. Register today. Use priority code J9JMT32. http://p.sf.net/sfu/p ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] Muted output
Le Saturday 28 March 2009 10:59:27 Romain Beauxis, vous avez écrit : Yes, indeed, several issues of this kind have been noticed, including by myself. We never managed to get an hand on it, and almost all the time it disapeared without any reasons for it. The last time I had it, I was using the custom liquidsoap debian 0.9.0 package. I got rid of it by using a binary built from source on the machine. Just to confirm that I again had this issue today: apparentely main thread stops operating, while secondary threads are still working good, including telnet connections. I will investigate shortly, though I have little idea on how to debug this.. Any idea ? Romain -- Stay on top of everything new and different, both inside and around Java (TM) technology - register by April 22, and save $200 on the JavaOne (SM) conference, June 2-5, 2009, San Francisco. 300 plus technical and hands-on sessions. Register today. Use priority code J9JMT32. http://p.sf.net/sfu/p ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] deb Hash Sum mismatch
Le Saturday 18 April 2009 07:14:38 noser...@no-log.org, vous avez écrit : Hi there, Hi ! I've a problem since this morning with the deb package. I've tested on two differents machines : Yes, there was a crash on the hard drive of the serveur yesterday and some files got corrupted when restoring the file system. I have regenerated a new package: liquidsoap 0.9.0~savonet-2 Romain -- Stay on top of everything new and different, both inside and around Java (TM) technology - register by April 22, and save $200 on the JavaOne (SM) conference, June 2-5, 2009, San Francisco. 300 plus technical and hands-on sessions. Register today. Use priority code J9JMT32. http://p.sf.net/sfu/p ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] convert mp3 stream to aac stream
Hi all ! Le Wednesday 22 April 2009 05:03:09 David Baelde, vous avez écrit : Romain is our expert in exotic formats (i.e., other than mp3/ogg/wav), but I'll try to answer. The shout library that liquidsoap 0.9.0 uses for sending data to icecast does not allow us to specify the mime type of the stream. Hence, sending AAC is not properly supported: we send the right audio data but the server does not treat it correctly -- or at least the listener does not get it as AAC, I'm not sure. In any case, this is fixed with the SVN version which now uses our own version the shout library, allowing to pass the correct mime-type and get proper AAC streaming through icecast. It is safe to switch to SVN: I'd say that it is currently as stable as 0.9.0. It's a bit long to compile the first time, but it's a good investment if you want to follow the new features, notably regarding AAC. I confirm what David said. More details there: http://blog.rastageeks.org/spip.php?article33 Romain -- Stay on top of everything new and different, both inside and around Java (TM) technology - register by April 22, and save $200 on the JavaOne (SM) conference, June 2-5, 2009, San Francisco. 300 plus technical and hands-on sessions. Register today. Use priority code J9JMT32. http://p.sf.net/sfu/p ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] Issue with metadata using AAC (m4a) files
Hi ! Le Thursday 30 April 2009 17:28:15 Romaric, vous avez écrit : I find this: (* Disable other formats for now... *) if (format MP3) then raise Not_found ; It has been inserted in the file taglib_plug.ml under liquidsoap\liquidsoap\src\formats with the revision 6456 Yes, for now taglib is only used to read mp3 metadata. Back in the time we added support for taglib, we did not need more. Also, if I remember well, m4a files cannot be decoded by the internal ocaml- faad support (cannot parse the container), hence it is played by an external binary decoder, most probably faad. There is a support for the metadata using what is returned by faad -i but the problem surely comes from there. Could you check the output of: faad -i /path/to/audio.m4a Hope this helps. Romain -- Register Now Save for Velocity, the Web Performance Operations Conference from O'Reilly Media. Velocity features a full day of expert-led, hands-on workshops and two days of sessions from industry leaders in dedicated Performance Operations tracks. Use code vel09scf and Save an extra 15% before 5/3. http://p.sf.net/sfu/velocityconf ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] Mix Problem
Hi ! Le Thursday 30 April 2009 13:11:33 David Baelde, vous avez écrit : What do you mean by mix? cross-fading? If so, it could be that there is a small latency leading to an temporary failure in the dynamic request source: from the point of view of the crossfade, a failure is a failure, long or short, and you don't cross-fade over failures. I think the problem is that same as described last summer: for apparently no reason, the crossfade (or smart crossfade) doesn't cross the tracks. Jeff: it would be good for us to have some logging of the issue. So far, we were inable to track down the reason for this, nor to reproduce -- I have smart crossfade without issues in production for instance. A good starting point would probably be a ticket with some script that gives the issue, and the corresponding logs for instance.. Romain -- The NEW KODAK i700 Series Scanners deliver under ANY circumstances! Your production scanning environment may not be a perfect world - but thanks to Kodak, there's a perfect scanner to get the job done! With the NEW KODAK i700 Series Scanner you'll get full speed at 300 dpi even with all image processing features enabled. http://p.sf.net/sfu/kodak-com ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] input.jackd - regular pop
Hi ! Le Friday 08 May 2009 18:18:12 noser...@no-log.org, vous avez écrit : Is there a wrong buffer managment or something between liquidsoap and bjack ? Hope this help ! Thanks for the report ! In fact, this bug is a known bug: http://savonet.rastageeks.org/ticket/203 I have started working on it, I can provide a preliminary patch if you feel like testing :) Romain -- The NEW KODAK i700 Series Scanners deliver under ANY circumstances! Your production scanning environment may not be a perfect world - but thanks to Kodak, there's a perfect scanner to get the job done! With the NEW KODAK i700 Series Scanner you'll get full speed at 300 dpi even with all image processing features enabled. http://p.sf.net/sfu/kodak-com ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] Compilation liquidsoap from svn libmad undefined reference
Le Friday 08 May 2009 18:09:16 Peter Schälchli, vous avez écrit : Hi @ all on the Users ML from Savonet Hi ! 1. Who can say the liquidsoap is a cool tool, i have this on my Ubuntu and it works fine Thanks ! Now the Problem: I have Savonet from SVN on a Opensuse 10.3 Server and configure is fine but on the compilation come this fault: http://www.schaelchli.ch/fail.txt I testet this also with the full tar.gz with the same problem. What is wrong? I don't know yet.. Could you go on the ocaml-mad directory (full tarball compilation), and manually do: ./configure make clean make This would allow to check the variables used for compilation. Also, where is your libmad installed ? /usr/{lib,include} or /usr/local/{lib,include} ? Greetings and have a nice weekend To you too ! :) Romain -- The NEW KODAK i700 Series Scanners deliver under ANY circumstances! Your production scanning environment may not be a perfect world - but thanks to Kodak, there's a perfect scanner to get the job done! With the NEW KODAK i700 Series Scanner you'll get full speed at 300 dpi even with all image processing features enabled. http://p.sf.net/sfu/kodak-com ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] script call, request.dynamic
Le Saturday 09 May 2009 10:15:56 Guillaume Rose, vous avez écrit : Hi, Hi ! I use request.dynamic in order to create a dynamic playlist. Although, liquidsoap call, at launch, 3 times, then it keeps in cache URIs of 2 songs. Yes, that is the current behaviour: liquidsoap caches some songs to make sure it alw ays have something available to stream in the future.. Is there a solution to stop this ? true real time ? There is no real solution for now. you can play with the parameters in order to reduce the cache length. There is a ticket dedicated to this: http://savonet.rastageeks.org/ticket/169 David agreed recently that we whould review this. However, it is not an easy change, so it might take some time to do it properly. In the mean time, you can give a try to the patch attached to the above ticket. It should work, though it has not been tested intensively.. Romain -- The NEW KODAK i700 Series Scanners deliver under ANY circumstances! Your production scanning environment may not be a perfect world - but thanks to Kodak, there's a perfect scanner to get the job done! With the NEW KODAK i700 Series Scanner you'll get full speed at 300 dpi even with all image processing features enabled. http://p.sf.net/sfu/kodak-com ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] How can one play a playlist just o nce, and reload it each time it's called
Le Wednesday 13 May 2009 13:33:55 Kero, vous avez écrit : Hello, Hi ! Writing here as suggested on IRC. Here is the deal : I'm running a webradio with a music playlist most of the day, and some live shows usually during the evening. These show can last from 1 to more than 7 hours, it all depends on the mood of the DJ. All live shows are saved by liquidsoap in different files using output.file.mp3 Now, I would like to be able to rerun my shows during nights and afternoons. It has to stop and go back to the main playlist once the show has been entirely rebroadcasted. And also at special hours, even if the rebroadcast is still running. So I was thinking of something like : pre_rerun = playlist.once(path/rerun.m3u) music = playlist(path/music.m3u) true_rerun = fallback([pre_rerun, music]) switch([ ({10h00-16h00}, music),({16h00-20h30}, true_rerun),({20h30-3h00}, music),({3h00-10h00}, true_rerun)] ) The main problem is : playlist_once has no way of reloading rerun.m3u - so it would play the same playlist everyday even tho the files are changing. It is even worse: playlist.once will not be available any more when it has finished, so that you shall need to restart liquidsoap.. I've heard there was a workaround for this, a way to force a playlist to run only once per switch while being regularly reloaded. I would be interested by such a solution. :-) For this case, I have another idea in mind. You should be able to perform something relatively simple using a queue of request and a recursive task. Something like: rerun = request.queue(id=rerun) Now the trick is to register a recursive task for adding the new live shows. Roughly, something like: def add_live() = # We check if it is time to push a request if 16h00-20h30 or 3h00-10h00 then # We check if we are already running a live ret = list.hd(server.execute(rerun.queue)) if ret == then # We get the file/uri to play (can be a obtained from a script or # anything else) file = (...) # We push the request ignore(server.execute(rerun.push #{file})) end end # We run again in one minute 60. end Eventually, we register the task: add_timeout(60., add_live) The purpose of this recursive task is to feed the rerun source. It will feed it if it is the correct time for broadcasting the live archive, and only if another archive is not already being played. When an archive ends, within at most one minute, if it is still time, it will start another live. We could also check the duration of the file, using file.duration, and if there is not enough time for it, don't push it, but I am nto sure there is a function for that in the language for now.. Eventually, we can add the switch that will make sure we play the archive at the correct time: # This transition skips the current track when switching.. def transition(a,b) = source.skip(a) # This eats the last remaining frame from a sequence([a,b]) end full = switch(track_sensitive=false, transitions=[transition,transition], [({16h00-20h30 or 3h00-10h00}, rerun), ({true}, music) ]) We set track_sensitive to false to make sure that the switch can occur in the middle of an archive. We could set it to true if we check for available time before starting a live, as explained above. The transition function is also needed when track_sensitive is false. It makes sure that if switching back to music in a middle of an archive, then this track is skiped, such that the next time we play an archive, it starts with a fresh one. I did not test the code above, but I think it should mostly be correct. Let me know if you need more details.. I may also add something inspired by that in the standard library. Romain -- The NEW KODAK i700 Series Scanners deliver under ANY circumstances! Your production scanning environment may not be a perfect world - but thanks to Kodak, there's a perfect scanner to get the job done! With the NEW KODAK i700 Series Scanner you'll get full speed at 300 dpi even with all image processing features enabled. http://p.sf.net/sfu/kodak-com ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] normalize/skip_blank
Le Friday 15 May 2009 02:05:51 Brandon Casci, vous avez écrit : Hello Hi ! If you choose to use normalize and skip_blank, do you need to apply them for each playlist, or can you apply them to the whole chain of playlists? In general, skip_blank can be used on the top level of your playlists. The same applies for normalize. However, you should not apply skip_blank on the last source before an output if this source includes live sources, such as input.http or input.harbor. For these sources, skipping would not work. Normalize should work, however, but you should care about sound issues when normalizing. More details there: http://savonet.sourceforge.net/doc-0.9.0/replay_gain.html For example..looking at the case study from the website (...) radio = add(normalize = true, [radio, switch([({0m0s},clock)])]) Beware that the meaning of the normalize parameter here is not the same as the meaning of the normalize operator. In add, normalize means that, when adding for instance a and b, the resulting sound samples are normalized, in the form: a + b / 2 Without normalization, the resulting samples are simply: a + b Romain -- Crystal Reports - New Free Runtime and 30 Day Trial Check out the new simplified licensing option that enables unlimited royalty-free distribution of the report engine for externally facing server and web deployment. http://p.sf.net/sfu/businessobjects ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] Writer is late
Le Monday 18 May 2009 19:59:51 Pascal Vanbel - Radio Universitaire Namuroise - 107.1MHz FM, vous avez écrit : Hello, Hi ! Liquidsoap sometimes put in the log several Writer is late and the song isn't playing nice (saturation mostly) once or twice a day Someone knows what causes this problem Well, this is hard to tell without the script. My guess is that you are using alsa and this comes from it. The good news in this case is that we have fixed this recently in the SVN, so you should be able to test the fixed code there.. Romain -- Crystal Reports - New Free Runtime and 30 Day Trial Check out the new simplified licensing option that enables unlimited royalty-free distribution of the report engine for externally facing server and web deployment. http://p.sf.net/sfu/businessobjects ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] Issues using request.dynamic in daemon mode
Hi ! Le Tuesday 19 May 2009 04:10:51 Frank Berthold, vous avez écrit : Any assistance will be much appreciated. Thanks for this report, it seems interesting. Could you reproduce the logs with more verbosity, it would help to understand better the issue.. You can add to your script: set(log.level,5) Thanks ! Romain -- Crystal Reports - New Free Runtime and 30 Day Trial Check out the new simplified licensing option that enables unlimited royalty-free distribution of the report engine for externally facing server and web deployment. http://p.sf.net/sfu/businessobjects ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] maintaining shout/icecast output
Le Tuesday 19 May 2009 23:31:37 Brandon Casci, vous avez écrit : Hello Hi ! I've been running liquidsoap regularly for a few days, it does well for a while but eventually loses the shoutcast output connection after some time, meaning the servers are no longer sourced. There appears to be no dropped connection information in the log. The log does show liquidsoap is still running and playing tracks though. I'm using the 0.9.0 debian package. Is this a known issue? Yes, this is probably a known issue. I would like to have more details to find out more on this issue... Can you provide logs ? Script ? Could you try to reproduce with a minimal script ? (by minimal I mean removing one by one the operators in the script in order to reproduce the bug with the less operators/sources as possible) Also, which package did you install ? Debian's lenny/testing/unstable ? Custom packages made by ourselves ? In this case, daily package or stable backports ? Eventually, what is your distribution ? Could you give us your kernel version (check uname -r) ? And the architecture (uname -a) ? Thanks for your help ! Romain -- Crystal Reports - New Free Runtime and 30 Day Trial Check out the new simplified licensing option that enables unlimited royalty-free distribution of the report engine for externally facing server and web deployment. http://p.sf.net/sfu/businessobjects ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] Liquidsoap on FreeBSD
Hi ! Thanks for you detailled report. Here are some comments: Le Tuesday 26 May 2009 05:30:10 Andrew, vous avez écrit : In order to get configure to go through cleanly I had to use this configure command: CFLAGS=-I/usr/local/include LDFLAGS=-L/usr/local/lib CPPFLAGS=-I/ usr/local/include ./configure Ok. That is probably normal. To compile with OSS support I needed to create /usr/src/include/linux and copy the following sound include files there: cp /usr/src/sys/dev/sound/pcm/sound.h /usr/src/include/linux/sound.h cp /usr/src/sys/sys/soundcard.h /usr/src/include/linux/soundcard.h Could you check with the attached patch if it fixes oss compilation for you without this hack ? With the LDFLAGS on the command line I was able to make it go through the configure process successfully, however make would continually fail. To fix the issues with make I had to symlink the following libraries from /usr/local/lib to /usr/lib ln -sf /usr/local/lib/libmp3lame.so /usr/lib/libmp3lame.so ln -s /usr/local/lib/libmad.so /usr/lib/libmad.so ln -sf /usr/local/lib/libogg.so /usr/lib/libogg.so ln -sf /usr/local/lib/libvorbisenc.so /usr/lib/libvorbisenc.so ln -sf /usr/local/lib/libvorbisfile.so /usr/lib/libvorbisfile.so ln -sf /usr/local/lib/libshout.so /usr/lib/libshout.so ln -sf /usr/local/lib/libfaac.so /usr/lib/libfaac.so ln -sf /usr/local/lib/libfaad.so /usr/lib/libfaad.so ln -sf /usr/local/lib/libsamplerate.so /usr/lib/libsamplerate.so ln -sf /usr/local/lib/libtag.so /usr/lib/libtag.so ln -sf /usr/local/lib/libtag_c.so /usr/lib/libtag_c.so Ok. We had found the issue for this some times ago. I just made a big commit on trunk/ in order to fix this. Could you try with the latest SVN trunk if you can compile without this hack ? This fixed the problems of finding codecs and such, however despite specifically compiling using gmake it would try and use the FreeBSD make instead. This forced me to temporarily rename the BSD version and symlink gmake: mv /usr/bin/make /usr/bin/make.good ln -sf /usr/local/bin/gmake /usr/bin/make make Hmm.. We have tried to remove all hardcoded make calls. Apparently there still are some of them.. Could you send us the compilation logs where this fails so that we can fix them ? And lastly in order for 'make install' to work I had to add a user and group named liquidsoap using adduser: adduser make install Hmmm.. So far, this part is assumed to be done by the user/administrator: # User ${user} and group ${group} are expected to exist. # They are defined in Makefile.defs, written by configure. However, since you are not the first to complain, I wonder whether this could be done in a better way.. This produced a working /usr/local/bin/liquidsoap binary that worked with OSS audio input. Good ! You seemed quite patient :) For some reason though I had to remove the /usr/local/lib/liquidsoap/ 0.9.0/utils.liq file as the program would just hang there with it in place. That is really strange. Using liquidsoap without utils.liq will be mush less usefull. A lot of useful functions are defined there.. It would be good to debug and fix this issue.. Do you have more informations ? Romain Index: configure.ac === --- configure.ac (révision 6589) +++ configure.ac (copie de travail) @@ -1166,7 +1166,7 @@ AC_ARG_ENABLE([oss],AC_HELP_STRING([--disable-oss],[don't use OSS])) if test x$enable_oss != xno ; then - AC_CHECK_HEADERS([linux/sound.h],[W_OSS=yes]) + AC_CHECK_HEADERS([sys/soundcard.h],[W_OSS=yes]) fi AC_SUBST(W_OSS) Index: src/io/oss_io_c.c === --- src/io/oss_io_c.c (révision 6589) +++ src/io/oss_io_c.c (copie de travail) @@ -5,7 +5,7 @@ #include caml/misc.h #include caml/mlvalues.h -#include linux/soundcard.h +#include sys/soundcard.h #include sys/ioctl.h #include assert.h -- Register Now for Creativity and Technology (CaT), June 3rd, NYC. CaT is a gathering of tech-side developers brand creativity professionals. Meet the minds behind Google Creative Lab, Visual Complexity, Processing, iPhoneDevCamp asthey present alongside digital heavyweights like Barbarian Group, R/GA, Big Spaceship. http://www.creativitycat.com ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] Liquidsoap on FreeBSD
Le Tuesday 26 May 2009 13:36:27, vous avez écrit : Could you check with the attached patch if it fixes oss compilation for you without this hack ? Unfortunately it did not. I got this: checking linux/sound.h usability... no checking linux/sound.h presence... no And at the end: - OSS : no The patch did apply cleanly in the savonet/liquidsoap directory. I forgot to mention that you need to run ./bootstrap again for this patch to work.. Ok. We had found the issue for this some times ago. I just made a big commit on trunk/ in order to fix this. Could you try with the latest SVN trunk if you can compile without this hack ? I just tried SVN revision 6591 and that seems to have fixed things. However I did need to run gmake with the LDFLAGS: CFLAGS=-I/usr/local/include LDFLAGS=-L/usr/local/lib CPPFLAGS=-I/ usr/local/include gmake after that it compiled cleanly without having to make any symlinks to libraries or gmake. Great ! It seems strange that you still need to pass the compilation variables. However, this is far much better.. Hmmm.. So far, this part is assumed to be done by the user/administrator: # User ${user} and group ${group} are expected to exist. # They are defined in Makefile.defs, written by configure. However, since you are not the first to complain, I wonder whether this could be done in a better way.. I think if there was some information in INSTALL that would be suitable. It just threw me off because I wasn't expecting that. Yes. I think we should detect when the user/group does not exist and issue an error in this case.. The LDFLAGS on the command line was also a bit non-intuitive as I'm used to libraries being automatically discovered when running ./configure -- prefix=/usr/local. It's not a big deal though. Ok, I will look at that. That is really strange. Using liquidsoap without utils.liq will be mush less usefull. A lot of useful functions are defined there.. It would be good to debug and fix this issue.. Do you have more informations ? The SVN releases seems to have fixed this issue as well. Good ! One note. With ocaml-faac and ocaml-faad enabled in PACKAGES it would not compile cleanly. I don't particularly need regular AAC so that is ok for my purposes, but I thought I would report it: Ok, will look at that. Romain -- Register Now for Creativity and Technology (CaT), June 3rd, NYC. CaT is a gathering of tech-side developers brand creativity professionals. Meet the minds behind Google Creative Lab, Visual Complexity, Processing, iPhoneDevCamp asthey present alongside digital heavyweights like Barbarian Group, R/GA, Big Spaceship. http://www.creativitycat.com ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] External aacplusenc on FreeBSD
Le Tuesday 26 May 2009 13:47:33 Andrew, vous avez écrit : Humm... The external mechanism is pretty complicated. I am not surprised it does not work out of the box. For a start, could you try to test with the latest SVN trunk code ? This part has been rewritten recently, and there were important changes in the implementation. SVN release 6591 appears to have resolved the issue here. Aacplusenc how works. Good ! One bug that I discovered with it on both Linux and FreeBSD was that it does not restart correctly using the restart_encoder_delay field. With this set to 3600, I got: 2009/05/25 20:39:40 [output(dot)icecast(dot)aacplusenc:3] Restarting encoder after delay (3600s) encoding finished And it never did restart. I also have these values in my config (as in my previous post); ~restart=true, ~restart_delay=3 ~restart_on_crash=true, ~restart_on_new_track=false, ~restart_encoder_delay=3600 Hmm. I need to debug this more. Will try to look more in details. Of course, any patch/contribution is welcome :) With a working restart_encoder_delay will there be any cutouts in the audio while the encoder restarts or will liquidsoap just continue to store audio in the buffer as it comes in from the soundcard and then pump it out to the encoder once it comes back up? There should not be any loss, from the point of view of liquidsoap, the encoder is just restarted, but no audio is lost. For the player, however, there can be a glitch. I understand that the hourly restart is due to bugginess with aacplusenc. Is this because it's a child process instead of a library? Yes ! Perhaps it would be useful to use libaacplus instead? I know that's what the Darkice project is using: http://lists.tyrell.hu/pipermail/darkice-list/2008-November/000314.html Haha ! I initially looked for such wrapper to turn aacplusenc into a library. However, upstream communication was not very sucessful, and I decided to switch to external encoders for that reason. I do not know f it is a good idea to use this library: its API might change, or support get lost.. However, any contribution on this topic would be of course welcome. For myself, I do not know yet if I want to bind this library. Romain -- Register Now for Creativity and Technology (CaT), June 3rd, NYC. CaT is a gathering of tech-side developers brand creativity professionals. Meet the minds behind Google Creative Lab, Visual Complexity, Processing, iPhoneDevCamp asthey present alongside digital heavyweights like Barbarian Group, R/GA, Big Spaceship. http://www.creativitycat.com ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] MP3 output problem
Le Friday 29 May 2009 01:21:20 Jean-Francois Mauguit, vous avez écrit : Hello, Hi ! I'm installing liquidsoap on a brand new server. But I've a problem with my output MP3 (output.icecast.mp3). It says unbound symbol output.icecast.mp3. Indeed, that seems the issue. After reading the forums it sounds to be related to missing MP3 support in the OS but I've installed liblame-dev. I can read in the make output OCAML_LFLAGS : -linkpkg -package unix -package threads -package str - package bigarray dtools.cmxa duppy.cmxa shout.cmxa -package xml-light xmlplaylist.cmxa ogg.cmxa vorbis.cmxa speex.cmxa mad.cmxa lame.cmxa theora.cmxa gavl.cmxa bjack.cmxa alsa.cmxa ao.cmxa samplerate.cmxa taglib.cmxa faad.cmxa faac.cmxa soundtouch.cmxa portaudio.cmxa pulseaudio.cmxa ladspa.cmxa It sounds lame is there. I've no error during the build. But I've the same error on 0.3.8 and 0.9 installation... Indeed, this looks correct. Anyone has an idea ? Hmmm.. We should need more logs of the compilation to see where the issue can happen. Also, the dummy answer: are your sure you are testing against the compiled liquidsoap and not another binary, installed by the packaging system, for instance ? Romain -- Register Now for Creativity and Technology (CaT), June 3rd, NYC. CaT is a gathering of tech-side developers brand creativity professionals. Meet the minds behind Google Creative Lab, Visual Complexity, Processing, iPhoneDevCamp as they present alongside digital heavyweights like Barbarian Group, R/GA, Big Spaceship. http://p.sf.net/sfu/creativitycat-com ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] line in and Metadata
Le Thursday 04 June 2009 07:18:22 Ramon Roche, vous avez écrit : Hey guys Hi ! i am stuck in a project in which i need to use a Line in (got this working easily) but i need to get the Metadata going as well, i am wondering how to get the data into the application, i have read of telnet on liquidsoap but i am yet to find any good docs on using telnet with liquidsoap In order to inject metadata into your source, you can use the insert_metadata operator. You enable it by adding in your script: radio = insert_metadata(id=radio, radio) That way, the radio source is redefined with the possibility to inject metadata. When running the script with the telnet server enabled: set(server.telnet, true) you should be able to connect to the port 1234 on the localhost: telnet localhost 1234 This should open a console where you can type commands. For instance help will return the list of available commands. Also, some commands are self- documented, so you can ask for their documentation. In your case, you can then insert metadata, for instance: radio.insert title=foo,artist=bar For advanced usages, you can also execute this command within the script it self, using the server.execute operator: server.execute('radio.insert title=foo,artist=bar') This operator returns the strings corresponding to the output of the command. Usually you don't care about them and you ignore the output: ignore(server.execute('radio.insert title=foo,artist=bar')) Romain -- OpenSolaris 2009.06 is a cutting edge operating system for enterprises looking to deploy the next generation of Solaris that includes the latest innovations from Sun and the OpenSource community. Download a copy and enjoy capabilities such as Networking, Storage and Virtualization. Go to: http://p.sf.net/sfu/opensolaris-get ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] Metadata update according with live show info
Le Sunday 07 June 2009 20:11:29 Romeo, vous avez écrit : Hi, Savonet Team! Hi ! is it possible to update stream metadata using input.harbor headers? i suggest i must do it this way, but it doesn't work. i get blank title instead. Yes, the liquidsoap language is a functional language. Hence, it is not possible to change the value of a variable. This is done by redefining a new variable. For that reason, x = y is a boolean, true if x = y and false otherwise. In some cases, however, this is not possible to redefine the variable You can use the string.ref operator. This operators returns two functions, one for reading the current registered value, and another one to register a new value. In your precise case, you can do even better, and avoid string.ref. This goes like this: def liveStart(headers) log([LIVE-START]: live source goes up! Switching from playlist...) title = headers[ice-name] ignore(server.execute(liveMeta.insert title=\#{title}\)) end liveInput = input.harbor(id=live, live.ogg, buffer=10., password=livePasswd, on_connect=liveStart) liveInput = insert_metadata(id=liveMeta, liveInput) That way, a new metadata will be inserted each time the harbor input receives a new connection. Romain -- OpenSolaris 2009.06 is a cutting edge operating system for enterprises looking to deploy the next generation of Solaris that includes the latest innovations from Sun and the OpenSource community. Download a copy and enjoy capabilities such as Networking, Storage and Virtualization. Go to: http://p.sf.net/sfu/opensolaris-get ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] Non english symbols in tags
Le Monday 08 June 2009 14:43:50 Vadym, vous avez écrit : Hi all Hi ! I listen mp3 to icecast but LS send russian(cp1251) tags not properly on which encoding I must fill tags in mp3 ? I think we should need more details to help you on this issue. What is exactly the source of the tags ? Is it an audio stream from another icecast server or local files ? Once we know the origin of the metadata, we can look at the encoding used.. Romain -- Crystal Reports - New Free Runtime and 30 Day Trial Check out the new simplified licensing option that enables unlimited royalty-free distribution of the report engine for externally facing server and web deployment. http://p.sf.net/sfu/businessobjects ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] line in and Metadata
Hi ! Le Thursday 04 June 2009 21:06:07 Ramon Roche, vous avez écrit : great, i can connect to telnet from here, which is great, i found out after i initially sent this email that i could do it, but i ignored how to send messages back to my instance of liquidsoap after reading your email i went and added radio = insert_metadata(id=radio, radio) and i connected via telnet, typed help and the command showed up at this point i was really happy hahaha and then, i typed radio.insert title=Song Title,artist=Artist Name and i didn't notice any change on my stream, and all of a sudden my stream just stopped w/o showing nothing on the log i am about to test the stream with curl to see the actual data, do you have any idea of what may be wrong? Not at that point. It would be nice if you could show me a script and explain how to reproduce the issue here. maybe telnet is interrupting the icecast stream? That's possible if the telnet server crashed the liquidsoap instance, though unlikely. By the way, which version of liquidsoap are you using ? Romain -- Crystal Reports - New Free Runtime and 30 Day Trial Check out the new simplified licensing option that enables unlimited royalty-free distribution of the report engine for externally facing server and web deployment. http://p.sf.net/sfu/businessobjects ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] line in and Metadata
Hi ! Le Tuesday 09 June 2009 01:14:40 Ramon Roche, vous avez écrit : thanks for your reply, here is my script That script works correctly here, both with SVN and 0.9.0. Do you have an extract of the logs during the failure ? Romain -- Crystal Reports - New Free Runtime and 30 Day Trial Check out the new simplified licensing option that enables unlimited royalty-free distribution of the report engine for externally facing server and web deployment. http://p.sf.net/sfu/businessobjects ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] make install liquidsoap 0.9.0 svn revision 6610 error
Le jeudi 11 juin 2009 01:17:59, fruity a écrit : Hi, Hi ! as subject I was just compiling the latest svn and I got this error while doing make install, updating to 6609 solved :) Thanks for the report. Fixed now.. ! Romain -- Crystal Reports - New Free Runtime and 30 Day Trial Check out the new simplified licensing option that enables unlimited royalty-free distribution of the report engine for externally facing server and web deployment. http://p.sf.net/sfu/businessobjects ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] Weird problems when calling a playlist of only 1 title
Hi ! Le mercredi 10 juin 2009 02:46:55, Kero a écrit : My guess is : each time this playlist is refreshed, the bug makes the refresh going a little worse. At the beginning it's not that bad, but after a few dozens (hundreds?) of refreshes, liquidsoap really starts to lose control. Your analysis was correct. While preparing another commit (a nice surprise that David suggested), I realized there was a bug in the feeding task for the queued source and also the playlist source. Basically, the feeding was not doing what we wanted it to do, resulting in the possibility to spawn an important number of parrallel refresh when the initial request was failling.. This is now hopefuly fixed by commit [6612]. Romain -- Crystal Reports - New Free Runtime and 30 Day Trial Check out the new simplified licensing option that enables unlimited royalty-free distribution of the report engine for externally facing server and web deployment. http://p.sf.net/sfu/businessobjects ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] We need a way to control request.dynamic pre-load function
Hi all ! Le mardi 09 juin 2009 23:57:15, David Baelde a écrit : On Tue, Jun 9, 2009 at 7:13 PM, Robert McAuleyrmcau...@rainwave.cc wrote: Maybe enough prodding by other users and we'll see this issue bump up the priority list for the Liq devs. I know it's the only thing stopping me from deploying this on my production site. :) Nice prod indeed :) Bumping up a bit more... Thanks to a very good suggestion from David, this should be fixed now ! Indeed, now queued sources (request.queue, request.equeue and playlist) take the estimated remaining time into account for fetching new files. This means that now these sources may fetch much less files in advance. By default, the first file should be sufficient. It can happen that two files are queued from time to time due to the estimated nature of the remaining time, but this should be very minimal. This also mean that now the secondary queue, the one that you can edit in request.equeue, should contain all queued files, and the primary_queue only the file currently being played. Default values have also been changed to enable this new behaviour. You can fallback to the old behaviour by setting back to old values (length=60.) and setting the new conservative option to true. Eventually, one must be carefull with the queue length. It is possible to set it to a minimal value, like 0.1 in order to be sure that only one file is loaded. However, when using an operator that buffers audio data in advance, like the crossfade, the new file may be ready too late. For instance, the crossfade sources buffer about 5 seconds of the end of each files. Hence, if the length is less than this value, the new file will not be ready quickly enough, leading to either the source being unavailable for a short time, or at least the crossfade transition being disabled. Romain -- Crystal Reports - New Free Runtime and 30 Day Trial Check out the new simplified licensing option that enables unlimited royalty-free distribution of the report engine for externally facing server and web deployment. http://p.sf.net/sfu/businessobjects ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] We need a way to control request.dynamic pre-load function
Le samedi 13 juin 2009 10:56:59, vous avez écrit : Here it is http://solvik.pastebin.com/mbf62124 Ok. I suspect the crossfade to be the culprit. There is high change that the crossfade can eat track limits and then prevent the dedicace to be played. Could you try to put the dedicace fallback *before* the crossfade ? Romain -- Crystal Reports - New Free Runtime and 30 Day Trial Check out the new simplified licensing option that enables unlimited royalty-free distribution of the report engine for externally facing server and web deployment. http://p.sf.net/sfu/businessobjects ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] Preroll sound
Le dimanche 14 juin 2009 18:34:54, Jean-Francois Mauguit a écrit : Hello, Hi ! Is it possible to pass trough the output.icecast a sound to play when a listener connect to icecast on the liquidsoap mount point ? I don't think it can be done properly in liquidsoap. However, there is an option in icecast2 for that purpose: intro An optional value which will specify the file those contents will be sent to new listeners when they connect but before the normal stream is sent. Make sure the format of the file specified matches the streaming format. The specified file is appended to webroot before being opened. http://www.icecast.org/docs/icecast-trunk/icecast2_config_file.html#mount Romain -- Crystal Reports - New Free Runtime and 30 Day Trial Check out the new simplified licensing option that enables unlimited royalty-free distribution of the report engine for externally facing server and web deployment. http://p.sf.net/sfu/businessobjects ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] how not to repeat code in a liquidsoap script
Hi ! Le samedi 13 juin 2009 00:09:07, fruity a écrit : More in practic I whould like to have some tips on how could I avoid repeating code over and over: output.icecast.$codec(stereo=true, restart=true, restart_delay=5, mount=mount0, name=name0, host=host0, port=port0, user=user0, password=passwd0, genre=NONE, url=NONE, description=NONE, public=true, quality=0.2, radio) and to change the default sets that are common to all streams in one shot. (I immagine something like output.icecast.$codec(alltheconstant,quality,source) I thought (suggested by a friend) I could also try to make an external with ffmpeg, so that I have only audio stuff variable but stuff like metadata and accountings constant. There are several things you can do for that. First, you can use a partial application. For instance if you write: out.mp3 = output.icecast.mp3(stereo=true, restart=true, restart_delay=5, host=host0, port=port0, user=user0, password=passwd0, public=true, quality=0.2) The value out.mp3 is then a partial application, and you can use it to spawn several sources by passing it the missing arguments, for instance mount, name, description and source: out.mp3(mount=first,name=xx,description=yy,s) out.mp3(mount=second,name=xx,description=yys') If the repeated parameters are the same for each output.icecast.$codec, you can even write: def my_out(f) = f(stereo=true, restart=true, restart_delay=5, host=host0, port=port0, user=user0, password=passwd0, public=true) end And then: out.mp3 = my_out(output.icecast.mp3) out.vorbis = my_out(output.icecast.vorbis) out.aacp = my_out(output.icecast.aacplusenc) Hope that helps. Romain -- Crystal Reports - New Free Runtime and 30 Day Trial Check out the new simplified licensing option that enables unlimited royalty-free distribution of the report engine for externally facing server and web deployment. http://p.sf.net/sfu/businessobjects ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] Script Issue - Fallback from a live stream to a playlist - How to make a playlist to start from the beggining at every fallback?
Le samedi 13 juin 2009 12:09:28, kosnickx a écrit : hi, Hi ! i have a script that fallbacks between a playlist and a live stream. I am having this live stream and when i end it (disconnect from the icecast server) the playlist starts. So far everything is ok. But the thing is that the playlist starts from the middle of a song. Yes, that is the default behaviour. I mean it seams to me that the playlist is already being streamed (somehow somewhere - i guess this is the way you have built it, read the playlist and start playing it) and the exact time i stop my live stream the playlist starts at the point it is. Is there any way to start the playlist from the beggining and not from the middle of some song? Should this have to do with length in the playlist command? Is there any way to achieve this thing (to start the streaming of the playlist from the beggining of it every time)? You can look at fallback.skip in the utils.liq file. This operators skips the file currently being played when changing source. Hopefully this will be sufficient for you. If you look for a real restart of the playlist at its beginning, this should need more work, but could be done too. Romain -- Crystal Reports - New Free Runtime and 30 Day Trial Check out the new simplified licensing option that enables unlimited royalty-free distribution of the report engine for externally facing server and web deployment. http://p.sf.net/sfu/businessobjects ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] LiquidSoap : Failed to prepare track: no file
Le jeudi 18 juin 2009 09:07:20, vous avez écrit : Hello, Hi ! Here is my liq script. I'll try the latest svn Thanks ! You should also make sure that this is not a failure from your script. (is it stable enough to put it in production ?) I guess so. However, we should release a bugfix of 0.9.0 quite soon. Romain -- Crystal Reports - New Free Runtime and 30 Day Trial Check out the new simplified licensing option that enables unlimited royalty-free distribution of the report engine for externally facing server and web deployment. http://p.sf.net/sfu/businessobjects ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] LiquidSoap : Failed to prepare track: no file
Le jeudi 18 juin 2009 11:48:27, Jean-Francois Mauguit a écrit : Hello, Hi ! No, if i call the php from the command line, the annotate returned is OK and file is here. Ok. Then, it should be possible to track what happened after the call by inpecting the request through telnet. There can be several reasons for ths issue. The most common could be a request ID leak due to some bug in liquidsoap, but it could also be something external, like failure to read file or else. When connecting through telnet, you can check the list of requests by doing: alive For each request ID, you can check the history of its resolution by doing: trace 13 Romain -- Crystal Reports - New Free Runtime and 30 Day Trial Check out the new simplified licensing option that enables unlimited royalty-free distribution of the report engine for externally facing server and web deployment. http://p.sf.net/sfu/businessobjects ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] add_metadata_resolver
Hi ! Le jeudi 18 juin 2009 20:13:04, vous avez écrit : I was told there is support for aac metadata, but it was only available in the trunk version. I'm using 0.90 and feel like sticking with it a while longer. What do you think would be easiest way for me to aac metadata support? When do you think the next stable release might be? There was a release today, 0.9.1, but it only include bugxifes and minor improvements. Native support for AAC metadata needs more testing and will be released later. Le jeudi 18 juin 2009 20:23:51, vous avez écrit : By the way...I got the idea to add aac meta data support to my installed version of liquidsoap from this blog article http://blog.rastageeks.org/spip.php?article35 That examples uses the add_metadata_resolver to get raplygain data, and it gave me the impression it was appending to the metadata not replacing it, because the resolver returns what looks like a one element or zero element array. It looks intereasting. For my own education, can you explain what's actually happening? Thanks. Internaly in liquidsoap, we have a modular support for metadata. Each resolver registers itself to the main system, and when trying to find the metadata of a file, the decoders are tried one by one. Each of these decoders may return a list of elements of the form (label,value). Each elements of this list is added to the list of metadata. If there was another element with the same label, it is overriden with the new value. For instance, the replaygain resolver only returns a list with a single element, which is added to the list of metadata. add_metadata_resolver is the export of this system to the liquidsoap language. You can use it to register your own resolver. It needs to be a function of the form: string - (string*string) list In other word, this function takes a string, which is the URI of the (local) file, and returns a list of elements of the form (label,value). You can find some examples in the utils.liq file, in the scripts directory of the liquidsoap sources. Romain -- Crystal Reports - New Free Runtime and 30 Day Trial Check out the new simplified licensing option that enables unlimited royalty-free distribution of the report engine for externally facing server and web deployment. http://p.sf.net/sfu/businessobjects ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
[Savonet-users] Liquidsoap 0.9.1 is out !
Dear all, The release 0.9.1 of liquidsoap is now available [1] ! We have received in the recent weeks a bug report about playlist reloading, and while investigating on it, we discovered an issue is the code involved to fill request-based sources, such as request.dynamic, request.queue/equeue and playlist. We believed this issue was important enough to trigger a bugfix release, so we started preparing a new release incorporating the bugfixes we already had. Along this path, we also included several features that we believed were stable enough to be added. In particular, we have also backported the changes on request-based sources that allow to take into account the estimated remaining time when feeding the queues. This allows a request-based source to prepare titles only when the current one is about to end. For the 0.9.1 release, the old behaviour is still the default, but the next stable release will switch to the new behaviour. If you want to test the new behaviour, you can set the following options on request-based sources in 0.9.1: conservative = true Other important changes such as the switch to ocaml-cry, our custom implementation of the shout library, and the rewrite of external encoders will have to be tested more before being released. These two features will allow liquidsoap to natively support AAC+ codec when sending to icecast, using the external aacplusenc binary encoder. The full list of changes is given in the following changelog: 0.9.1 (18-06-2009) Bugs fixed: - Fixed request task not ending properly for request-driven sources (playlist, request.queue, request.equeue). Fixes a problem reported when reloading an empty playlist multiple times. (#269) - Fixed math.h usage in rgb_c.c. - Fixed append operator. (#284) - Fixed OSS compilation for non-linux systems. - Disconnect idle harbor sources after timeout has expired. Thanks to Roman Savrulin for reporting and fixing ! - Taglib metadata resolver is only used on files decoded by the MP3 decoder. New: - Get a node's striping status when stripping blank with strip_blank (#260). - on_connect function for input.harbor now receives the list of headers given by the connected source (#266). - Added on_end operator, to execute a handler when a track ends. - Added estimated remaining time in the queue length for request-driven sources (request.{equeue,queue}, playlist). This allows these sources to prepare less files in advance. In particular, primary queue may only contain the file currently played. Default behaviour has been set to the old behaviour, and a conservative option has been added to switch to the new behaviour. New behavivour will be the default for the next release. fixes #169, references #146 We will update our custom stable packages very soon, as well as the official debian ubuntu packages. We also hope this release will be rock stable and perfect for production. Of course, if you encounter any issue when running this release, please report it on our trac: http://savonet.rastageeks.org Or on IRC, or to this mailling list (but preferably to the trac system..). Cheers, Romain [1]: https://sourceforge.net/project/showfiles.php?group_id=89802package_id=150493release_id=690804 -- Are you an open source citizen? Join us for the Open Source Bridge conference! Portland, OR, June 17-19. Two days of sessions, one day of unconference: $250. Need another reason to go? 24-hour hacker lounge. Register today! http://ad.doubleclick.net/clk;215844324;13503038;v?http://opensourcebridge.org ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] Liquidsoap 0.9.1 is out !
Le lundi 22 juin 2009 17:36:59, David Baelde a écrit : On Mon, Jun 22, 2009 at 4:57 PM, Romain Beauxisto...@rastageeks.org wrote: For the 0.9.1 release, the old behaviour is still the default, but the next stable release will switch to the new behaviour. If you want to test the new behaviour, you can set the following options on request-based sources in 0.9.1: conservative = true I believe you meant if you want to test the new behavior, set conservative=false. Indeed :) Romain -- Are you an open source citizen? Join us for the Open Source Bridge conference! Portland, OR, June 17-19. Two days of sessions, one day of unconference: $250. Need another reason to go? 24-hour hacker lounge. Register today! http://ad.doubleclick.net/clk;215844324;13503038;v?http://opensourcebridge.org ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] i have some question about no available rid
Hi ! Le lundi 22 juin 2009 19:27:57, kosnickx a écrit : i have some liquidsoap script running for my icecast server but every time i run this script i get a no available rid kind of list once i asked in your #savonet channel and someone said this can be a problem this guy also mentioned there is a way to increase this number but i haven't figured out yet could someone give some help about it? Indeed, liquidsoap has a limited number of request in use. The current limit is registered into the request.max_id configuration key. Its current value is 50. You can override this value by adding to your script: set(request.max_id,100) However, we often assume that the current value is correct and that if you reach this limit there is probably something going wrong, either in liquidsoap or in your script. Hence, could you also show us your script, and tell us which version of liquidsoap you are using ? Thanks ! Romain -- Are you an open source citizen? Join us for the Open Source Bridge conference! Portland, OR, June 17-19. Two days of sessions, one day of unconference: $250. Need another reason to go? 24-hour hacker lounge. Register today! http://ad.doubleclick.net/clk;215844324;13503038;v?http://opensourcebridge.org ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] using liquidsoap and giss.tv streaming, catchups and freezings
Le jeudi 25 juin 2009 00:51:19, Luciano A. Ferrer a écrit : here: http://pastebin.ca/1473375 I have closed everything, 256kb upload all for liquidsoap (256/8 real 32kb... liquidsoap used something like 14-15kb upload) no catchups at all... but at 19:17:44 it just freezed... I had to kill it... I doesn't seem like a freeze. Apparently it switches to safe_blank, which is the mksafe fallback I believe. Could you send a similar bug with more verbosity: set(log.level,5) Also, you can try to turn the conservative parameter to false for all sources using playlist or request.{dynamic,queue,queue} and see if it helps. Romain -- ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] fail with request.dynamic
On Tue, 30 Jun 2009 17:16:45 +0200, Solvik Blum sol...@oxyradio.net wrote: Hi, Hi ! I would like to use an external application to manage the music which is played. So I though to use request.dynamic. My script has only that: pls = request.dynamic(id=scheduler, fun () - request(get_process_output(/home/oxyradio/liquidsoap/test/oxycast.php))) But it doesn't play anything and logs say: 2009/06/30 17:13:23 [scheduler:5] Queue is empty ! 2009/06/30 17:13:23 [scheduler:5] Failed to prepare track: no file 2009/06/30 17:13:23 [scheduler:5] Queue is empty ! 2009/06/30 17:13:23 [scheduler:5] Failed to prepare track: no file 2009/06/30 17:13:23 [scheduler:5] Queue is empty ! 2009/06/30 17:13:23 [scheduler:5] Failed to prepare track: no file 2009/06/30 17:13:23 [scheduler:5] Queue is empty ! 2009/06/30 17:13:23 [scheduler:5] Failed to prepare track: no file 2009/06/30 17:13:23 [scheduler:5] Queue is empty ! 2009/06/30 17:13:23 [scheduler:5] Failed to prepare track: no file The script is executable, and when I execute it, i get the URI of a file like: /home/oxyradio/musique/rock/Andy Blurry - Square Fate.mp3 Any idea ? You should use list.hd(get_process_lines()), get_process_output will have the trailing \n at the end. For debugging purpose, you can also print the retrieved URI before sending the request: def process () = s = list.hd(get_process_lines(/home/oxyradio/liquidsoap/test/oxycast.php)) print(\n\n\nGot: #{s}\n\n\n) request.create(s) end Romain -- If you are the big three, We are the small axe... -- ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] Link error on web site
Le vendredi 03 juillet 2009 17:34:05, Jean-Francois Mauguit a écrit : Hello, Hi ! A small error on the web site http://savonet.sourceforge.net/doc-0.9.1/settings.html is not working (404) but http://savonet.sourceforge.net/doc-0.9.0/settings.html is working :-) Thanks, this is fixed now. Romain -- ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] Liquidsoap asleep :-)
Hi ! Le jeudi 02 juillet 2009 19:32:15, Jean-Francois Mauguit a écrit : Is it possible it is related to ntpdate operation. All the servers were out of sync, so I made ntpdate on all the servers which were all 7000+ seconds later than correct time. Is it possible the timeout (today) and the too much latency were due to this synchro ? Yes, that is clearly the cause of the issue. Liquidsoap needs a time reference for checking that it is not late with respect to real time. Currently, this reference is the local time on the machine, which means that when changing it, you create an artificial delay for liquidsoap. We have discussed other implementations, but so far we believe that a server that goes out of sync with its local time is definitely a bad thing, since it will also mess with the other software in the streaming chain. Hence, it should be better to run regular ntpdate on the server. A small delay is ok with liquidsoap in this case. Romain -- ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] Log lines meaning
Le vendredi 03 juillet 2009 15:58:40, Jean-Francois Mauguit a écrit : Hello, Hi ! Does anyone knows what mean : 2009/07/03 08:44:40 [1150:4] Remaining: 176688, queued: 0, adding: 1323000 (RID 7) 2009/07/03 08:44:40 [generic queue #1:4] There are 0 ready tasks. 2009/07/03 08:44:40 [generic queue #1:4] Enter select at 1246610680.500597, timeout 0.00 (2/0/0). 2009/07/03 08:44:40 [generic queue #1:4] Left select at 1246610680.500625 (2/0/0). 2009/07/03 08:44:40 [generic queue #1:4] Ther Yes, these are the logs from the internal scheduler. These logs are not printed by default, so you should not see them unless you've set the scheduler.log option to true. Romain -- ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] Mix Problems
Le vendredi 03 juillet 2009 18:05:06, Jean-Francois Mauguit a écrit : Hello, Hi ! As you know we have some problems with mix. On some radios, everything is perfect, on some other not. What we have found is that the problem occurs often when short songs are played. For example, on radios with song - jingle - song - jingle - ... there is almost no mix. So I presumed I made something wrong in the liq :-) Here is our crossfade definition def our_crossfade(~start_next,~fade_in,~fade_out,s) s = fade.in(duration=fade_in,s) s = fade.out(duration=fade_out,s) fader = fun (a,b) - add(normalize=false,[b,a]) cross(duration=start_next,minimum = -1.0,fader, s) end input2=our_crossfade(start_next=6.0,fade_in=3.0,fade_out=3.0, input) Value for start_next, fade_in and fade_out comes from the annotate and are right. One other question concerning the same problem. What happen if we have 3 files playing at the same time ? File 1 start_next = 120, fade_out 120 File 2 (duration = 140), start_next = 50, fade out = 50 File 3 fade_in = 50 So 120 s before the end of file 1 we start playing file 2 and 90 seconds later we start playing file 3 but file 1 is not yet ended. There can indeed be some issues with the remaining time, in particular since this is an estimated value. However, the crossfade have a conservative option. Using this option, the data needed for the crossfade is buffered in advance at the beginning of each track. Did you try with this option ? Romain -- ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] fail with request.dynamic
Le lundi 06 juillet 2009 14:12:36, Solvik Blum a écrit : David Baelde wrote: Also, I'm thinking of this bug where something failed (froze) only in daemon mode... My script works without deamon mode. Is there any way to use it with the daemon mode ? :/ Interesting.. We already have a minimal script for this issue (#283). We should really try to fix it soon.. Romain -- ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] Mix Problems
Le mardi 07 juillet 2009 10:36:53, Jean-Francois Mauguit a écrit : Hello, Hi ! Here is my new crossfade def our_crossfade(~start_next,~fade_in,~fade_out,s) s = fade.in(duration=fade_in,s) s = fade.out(duration=fade_out,s) fader = fun (a,b) - add(normalize=false,[b,a]) cross(conservative=true,duration=start_next,minimum = -1.0,fader, s) end input2=our_crossfade(start_next=6.0,fade_in=3.0,fade_out=3.0, input) But it seems to still don't mix correctly. Ok. I would like to try to reproduce.. Could you try to send me in a private mail a sequence of songs that do not work ? I was wondering if my input2 = on_metadata(fun (meta) - system(curl http://something.radionomy.com/something.cfm?string= ^fluxid^,^quote(meta[album])),input2) before my icecast output could be the cause of some mix problems ? In fact this http request takes less than one second. Should I use set (scheduler.fast_queues,1) to avoid the problem ? Hmmm.. I don't think this can be the cause of the issue, but I could be wrong.. Romain -- Enter the BlackBerry Developer Challenge This is your chance to win up to $100,000 in prizes! For a limited time, vendors submitting new applications to BlackBerry App World(TM) will have the opportunity to enter the BlackBerry Developer Challenge. See full prize details at: http://p.sf.net/sfu/blackberry ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] Mix Problems
Le mardi 07 juillet 2009 12:38:12, vous avez écrit : Hello, I found the prob in our test environment, it was due to false mix points. After fixing that, the conservative=true works perfectly ! Thanks for the help, it solved an old problem here ;-) Very nice to read !! :) Romain -- Enter the BlackBerry Developer Challenge This is your chance to win up to $100,000 in prizes! For a limited time, vendors submitting new applications to BlackBerry App World(TM) will have the opportunity to enter the BlackBerry Developer Challenge. See full prize details at: http://p.sf.net/sfu/blackberry ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] periodic metadata rewriting
Le mercredi 08 juillet 2009 19:12:59, Gergely CZUCZY a écrit : Hello, Hi ! I'm back to this issue, now I'm facing the problem, I can't really get the stream I should be rewriting. Now I've got this piece of code: I think you're doing it the wrong way.. --- here --- -- function starts here def nextsong_cd(m) = # title=m[title] artist=m[artist] album=m[album] def insert_rnd(m1) = rnd=random.float(min=0.0, max=10.0) [(title, string_of(rnd)), (artist, string_of(rnd)), (album, string_of(rnd))] end cdradio = map_metadata(insert_rnd ,cdradio) system(/usr/local/bin/lstest.sh ^artist^!^album^!^title) end -- function ends here cdmdradio = on_track(nextsong_cd, cdradio) --- here --- Now, let's look at the the type of nextsong_cd: (string*string) list - unit This means that this function takes the metadata and does not return anything. In other words, this is a dead end function: it does whatever it wants and _voila_. However, you write, in the content of the function: cdradio = map_metadata(insert_rnd ,cdradio) When the function is executed, this line creates a source with random metadata. However, this source is not used anywhere after, so it is just cleared away when the function has finished.. The correct way would be to apply both function on the same source, but in the right order, of course :) This gives: --- here --- # This functions records the passed metadata def nextsong_cd(m) = # Get the variables title=m[title] artist=m[artist] album=m[album] # Call the script system(/usr/local/bin/lstest.sh ^artist^!^album^!^title) end # We call the above function on each metadata cdradio = on_track(nextsong_cd, cdradio) # This function replaces all metadata with random values. def insert_rnd(_) = rnd=random.float(min=0.0, max=10.0) [(title, string_of(rnd)), (artist, string_of(rnd)), (album, string_of(rnd))] end # Apply this function, set update to false to discard remaining entries cdradio = map_metadata(update=false, insert_rnd ,cdradio) --- here --- Now, the problem that you will have is about after a few frames put back the original metadata.. I don't have a magic solution for that. You could combine the use of insert_metadata and add_timeout. When receiving the metadata, in the nextsong_cd function, you could use add_timeout to rewrite the correct balues back after some time. However, I don't know what's the good some time.. Romain -- Enter the BlackBerry Developer Challenge This is your chance to win up to $100,000 in prizes! For a limited time, vendors submitting new applications to BlackBerry App World(TM) will have the opportunity to enter the BlackBerry Developer Challenge. See full prize details at: http://p.sf.net/sfu/Challenge ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] input.harbor
Le lundi 13 juillet 2009 10:27:31, Jean-Francois Mauguit a écrit : Hello, Hi ! Just a quick question. How to set up input.harbor to play the incoming stream when receiving the first bits without waiting the buffer is filled in ? Appart from setting the buffer to a very low value, I don't konw any other mean to acheive this. However, setting to a very low value should do the trick. Romain -- Enter the BlackBerry Developer Challenge This is your chance to win up to $100,000 in prizes! For a limited time, vendors submitting new applications to BlackBerry App World(TM) will have the opportunity to enter the BlackBerry Developer Challenge. See full prize details at: http://p.sf.net/sfu/Challenge ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
[Savonet-users] Spam on trac..
Hi all ! The savonet trac website is currently being spamed. Apparently the script genius are now able to register new accounts and started creating spam pages on the wiki. I have temporarily desactivated wiki pages edition and creation for any user except administrators. I also removed susprious accounts. I hope I did not remove any legitimate account. We will try to fix this soon. The trac system, however, should continue to work smoothly. Registered users are still able to submit and modify tickets. Let's hope they don't start to spam that too... Romain -- Enter the BlackBerry Developer Challenge This is your chance to win up to $100,000 in prizes! For a limited time, vendors submitting new applications to BlackBerry App World(TM) will have the opportunity to enter the BlackBerry Developer Challenge. See full prize details at: http://p.sf.net/sfu/Challenge ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] Fedora RPM Building
Hi ! Le lundi 27 juillet 2009 22:29:12, Chris Everest a écrit : So i started looking into building a Fedora RPM of liquidsoap. Thanks for this work, this is a great news ! I keep finding myself compiling (yuk) and have even resorted to running virtual Ubuntu instances, to make the liquidsoap install less painful. So here's my question: 1.) Do I need to split out lame dependencies (et al non-free library dependencies) to have this RPM distributed by the liquidsoap project? Clearly no. The stable and daily build packages are built directly from the full set of dependencies without individual packages. The problem can be for external dependencies like ocaml-pcre if they are not packaged for Fedora. In any way, you can distribute a binary package of liquidsoap without the need to also package the external dependencies that we ship. 2.) Maybe Axel from atrpms would dist? Or rpm fusion. I don't know how those orgs operate. I don't know. For reaching the most users as possible, it is always better to distribute the packages there and not in the project's website. I don't know how these sites work, though. In particular, you'd probably have to also package the dependencies in this case. Romain -- Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day trial. Simplify your report design, integration and deployment - and focus on what you do best, core application coding. Discover what's new with Crystal Reports now. http://p.sf.net/sfu/bobj-july ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] Fw: Thread non-blocking queue #1 aborts with exception Unix.Unix_error(56, write, )!
Hi ! Sorry for the delay. We're all on vacations at the moment, so we're not very responsive... Le lundi 03 août 2009 00:33:34, polemon a écrit : This happend twice today again. If no one can tell me what to do, or help me get to the problem, I'll be forced to dump Liquidsoap for some rudimentary solution with shoutcasts, streamtranscoderv3 etc, which puts me back about a year and a half. Please help, as this is really important for me. Here's the .liq script, that crashes with the error I described in my earlier mail: http://pastie.org/569051 Ok. As usual, this needs further investigations. In the case of exceptions, we should need the whole exception trace, as described in the corresponding section there: http://savonet.rastageeks.org/wiki/Debugging Also, it is more easy if you can test patches by recompiling liquidsoap with them. For instance, I identified a write call that can be the cause of the issue. I have attached a patch about it. You can apply it by doing, from the liquidsoap/src directory: patch -p0 /path/to/possible_fix.patch Romain Index: tools/harbor.ml === --- tools/harbor.ml (révision 6691) +++ tools/harbor.ml (copie de travail) @@ -151,7 +151,13 @@ ) let write_answer ?(keep=false) c a = - ignore (Unix.write c a 0 (String.length a)) ; + begin + try +ignore (Unix.write c a 0 (String.length a)) ; + with + | Unix.Unix_error(_,_,_) - +log#f 1 Error while writing answer.. + end ; if not keep then try Unix.shutdown c Unix.SHUTDOWN_ALL ; -- Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day trial. Simplify your report design, integration and deployment - and focus on what you do best, core application coding. Discover what's new with Crystal Reports now. http://p.sf.net/sfu/bobj-july___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] AAC+ on Icecast vs Centova
Hi ! Thanks for your nice comments on liquidsoap ! Le jeudi 30 juillet 2009 23:42:30, Artur Skupienski - DJ a écrit : I only interested: transcode my current stream 128kbps to AAC+ (Icecast) using liquidsoap, without any other features, like plalists, crossfades etc. (Sorry, quick answer due to lack of time..) A very basic way to acheive that is: 88 # The source s = input.http(http://server:8000/mount;) # output output.icecast.aacplusenc(s,mount=source.aac,password=XXX,host=server) 88 This needs liquidsoap SVN for a proper support of aac+, and also the aacplusenc binary, available as a package in debian-multimedia repositories for instance... Please ask for more details if needed :) Cheers, Romain -- Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day trial. Simplify your report design, integration and deployment - and focus on what you do best, core application coding. Discover what's new with Crystal Reports now. http://p.sf.net/sfu/bobj-july ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] Unclean external Encoder restart/shutdown
Le dimanche 2 août 2009 18:38:36, Romeo a écrit : Hi, Savonet Team! Hi ! (Sorry late answer due to vacations..) Sometimes i have the following issues: aacplusenc restarts and shuts down uncleanly in the logs i see the following: 2009/08/02 23:42:34 [threads:3] Thread harbor source feeding exited (1 remaining). 2009/08/02 23:42:37 [source:4] CrossfadeAddSeqBlank gets down 2009/08/02 23:42:37 [CrossfadeAddSeqBlank:4] Activations changed: static=[], dynamic=[]. 2009/08/03 00:21:26 [nw32a:3] Restarting encoder after delay (3600s) 2009/08/03 00:21:26 [stderr:3] [0%] [-1%] ... down to some value, someimes a very long sequence. [-236%] 2009/08/03 00:21:26 [stderr:3] 2009/08/03 00:21:26 [stderr:3] encoding finished 2009/08/03 00:21:26 [nw32a:4] Reading task reached end of data 2009/08/03 00:21:26 [nw32a:2] Creating external encoder.. 2009/08/03 00:21:26 [stderr:3] 2009/08/03 00:21:26 [stderr:3] * 2009/08/03 00:21:26 [stderr:3] * Enhanced aacPlus Encoder 2009/08/03 00:21:26 [stderr:3] * Build May 18 2009, 16:22:38 2009/08/03 00:21:26 [stderr:3] * Matteo Croce rootki...@yahoo.it 2009/08/03 00:21:26 [stderr:3] * 2009/08/03 00:21:26 [stderr:3] 2009/08/03 00:21:26 [stderr:3] input file -: 2009/08/03 00:21:26 [stderr:3] sr = 44100, nc = 2 2009/08/03 00:21:26 [stderr:3] 2009/08/03 00:21:26 [stderr:3] output file -: 2009/08/03 00:21:26 [stderr:3] br = 32000 sr-OUT = 44100 nc-OUT = 2 2009/08/03 00:21:26 [stderr:3] everything just works fine after that... Well, currently the external encoders are setup so that they restart after some time. This is because most of them are meant to use with finite streams, while we use them for infinite ones. This can be turned off by using the restart_encoder_delay, in the SVN version. Also, a restart should not be a big deal, in particular in the case of headerless formats such as mpeg ones, in particular mp3 and AAC(+). Is this restart a particular issue for you ? Romain -- Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day trial. Simplify your report design, integration and deployment - and focus on what you do best, core application coding. Discover what's new with Crystal Reports now. http://p.sf.net/sfu/bobj-july ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] Get current song
Hi all ! The two solutions mentioned by Bede are valid. I even believe we use the first one for dolebrai. Additionally, you can also use the on_metadata operator. This operator will call a function that you specifiy, which can be in particular a call to an external script, when it see new metadata. That way, you can register the latest metada in a database, for instance, and use it on the other computer in order to retreive the current song. Romain Le lundi 3 août 2009 09:31:05, bede a écrit : Pascal Vanbel - Radio Universitaire Namuroise - 107.1MHz FM wrote: Hello, I wonder how to get current song from another computer ? In fact our web server is not our streaming server. I got the title on my stream server (icecast2) but I want to get it on my web server also in a nicer way than play with my icecast page :-) Thx for any help 1. (i see you don't want this) a simple way is: - wget http://IP:PORT/status.xsl(get icecast status page) - parse icecast status page and extract field Current Song: - if this script is on icecast server, try to upload information of current song to web server (via ftp or something) - if this script is run from web server, write down in a file or something that info. repeat every minute/ two minutes, whatever 2. on web server start a mplayer instance (with something like -ao null) and intercept messages : ICY Info: StreamTitle='cuba (phunk investigation miramar mix) (albino alligator)'; ... and do whatever you need with info. Daniel --- --- Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day trial. Simplify your report design, integration and deployment - and focus on what you do best, core application coding. Discover what's new with Crystal Reports now. http://p.sf.net/sfu/bobj-july ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users -- Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day trial. Simplify your report design, integration and deployment - and focus on what you do best, core application coding. Discover what's new with Crystal Reports now. http://p.sf.net/sfu/bobj-july ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] amd64 deb packages?
Le mardi 4 août 2009 07:09:28, Oliver Oli a écrit : hello! Hi ! i reinstalled my machine to 64bit ubuntu and then realized that there are no liquidsoap amd64 packages in the rastageeks repositories. deb ftp://savonet.rastageeks.org ./ deb http://www.rastageeks.org/downloads/liquidsoap/ ./ are there any source packages available for building a amd64 deb? Unfortunately there is no package for amd64 at the moment. It could be done later, but I didn't have time to do it recently.. Romain -- Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day trial. Simplify your report design, integration and deployment - and focus on what you do best, core application coding. Discover what's new with Crystal Reports now. http://p.sf.net/sfu/bobj-july ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] Input harbor buffer
Le mercredi 12 août 2009 07:31:39, Jean-Francois Mauguit a écrit : Hello, Hi Jef ! Here is my problem. I would like to allow our user to use input.harbor on their webradio to allow them doing live radio. But I also have to insert some ads and I would like to announce to the radio editor when the ad will be inserted in his stream (using a countdown). But due to the buffer between this editor and the liquidsoap, I never know when to warn him. How could I know the duration of the buffer ? Is it an easy way doing that ? Hmmm, good call. Recently we have added something initially meant for debugging. This is an option that, when turned on, outputs the size of the buffer to a file. See: * logfile :: string (default ) Log buffer status to file, for debugging purpose. Disabled if empty. Perhaps you can use this to know the length of the buffer.. Romain -- Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day trial. Simplify your report design, integration and deployment - and focus on what you do best, core application coding. Discover what's new with Crystal Reports now. http://p.sf.net/sfu/bobj-july ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] Hallo Romain - how can I properly build ocaml-xml-light?
Le jeudi 13 août 2009 09:48:10, vous avez écrit : Hallo Romain, how are you? :) Hi ! I got a problem with our Liquidsoup, actually with building... I installed all libraries what we need to run liquidsoup except ocaml-xml-light. Try this way- I installed but it's something wrong, but I really dont know. Yes, that's a well-known issue. The problem is that we had chosed ocaml-findlib to detect xml-light. However, we realized later that in fact, the support for ocaml-findlib in xml-light was a debian-specific patch.. Unfortunately also, xml-light is no longer maintained so there will be no release adding that support.. For the current developpement code, we have switched to xmlm which has a ocaml-findlib support and is maintained at the moment. However, for building stable liquidsoap releases, it should be needed to add this manually. I remember I had send some patch in the past about this in the mailing list. See: http://www.mail-archive.com/savonet-users@lists.sourceforge.net/msg00871.html Romain -- Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day trial. Simplify your report design, integration and deployment - and focus on what you do best, core application coding. Discover what's new with Crystal Reports now. http://p.sf.net/sfu/bobj-july ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] AAC+
Le mercredi 19 août 2009 03:00:11, vous avez écrit : HI Guys Hi Artur ! I'm trying to make an alternative stream in AAC+, the point is I've got 128kbps stream from Icecast now. How can I encode that stream into another one in aac+? Is it any sense in that commands below? The address you used is for bug reports only. The correct mailing for support is savonet-us...@lists.sf.net. From your last message, I understood that you were still executing your script with liquidsoap 0.9.1 and not liquidsoap SVN. Can you check the output of: liquidsoap --version If it does not mention the SVN, you should find out were the liquidsoap from SVN was installed. Cheers, Romain -- Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day trial. Simplify your report design, integration and deployment - and focus on what you do best, core application coding. Discover what's new with Crystal Reports now. http://p.sf.net/sfu/bobj-july ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] Liquidsoap svn - Thread 3 killed on uncaught exception Cry.Error(1)
Le jeudi 20 août 2009 16:46:58, Artur Skupienski - DJ a écrit : HI everyone, this is my output: Artur, please register to the mailing list. Here's my answer from this morning: This message is not very usefull. However, since you activated a log file, you should have a more verbose logging in that file. In any case, you should also enable console logging while you're still testing on the console. Just add: set(log.stdout,true) to your script. About your issue, it means liquidsoap could not connect to the host, so most probably you did a mistake in the settings for the icecast output. Cheers, Romain -- Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day trial. Simplify your report design, integration and deployment - and focus on what you do best, core application coding. Discover what's new with Crystal Reports now. http://p.sf.net/sfu/bobj-july ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] Input harbor buffer
Hi ! Le mercredi 12 août 2009 07:31:39, Jean-Francois Mauguit a écrit : I would like to allow our user to use input.harbor on their webradio to allow them doing live radio. But I also have to insert some ads and I would like to announce to the radio editor when the ad will be inserted in his stream (using a countdown). But due to the buffer between this editor and the liquidsoap, I never know when to warn him. How could I know the duration of the buffer ? Is it an easy way doing that ? I have just added a new telnet command for input.http and input.harbor: buffer_length. This commands returns the current buffer's length in seconds, up to two digits of precision. I believe this should be sufficient for your need. You should also be able to backport the patch to 0.9.1. It is attached. Romain Index: liquidsoap/src/sources/harbor_input.ml === --- liquidsoap/src/sources/harbor_input.ml (révision 6725) +++ liquidsoap/src/sources/harbor_input.ml (révision 6726) @@ -160,7 +160,11 @@ if relaying then source client connected else - no source client connected) + no source client connected) ; +Server.add ~ns buffer_length ~usage:buffer_length + ~descr:Get the buffer's length, in seconds. + (fun _ - Printf.sprintf %.2f + (Fmt.seconds_of_samples self#length)) method private sleep = if relaying then self#disconnect Index: liquidsoap/src/sources/http_source.ml === --- liquidsoap/src/sources/http_source.ml (révision 6725) +++ liquidsoap/src/sources/http_source.ml (révision 6726) @@ -474,8 +474,13 @@ Server.add ~ns start ~usage:start ~descr:Start the source, if needed. (fun _ - relaying - true ; Done) ; Server.add ~ns stop ~usage:stop ~descr:Stop the source if streaming. - (fun _ - relaying - false ; Done) + (fun _ - relaying - false ; Done) ; +Server.add ~ns buffer_length ~usage:buffer_length + ~descr:Get the buffer's length, in seconds. + (fun _ - Printf.sprintf %.2f + (Fmt.seconds_of_samples self#length)) + method sleep = poll_should_stop - true end -- Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day trial. Simplify your report design, integration and deployment - and focus on what you do best, core application coding. Discover what's new with Crystal Reports now. http://p.sf.net/sfu/bobj-july___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] Thread root aborts with exception Cry.Error(1)!
Le vendredi 21 août 2009 18:17:39, David Baelde a écrit : Hi, Hi all ! The first thing that comes to my mind is: did you check the maximum number of mounts in your icecast.xml? Good call ! The second thing is that you're using AAC, which is requires a patched icecast iirc. You should try to start with an MP3 or OGG mount. If AAC turns out to be the problem, then Romain should be able to help or point you to the relevant doc. I don't think you need to modify icecast for streaming AAC. Romain -- Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day trial. Simplify your report design, integration and deployment - and focus on what you do best, core application coding. Discover what's new with Crystal Reports now. http://p.sf.net/sfu/bobj-july ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] Playing blank
Hi Jef ! Le jeudi 3 septembre 2009 10:19:08, Jean-Francois Mauguit a écrit : As you have a huge load, I can understand that something happened that make liquidsoap switched to blank. But i don't see why it didn't come back. Indeed. In order to understand the issue better it would be nice if we can see the script also. If you do not want to disclose it here, you can sent it as a private message. Also, what version of liquidsoap are you using ? Romain -- Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day trial. Simplify your report design, integration and deployment - and focus on what you do best, core application coding. Discover what's new with Crystal Reports now. http://p.sf.net/sfu/bobj-july ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] aac+ vs quality of sound
Le mardi 1 septembre 2009 19:18:30, Artur Skupienski - DJ a écrit : Hi Guys Hi ! Im using aac+ on liquidsoap Bitrate on aac+ is variable, not static, is it right or it is because something wrong.. There a static parameter, but it could mean an average bitrate. also I got a question about quality, how can I improve quality of sound aac+, is it passible? I tested orban aac+ before, is it passible to get similar quality of sound as on orban aac+? Have you tried raising the bitrate in aacplusenc ? Also, you may use different software for encoding AAC+, all you need is the capability to read from stdin and output to stdout. However, I don't know any other software for linux that is capable of doing that. The nero AAC+ encoder, which is very good, outputs data in mp4 format which is not streamable. I have, however, contacted one of the devs to request the possibility to output in a compatible format and he said thay can't do it for the next release but will surely consider it for the one after. Romain -- Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day trial. Simplify your report design, integration and deployment - and focus on what you do best, core application coding. Discover what's new with Crystal Reports now. http://p.sf.net/sfu/bobj-july ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] refresh a playlist only if changed
Le mercredi 2 septembre 2009 11:11:04, Romaric Petion a écrit : Hi, Hi ! I would like to use a playlist (from an URL) with randomize, reloaded every minutes. So I use: playlist(reload=60, http://myserver/playlist.m3u;) But I would like liquidsoap refresh it's internal playlist only if my remote playlist have changed (to avoid that we never played some files of the playlist), and not refresh at each download. Is it possible? Unfortunately I don't think this is possible yet. This would probably be possible by scripting your own playlist. However, this could be a bit more tricky, so let me know if you're interested :) Romain -- Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day trial. Simplify your report design, integration and deployment - and focus on what you do best, core application coding. Discover what's new with Crystal Reports now. http://p.sf.net/sfu/bobj-july ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] Playing blank
Le jeudi 3 septembre 2009 11:34:28, Jean-Francois Mauguit a écrit : Hello, Hi ! Here is my script. I'm using 0.9.1. Ok, the script is quite small, so that should be suitable for a proper debugging. Before proposing tests and patches, I would like to know: did you use this script with any previous version of liquidsoap ? If yes, did you experience this issue with any previous version ? Thanks for your answers ! Romain -- Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day trial. Simplify your report design, integration and deployment - and focus on what you do best, core application coding. Discover what's new with Crystal Reports now. http://p.sf.net/sfu/bobj-july ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] Playing blank
Le vendredi 4 septembre 2009 02:28:05, vous avez écrit : Yes I used it in the previous version except the metadata change function. But in this time we stopped the radio every days (at 5 AM). Now the radios are playing for days. Moreover we were in a beta stage at this time (with some other problems due to our infra) so I'm not able to say if this specific problem was already present. Ok, thanks. I am considering either a bug in the scheduler, or a bug in the requests system. What you can do to check this is to allow a telnet server for each instance. A simple (and probably a bit hacky) way to do that could be to set the telnet port to the pid of the running liquidsoap: set(server.telnet.port,getpid()) set(server.telnet,true)' (Probably better at the end of the script) Otherwise, you can also pass the port as a parameter as you do for the other parameters. Then, as soon as an instance goes to blank, it would be interesting to try to connect to its telnet and issue some dummy commands. Simply connecting to telnet, if sucessful, shoud indicate that the scheduler is not the issue and then we could concentrate on the request system. Later on, if you need some work-around, in case the issue is not the scheduler, we should be able to provide you with a patch that allows to manually restart the failed queue. Romain -- Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day trial. Simplify your report design, integration and deployment - and focus on what you do best, core application coding. Discover what's new with Crystal Reports now. http://p.sf.net/sfu/bobj-july ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] Liquidsoap daemon trouble
Le vendredi 4 septembre 2009 08:24:10, Mathijs Vos a écrit : It appeared liquidsoap had no writing permissions in the log directory when running in deamon mode. Hence the empty logfile. Now everything works fine. Cool, nice to read ! Have fun ! Romain -- Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day trial. Simplify your report design, integration and deployment - and focus on what you do best, core application coding. Discover what's new with Crystal Reports now. http://p.sf.net/sfu/bobj-july ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] [Savonet] #303: Large tracks take long to load
Hi ! Le mercredi 9 septembre 2009 17:48:58, vous avez écrit : What I was hoping to see: Start your liquidsoap with a playlist designed to fit x # of hours. Put in a variable assuming that the first track is the track I want to play next (obviously common sense in every situation of listing things in a fresh manner of speaking), when the playlist has reloaded (and detected as a NEW playlist ie: ANYTHING changed... Size, Shape, Order, whatever I don't think it matters) ie: changes made to the playlist, but while starting at the top of the playlist after the track that is playing has finished. This would allow us to create day long playlists, and then updating the new playlist in the evening, rather than do substring cutting, and searching through a playlist file to see what has been playing. Thanks! Sorry if I sound like I'm complaining, this stuff is kind of difficult if you just learned linux a week ago :) No problem, you're much welcome ! However, please try to use the mail adress dedicated to user's support, which is: savonet-users@lists.sourceforge.net About your issue, my guess is that your needs will not fit the playlist design. The playlist in liquidsoap is really designed to be something flexible, where you put a bunch of songs to be played. If you need a more precise control over what you play, the best would be to have liquidsoap call an external script. Such a source can be created using the request.dynamic operator. Using this operator, each time liquidsoap needs to queue a new song, it will call any script that you provide it and use the returned value. That way, you can work out all your constraints outside of liquidsoap, using your prefered language etc.. All you need to do it to code a script that returns the new song to queue. A usage example would be: # Request function def request () = request.create(audio=true, list.hd(get_process_lines(/path/to/script)) end # The dynamic source: s = request.dynamic(request) The first part of the code is a function that calls the script /path/to/script and creates a new request using the the first line of its output. The second part is a source that calls the function request in order to get its new songs. Please don't hesitate to ask for more details if you need ! Romain -- Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day trial. Simplify your report design, integration and deployment - and focus on what you do best, core application coding. Discover what's new with Crystal Reports now. http://p.sf.net/sfu/bobj-july ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] Liquid Soap
Le mardi 8 septembre 2009 12:54:08, jeffgcs at me.com a écrit : What are your future plans on continuing support for this program? We are still actively developping it. Currently, we do a lot of user support and bugfix. We plan on finishing the video support but this takes time since it is not an easy task. Also, does it support VOIP calls for use over the station for radio interviews? It can using the input.external operator. However, this needs a bit of work in the setup. Basically you need an external program that does the voip stuff and outputs the audio data to its standard output. We've had at least one user that was successful in doing this. The more general support for voip has been already started, but lacks some manpower since we don't personally use it and voip stuff can be rather complicated. Don't hesitate to ask more questions at: savonet-users@lists.sourceforge.net Romain -- Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day trial. Simplify your report design, integration and deployment - and focus on what you do best, core application coding. Discover what's new with Crystal Reports now. http://p.sf.net/sfu/bobj-july ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] [Savonet] #303: Large tracks take long to load
Le mercredi 9 septembre 2009 19:59:01, Nathan Huebner a écrit : Ok so I have put the dynamic request in, and it points to a file.. ( a script )... Hmm.. This file has to be an executable script.. But I put in the script the MP3 to play, and this was spammed so much that it kicked me out of SSH lol: /home/nocturnal/track.txt: line 1: /home/nocturnal/tunes/_TODAY/10.today.mp3: cannot execute binary file Your site examples are great, but none actually show the script I use, and how It should respond to my LIQ file to be a valid response. What do I name my script file? What do I put in it? Do I need to do a Single, and echo back something? Can you help. Well the script should be some sort of program of your own, all liquidsoap requires is that it writes to its standard output the name of the next song to queue. Then you can put all the details you need on this script. The dummy example to start with could be: 8--8 #/bin/sh # Dummy script that always returns the same song... echo /home/nocturnal/tunes/_TODAY/10.today.mp3 8--8 You save this content to a file, say /tmp/test.sh and then do: chmod +x /tmp/test.sh which will make it executable. Then on the previous code example I gave you, you replace /path/to/script by /tmp/test.sh. However, this is a stupid script, in order to have the scheduling you need you will need to write your custom script that returns exactly the song you want to play. The advantage of this method is that you are free to use whatever language you feel comfortable with, and you will not have to cope with the details about playlists in liquidsoap. Hope this helps.. Romain -- Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day trial. Simplify your report design, integration and deployment - and focus on what you do best, core application coding. Discover what's new with Crystal Reports now. http://p.sf.net/sfu/bobj-july ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] [Savonet] #303: Large tracks take long to load
Le mercredi 9 septembre 2009 20:54:06, vous avez écrit : The latest problem is that LiquidSoap automatically loads up the same file when I do dynamic requests. So In order for 1 song to play, and then the next correct song, liquidsoap will play each one 2 times. I tried echoing back 2 lines, but liquidsoap doesn’t error, it just... doesn’t do anything... Track.sh: (try # 1 success, infinitely repeats the track) echo /home/nocturnal/tunes/_TODAY/13.today.mp3 Track.sh (Doesn't error or anything, just doesn't stream -- mainly because I don’t have a fallback, because I don't want one (at least until I get everything running through this dynamic request system)) echo /home/nocturnal/tunes/_TODAY/13.today.mp3 echo /home/nocturnal/tunes/_TODAY/14.today.mp3 Heh.. The problem, I guess is that you have never written a script so far, have you ? :-) The problem that you will run into now is that you need to consider all that you want for your system. By that I mean write down exactly the specifications that you want for the songs to be played. Then, you will need to implement them, which means choose a language and write a program that finds the correct song according to the specifications. However, this should not be too difficult. I could try to help. Could you please try to write what exactly you want to do for selecting a new song. Try to answer as simply as possible to the question: Hey, I am liquidsoap. I need to queue a new song, which file should I add ? :-) Le mercredi 9 septembre 2009 20:57:15, vous avez écrit : Here's what our playlist metadata did... #playlist = rewrite_metadata( # [(artist,([Nocturnal.FM Main] ^$(artist))), #(title,($(title) ^[The best trance progressive] ^$(album) )), # (album,)],playlist) Basically, [Nocturnal.FM] Romain Beauxis - Liquidsoap Trance (Original Mix) [The best trance progressive] $(album) The same way we had our playlist setup... I'm sorry I don't know how to do any of this stuff :( Well, you can do exactly the same ! In the code you show, playlist is a variable, so it could be named anything else. For instance: s = request.dynamic(...) s = rewrite_metadata( [(artist,([Nocturnal.FM Main] ^ $(artist))), (title,($(title) ^ [The best trance progressive] ^ $(album) )), (album,)], s) Here I have replace playlist by s, but you could also use any variable name that you like.. Romain -- Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day trial. Simplify your report design, integration and deployment - and focus on what you do best, core application coding. Discover what's new with Crystal Reports now. http://p.sf.net/sfu/bobj-july ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] [Savonet] #303: Large tracks take long to load
Le mercredi 9 septembre 2009 21:32:15, vous avez écrit : Liquidsoap says, ok I'll load this, and Oh since I see this is the main fallback for receiving music, I'll go ahead and load it again! Now I have two of the same track ready to play (...).. I just need to know how to tell Liquidsoap what to load. I don't know SH programming, I'm actually a pure PHP programmer. Ok, please apologize for my previous assumption then... But it's a real mystery here what your software wants to receive, and how it should be received. It's been a guessing game. The thing is that liquidsoap wants to keep in advance a queue of some requests in order to make sure that it will always have something to play. Hence the two songs that you see on the initial startup. Provided you have liquidsoap 0.9.1, you can however, use the new behaviour which will allow only one song to be requested at once. What you need is to do: request.dynamic(conservative=false, length=5., (...) That way, liquidsoap will estimate the length of the current song and only query for a new one when there are 5 (estimated) seconds remaining. The reason for this being an estimation is because mp3 format, for instance, does not allow a reliable length computation, hence computing the total length needs the decoding of the whole song, which we want to avoid :) Once I can dynamically talk to liquidsoap using the request.create (without every request being a duplicate, and without liquidsoap needing a new fallback to facilitate it during this dynamic method), I'll add a fallback playlist later. Right now I'm focusing on how to have full control over liquidsoap using request.dynamic, so I can begin writing a scheduler in PHP. Ok. I hope that with the above settings, you should have the full control of the scheduling in liquidsoap. I wish you success in writing a scheduler in PHP :-) Romain -- Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day trial. Simplify your report design, integration and deployment - and focus on what you do best, core application coding. Discover what's new with Crystal Reports now. http://p.sf.net/sfu/bobj-july ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] prob. with automatically restarting
Le lundi 14 septembre 2009 18:05:36, Artur Skupienski - DJ a écrit : Hi Guys, thanks a lot for your help:) Hi Artur ! Liquidsoap makes fantastic passibilities! and you made a staff what we all need for, so thanks! Thanks ! I got some prob with this... I trying to keep continuing my stream as a relay but after 99sec I lost definitelly my streamming, I think it is because my little funny fault, maybe I forgot something... but please look at my code, output as well. Hmmm.. what do you mean exactly by losing your stream ? The listener gets disconnected ? Liquidsoap doesn't work ? ps I know I can change my restart_encoder_delay but how can I automatically restarted my aacplusenc? I don't really understand this. The delay is indeed for restarting the encoder.. By the way, if you put a negative delay, the encoder will not be restarted. However, I am not sure that aacplusenc is meant to run indefinitely, that is why it is restarted every hour by default (3600s). Any user feedback would be interesting on this point Romain -- Come build with us! The BlackBerryreg; Developer Conference in SF, CA is the only developer event you need to attend this year. Jumpstart your developing skills, take BlackBerry mobile applications to market and stay ahead of the curve. Join us from November 9#45;12, 2009. Register now#33; http://p.sf.net/sfu/devconf ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] Read error Unix.Unix_error(56, read, ) ???
Le lundi 21 septembre 2009 01:33:33, David Baelde a écrit : Romain, are you sure this is the same bug? I don't see duppy crashing in the logs. Yes, I'm 90% sure. This exactly the same conditions as for previous reports. We don't see explicitely duppy, but the Unix.read error raised in the non- blocking thread in the context of Harbor clearly indicates duppy and the Io API. Also, it's curious that the DJ was still streaming.. from liquidsoap's point of view, he was disconnected: unix error 56 is ECONNRESET. Yes. To me this bug seems to be trigered by strange unix network conditions. However, we shouldn't crash but catch the exception. Romain -- Come build with us! The BlackBerryreg; Developer Conference in SF, CA is the only developer event you need to attend this year. Jumpstart your developing skills, take BlackBerry mobile applications to market and stay ahead of the curve. Join us from November 9#45;12, 2009. Register now#33; http://p.sf.net/sfu/devconf ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] Metadata-based on/off switch for smart crossfading
Le dimanche 20 septembre 2009 10:30:07, David Baelde a écrit : Hi, Hi ! The smart_cross() operator takes a transition function of type (float, float, [(string*string)], [(string*string)], source, source)-source). This means that it is of the form fun (v1,v2,m1,m2,s1,s2) - ... where v1/v2 are the volumes before/after the track change, m1/m2 the metadata before/after the track change, and s1/s2 the source before/after the change. So, you can read the metadata attached to the next track using for example m2[cross]==no. Just to add more details. If you want an example of the use of a function for smart_cross, you can look for the definition of smart_crossfading in utils.liq. Now, if you want a metadata to prevent any transition, you could do: def smart_crossfade (~start_next=5.,~fade_in=3.,~fade_out=3., ~default=(fun (a,b) - sequence([a, b])), ~high=-15., ~medium=-32., ~margin=4., ~width=2.,~conservative=false,s) fade.out = fade.out(type=sin,duration=fade_out) fade.in = fade.in(type=sin,duration=fade_in) add = fun (a,b) - add(normalize=false,[b, a]) log = log(label=smart_crossfade) def transition(a,b,ma,mb,sa,sb) list.iter(fun(x)- log(level=4,Before: #{x}),ma) list.iter(fun(x)- log(level=4,After : #{x}),mb) if mb[cross]==no # # no transitions# then # sequence([a, b]) # elsif # If A and B are not too loud and close, fully cross-fade them. a = medium and b = medium and abs(a - b) = margin then log(Old = medium, new = medium and |old-new| = margin.) log(Old and new source are not too loud and close.) log(Transition: crossed, fade-in, fade-out.) add(fade.out(sa),fade.in(sb)) elsif # If B is significantly louder than A, only fade-out A. # We don't want to fade almost silent things, ask for medium. b = a + margin and a = medium and b = high then log(new = old + margin, old = medium and new = high.) log(New source is significantly louder than old one.) log(Transition: crossed, fade-out.) add(fade.out(sa),sb) elsif # Opposite as the previous one. a = b + margin and b = medium and a = high then log(old = new + margin, new = medium and old = high) log(Old source is significantly louder than new one.) log(Transition: crossed, fade-in.) add(sa,fade.in(sb)) elsif # Do not fade if it's already very low. b = a + margin and a = medium and b = high then log(new = old + margin, old = medium and new = high.) log(Do not fade if it's already very low.) log(Transition: crossed, no fade.) add(sa,sb) # What to do with a loud end and a quiet beginning ? # A good idea is to use a jingle to separate the two tracks, # but that's another story. else # Otherwise, A and B are just too loud to overlap nicely, # or the difference between them is too large and overlapping would # completely mask one of them. log(No transition: using default.) default(sa, sb) end end smart_cross(width=width, duration=start_next, conservative=conservative, transition,s) end Not tested by it should work... Romain -- Come build with us! The BlackBerryreg; Developer Conference in SF, CA is the only developer event you need to attend this year. Jumpstart your developing skills, take BlackBerry mobile applications to market and stay ahead of the curve. Join us from November 9#45;12, 2009. Register now#33; http://p.sf.net/sfu/devconf ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] What are the laws?
Hi all ! Le jeudi 24 septembre 2009 09:36:23, Gilles PIETRI a écrit : I've been reading for hours and I think Im more confused than ever. Does anyone have any experience with licensing? Anyone know if/how the laws apply to mixes and live broadcasts as opposed to singles playing? In France, no matter what you broadcast (remixes, bootlegs, live shows..), you have to get an agreement with several of the rightholders defenders.. That is the SACEM, SCPP, SCPF so on.. Even if you play unlicenced (or licenced but on other terms than theirs) music, there is some case you still have to pay a fee.. Which is rather irritating obviously.. And it's not cheap also ;) Hmmm. Do you also mean it for Creative Commons licensed music ? About the MP3 format, which was in the initial question, this depends. The basics of the license for using mp3 is the patents over the corresponding audio technologies. However, such patents are not filed worldwide but localy, one for the USA, one for Europe etc.. So if there is no patent in your country (say... Russia ?), then you don't have to pay a license. Furthermore, some countries, like the countries in European Union do not recognize software patent (to some extend), hence it is highly possible that such license fees would be illegal. (to be confirmed) In any way, one of the main purpose of the ogg codecs was precisely to have patent free technologies. So if you stream using one of the ogg codecs, say ogg/vorbis, you do not have to pay fees, and will never have. This fact, by the way, really makes me wonder why hardware manufacturers still push for patent-encumbered technologies, which is exactly like shooting its own foot where they could use patent-free technologies and save costs.. As for mixes or bootlegs, there are even artists who refuses them, in case you might alter how good their music sounds.. Hmmm... But I am not sure this is legal for the artist. So far, my understanding is that, in France, as soon as you pay the required fees you have the right to broadcast the artist's performance. This is probably linked to the legal requirement that an artist cannot cancel a publicaly exposed artistic thing. Most similar to the fact that they can't refuse a cover of their song, can they ? In particular, I remember that radio show on sunday on Skyrock when I was a teen that was playing bootleg lives for a couple of hours and was, I believe, totaly legal. Romain -- Come build with us! The BlackBerryreg; Developer Conference in SF, CA is the only developer event you need to attend this year. Jumpstart your developing skills, take BlackBerry mobile applications to market and stay ahead of the curve. Join us from November 9#45;12, 2009. Register now#33; http://p.sf.net/sfu/devconf ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] Preparing a bugfix release.
Hi Gabriel ! Le mercredi 23 septembre 2009 22:31:37, Gabriel Afana a écrit : I've been using liquidsoap pretty extensivly over the past several months. Its been working very well so far :-) However, here are some things Id like to see in a future release: Thanks for your encouragements ! 1) Better video support. I want to be able to broadcast video from DJs while they play live or from remote locations like clubs and parties. As it is right now, I will likely just use a 3rd party flash video streaming application but it will not be fully synced to the music. Idealy the best way is to do it all together in liquidsoap. Sure ! Video support is already an ongoing work. Current status is however half-baked and there are core changes that are waiting to be done. We are currently working on this, but this will be for liquidsoap 1.0, which will eventually land, but not in the short term. We will inform you and the other users as soon as we have something ready to be tested for production ! 2) Better support for external input and/or porting between programs. I am planning on setting up a web-based telephone switching board so listeners can call in a toll-free number to get on the radio. The DJ will be able to view the virtual switch board online and control who goes on air, view whose waiting, bridge them all in, just one, cut people off..etc. I can do this all through Asterisk (Open source PBX program), but I have no idea how to port this audio into liquidsoap...especially during a live broadcast. Maybe some way to merge a harbor input and an input.external? This should be feasible with an input.external. What you need is a program that is able to receive the calls and output the sound to its standard output in a pcm format. Then you should be able to have a new source using input.external and this program to acheive what you want. I remember that at least one user tried this recently. Romain -- Come build with us! The BlackBerryreg; Developer Conference in SF, CA is the only developer event you need to attend this year. Jumpstart your developing skills, take BlackBerry mobile applications to market and stay ahead of the curve. Join us from November 9#45;12, 2009. Register now#33; http://p.sf.net/sfu/devconf ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] Read error Unix.Unix_error(56, read, ) ???
Hi Gabriel ! Le dimanche 20 septembre 2009 21:20:08, Gabriel Afana a écrit : So today I had something unusual happen for the first time. A DJ was playing live (input.harbor) and about 40 minutes into his show, liquidsoap fell back to the playlist and continued playing the normal playlist that plays when there isn't a live show. The really strange part is I checked to logs thinking to see the DJ simply lost his connection, however this wasn't the case. The logs showed that he reconnected again and my on_connect and on_disconnect function logs show that he did connect again but never disconnected (i.e. he was still streaming). However liquidsoap was still playing playlist songs and wasn't going to the input.harbor source. This has never happened before. I had to go in and manually run the on_disconnect function since it never ran. I have a crontab running every minute that checks and disconnects the DJ the minute his timewinow is up (using telnet connection). Even if all else fails, this will disconnect his input.harbor connection and of course should run the on_disconnect function. The crontab ran and connected via telnet but the on_disconnect function never ran (leading me to believe he was never connected anyways because the radio was streaming the playlist and not his live show). However, he connected but never disconnected (but was no longer connected!!) haha confusing! I noticed an unusual error i've never seen. Maybe this is what caused this strange occurance? Ok, I am looking at your issue now. From what I see on the log, it seems like everything hapened has expected. The exception you saw on the log is generated because the reading on the socket failed, and as expected you see that the harbor source disconnects him. Then, the second request that you see on the logs is in fact a metadata update request. It means that the source client tried to do a metadata update request, which will suceed even if the audio feeding has failed. The thing that I don't see in the logs is the second source client connection on the harbor. Perhaps it should need to look later in the logs ? So, my understanding is: * The connection with the DJ was lost at some point * The behaviour after that was not what you expected Hence, as such I cannot reallt judge whether the problem after the deconnection comes from the source client (VirtualDJ) or from liquidsoap. It would be nice if you could send us more logs, in particular a bit before and after the issue so that we can see the harbor source client connections. Romain -- Come build with us! The BlackBerryreg; Developer Conference in SF, CA is the only developer event you need to attend this year. Jumpstart your developing skills, take BlackBerry mobile applications to market and stay ahead of the curve. Join us from November 9#45;12, 2009. Register now#33; http://p.sf.net/sfu/devconf ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] The aacplus streaming is great!
Le dimanche 27 septembre 2009 14:19:36, Brandon Casci a écrit : Hello Hi ! Got a chance to check out the aacplus streaming. It sounds great! I even tried using an aacplus stream for http.input, and I was surprised that worked. Though when aacplus was used as input, ever 20 seconds or so the output, also aacplus, would have a shuffling sound, almost like the fast-forward while playing a CD. Still I'm looking forward to useing aacplus and will drop certain streams in favor of it. Thanks for the report ! The aacplus encoder is known to have issues with parametric stereo, which is used at low bitrates, such as 32k. So far, it performs quite good at 64k, which I would recommend for now. The nero AAC+ encoder has a much better quality at each bitrate. However, it is not yet possible to use it as an external encoder. I have requested the changes upstream, they say they will surely consider it, so we have to wait and see.. Romain -- Come build with us! The BlackBerryreg; Developer Conference in SF, CA is the only developer event you need to attend this year. Jumpstart your developing skills, take BlackBerry mobile applications to market and stay ahead of the curve. Join us from November 9#45;12, 2009. Register now#33; http://p.sf.net/sfu/devconf ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] SVN 6763: Error in File tools/liqfm.ml, line 148, characters 20-47
Le lundi 28 septembre 2009 10:02:54, Frits Letteboer - St. Radio Twenterand a écrit : Hi there, Hi ! Was trying to get up-to-date with the latest SVN, but this error popped up. Ocaml-lastfm is commented out in PACKAGES, since I don't use it: OCAMLC -c tools/liqfm.ml File tools/liqfm.ml, line 148, characters 20-47: This function is applied to too many arguments, maybe you forgot a `;' Yes, you probably have a lastfm module installed in your system. If you are on a debian-derived system, you should look for a package named liblatfm-ocaml-dev, otherwise look in the paths returned by: ocamlfind printconf For instance, for me it is: Search path: /usr/local/lib/ocaml/3.11.1 /usr/lib/ocaml /usr/lib/ocaml/METAS Romain -- Come build with us! The BlackBerryreg; Developer Conference in SF, CA is the only developer event you need to attend this year. Jumpstart your developing skills, take BlackBerry mobile applications to market and stay ahead of the curve. Join us from November 9#45;12, 2009. Register now#33; http://p.sf.net/sfu/devconf ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] log rotation
Le mardi 29 septembre 2009 18:48:45, Romeo a écrit : Hi! Hi ! Can i use logrotate tool to rotate liquisoap log, or it has internal capabilities to do this stuff? Yes you can ! :-) The basic logrotate script provided by liquidsoap is: /var/log/liquidsoap/*.log { compress rotate 5 size 300k missingok notifempty sharedscripts postrotate for liq in /var/run/liquidsoap/*.pid ; do if test $liq != '/var/run/liquidsoap/*.pid' ; then start-stop-daemon --stop --signal USR1 --quiet --pidfile $liq fi done endscript } As you can see, you need to send the USR1 signal to liquidsoap after moving the file away.. Romain -- Come build with us! The BlackBerryreg; Developer Conference in SF, CA is the only developer event you need to attend this year. Jumpstart your developing skills, take BlackBerry mobile applications to market and stay ahead of the curve. Join us from November 9#45;12, 2009. Register now#33; http://p.sf.net/sfu/devconf ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] Fading / Silence issues after version 0.3.8.1
Le mardi 29 septembre 2009 03:34:28, Frits Letteboer - St. Radio Twenterand a écrit : Hi there, Hi ! After checking out the latest SVN version there seems to be some issues between regular tracks. In the old version there's a smooth crossfade between regular tracks. In later / the latest version(s) this has changed to fade out - 10 seconds of silence - fade in to next song. The fades from/to jingles and commercials still work as expected. I'm pretty sure I screwed up somewhere, but I can't find where. So I've attached the script used in both cases. Thanks for the report ! There can be various possible reasons for your issue. The first and immediate that comes to my mind is the change in the default behaviour of request-based sources. Now, the new song request is triggered only 10 seconds before the previous song ends. So if the requests and song processing takes too long, you might experience this kind of issues. What you can do to test this assumption, is to pass the option conservative=true to request.dynamic, but also playlist if needed. Please let us know whether it helps, otherwise we would try to find another reason for your issue. Romain -- Come build with us! The BlackBerryreg; Developer Conference in SF, CA is the only developer event you need to attend this year. Jumpstart your developing skills, take BlackBerry mobile applications to market and stay ahead of the curve. Join us from November 9#45;12, 2009. Register now#33; http://p.sf.net/sfu/devconf ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] liquidsoap libaacplus
Le mardi 29 septembre 2009 20:47:54, Romeo a écrit : Hi Savonet Team! Hi ! i'm trying to make work 0.9.1+svn with ocaml-aacplus but get error when starting liquidsoap. it says it cannot load libaacplus.so.1 but it exists in /usr/local/lib/ i use this http://tipok.org.ua/node/17 library (libaacplus) Ok, correct link. The problem could be that your system does not know that you have installed the library. You should try to execute, as root: ldconfig Romain -- Come build with us! The BlackBerryreg; Developer Conference in SF, CA is the only developer event you need to attend this year. Jumpstart your developing skills, take BlackBerry mobile applications to market and stay ahead of the curve. Join us from November 9#45;12, 2009. Register now#33; http://p.sf.net/sfu/devconf ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] Considering shutting down my radio and possibly making my radio management system public
Hi Gabriel ! Le mardi 29 septembre 2009 21:35:14, Gabriel Afana a écrit : So I've been doing a LOT of research in the legality of running an internet radio and because of all the corrupt politians (at least in the USA), running a legal internet radio station is not really possible for most people due to the OUTRAGEOUS fees of SoundExchange. I've looked into running the radio in another country such as Canada which have less strict laws, but the radio is for an online community I run which is a legitimate business that I make my living off of. I dont want to merge shady business activies (such as moving the radio system to canada to avoid fees) with my legitimate business and have possible problems down the radio. Im REALLY upset about this because I spent the last several months developing this radio (spending 10-12 hours/day working on it). This is what I was doing full-time. I am really sorry to hear this. I understand why you want to do your business seriously and why you do not want to use alternative sneaky ways. I personaly believe the actual fees for net broadcasting are decided while consulting only the existing players, which already have a lot more income, and also for the most of them rely massively on traditional broadcasting, and for that reason do not have any interest into letting new concurrent appear on internet... I really hope that people like you with innovative ideas and willing to work full time on setting up new broadcasting systems for internet find their own economic equilibrium. However, if I end up shutting down my radio, I do not want all that work of mine to go to waste so I would like to share it with you guys. If this ends up happening, I'll be sure to give everyone a tour and explain how it works. In the very unfortunate case where this would happen, we would be pleased to host the source code, provided it is released under any open-source compatible license, which I am sure is what you have in mind. Another issue from our perpective would be the maintenance of the code, but that is another topic. Romain -- Come build with us! The BlackBerryreg; Developer Conference in SF, CA is the only developer event you need to attend this year. Jumpstart your developing skills, take BlackBerry mobile applications to market and stay ahead of the curve. Join us from November 9#45;12, 2009. Register now#33; http://p.sf.net/sfu/devconf ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] Playing blank
Le vendredi 4 septembre 2009 14:12:42, Jean-Francois Mauguit a écrit : Hello, Hi Jef ! Thanks. I'll work on that next week and let you know if telnet connection is successful. Do you have any news on that issue ? We're considering a bugfix release, so it would be nice to fix it if we can.. Romain -- Come build with us! The BlackBerryreg; Developer Conference in SF, CA is the only developer event you need to attend this year. Jumpstart your developing skills, take BlackBerry mobile applications to market and stay ahead of the curve. Join us from November 9#45;12, 2009. Register now#33; http://p.sf.net/sfu/devconf ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] Fading / Silence issues after version 0.3.8.1
Le mercredi 30 septembre 2009 17:49:54, Romain Beauxis a écrit : I am quite curious about your issue. Did you try to add conservative=true, and also length=30. to your request-based sources ? If it still does not work with that, then I think it would worth a ticket with script and logs and we should try to fix it. Another remark reading your script. The delay operator was not present in 3.8.1. Furthermore, in its current implementation, it might be subject of issues when used with crossfading.. Could you also check whether the bug disapear when you remove the delays, please ? Romain -- Come build with us! The BlackBerryreg; Developer Conference in SF, CA is the only developer event you need to attend this year. Jumpstart your developing skills, take BlackBerry mobile applications to market and stay ahead of the curve. Join us from November 9#45;12, 2009. Register now#33; http://p.sf.net/sfu/devconf ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users
Re: [Savonet-users] Fading / Silence issues after version 0.3.8.1
Le jeudi 1 octobre 2009 01:41:48, vous avez écrit : Another remark reading your script. The delay operator was not present in 3.8.1. Furthermore, in its current implementation, it might be subject of issues when used with crossfading.. Are you sure? Since delay is working flawlessly with that version and works great for queueing promotions and commercials. Could you also check whether the bug disapear when you remove the delays, please ? If I removed the delays I would be listening to commercials and jingles all the time? I will check this and report back. Hmm Sorry, it seems I have confused delay and lag.. No need to bother about this.. Romain -- Come build with us! The BlackBerryreg; Developer Conference in SF, CA is the only developer event you need to attend this year. Jumpstart your developing skills, take BlackBerry mobile applications to market and stay ahead of the curve. Join us from November 9#45;12, 2009. Register now#33; http://p.sf.net/sfu/devconf ___ Savonet-users mailing list Savonet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-users