Crossfading
  • Vote Up0Vote Down Paul BaranowskiPaul Baranowski
    Posts: 389Member, Administrator, Sourcefabric Team
    Hi all -
    We are planning on putting crossfading into Airtime in the near future.
    Here is a simple draft proposal as to how it would work. We would like your
    feedback on this:

    A) The user should have the ability to (1) crossfade songs or (2) to fade
    out a song and have the next one start at full volume.

    B) The ability to "fade in" would be removed (we have heard that people do
    not use this - is it true?).

    C) The crossfade/fade-out duration could be set between 0.1 to 10 seconds.
    (Default is 0.5 seconds).



    Paul Baranowski
    CTO, Sourcefabric, http://sourcefabric.org

    +1 (416) 832-6436 (Cell)
    Skype: paulbaranowski
    720 Bathurst St. / Suite 203 / Toronto / ON / M5S 2R4 / Canada

  • 4 Comments sorted by
  • I just stumbled across your software today while looking for playout
    software to drive our Internet radio station's automation.

    I was hoping it would already have crossfading, as I feel that's an
    essential component.

    Re the proposal, first I don't understand the difference between options
    1 and 2, as they kinda sound the same to me.

    re the question, no, fading in really is not used.

    The problem is that the term crossfade when used in this context really
    is a misnomer, as no (or very little) actual fading is done.
    Overlapping would be a better term.

    Unfortunately, your proposal will not work well as it is too simplistic.
    "crossfading" is more about starting the next item at the right time
    than anything else. You can't just use a fixed time point for the
    segway. Some tracks fade out, some come to a dead stop, and many have
    seconds of silence at the end and even at the beginning.

    I've used both the SQR Crossfade plugin for Winamp
    ( http://www.winamp.com/plugin/sqrsoft-advanced-crossfading-ou tput/32368)
    and the crossfading settings in Stationplaylist Studio
    (http://stationplaylist.com). Both have a trigger level in DB that the
    first song must reach before the second song will start. Both have
    minimum and maximum lengths of time from the end of the first track that
    the second will start. And both have a minimum DB level for both the beginning
    and end of the track in order to kill gaps.

    I'm still getting to grips with the Stationplaylist settings, but I
    managed to get the SQR Crossfader to sound pretty good, even to the
    point where I can play IDs back-to-back and they won't step on each
    other.

    I've not sampled many of the open implementations of crossfading out
    there. Ices0 (http://icecast.org/ices.php) has an implementation of
    what not to do. It has a fixed crossfade duration and both fades out
    and fades in. To get anywhere near a decent result, I had to set
    crossfade duration to 1 second, and even that is not ideal. I can't
    immediately find a stream where I know this is enabled, but set this up
    with a playlist and some short station IDs and you'll soon see why it
    doesn't work well. In fact, I actually turned it off completely on some
    setups where I'd originally had it turned on.

    Pytone seems to have a similar implementation, judging by the config
    file. I've not tried it out though. MPd can apparently crossfade, but
    I've not looked to see how detailed or configurable it is.

    I think I recall XMMS (version 1) having a crossfade plugin, but again
    I've not tried it. It seems that a propper crossfader has been on the
    XMMS2 Google Summer of Code todo list for the last few years, including
    this year.

    One system which does have very nice crossfading and dynamic compression
    is the system I was looking to use Airtime instead of - PRS
    (http://sourceforge.net/projects/prsradio/). I don't know how it does
    it though - it seems to be hard-coded because I don't know of any way to
    configure it. I'm reluctant to use this software because it's largely
    unmaintained and sometimes its stability is questionable. I've been
    making enhancements to the web UI, but I'm not a C programmer or have
    any great expertise in audio processing, so the playout side is fairly
    incomprehensible to me. Still, it may help you in some way. I'm about
    to try deploying it on a new site, I can post the link if I get it going
    so you can hear what it sounds like.

    Airtime sounds like exactly what I'm looking for, and exactly what PRS
    originally set out to be. If it had crossfading and dynamic
    compression, I'd probably use it without hesitation (I'd at least take a
    good look at it).
  • Hi Geoff,


    Quote:
    You can't just use a fixed time point for the
    segway. Some tracks fade out, some come to a dead stop, and many have
    seconds of silence at the end and even at the beginning.


    This is a very interesting perspective, and one we'll definitely consider before introducing the crossfade feature.

    As for dynamic compression, you mean normalizing the audio signal in real-time correct? We were planning on implementing Replay Gain which is not dynamic, but scans your audio files ahead of time to determine how much it should amplify the signal. The feature would be available sometime in the near future.
    Airtime Pro Hosting: http://airtime.pro
  • Vote Up0Vote Down Paul BaranowskiPaul Baranowski
    Posts: 389Member, Administrator, Sourcefabric Team
    We dont have crossfading yet, but it's high on our priority list.



    On Sun, May 15, 2011 at 6:50 AM, Geoff Shang <
    airtime-dev@lists.sourcefabric.org> wrote:

    > I just stumbled across your software today while looking for playout
    > software to drive our Internet radio station's automation.
    >
    > I was hoping it would already have crossfading, as I feel that's an
    > essential component.
    >
    > Re the proposal, first I don't understand the difference between options
    > 1 and 2, as they kinda sound the same to me.
    >
    > re the question, no, fading in really is not used.
    >
    > The problem is that the term crossfade when used in this context really
    > is a misnomer, as no (or very little) actual fading is done.
    > Overlapping would be a better term.
    >
    > Unfortunately, your proposal will not work well as it is too simplistic.
    > "crossfading" is more about starting the next item at the right time
    > than anything else. You can't just use a fixed time point for the
    > segway. Some tracks fade out, some come to a dead stop, and many have
    > seconds of silence at the end and even at the beginning.
    >
    > I've used both the SQR Crossfade plugin for Winamp
    > ( http://www.winamp.com/plugin/sqrsoft-advanced-crossfading-ou tput/32368< http://www.winamp.com/plugin/sqrsoft-advanced-crossfading-ou tput/32368>)
    >
    > and the crossfading settings in Stationplaylist Studio
    > (http://stationplaylist.com). Both have a trigger level in DB that the
    > first song must reach before the second song will start. Both have
    > minimum and maximum lengths of time from the end of the first track that
    > the second will start. And both have a minimum DB level for both the
    > beginning
    > and end of the track in order to kill gaps.
    >
    > I'm still getting to grips with the Stationplaylist settings, but I
    > managed to get the SQR Crossfader to sound pretty good, even to the
    > point where I can play IDs back-to-back and they won't step on each
    > other.
    >
    > I've not sampled many of the open implementations of crossfading out
    > there. Ices0 (http://icecast.org/ices.php) has an implementation of
    > what not to do. It has a fixed crossfade duration and both fades out
    > and fades in. To get anywhere near a decent result, I had to set
    > crossfade duration to 1 second, and even that is not ideal. I can't
    > immediately find a stream where I know this is enabled, but set this up
    > with a playlist and some short station IDs and you'll soon see why it
    > doesn't work well. In fact, I actually turned it off completely on some
    > setups where I'd originally had it turned on.
    >
    > Pytone seems to have a similar implementation, judging by the config
    > file. I've not tried it out though. MPd can apparently crossfade, but
    > I've not looked to see how detailed or configurable it is.
    >
    > I think I recall XMMS (version 1) having a crossfade plugin, but again
    > I've not tried it. It seems that a propper crossfader has been on the
    > XMMS2 Google Summer of Code todo list for the last few years, including
    > this year.
    >
    > One system which does have very nice crossfading and dynamic compression
    > is the system I was looking to use Airtime instead of - PRS
    > (http://sourceforge.net/projects/prsradio/). I don't know how it does
    > it though - it seems to be hard-coded because I don't know of any way to
    > configure it. I'm reluctant to use this software because it's largely
    > unmaintained and sometimes its stability is questionable. I've been
    > making enhancements to the web UI, but I'm not a C programmer or have
    > any great expertise in audio processing, so the playout side is fairly
    > incomprehensible to me. Still, it may help you in some way. I'm about
    > to try deploying it on a new site, I can post the link if I get it going
    > so you can hear what it sounds like.
    >
    > Airtime sounds like exactly what I'm looking for, and exactly what PRS
    > originally set out to be. If it had crossfading and dynamic
    > compression, I'd probably use it without hesitation (I'd at least take a
    > good look at it).
    >
    >

  • Geoff Shang wrote on Sun, 15 May 2011 10:50

    I've used both the SQR Crossfade plugin for Winamp
    ( http://www.winamp.com/plugin/sqrsoft-advanced-crossfading-ou tput/32368)
    and the crossfading settings in Stationplaylist Studio
    (http://stationplaylist.com). Both have a trigger level in DB that the
    first song must reach before the second song will start. Both have
    minimum and maximum lengths of time from the end of the first track that
    the second will start. And both have a minimum DB level for both the beginning
    and end of the track in order to kill gaps.


    I think the approach of having a minimum db for the music to trigger the next file would be a really good approach, as like you say there is no consistency in when and how songs end Smile