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.
Recent Posts
1
3rd Party Plugins - (fb2k) / Re: foo_enhanced_spectrum_analyzer
Last post by TF3RDL -
As for the feature request of letting you visualize all channels as FFTs of each channel, I meant this: (BTW, I've updated this interactive mockup to add this, which already exists on the similar spectrum analyzer plugin for another music player except for the M/S part)
[attach type=image]26984[/attach]
And for Mid/Side part (which can be easily done using M/S encoding then doing FFTs of resulting M/S signal for visualization):
[attach type=image]26986[/attach]
On the subject of the request to add a feature to analyze multiple channels (stereo and even surround sound, and Mid/Side spectrum analyzer) simultaneously, I found the neat trick on this thread about whether or not the complex-input FFTs as in SDR-related stuff is also really useful for audio-related stuffs, that really improves performance on multichannel spectrum by treating channel pairs as complex number for the input-side and doing the "unscrambling" operation to resemble two separate FFTs of stereo pairs, though I think the performance improvements that brings is diminished when multichannel analysis is multithreaded (each channel gets its own thread for FFT analysis, so it can be done in parallel) right?
2
Scientific Discussion / Re: Are complex-input FFTs really useful for audio analysis?
Last post by TF3RDL -
Since the real and imaginary parts of the transform are orthogonal, this is the same as performing a real-valued FFT once for each input and then combining the individual outputs. 

See this derivation for a more detailed explanation:  http://www.hyperdynelabs.com/dspdude/papers/COMPUTING%20THE%20FFT%20OF%20TWO%20REAL%20SIGNALS%20USING%20A%20SINGLE%20FFT.pdf


Yes, I've tried that one and it is faster (more noticeable when you use non-power of two FFT sizes like 14400 samples on multichannel FFT, while it is faster than naive DFT, it is still notoriously slow for very large sizes) than doing it separately and BTW for those who don't have access to complex numbers, here's the formula for "unscrambling" complex-input FFT (commonly used for SDR-related things) into two-channel stereo FFT:
Code: [Select]
const j = complexSpectrum.length-i;
      x = idxWrapOver(i, complexSpectrum.length),
      y = idxWrapOver(j, complexSpectrum.length);
spectrum1[i] = Math.hypot(complexSpectrum[x].re+complexSpectrum[y].re, complexSpectrum[x].im-complexSpectrum[y].im)/Math.SQRT2;
spectrum2[i] = Math.hypot(complexSpectrum[x].im+complexSpectrum[y].im, complexSpectrum[x].re-complexSpectrum[y].re)/Math.SQRT2;
where "i" is FFT bin index,
Code: [Select]
function idxWrapOver(x, length) {
  return (x % length + length) % length;
}
and "complexSpectrum" is a complex-valued FFT data

Also, I think this topic is little bit de-railed; it went into performance improvements of multichannel audio spectrum analyzers by using complex-input FFTs, which is true considering calculating two or more FFTs can have significant performance impact. But what I really mean is that is complex-input FFT as in spectrum of I/Q signals in SDR really useful for analysis of stereo audio, which is basically the same minus the "unscrambling" operation?
3
3rd Party Plugins - (fb2k) / Re: foo_midi (foobar2000 v2.0)
Last post by pqyt -
v2.11.0.0-alpha7, 2024-05-19

* New: Recomposer support (.RCP, .R36, .G18, .G36) (#37)
* New: Preferences page to configure Recomposer and HMI/HMP settings. (alpha7)
* New: HMI/HMP default tempo can be configured. (#40) (alpha7)
* Improved: Added support for Unicode paths to RCP converter (alpha3)
* Improved: Detection of mixed-encoding text in metadata (alpha5)
* Fixed: RPG Maker loops should work again.
* Fixed: Recomposer files with strange tempo changes crashed the component. (alpha4)
* Fixed: HMI conversion added a second Note On event after every note instead of a Note Off event.(alpha7)
* Fixed: Apply button remained active even if nothing was changed. (#18) (alpha7)

Only available from GitHub during testing.
7
3rd Party Plugins - (fb2k) / Re: help setting up Georgia-ReBORN please
Last post by TT -
You do not follow my instructions...

Look at the attached video, this is how it should look when you start foobar and you have some albums in the playlist.
The player will display the Playlist panel on startup, no top menu panel buttons are active.

Then you just move the mouse to the Playlist top bar like in the video.
As you see, the text hides when the mouse leaves the top bar, this is the playlist manager text button auto-hide feature.
You can also disable the auto-hide feature as shown in the video. There is nothing more to it, it is just that simple.

If nothing is selected ( i.e on foobar startup ) it will show the total track length of the entire playlist,
if you select few tracks it will calculate the selected tracks total length and if you select all ( CTRL + A )
it will show again the total tracks length.

P.S If one of the top menu panel buttons are active ( Details, Library, Biography, Lyrics ),
you click on the active button again to return to the Playlist panel. These panel buttons can be toggled.

-TT
9
MP3 - General / Re: Resurrecting/Preserving the Helix MP3 encoder
Last post by maikmerten -
Thanks a lot for your effort!  I think that indeed the approach you chose is the best that can be done without turning things upside down and potentially introducing all sorts of nasty surprises!

Locally, I already have a version that omits the 8-bit special case, building on top of your patch :-)
10
MP3 - General / Re: Resurrecting/Preserving the Helix MP3 encoder
Last post by Case -
Happy to hear you also see things working correctly. I initially created routines that converted the read PCM data to float directly, but all the gapless length handling is based on sizes and would have needed fixes everywhere. So I just patched the original on-the-fly floatification. I forgot about unifying the 8-bit case in the excitement.