Skip to main content

Notice

Please note that most of the software linked on this forum is likely to be safe to use. If you are unsure, feel free to ask in the relevant topics, or send a private message to an administrator or moderator. To help curb the problems of false positives, or in the event that you do find actual malware, you can contribute through the article linked here.
Topic: Crossmix DSP (foo_dsp_crossmix) (Read 4632 times) previous topic - next topic
0 Members and 1 Guest are viewing this topic.

Re: Crossmix DSP (foo_dsp_crossmix)

Reply #25
Do you mean crossfader thats built in also requires same sample rate?
What do you mean by "resampling inside the mixers"? What mixer are you talking about?

Re: Crossmix DSP (foo_dsp_crossmix)

Reply #26
However, I also sometimes listen to music in the car, and I don't know if this plugin would work with the Android version of foobar2000; I don't think so.
This component only works with the Windows version of foobar2000. But if the component is good enough and Peter wants to include it in mobile foobar2000, I'd happily donate it.

Do you know of an Android application that allows you to create links as perfect as those made with the Crossmix DSP plugin?
No, sorry.

Re: Crossmix DSP (foo_dsp_crossmix)

Reply #27
Do you mean crossfader thats built in also requires same sample rate?
What do you mean by "resampling inside the mixers"? What mixer are you talking about?
I mean the Crossfader DSP in foobar2000. And by "mixers" I mean everything that needs to mix or combine something from two or more sources. For example crossfader, crossmix, convolver, the fade options in foobar2000 output config, your operating system's mixer allowing you to hear audio from multiple programs at once. You cannot mix incompatible formats.

By resampling inside the mixer I mean that mixing incompatible formats is only possible by converting the formats to be the same. Same way you can't calculate how much 5 cm + 5 inches is without first calculating what the other one is in common unit.
If Crossmix DSP automatically resamples everything it will do something it was not asked to do. That is not good.
If it only resamples when it needs to, it will cause glitches on the transitions when the signal format changes. SqrSoft Advanced Crossfader tries to allow mixing different formats and it causes nasty artifacts on the transition totally ruining the track change.

Only correct and audibly glitchless way to handle gapless playback is to use a common audio format for the entire playback session. Place a resampler and if necessary, downmixers / upmixers and ensure the audio signal stays the same for everything.

PS: if you don't use exclusive mode output the signal will get resampled to OS mixer rate anyway at the end. You lose nothing by resampling things at the beginning instead.

Re: Crossmix DSP (foo_dsp_crossmix)

Reply #28
CASE, hello.
Thank you so, so much for your prompt response.
Thanks to the recent update, I've finally been able to achieve the playback environment I had always hoped for.
It’s amazing how tracks with lead-in sections or silence at the beginning are now smoothly mixed.
Most of the time, the transitions are so seamless that even random shuffle playback feels great.
The performance is also very stable.

(I wanted to make a donation, but as I’m not an English speaker, I couldn’t quite understand the process. Please allow me to express my heartfelt gratitude instead.)

Re: Crossmix DSP (foo_dsp_crossmix)

Reply #29
Thanks to @tasamagos , I had no idea about the ordering of DSP plugins could have impact on their functioning. I reordered the plugins now, that the resampler, replaygain alternative and crossmix all work together seamlessly.

Re: Crossmix DSP (foo_dsp_crossmix)

Reply #30
Thanks @Case
It makes sense now. Yes I am not using exclusive mode because to reduce sibilance, I am using equalizerAPO, which is useless if I use the exclusive mode.
I want to ask what's the practical effect of resampling. Theoretically, it reduces sampling rate of audio, so hifi music are downsampled, but hearing wise, do you think resampling/downsampling will have any audible effect on the user, from your experience?

Re: Crossmix DSP (foo_dsp_crossmix)

Reply #31
Speaking theoretically resampling can have an audible effect. A very bad resampler like linear interpolators used for performance reasons in the early computing days definitely changes audio. Resampling to sampling rate below 44.1 kHz may cause audible change, since it starts affecting frequencies that humans can hear.
And going even more theoretical, if you don't have perfect equipment inaudible ultrasounds can affect audible range. Resampling that removes that ultrasound can thus alter the sound, but the result will be more correct playback.

But generally speaking the audio that you should hear doesn't change from correct resampling. The changes in the signal with best resamplers are somewhere around -180 dB below the actual sound you hear. The RetroArch resampler bundled with foobar2000 allows you to pick quality mode, best causing changes at -140 dB, way beyond capabilities of any DAC to even reproduce. The lowest quality mode has SNR of only 40 dB, but even that should be difficult to hear under normal circumstances.

Re: Crossmix DSP (foo_dsp_crossmix)

Reply #32
Thank you. There are multiple resamplers available: Resampler (dBpoweramp/SSRC), Resampler (RetroArch) and third party PGGB-RT Real Time Upsampling. What do you recommend?

Re: Crossmix DSP (foo_dsp_crossmix)

Reply #33
Note that PGGB-RT isn't a normal resampler. It replaces your DAC processing with CPU powered overkill quality. It doesn't work for crossmix purposes as it doesn't resample into a constant single sample rate. It always resamples to multiples of 44.1 kHz or 48 kHz depending on the source. It is for people trying to squeeze every last drop of performance out of their equipment.

Also note that there are more resamplers for foobar2000 than just the ones you mentioned. For general purpose resampling my recommendation would be SoX Resampler. The built-in SSRC resampler has superb-quality, but it doesn't support all resampling ratios, it is quite slow, and expert opinion these days is that too steep bassband has (theoretical) ringing issues. And SSRC is pretty much as steep as mathematically possible.
The RetroArch resampler is much faster and supports all sampling ratios, has less steep passband and in highest quality mode it also has superb quality.
SoX also has superb quality, by default it has sensible passband that is pretty much optimal (preserves all the important information without causing ringing), though it can also be configured. And SoX is super fast. It pretty much gives best possible quality at the speed other resamplers give mediocre results.

Re: Crossmix DSP (foo_dsp_crossmix)

Reply #34
Thank you, I need a research to understand all you said. I tried all resamplers you mentioned, and I couldn't find a difference audibly. But I am happy it all works together chained.

Re: Crossmix DSP (foo_dsp_crossmix)

Reply #35
@thevudia14 : I just released a new version of ReplayGain DSP that should interfere less with track transitions even if automatic RG scanning is enabled.

Re: Crossmix DSP (foo_dsp_crossmix)

Reply #36
Thanks Case. It was already working, but I will let you know how the new ver functions. Thanks for all the work.

Re: Crossmix DSP (foo_dsp_crossmix)

Reply #37
I've been getting these small playback glitches, most probably since updating this to v0.6; I'm getting "Playback interrupted, source is stalling" messages in the console (I don't remember the exact wording, I've now downgraded Crossmix to 0.5 and everything is working fine for now) when opening the next track for playback, but not every time and it seems completely random. I've set the buffer length to 45 seconds, and the glitch does happen when there's 45 seconds left of the currently playing track, so I'm almost sure it's v0.6 of this component doing something wonky. My DSP chain is fairly simple:

Skip Track / foo_skip 1.41
Skip Silence (I guess it's in the standard DSP array)
Resampler (SoX) / foo_dsp_resampler 0.8.7+
Crossmix / foo_dsp_crossmix 0.5
Amplify / foo_dsp_amp 1.0.5

fb2k 2.24.4 64-bit, Win10

Re: Crossmix DSP (foo_dsp_crossmix)

Reply #38
The new feature in Crossmix 0.6 that takes the incoming track loudness into effect adds extra requirements to the system.
Currently if the in-threshold isn't set to 0.0 dBFS the track change will buffer as much data from the new track as can possibly be needed for the mixing. With your settings it means track change may need to get up to 45 seconds of new data before processing can continue. If your system can't load and decode the new data fast enough before output buffer runs out, you will get a glitch.

You should be able to solve that by increasing the length of the output buffer, or by decreasing the length of the Crossmix buffer.

You could also verify if my assumption is even remotely right by checking CPU usage of foobar2000 process when the track transition takes place. And report what output buffer length you use currently. And run Utilities -> Decoding speed test for a track that has shown the glitch. For best results run the test after system has been rebooted and before that track is played or otherwise loaded by anything else on the system so that the file isn't fresh in memory. Make sure to disable the "Load whole file into memory" and "Warm up before testing" options. Other settings should be ok at defaults.

Re: Crossmix DSP (foo_dsp_crossmix)

Reply #39
Well, I upgraded to 0.6 again and I'm not getting any glitches right now, I'll continue my normal listening habits and report back if any glitches come back (as I said, they're completely random so they're a bit difficult to chase down). I did take a look at cpu/ram usage when fb2k loads the next track and nothing out of the ordinary is going on. This is on a somewhat aging i7-4770K / 16gb ram I've had since late 2013. My output buffer is at 1000ms and as far as I can remember it's been that for like 2 decades now (meaning "for as long as I've been using fb2k").

 

Re: Crossmix DSP (foo_dsp_crossmix)

Reply #40
Sounds good. The default 1000 ms buffer is normally plenty, but depending on where the audio files are stored and what format is used, and also what kind of resampling settings you use, getting 45 seconds of decoded audio ready for processing in less than 1 second may not be possible.