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
Scientific Discussion / Re: AudioWorklet-based filter bank spectrum analyzer
Last post by TF3RDL -
Features I currently have in this project:
  • 1/nth octave bands mode (equal-tempered scale, adjustable reference frequency and supports transposing like in old foo_musical_spectrum component for foobar2000) and frequency bands mode (supports Mel/Bark/ERB psychoacoustic scales and others like hyperbolic sine, nth root, and period, in-addition to standard linear and logarithmic frequency scales)
  • Adjustable frequency range in Hz for frequency bands equally spaced in arbitrary frequency scale, and in note index # (starting from C0 = ~16Hz) on octave bands mode
  • Truly constant-Q (assuming logarithmic frequency scale since the bandwidth is automatically determined by frequency band's lower and upper boundaries), no longer limited to 32768 samples (~682.7ms at 48kHz sampling rate) but it can be set to be variable-Q by unchecking "Use constant-Q instead" if you want better time resolution at lower frequencies, where minimum Hz resolution (to cope with time/frequency resolution tradeoff) is specified by "time resolution" parameter in milliseconds
  • Bandwidth for this filter bank is adjustable; higher values makes a smoothed spectrum while having improved time resolution on bass frequencies at the same time and vice versa
  • Three filter bank types are supported:
    • Analog-style analyzer: Cascaded biquad bandpass filters, simply stacking one another is good enough even without a flat-top response of Butterworth bandpass filters. Also, Q values are prewarped (unless you opt-out) for "truly" logarithmic resolution as this filter bank is designed using bilinear transform (borrowed from RBJ EQ cookbook)
    • Sliding windowed infinite Fourier transform: which is a bank of IIR complex resonators and it resembles a Gammatone filter on 4th order cascaded SWIFT
    • Variable-Q sliding DFT: Recursive FIR filter bank, complex-valued. Also have an option to use NC method to enhance time/frequency resolution. Window function options are limited to cosine sums like Hann and Hamming windows but custom frequency-domain windowing are supported and since it is a FIR type of filter bank, there is a "maximum time resolution" parameter that determine how long the circular buffer should be, which is no longer constant-Q if gets too low
  • For IIR filter bank modes: Adjustable filter order, higher values reduces leakage at the expense of some time resolution (especially on lower frequencies)
  • Peak decay and exponential moving average-based smoothing as well as optional fading peaks effect. Also an option to perform time smoothing operation during calculation rather than after (in other words, per-sample instead of per-frame) for greater accuracy and framerate-independence
  • Linear and nth root amplitude scale is supported in-addition to logarithmic/dB scale. Also, dB range on this visualization can be adjusted and "Use absolute value" sets minimum dB range to -∞ dBFS on linear/nth root amplitude mode
  • Multiple X-axis scales supported:
    • Decade: A standard grid for logarithmic scale
    • Octaves: Each label/line corresponds to center frequencies of a common 10-band graphic equalizer
    • Notes: Frequency gridlines are equidistantly-spaced in logarithmic frequency scale, following 1/12th octave bands and each label displays musical notes instead of Hz
    • Automatic: Frequency grid-lines and labels corresponds to actual frequency bands, much like foobar2000's built-in "Spectrum" visualization though X-axis labels become cluttered on large number of bands
  • Y-axis labels are in dB even if in linear/nth root scale and dB step for Y-axis grid are adjustable. Common dB interval values to set are 6dB, 10dB, 12dB, and 20dB, though it can be almost any value
  • As this project is intended towards audio analysis algorithms (in this case, IIR filter banks) and not intended to be eye-candy after all, color customization is very limited; it boils down to just light/dark mode and a switch between solid color and color gradient (borrowed from foobar2000 built-in visualizations for gradients)

This works best if you have a CPU that is much newer than a relatively-ancient Intel Core 2 Duo series as it demands more CPU than FFT-based analyzers using AnalyserNode.getFloatTimeDomainData() + FFT library

BTW, when using "Analog-style analyzer" mode and a "filter order" of 1, it produces a shape of the frequency bars visualization that reminds me of a hybrid of Windows Media Player's "Bars" and VLC media player's "Spectrum" visualizations where the former is for true log frequency scale and general shape, and the latter for spectral leakage and apparently equal peak width
2
General - (fb2k) / Reprocessing ReplayGain Values
Last post by gravitron_pgh -
I have a very large collection of music.  Whenever I add to my collection, I process the Replay Gain values prior to moving the music into my Library.

The problem is that I am just now realizing that this value is only processed for files where a REPLAYGAIN Value does not already exist.

I do not know which files I have that already had a ReplayGain Value prior to my processing them.  Thus, I am not sure if I have files that do not follow the libebur128 standard.

I know I have the option to delete the existing ReplayGain values and process them again.  But, is there an easier way?  For example:

1. Filter files where the ReplayGain Value was not processed by my current instance of foobar2000.

2. Filter files that were not processed using the libebur128 standard.

Then, I could delete the ReplayGain Value and reprocess it.

Or,

3. Have the step of deleting the existing value and reprocessing a new one created as a single action/file change.

Or, do I just need to bite the bullet and do this in two phases, deleting the values, then reprocessing them again for all files?

I have 12TB of music so any steps to shorten the process or hard drive/processor usage is appreciated.  Thank you.
5
Other Lossy Codecs / Re: Quite OK Audio (QOA)... anyone ?
Last post by Case -
In case anyone is interested, I made an alternative QOA decoder component for foobar2000 using a self-written decoder based on the specs. The component can be downloaded here: https://foobar.hyv.fi/?view=foo_input_qoa.
This component should implement all QOA features. Channel support has no artificial limits, streaming format is supported, the correct channel maps are used as documented in the specs. Seeking is sample-accurate. Tagging is supported and I added custom support for overriding default channel order with a tag.
6
General - (fb2k) / Re: Possible to have Custom Buttons for Dark & Light Mode?
Last post by marc2k3 -
A script included with JScript Panel 3 already does this...



The obvious downside is that adding your own buttons is not easy.

FWIW, it works by drawing single font symbols so the colour/size can be anything. I use the Segoe Fluent Icons font for my own scripts but anyone writing their own can use whatever font they want.

https://learn.microsoft.com/en-us/windows/apps/design/style/segoe-fluent-icons-font

edit: the included script is called "Menu + Playback Buttons + Custom Colours" available from the Samples button in the Configuration window.

7
General - (fb2k) / Removing "silent" in hidden track in multi-track single flac file
Last post by Just_Addict -
I've been fruitlessly trying to suppress a long gap between the listed last track and a hidden track in a multi-track flac file.
I only found one old thread asking the same question, but the given solution is not what I want. It works but the track before the hidden one is still reported too long and the waveseekbar still shows a lot of wasted space, resulting in loss of resolution detail.

Foobar2000 complains if I use POSTGAP that it is not supported, even though valid in cuesheets, and PREGAP is just ignored.
This should not be this difficult. Like why is foobar2000 saying postgap is 't valid even though as far as I could find, it is a valid entry? And why is pregap just ignored when it comes to reporting tracklength?
8
Support - (fb2k) / ASIO output 2.2.2, strange bit depth and sample rate info in logs
Last post by peter81 -
Hi,

Looong-time Foobar user here.

To test unrelated issue, I've been checking the console log of foobar 2.2 preview (2023-05-23) x64 and found 2 strange things about ASIO output (foo_out_asio 2.2.2) :

1) when I start any 24-bit (or even 32bit just for testing) track this is what I see in the log:
Opening track for playback: "D:\track_name_here.flac"
new service_impl_t<autoproxy_output_v5>(device = "ASIO : Combo384 ASIO 1.03", buffer_length = 0.050s, dither = false, bitdepth = 16)


it shows bitdepth as 16... Is this actually the bitdepth that output is going to use or just a default init value that's logged and it switches to a correct value afterwards (but not shown in the logs)?

DAC uses Amanero Combo384 USB interface with the latest drivers installed and tested with other apps to support 16-32bit with 44.1-384kHz,
No DSPs were active during testing and bit depth is set to auto (the only option for ASIO) in the output device settings in Foobar.

2) when I start playing any track that's above 88/96khz I get this:
autoproxy_output::process_samples() => Input stream [channels: 2, samplerate: 3072000, channel_config: 0x00000003]
autoproxy_output::process_samples() => Output stream [channels: 2, samplerate: 3072000, channel_config: 0x00000003]
autoproxy_output::process_output(transition = 0.000)
autoproxy_output::process_samples(channels = 2, sample_rate = 3072000, channel_config = 0x00000003)
autoproxy_output::process_samples() => Input stream [channels: 2, samplerate: 192000, channel_config: 0x00000003]
autoproxy_output::process_samples() => Output stream [channels: 2, samplerate: 192000, channel_config: 0x00000003]
autoproxy_output::process_output(transition = 0.000)
autoproxy_output::process_samples(channels = 2, sample_rate = 192000, channel_config = 0x00000003)


from the looks of it, it's opening stream with insane sample rate of 3072000 and then switches to a correct one,
with everything lower than 174/192khz I get only one entry for the input stream with correct sample rate.
Is it supposed to be like this?

Let me know if you need any other logs or configured settings.
 
Would be very grateful for clarification, Thanks!
9
General - (fb2k) / Re: Possible to have Custom Buttons for Dark & Light Mode?
Last post by Terence -
Come to think of it, there are other ways, but it's no longer the icons themselves:
- with CUI, you can save layouts. So having one layout for the light theme and another for the dark theme (with the corresponding icons). You can then change the layout using the View > Layout menu, or a button or a keyboard shortcut. This doesn't change the main toolbar at the top, but it does change the other toolbars, so an additional toolbar is required.
- with DUI, you can save themes in a .fth file  (in Preferences > Display > DUI > Import / Export Theme ). The theme used is the theme.fth file in the configuration folder (Roaming folder). When I double-click on a .fth file, it imports the theme into foobar. But it also brings up a “Choose Theme Sections to Import” window every time. And it depends on your layout, but I find it slower than with CUI.
- I use Auto Dark Mode to automatically change the system theme in the morning and evening. It can be used to automatically trigger scripts. I use AutoHotkey to trigger keyboard shortcuts (e.g. change layout in CUI). It also lets you do lots of other things, like open a theme.fth file (for DUI), modify a registry key, change a setting in a file, replace a file, click wherever you want... I use this for a few programs that don't have automatic theme changes (it's a bit complicated to do). I'm glad dark mode has been added to foobar2000 and CUI.
- Maybe with a toolbar made with a javascript panel? JScript Panel or Spider Monkey Panel. It should be possible to make a toolbar that changes theme automatically (I've already made a volume button that follows the dark or light mode, from SMP's sample scripts, so it should be possible). But I have no idea if it's possible to redo all the buttons in javascript. I don't know much about it, so I can't say.
I'm saying some things from memory, so I hope I'm not talking too much nonsense.
10
Other Lossy Codecs / Re: exhale - Open Source USAC encoder
Last post by john33 -
Where does "exhale channel remap" come from? It's not required and I've never seen it before. And, the previous version would encode multichannel audio but the channels were not necessarily in the correct order.