hello,
I'm really beginning to appreciate liquidsoap to its full extent and I'm
amazed by its possibilities. So first of all thanks to its developers,
liquidsoap is really the perfect broadcasting engine IMO. Once again,
thank you.
I just wanted to request a few things just in case you ever lack of
ideas for new features in a near future ;)
-the input.harbor on_connect and on_disconnect callbacks are really
great. However, it could also be useful to have this kind of mechanism
when this function does not produce any stream anymore, without
disconnecting first, and then resumes streaming.
e.g. a track played through the Winamp DSP plugin or whatever is now
over: no sound is broadcast but the source is not disconnected: it could
be handy to notify any third-party software when it happens, in order to
take any appropriate measure.
Maybe there are other ways to achieve this but I wasn't able to find out
how.
2008/11/30 14:30:04 [dyn_Global:3] Finished with
"/home/XXX/radio/resources/pool/1050.mp3"
2008/11/30 14:30:04 [dyn_Global:3] Prepared
"/home/XXX/radio/resources/pool/2323.mp3" -- rid 49
2008/11/30 14:30:05 [src_5495:3] Analysis: -19.165636dB / -27.097647dB
(1.48s / 2.00s)
2008/11/30 14:30:05 [smart_crossfade:3] old >= new + margin, new >=
medium and old <= high
2008/11/30 14:30:05 [smart_crossfade:3] Old source is significantly
louder than new one.
2008/11/30 14:30:05 [smart_crossfade:3] Transition: crossed, fade-in.
2008/11/30 14:31:36 [harbor:3] New client: yog-sothoth.ddcr.biz
2008/11/30 14:31:36 [harbor:3] ICY request on /.
2008/11/30 14:31:36 [harbor:3] Adding source on mountpoint '/' with type
'audio/mpeg'.
2008/11/30 14:31:36 [threads:3] Created thread "harbor source feeding"
(11 total)
2008/11/30 14:31:36 [src_5502:3] Decoding...
2008/11/30 14:31:38 [src_5527:3] switch to src_5521 with transition
2008/11/30 14:31:39 [src_5521:3] Inserting missing metadata.
2008/11/30 15:22:28 [src_5527:3] switch to src_5523 with forgetful
transition
2008/11/30 15:22:55 [stream.mp3:2] Read error Unix.Unix_error(2, "read", "")
2008/11/30 15:22:55 [src_5502:2] Feeding stopped: Mad.End_of_stream
2008/11/30 15:22:55 [threads:3] thread "harbor source feeding" exited
(10 remaining)
2008/11/30 15:23:25 [harbor:3] New client: yog-sothoth.XXX.XXX
2008/11/30 15:23:26 [harbor:3] ICY request on /.
2008/11/30 15:23:26 [harbor:3] Adding source on mountpoint '/' with type
'audio/mpeg'.
2008/11/30 15:23:26 [threads:3] Created thread "harbor source feeding"
(11 total)
2008/11/30 15:23:26 [src_5502:3] Decoding...
2008/11/30 15:23:56 [stream.mp3:2] Read error Unix.Unix_error(2, "read", "")
2008/11/30 15:23:56 [src_5502:2] Feeding stopped: Mad.End_of_stream
2008/11/30 15:23:56 [threads:3] thread "harbor source feeding" exited
(10 remaining)
2008/11/30 15:24:26 [harbor:3] New client: yog-sothoth.XXX.XXX
2008/11/30 15:24:26 [harbor:3] ICY request on /.
2008/11/30 15:24:26 [harbor:3] Adding source on mountpoint '/' with type
'audio/mpeg'.
2008/11/30 15:24:26 [threads:3] Created thread "harbor source feeding"
(11 total)
2008/11/30 15:24:26 [src_5502:3] Decoding...
2008/11/30 15:24:56 [stream.mp3:2] Read error Unix.Unix_error(2, "read", "")
2008/11/30 15:24:56 [src_5502:2] Feeding stopped: Mad.End_of_stream
2008/11/30 15:24:56 [threads:3] thread "harbor source feeding" exited
(10 remaining)
2008/11/30 15:25:26 [harbor:3] New client: yog-sothoth.XXX.XXX
2008/11/30 15:25:27 [harbor:3] ICY request on /.
2008/11/30 15:25:27 [harbor:3] Adding source on mountpoint '/' with type
'audio/mpeg'.
2008/11/30 15:25:27 [threads:3] Created thread "harbor source feeding"
(11 total)
2008/11/30 15:25:27 [src_5502:3] Decoding...
2008/11/30 15:25:37 [stream.mp3:2] Read error End_of_file
2008/11/30 15:25:37 [src_5502:2] Feeding stopped: Mad.End_of_stream
2008/11/30 15:25:37 [threads:3] thread "harbor source feeding" exited
(10 remaining)
2008/11/30 15:28:22 [dyn_Global:3] Finished with
"/home/XXX/radio/resources/pool/2323.mp3"
2008/11/30 15:28:22 [dyn_Global:3] Prepared
"/home/XXX/radio/resources/pool/2410.mp3" -- rid 0
2008/11/30 15:28:22 [src_5495:3] Analysis: -48.886565dB / -17.284109dB
(1.49s / 2.00s)
2008/11/30 15:28:22 [smart_crossfade:3] new >= old + margin, old <=
medium and new <= high.
2008/11/30 15:28:22 [smart_crossfade:3] Do not fade if it's already very
low.
2008/11/30 15:28:22 [smart_crossfade:3] Transition: crossed, no fade.
-I've tried to use a few LADSPA plugins on the stream produced by
liquidsoap but I was quite disappointed by their CPU usage. The internal
liquidsoap functions can already achieve what I need (compander+limiter)
but still they eat up quite a lot of CPU cycles. Maybe it would help to
have a CPU friendly dynamic compressor within liquidsoap.
e.g. the function written below consumes 100% (at peak times) of the CPU
on a Pentium 4 2.8 (it won't even run on an Atom 330) while other
DirectX/VST/whatever solutions, roughly configured to sound the same,
use appr. only 10-20% on a very similar system.
liquidsoap is compiled with the directives -O3 -mcpu=pentium4
-march=pentium4
def threeband_compressor(source)
lo_up = filter.iir.eq.low(frequency=140.)
lo_down = filter.iir.eq.high(frequency=110.)
hi_up = filter.iir.eq.low(frequency=4015.05)
hi_down = filter.iir.eq.high(frequency=3990.05)
add(normalize=false,
[
limit(attack=1., release=1000., threshold=0.,
ratio=5.5, knee = 0.3,
compress(attack=7., release=508.,
threshold=-17., ratio=4., gain=8.1, knee = 0.3,
lo_up(source)
)
),
limit(attack=1., release=1000., threshold=0.,
ratio=5.5, knee = 0.3,
compress(attack=36., release=255.,
threshold=-15., ratio=1.8, gain=4.5, knee = 0.3,
hi_up(lo_down(source))
)
),
limit(attack=1., release=1000., threshold=0.,
ratio=5.5, knee = 0.3,
compress(attack=36., release=291.,
threshold=-15., ratio=4., gain=7.6, knee = 0.3,
hi_down(source)
)
)
])
end
P.S. I've given up trying to use the internal compander (I don't know
how the mu setting can be tweaked BTW) because it really consumes a lot
more CPU than a simple compressor.
see you, and keep on like this!
--
best regards,
sincèrement,
okay_awright
<okay_awrightATddcrDOTbiz>
Public PGP key on request
-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Savonet-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/savonet-users