Plexamp uses Sweet Fades on a consecutive album

When playing Random Album Radio, I noticed that Plexamp was crossfading between tracks in some albums, e.g. Hybrid’s latest album Black Halo. Looking through the debug logs after playing a few tracks, I noticed the following lines mentioning “consecutive” and “overlapping”:

Jun 08, 2022 09:40:00.220 [Javascript] INFO - PlayQueue: This isn't a consecutive album because of non-consecutive track 1/16 -> 1/19.
Jun 08, 2022 09:40:00.227 [0x6d31b000] INFO - BASS: We're overlapping stream 52289 (0x80000018) by 4917 ms which is in 28.7 sec.
Jun 08, 2022 09:40:02.152 [0x6c82b000] INFO - BASS: We're overlapping stream 52289 (0x80000018) by 4917 ms which is in 28.7 sec.
Jun 08, 2022 09:40:02.334 [0x6c82b000] INFO - BASS: We're overlapping stream 52289 (0x80000018) by 4917 ms which is in 28.7 sec.
Jun 08, 2022 09:40:08.582 [0x6bedf000] INFO - BASS: We're overlapping stream 52290 (0x8000003b) by 6733 ms which is in 185.8 sec.
Jun 08, 2022 09:40:10.218 [0x6cd17000] INFO - BASS: We're overlapping stream 52308 (0x80000048) by 6551 ms which is in 300.5 sec.
Jun 08, 2022 09:45:12.239 [0x6cc8b000] INFO - BASS: We're overlapping stream 52309 (0x8000005d) by 110 ms which is in 201.1 sec.
Jun 08, 2022 09:45:12.311 [Javascript] INFO - PlayQueue: This isn't a consecutive album because of non-consecutive track 1/16 -> 1/19.
Jun 08, 2022 09:45:12.311 [0x6bdc7000] INFO - BASS: We're overlapping stream 52309 (0x8000005d) by 110 ms which is in 201.1 sec.
Jun 08, 2022 09:48:33.466 [0x6cc8b000] INFO - BASS: We're overlapping stream 52310 (0x8000006c) by 13806 ms which is in 127.9 sec.
Jun 08, 2022 09:48:33.556 [Javascript] INFO - PlayQueue: This isn't a consecutive album because of non-consecutive track 1/16 -> 1/19.
Jun 08, 2022 09:48:33.556 [0x6bedf000] INFO - BASS: We're overlapping stream 52310 (0x8000006c) by 13806 ms which is in 127.8 sec.
Jun 08, 2022 09:50:50.961 [0x6c82b000] INFO - BASS: We're overlapping stream 52311 (0x8000007b) by 8072 ms which is in 348.6 sec.
Jun 08, 2022 09:50:51.022 [Javascript] INFO - PlayQueue: This isn't a consecutive album because of non-consecutive track 1/16 -> 1/19.
Jun 08, 2022 09:50:51.022 [0x6bff7000] INFO - BASS: We're overlapping stream 52311 (0x8000007b) by 8072 ms which is in 348.5 sec.
Jun 08, 2022 09:52:26.314 [Javascript] INFO - PlayQueue: This isn't a consecutive album because of non-consecutive track 1/16 -> 1/19.
Jun 08, 2022 09:52:26.314 [0x6c82b000] INFO - BASS: We're overlapping stream 52311 (0x8000007b) by 8072 ms which is in 253.3 sec.
Jun 08, 2022 09:56:40.083 [0x6cd17000] INFO - BASS: We're overlapping stream 52312 (0x8000008d) by 19155 ms which is in 434.3 sec.
Jun 08, 2022 09:56:40.128 [Javascript] INFO - PlayQueue: This isn't a consecutive album because of non-consecutive track 1/16 -> 1/19.
Jun 08, 2022 09:56:40.128 [0x6bf6b000] INFO - BASS: We're overlapping stream 52312 (0x8000008d) by 19155 ms which is in 434.2 sec.
Jun 08, 2022 10:20:16.293 [0x6be53000] INFO - BASS: We're overlapping stream 52312 (0x8000008d) by 19155 ms which is in 250.9 sec.
Jun 08, 2022 10:20:16.436 [0x6be53000] INFO - BASS: We're overlapping stream 52312 (0x8000008d) by 19155 ms which is in 250.9 sec.
Jun 08, 2022 10:21:37.749 [0x6cb73000] INFO - BASS: We're overlapping stream 52312 (0x8000008d) by 19155 ms which is in 172.1 sec.
Jun 08, 2022 10:21:37.786 [0x6cb73000] INFO - BASS: We're overlapping stream 52312 (0x8000008d) by 19155 ms which is in 172.1 sec.
Jun 08, 2022 11:28:23.331 [0x6be53000] INFO - BASS: We're overlapping stream 52312 (0x8000008d) by 19155 ms which is in 171.1 sec.
Jun 08, 2022 11:28:23.461 [0x6be53000] INFO - BASS: We're overlapping stream 52312 (0x8000008d) by 19155 ms which is in 171.1 sec.
Jun 08, 2022 14:42:05.024 [0x6cae7000] INFO - BASS: We're overlapping stream 52312 (0x8000008d) by 19155 ms which is in 169.1 sec.
Jun 08, 2022 14:42:05.212 [0x6cae7000] INFO - BASS: We're overlapping stream 52312 (0x8000008d) by 19155 ms which is in 169.1 sec.
Jun 08, 2022 14:44:54.474 [0x6cb73000] INFO - BASS: We're overlapping stream 52313 (0x800000ec) by 6545 ms which is in 330.2 sec.
Jun 08, 2022 14:44:54.544 [Javascript] INFO - PlayQueue: This isn't a consecutive album because of non-consecutive track 1/16 -> 1/19.
Jun 08, 2022 14:44:54.544 [0x6bf6b000] INFO - BASS: We're overlapping stream 52313 (0x800000ec) by 6545 ms which is in 330.1 sec.
Jun 08, 2022 14:50:28.209 [0x6cc8b000] INFO - BASS: We're overlapping stream 52314 (0x800000fb) by 9320 ms which is in 342.0 sec.
Jun 08, 2022 14:50:28.258 [0x6cae7000] INFO - BASS: We're overlapping stream 52314 (0x800000fb) by 9320 ms which is in 342.0 sec.
Jun 08, 2022 14:50:28.258 [Javascript] INFO - PlayQueue: This isn't a consecutive album because of non-consecutive track 1/16 -> 1/19.

(note: I filtered the logs for those keywords, there are more messages in between these lines. Let me know if there are other messages I should be looking at or include here)

I start playing Black Halo at around 9:53 (and pause for a few hours for work meetings). It doesn’t even have 16 tracks, so it’s clearly not talking about that album. Despite that, it chooses to “overlap streams” of consecutive tracks within Black Halo anyways. Plexamp did have a compilation (and two singles) prior in the queue, and that compilation was missing tracks 17 and 18, which seems to coincide with those PlayQueue messages.

Now I should mention that I do tend to prune tracks that I don’t like from various compilations. However, I don’t expect a another album in the queue, let alone one that played before the current one, to affect whether the currently playing album gets crossfaded. Does every album in my library need to be complete if I want Plexamp to properly de-activate crossfading 100% of the time?

Not sure if this is a bug or intended behavior. I would expect Plexamp to consider “consecutive-ness” on an album-by-album basis, and choose whether or not to crossfade for each album, not for the entire queue.

That’s the issue. Plexamp simply looks at the tracks in the play queue and tries to see if they look like an album.

Yes.

That makes sense to me, but again I would expect this to be done on a per-album basis, not a single decision made for the entire queue. All 11 tracks in Black Halo were in the queue in the proper order, so I’d expect Plexamp to disable crossfading while those tracks played.

I can appreciate that determining whether to use Sweet Fades is not a trivial problem, and I have seen prior discussion on these forums regarding a few edge cases. However, a complete series of tracks from an album should not get crossfaded, even if it is in the middle of a play queue containing other non-consecutive tracks from other albums. That seems like a basic requirement to me.

It’s not quite as obvious to me. The extreme in the other direction is any time you find two tracks in sequential order, disabling sweet fades. However, that causes a potentially weird experience when you’re shuffling and just happen to end up with 2 tracks in the correct order and an awkward silence in the middle.

A play queue is a window into the complete list of tracks which will be played. The app doesn’t have perfect visibility and might not be able to “see” if there’s a complete album coming up or not, so it uses as much context as it has.

I’m not disagreeing the approach could be improved, but I’m not sure it’s obvious how to go about it.

Yeah, this is the edge case I was thinking about in my previous reply. I would split that into two cases:

  1. The two tracks are only a part of an album, e.g. tracks 3 and 4 of a 10-track album. Here I think fades should be applied, since the user probably isn’t expecting to get a gapless situation.
  2. The two tracks form the complete album, e.g. a dual single. In my experience EPs and albums (which is what I’d actually care about not getting crossfaded) are at least 4 tracks long, so even in this case I would want sweet fades applied.

In any case, what you mentioned will happen a lot less often than, say, a user deciding to add a full album to any play queue. In that case I’d expect the album to not be crossfaded.

Surely it should have enough context to determine if it is in the middle of playing a complete album?

There are definitely cases where crossfading should not be applied, and to me a full 11-track album in the middle of any queue is one of those cases. Like you said, the approach could be improved.

As it is right now, if I have a series of, say, 6 complete consecutive albums/EPs in my queue, all of them will be crossfaded if a single non-consecutive album came before them. (In fact, this is happening to me right now in the Random Album Radio.) That seems like a very clear failing of the current approach. One incomplete album shouldn’t ruin the experience of all the others.

Maybe Plexamp should disable crossfading if it encounters consecutive tracks 1, 2, …, N of an album in a queue, where N > 3, and those were all the tracks of the album in the user’s library? That seems highly unlikely to happen in a shuffle, and even if it did, I’d want that to be played without fades anyways.

(…unless the album is a compilation. Again, I can appreciate how non-trivial this is to think about!)


By the way, I really appreciate your willingness to respond and your prompt responses!

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.