The officially official Devuan Forum!

You are not logged in.

#126 Re: Freedom Hacks » [HowTo] audacious_4.5-devel-1_amd64.deb (meson+samu and muon+samu) » 2025-11-05 17:29:59

libaudcore is inside Audacious
libaudcore is searching for "registered" plugins and cannot find them.

debdir/usr/lib/libaudcore.so.5.5.0

#127 Re: Freedom Hacks » ALSA without PulseAudio and PipeWire » 2025-11-05 17:06:33

Your ALSA is not pure, To get pure ALSA, you have to purge pulseaudio from libasound2-plugins
_https://dev1galaxy.org/viewtopic.php?id=7523

It is not enough to remove pulseaudio, you have to remove other crap to get "pure alsa".

Mate sound applet works with ALSA without problems.

EQ is needed for semi-deaf users to enhance high frequencies.

#128 Re: Freedom Hacks » [HowTo] audacious_4.5-devel-1_amd64.deb (meson+samu and muon+samu) » 2025-11-05 16:27:13

If you want to try OSS4, you may better try it on ArchLinux.

Arch Linux AUR repository
_https://aur.archlinux.org/packages/oss

Package Details: oss 4.2_2020-2
Package Actions
View PKGBUILD / View Changes
Download snapshot
Search wiki
Git Clone URL:    https://aur.archlinux.org/oss.git (read-only, click to copy)
Package Base:    oss
Description:    Open Sound System UNIX audio architecture
Upstream URL:    http://developer.opensound.com/
Keywords:    oss
Licenses:    GPL2
Conflicts:    libflashsupport-oss-git, libflashsupport-oss-nonfree, oss-git, oss-nonfree
Submitter:    keenerd
Maintainer:    alexdw
Last Packager:    alexdw

Better oss-git:

_https://aur.archlinux.org/packages/oss-git
Package Details: oss-git 5693e1e-2
Package Actions
View PKGBUILD / View Changes
Download snapshot
Search wiki
Git Clone URL:    https://aur.archlinux.org/oss-git.git (read-only, click to copy)
Package Base:    oss-git
Description:    Open Sound System UNIX audio architecture
Upstream URL:    http://developer.opensound.com/
Keywords:    oss
Licenses:    GPL2
Conflicts:    libflashsupport-oss, libflashsupport-oss-nonfree, oss, oss-nonfree
Provides:    oss
Submitter:    Nowaker
Maintainer:    seawright
Last Packager:    seawright

I used PKGBUILD of oss-git package.

maybe therefore the error?

Error was because they both should be recompiled correctly.

#129 Re: Freedom Hacks » [HowTo] audacious_4.5-devel-1_amd64.deb (meson+samu and muon+samu) » 2025-11-05 16:09:34

It cannot find audacious-plugins, because they were compiled with another "audacions"

INFO ../src/libaudcore/plugin-registry.cc:431 [operator()]: Plugin not found: oss4

OSS4 plugin will not be compiled, because you do not have OSS4 installed. It will newer find it.

The method:
1. Compile Audacious
2. Install Audacious
3, Compile Audacious-plugins.
4. Install them

Do not enable OSS4 in the config, because you do not have it installed.

#130 Re: Freedom Hacks » ALSA without PulseAudio and PipeWire » 2025-11-05 15:35:27

Are you trying to instsall libasound2-plugin-fftrate from Devuan repositories?

You have to compile it and install with dpkg. Then you can find it with "apt show", for example

$ apt show libasound2-plugin-fftrate
Package: libasound2-plugin-fftrate
Version: 1.6.3
Status: install ok installed
Priority: optional
Section: libs
Maintainer: Petrov Sergey <petrovse@mail.ru>
Installed-Size: 172 kB
Depends: libasound2, libasound2-plugins
Download-Size: unknown
APT-Manual-Installed: yes
APT-Sources: /var/lib/dpkg/status
Description: ALSA library additional plugin
 This package contains plugin for the ALSA library that are
 not included in the main libasound2 package.
 .
 The following plugins are included:
   - fftrate: FFT based rate converter
 .
 ALSA is the Advanced Linux Sound Architecture.
 .
 (Repackaged on Tue, 04 Nov 2025 03:13:01 +0100 by dpkg-repack.)

@bai4Iej2need

1. You have not read the manual.
2. You claim that is it "a rush job".

Are you a sort of pulseaudio activist?

#131 Re: Desktop and Multimedia » [SOLVED] (alsa) arateconf not saving properly » 2025-11-05 15:03:58

On the contrary, that would be a regress. If the brain is not trained it regresses.
The brains of semi-deaf, semi-blind, and half-demented victims of pulseaudio do need regular training.

The brain experiences cognitive decline if not mentally stimulated, a process often described as "use it or lose it". Just as a muscle weakens from inactivity, a lack of mental training can lead to reduced thinking skills, memory problems, and a decline in creativity. This is because the brain can be thought of as a muscle that strengthens and maintains its function through regular use and challenges.

#132 Re: Freedom Hacks » ALSA without PulseAudio and PipeWire » 2025-11-05 14:32:11

reboot is needed after removal of pulseaudio/pipewire
reboot is not needed for arateconf

fftrate should be configured for the maximum sample rate which is supported by your soundcard.
For example, Intel DHA codec (motherboard) supports 32bit 192khz (max), and you set 32bit 192khz with arateconf.
Then run test with arateconf (all audio apps should be closed, when you run test).

The fftrate resampler is much better than the built-in HW resampler of your sound card.
That is why fftrate should be configured for the maximum sample rate which is supported by your soundcard.

Most important, remove pulseaudio/pipewire and purge pulseaudio from libasound2-plugins
_https://dev1galaxy.org/viewtopic.php?id=7523

#133 Re: Freedom Hacks » ALSA without PulseAudio and PipeWire » 2025-11-05 13:24:41

Have you already purged pulseaudio from libasound2-plugins?

#134 Re: Freedom Hacks » How to purge pulseaudio from libasound2-plugins » 2025-11-04 22:03:41

If, for example, you enable "bit perfect" in Audacious and trying to play a DXD wave 352.8 kHz, Audacious will configure the software mixer of macOS (Audio Midi setup) to 88.2kHz  (352.8/4 = 88.2). As a result DXD will be downsampled by macOS resampler to 88.2kHz. But stupid mpv "bit perfect" will set the system mixer to 90kHz (then DXD will be downsampled by mpv with crappy resamplers). It means that both users and developers of mpv are ignorant of Arithmetic (and, perhaps, demented).

On macOS, you better try IINA, it supports both exclusive mode and bit perfect in a rather stupid way.

#135 Re: Freedom Hacks » How to purge pulseaudio from libasound2-plugins » 2025-11-04 21:40:14

I compilted it with OSS4.
Your mpv is compiled in exactly the same way as Audacious.
You should try Audacious "bit perfect" on macOS

Do you know what is "bit perfect" on macOS?

#136 Re: Freedom Hacks » How to purge pulseaudio from libasound2-plugins » 2025-11-04 21:14:57

You do not need it.

libjack-dev was installed as a build dependency for Audacious. It can be safely removed

What is your

audacious --version

libjack is a dependency for Audacious-plugins.

You may better remove almost all false dependencies from DEBIAN/control and correct version number of your Audacious

For example

Depends: libc6 

#137 Re: Freedom Hacks » ALSA without PulseAudio and PipeWire » 2025-11-04 20:58:46

Devuan 5 only

$ inxi -Sxxx
System:
  Host: devuan Kernel: 6.1.0-40-amd64 arch: x86_64 bits: 64 compiler: gcc
    v: 12.2.0 Desktop: MATE v: 1.26.0 info: mate-panel wm: marco v: 1.26.1 vt: 7
    dm: LightDM v: 1.26.0 Distro: Devuan GNU/Linux 5 (daedalus)

#138 Re: Freedom Hacks » How to purge pulseaudio from libasound2-plugins » 2025-11-04 20:47:03

Run simulate without sudo

apt remove libjack-dev libjack0 --simulate

#139 Freedom Hacks » How to purge pulseaudio from libasound2-plugins » 2025-11-04 12:38:46

igorzwx
Replies: 8
source: alsa-plugins
https://tracker.debian.org/pkg/alsa-plugins
https://packages.debian.org/source/stable/alsa-plugins
http://deb.debian.org/debian/pool/main/a/alsa-plugins/alsa-plugins_1.2.12-2.dsc

NOTE: If needed, use dget --extract --allow-unauthenticated

Install build dependencies

sudo apt build-dep libasound2-plugins

Simulate

$ apt source libasound2-plugins --simulate
Reading package lists... Done
Picking 'alsa-plugins' as source package instead of 'libasound2-plugins'
NOTICE: 'alsa-plugins' packaging is maintained in the 'Git' version control system at:
https://salsa.debian.org/alsa-team/alsa-plugins.git
Please use:
git clone https://salsa.debian.org/alsa-team/alsa-plugins.git
to retrieve the latest (possibly unreleased) updates to the package.
Need to get 422 kB of source archives.
Fetch source alsa-plugins

Download source code:

$ dget --extract http://deb.debian.org/debian/pool/main/a/alsa-plugins/alsa-plugins_1.2.12-2.dsc
...
dpkg-source: info: extracting alsa-plugins in alsa-plugins-1.2.12
dpkg-source: info: unpacking alsa-plugins_1.2.12.orig.tar.bz2
dpkg-source: info: unpacking alsa-plugins_1.2.12-2.debian.tar.xz
dpkg-source: info: using patch list from debian/patches/series
dpkg-source: info: applying arcam-av_uses_pthreads.patch
$ ls -1
alsa-plugins-1.2.12
alsa-plugins_1.2.12-2.debian.tar.xz
alsa-plugins_1.2.12-2.dsc
alsa-plugins_1.2.12.orig.tar.bz2
alsa-plugins_1.2.12.orig.tar.bz2.asc

Disable pulseaudio in debian/rules

$ cat alsa-plugins*/debian/rules | grep disable -B3
override_dh_auto_configure:
	dh_auto_configure -- \
		--with-plugindir=/usr/lib/$(DEB_HOST_MULTIARCH)/alsa-lib \
		--disable-static --disable-pulseaudio

Set DH_VERBOSE

$ cat alsa-plugins*/debian/rules | grep export
export DEB_BUILD_MAINT_OPTIONS = hardening=+all
export DEB_LDFLAGS_MAINT_APPEND = -Wl,-z,defs
export DH_VERBOSE=1

cd sourcedir

cd alsa-plugins-*

Build Debian binary package (deb)

$ dpkg-buildpackage -us -uc -b
...
Plugin directory: /usr/lib/x86_64-linux-gnu/alsa-lib
ALSA_CFLAGS: 
ALSA_LIBS: -lasound 
JACK plugin:        yes
  JACK_CFLAGS: 
  JACK_LIBS: -ljack -lpthread 
Pulseaudio plugin:  
Samplerate plugin:  yes
  samplerate_CFLAGS: 
  samplerate_LIBS: -lsamplerate 
Maemo plugin:       no
  Using Osso resource manager: no
Libav/ffmpeg config:
  LIBAV_CFLAGS:   -I/usr/include/x86_64-linux-gnu 
  LIBAV_LIBS:     -lavcodec -lavutil -lswresample  /  / 
Libav A52 plugin:   yes
Libav rate plugin:  yes
Speex rate plugin:  lib
Speex preprocess plugin:  yes
AAF plugin:         no
...
dpkg-deb: building package 'libasound2-plugins' in '../libasound2-plugins_1.2.12-2_amd64.deb'.
$ ls -1 ../*.deb
../libasound2-plugins_1.2.12-2_amd64.deb
../libasound2-plugins-dbgsym_1.2.12-2_amd64.deb

Check debdir: debian/libasound2-plugins

Simulate

$ apt purge libasound2-plugins --simulate
NOTE: This is only a simulation!
      apt needs root privileges for real execution.
      Keep also in mind that locking is deactivated,
      so don't depend on the relevance to the real current situation!
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following packages will be REMOVED:
  alsa-config-utils* libasound2-plugin-fftrate* libasound2-plugins*
0 upgraded, 0 newly installed, 3 to remove and 0 not upgraded.
Purg alsa-config-utils [1.6.3]
Purg libasound2-plugin-fftrate [1.6.3]
Purg libasound2-plugins [1.2.7.1-1]

The fftrate ALSA plugin packages will be removed

alsa-config-utils* libasound2-plugin-fftrate*

Before removal, create Debian packages from the installed ones

cd ..
sudo apt install fakeroot
$ fakeroot -u dpkg-repack alsa-config-utils libasound2-plugin-fftrate
dpkg-deb: building package 'alsa-config-utils' in './alsa-config-utils_1.6.3_amd64.deb'.
dpkg-deb: building package 'libasound2-plugin-fftrate' in './libasound2-plugin-fftrate_1.6.3_amd64.deb'.
$ ls -1 *.deb
alsa-config-utils_1.6.3_amd64.deb
libasound2-plugin-fftrate_1.6.3_amd64.deb
libasound2-plugins_1.2.12-2_amd64.deb
libasound2-plugins-dbgsym_1.2.12-2_amd64.deb

Purge ALSA plugins

sudo apt purge libasound2-plugins

Install libasound2-plugins and fftrate packages:

sudo dpkg -i alsa-config-utils_1.6.3_amd64.deb libasound2-plugin-fftrate_1.6.3_amd64.deb libasound2-plugins_1.2.12-2_amd64.deb

Notice that fftrate.conf was restored together with Debian packages

$ cat /etc/fftrate.conf | grep "Transform type" -A3
# Transform type
# Available: dct, fft (default: dct)
#transform = dct
transform = fft

Restart Firefox and test sound quality

Hi-Res Music 32 Bit - Greatest Audiophile Collection - Natural Beat Records
_https://rutube.ru/video/b54c962301787eb1f2758ac8ba97f5bf/

Gregorian Chant - Crux Fidelis, 2L audiophile reference recordings
_https://www.youtube.com/watch?v=Qnp3zjB52F0
_https://youtu.be/Qnp3zjB52F0

The Mesmerising sound of the OUD
_https://youtu.be/ZLbQcs3W0Bs

$ MOZ_LOG="cubeb:3" firefox 2>&1 rutube.ru/video/b54c962301787eb1f2758ac8ba97f5bf | grep "output stream rate"
[Child 29814: MediaDecoderStateMachine #1]: I/cubeb CubebStreamInit output stream rate 44100
$ MOZ_LOG="cubeb:3" firefox 2>&1 youtu.be/Qnp3zjB52F0 | grep "output stream rate"
[Child 30746: MediaDecoderStateMachine #1]: I/cubeb CubebStreamInit output stream rate 48000

Note on Exclusive Mode Limitations: Firefox uses 32-bit floating-point audio format by default. If your sound card does not natively support this format, exclusive mode (direct hw: device access) will not work. You must use the ALSA plug plugin for format conversion. Configure your ALSA default device to use type plug with slave.pcm "hw:X,Y" for automatic format conversion.

If you do not know what "plug plugin" is, install fftrate packages and configure ALSA with arateconf (interactive mode). It will fix all problems.

Why Rebuild libasound2-plugins After Removing PulseAudio

You've already removed the PulseAudio server from your Debian system. However, the PulseAudio ALSA plugin is still installed as part of the libasound2-plugins package. This leftover plugin causes problems even though the PulseAudio server is gone.

Exclusive mode is a critical feature for professional audio applications and low-latency audio work. It allows an application to take direct control of the audio hardware, preventing other applications from playing audio simultaneously and eliminating software mixing layers that add latency and potential quality degradation.

As long as the PulseAudio ALSA plugin is installed, any sort of exclusive mode or direct hardware access is impossible with ALSA. Even though you've removed the PulseAudio server, the plugin still intercepts all ALSA audio calls and tries to route them through the non-existent PulseAudio server.

This means:

1. No exclusive hardware access: Applications cannot open audio devices with hw:X,Y for direct hardware control.
2. No true low-latency mode: The plugin layer adds overhead even when it fails.
3. Audio initialization failures: Applications like Firefox fail to open ALSA devices because the plugin tries to connect to a PulseAudio server that doesn't exist (src/cubeb_alsa.c:718-720)

Why This Matters for Audio Applications

The leftover plugin blocks exclusive mode access and causes audio failures, making it impossible to achieve the low-latency, direct hardware access that removing PulseAudio was meant to enable. Applications using the cubeb audio library (like Firefox) detect the PulseAudio ALSA plugin and apply special workarounds: (src/cubeb_alsa.c:911-916)

These workarounds assume the PulseAudio server is running. When the server is removed but the plugin remains, applications experience:

- Format compatibility issues: Certain audio formats (especially 32-bit Float) fail to initialize (src/cubeb_alsa.c:1012-1016)
- Forced latency hacks: Applications apply minimum latency workarounds for a PulseAudio server that doesn't exist (src/cubeb_alsa.c:1063-1069).
- Complete audio failure: The plugin tries to route audio through PulseAudio, fails, and doesn't fall back to direct ALSA access.

What Rebuilding libasound2-plugins Does

By rebuilding libasound2-plugins with --disable-pulseaudio option, you:

1. Enable a sort of exclusive mode: Applications can now use hw:X,Y device names for direct hardware access without the PulseAudio plugin intercepting the calls.
2. Remove the broken plugin: The PulseAudio ALSA plugin won't be built or installed.
3. Enable direct ALSA access: Applications will use ALSA directly without trying to route through the non-existent PulseAudio server.
4. Fix audio playback: Applications like Firefox will work properly with all audio formats, including 32-bit Float.
5. Achieve lower latency: Without the plugin layer, audio has a more direct path to hardware.

Cubeb is the audio library that Firefox and other Mozilla applications use to play sound (include/cubeb/cubeb.h:16-22). Think of it as Firefox's "audio engine". When cubeb detects the PulseAudio ALSA plugin, it cannot provide exclusive mode access and must work around PulseAudio's limitations (src/cubeb_alsa.c:653-657).

With the plugin removed, cubeb can finally access ALSA directly, enabling exclusive mode capabilities and eliminating the workarounds that were necessary for the broken PulseAudio plugin.

Important: This affects ALL audio applications on your system, not just web browsers. Any application that uses ALSA for audio output will be impacted by the PulseAudio ALSA plugin:

    All web browsers - Firefox, Chrome, Chromium, Opera, Brave, Edge, and any other browser
    Media players - VLC, MPV, MPlayer, and other video/audio players
    Games - Both native Linux games and games running through Wine/Proton
    Audio production software - Audacity, Ardour, and other DAWs
    Communication apps - Discord, Zoom, Skype, and other VoIP applications
    Any other software that plays or records audio

The PulseAudio ALSA plugin sits at the ALSA library level, intercepting all audio calls system-wide. This means every application that tries to use ALSA will encounter the broken plugin trying to route audio through the non-existent PulseAudio server.

Rebuilding libasound2-plugins without PulseAudio fixes audio for your entire system, not just one application.

#140 Re: Freedom Hacks » [HowTo] audacious_4.5-devel-1_amd64.deb (meson+samu and muon+samu) » 2025-11-03 15:16:46

"Read-only file system"

Copy aiff files to your home directory and convert → wave → flac

flac --keep-foreign-metadata input.wav -o output.flac

A common strategy is to first extract the metadata using ffmpeg, perform the audio processing with sox, and then reapply the metadata to the final output file using ffmpeg.

Extract metadata from the original file to a text file using ffmpeg:

ffmpeg -i input.file -f ffmetadata metadata.txt

This saves global metadata. For more detailed stream-specific metadata, you might need a more complex ffmpeg command.

Process audio using sox:

sox input.file temp_output.file

Note that temp_output.file will have the default SoX comment and lack the original metadata.

Re-apply metadata to the final output file using ffmpeg:

ffmpeg -i temp_output.file -map_metadata 0 -metadata_global_key=value ... final_output.file

The -map_metadata 0 option tells ffmpeg to copy metadata from the first input file (which is temp_output.file in this case, but typically this step involves mapping from a third, metadata-only input file, which is more complex).
For simplicity, many users find it easier to work with a text file to set specific metadata fields manually using the -metadata option or a text file input.

#141 Re: Freedom Hacks » [HowTo] audacious_4.5-devel-1_amd64.deb (meson+samu and muon+samu) » 2025-11-03 14:35:47

To convert a WAV file to FLAC while keeping the metadata

flac --keep-foreign-metadata input.wav -o output.flac

Bellezza Crudel is a small selection of delightful cantatas and concertos. Vivaldi's world is one of heartfelt, musical intensity, confirming the Venetians' adoration of theatrical beauty.

Antonio Lucio Vivaldi (1678-1741)
Cantate RV 679, 660, 664, 678 / Concerti RV 484, 441

Original source DXD (352.8kHz/24bit)
Producer Morten Lindberg, balance engineer and recording producer
2L - the Nordic sound

Audacious macOS, Homebrew repository:
"bit perfect" mode is already implemented and works,
"exclusive mode" is also implemented, but fails.

On macOS, both "bit perfect" and "exclusive mode" work with IINA player (from Homebrew), but above 96 kHz crappy resamplers are automatically enabled.

Hog mode (aka, exclusive mode) in CoreAudio refers to exclusive access to an audio output device, allowing a single application to lock the DAC (Digital-to-Analog Converter) for its exclusive use, thereby bypassing system-level software mixing and resampling and potentially improving audio quality by reducing processing overhead.
This mode is particularly relevant for achieving bit-perfect audio playback, where the audio stream is transmitted without software resampling or format conversion.
On macOS, hog mode is implemented through CoreAudio's exclusive access capabilities, enabling applications to take control of the audio device and avoid interference from other audio streams.

#142 Re: Freedom Hacks » [HowTo] audacious_4.5-devel-1_amd64.deb (meson+samu and muon+samu) » 2025-11-03 14:08:52

No files found from Audacious? Can you get these files in file browser?

for f in *.aiff; do sox "$f" "${f%.aiff}.wav"; done
for f in *.wav; do flac "$f" "${f%.wav}.flac"; done

#143 Re: Freedom Hacks » [HowTo] audacious_4.5-devel-1_amd64.deb (meson+samu and muon+samu) » 2025-11-03 13:59:38

If a package was compiled on your system, it cannot have unsatisfied dependencies.

Do you have pulseaudio installed?

"No suitable mixer element found" is a well known pulseaudio problem (permissions)

For example:

The issue was permission-based. I logged into x as root briefly and pavucontrol opened with no problem, as did Audacious.
_https://www.linuxquestions.org/questions/linux-software-2/alsa-error-no-suitable-mixer-element-found-and-can%27t-connect-to-pulseaudio-4175623535/

#144 Re: Freedom Hacks » [HowTo] audacious_4.5-devel-1_amd64.deb (meson+samu and muon+samu) » 2025-11-03 13:46:54

How you got my dependencies for Devuan 5 into your package for Devuan 6.
The were not calculated, they were copied from my package.

Do you have pulseaudio installed?

#145 Re: Freedom Hacks » [HowTo] audacious_4.5-devel-1_amd64.deb (meson+samu and muon+samu) » 2025-11-03 13:36:51

The package "audacious-plugins" was compiled on Devuan 5 or Devuan 6 ?

Or you simply wrote wrong dependencies into DEBIAN/control to minimize work?
To minimize work, you should remove almost all dependencies from DEBIAN/control.

#146 Re: Freedom Hacks » [HowTo] audacious_4.5-devel-1_amd64.deb (meson+samu and muon+samu) » 2025-11-03 12:45:35

It has nothing to do with qt6.
To install dependencies run

sudo apt install -f

This "magic command" should fix all problems.

dpkg does not install dependencies from repositories, This can be done with apt or apt-get

You may notice that I got the same dependencies (see above):

libavformat59 (>= 7:5.0), ..., libflac12 (>= 1.3.0) 

The are available in the official repositories and can be easily installed.

NOTE: There is a conspiracy theory about a secret Devuan wiki, which explains how to install Debian packages with secret esoteric commands apt and apt-get

#147 Re: Freedom Hacks » [HowTo] audacious_4.5-devel-1_amd64.deb (meson+samu and muon+samu) » 2025-11-03 00:11:37

First you compile Audacious and install install it.
When Audacious is installed, you can compile Audacious-plugins.
Audacious is a build dependency for  Audacious-plugins.
Audacious-plugins are dependency for Audacious (it does not work without plugins).
When both installed everything should work.

sox input.aiff output.wav
flac -o output.flac input.wav
for f in *.aiff; do sox "$f" "${f%.aiff}.wav"; done
for f in *.wav; do flac "$f" "${f%.wav}.flac"; done

#148 Freedom Hacks » How to debug Firefox to detect resampling » 2025-10-23 14:41:02

igorzwx
Replies: 0

Configuration Editor for Firefox
_https://support.mozilla.org/en-US/kb/about-config-editor-firefox

Firefox's hidden preferences
URL: about:config

media.resampling.enabled	false

You can easily debug Firefox audio playback with a secret command.

Reference media files:

Hi-Res Music 32 Bit - Greatest Audiophile Collection - Natural Beat Records
_https://rutube.ru/video/b54c962301787eb1f2758ac8ba97f5bf/

Best Audiophile Vocal 24 bit - Hi-Res Music 2025 - Audiophile Voices
_https://www.youtube.com/watch?v=uO6jfQ5tQHM
_https://youtu.be/uO6jfQ5tQHM

$ youtube-dl -F "https://youtu.be/uO6jfQ5tQHM" | grep "audio only"
249          webm       audio only audio_quality_low   54k , webm_dash container, opus  (48000Hz), 30.39MiB
250          webm       audio only audio_quality_low   71k , webm_dash container, opus  (48000Hz), 39.87MiB
140          m4a        audio only audio_quality_medium  129k , m4a_dash container, mp4a.40.2 (44100Hz), 72.39MiB
251          webm       audio only audio_quality_medium  137k , webm_dash container, opus  (48000Hz), 76.97MiB
YouTube with Firefox [ALSA only]
mkdir Cubeb_LOGs
cd Cubeb_LOGs
MOZ_LOG="MediaDecoder:5,cubeb:5" firefox 2>&1 youtu.be/uO6jfQ5tQHM | tee firefox_youtube.log
$ cat firefox_youtube.log | grep "Input" -m3 -A3
Input:  44100 Hz, 2 ch, 's32_le' (0xa): dummy = 0, period = 1764
Output: 48000 Hz, 2 ch, 's16_le' (0x2): dummy = 0, period = 1920
Rates:  44100 --> 48000 (J: 0.00%, T: FFT, W: Vorbis)
Ok.
--
Input:  48000 Hz, 2 ch, 's32_le' (0xa): dummy = 0, period = 1920
Output: 48000 Hz, 2 ch, 's16_le' (0x2): dummy = 0, period = 1920
Rates:  48000 --> 48000 (J: 0.00%, T: None, W: Planar)
Ok.
$ cat firefox_youtube.log | grep "rate=44100" -m3
[Child 9639: Main Thread]: D/MediaDecoder MediaDecoder[7f121756ba00] MetadataLoaded, channels=1 rate=44100 hasAudio=1 hasVideo=0
[Child 9639: Main Thread]: D/MediaDecoder MediaDecoder[7f1216ea9000] MetadataLoaded, channels=1 rate=44100 hasAudio=1 hasVideo=0
[Child 9639: Main Thread]: D/MediaDecoder MediaDecoder[7f1216e86a00] MetadataLoaded, channels=1 rate=44100 hasAudio=1 hasVideo=0
$ cat firefox_youtube.log | grep "rate=48000" -m3
[Child 9639: Main Thread]: D/MediaDecoder MediaDecoder[7f1216ea9300] MetadataLoaded, channels=2 rate=48000 hasAudio=1 hasVideo=1
[Child 9639: Main Thread]: D/MediaDecoder MediaDecoder[7f1216ea9300] FirstFrameLoaded, channels=2 rate=48000 hasAudio=1 hasVideo=1 mPlayState=PLAY_STATE_LOADING transportSeekable=1

CONCLUSION:
[ALSA only] Firefox does not resample anything, but it is switching between two available audio formats in YouTube.

RuTube with Firefox [ALSA only]
MOZ_LOG="MediaDecoder:5,cubeb:5" firefox 2>&1 rutube.ru/video/b54c962301787eb1f2758ac8ba97f5bf | tee firefox_rutube.log
$ cat firefox_rutube.log | grep "Input" -m3 -A3
Input:  44100 Hz, 2 ch, 's32_le' (0xa): dummy = 0, period = 1764
Output: 48000 Hz, 2 ch, 's16_le' (0x2): dummy = 0, period = 1920
Rates:  44100 --> 48000 (J: 0.00%, T: FFT, W: Vorbis)
Ok.
--
Input:  44100 Hz, 2 ch, 's32_le' (0xa): dummy = 0, period = 1764
Output: 48000 Hz, 2 ch, 's16_le' (0x2): dummy = 0, period = 1920
Rates:  44100 --> 48000 (J: 0.00%, T: FFT, W: Vorbis)
Ok.
$ cat firefox_rutube.log | grep "rate=44100" -m3
[Child 10956: Main Thread]: D/MediaDecoder MediaDecoder[7f2c0b2af800] MetadataLoaded, channels=2 rate=44100 hasAudio=1 hasVideo=1
[Child 10956: Main Thread]: D/MediaDecoder MediaDecoder[7f2c0b2af800] FirstFrameLoaded, channels=2 rate=44100 hasAudio=1 hasVideo=1 mPlayState=PLAY_STATE_LOADING transportSeekable=1
$ cat firefox_rutube.log | grep "rate=48000" -m3
<nothing>

CONCLUSION:
[ALSA only] Firefox does not resample anything. Only rate=44100 is available.

One may test Firefox with apulse

#149 Freedom Hacks » How to change PreferredSampleRate in Firefox's about:config » 2025-10-23 03:00:00

igorzwx
Replies: 0

The top secret settings in Firefox's about:config are invisible. For example:

// Allows to get something non-default for the preferred sample-rate
media.cubeb.force_sample_rate
media.cubeb.backend
media.cubeb.output_device

_https://searchfox.org/firefox-main/source/dom/media/CubebUtils.cpp

#define PREF_VOLUME_SCALE "media.volume_scale"
#define PREF_CUBEB_BACKEND "media.cubeb.backend"
#define PREF_CUBEB_OUTPUT_DEVICE "media.cubeb.output_device"
#define PREF_CUBEB_LATENCY_PLAYBACK "media.cubeb_latency_playback_ms"
#define PREF_CUBEB_LATENCY_MTG "media.cubeb_latency_mtg_frames"
// Allows to get something non-default for the preferred sample-rate, to allow
// troubleshooting in the field and testing.
#define PREF_CUBEB_FORCE_SAMPLE_RATE "media.cubeb.force_sample_rate"
#define PREF_CUBEB_LOGGING_LEVEL "logging.cubeb"
// Hidden pref used by tests to force failure to obtain cubeb context

Open a new tab in Firefox. Type about:config in the address bar.
Type into "Search preference name"

media.cubeb.force_sample_rate

Select "Number"
Press "+"
Type "48000", then Enter

You have a new entry in Firefox's "hidden preferences":

media.cubeb.force_sample_rate        48000

Restart Firefox. Type about:support in the address bar.

Name 	Firefox
Version 	140.4.0esr
...
Media
Audio Backend	alsa
Max Channels	10000
Preferred Sample Rate	48000
Reference media files:

Hi-Res Music 32 Bit - Greatest Audiophile Collection - Natural Beat Records
_https://rutube.ru/video/b54c962301787eb1f2758ac8ba97f5bf/

Best Audiophile Vocal 24 bit - Hi-Res Music 2025 - Audiophile Voices
_https://www.youtube.com/watch?v=uO6jfQ5tQHM
_https://youtu.be/uO6jfQ5tQHM

$ youtube-dl -F "https://youtu.be/uO6jfQ5tQHM" | grep "audio only"
249          webm       audio only audio_quality_low   54k , webm_dash container, opus  (48000Hz), 30.39MiB
250          webm       audio only audio_quality_low   71k , webm_dash container, opus  (48000Hz), 39.87MiB
140          m4a        audio only audio_quality_medium  129k , m4a_dash container, mp4a.40.2 (44100Hz), 72.39MiB
251          webm       audio only audio_quality_medium  137k , webm_dash container, opus  (48000Hz), 76.97MiB
$ firefox 2>&1 youtube.com/watch?v=uO6jfQ5tQHM
Input:  44100 Hz, 2 ch, 's32_le' (0xa): dummy = 0, period = 1764
Output: 48000 Hz, 2 ch, 's16_le' (0x2): dummy = 0, period = 1920
Rates:  44100 --> 48000 (J: 0.00%, T: FFT, W: Vorbis)
Ok.

Input:  44100 Hz, 2 ch, 's32_le' (0xa): dummy = 0, period = 1764
Output: 48000 Hz, 2 ch, 's16_le' (0x2): dummy = 0, period = 1920
Rates:  44100 --> 48000 (J: 0.00%, T: FFT, W: Vorbis)
Ok.

Input:  48000 Hz, 2 ch, 's32_le' (0xa): dummy = 0, period = 1920
Output: 48000 Hz, 2 ch, 's16_le' (0x2): dummy = 0, period = 1920
Rates:  48000 --> 48000 (J: 0.00%, T: None, W: Planar)
Ok.

Input:  44100 Hz, 2 ch, 's32_le' (0xa): dummy = 0, period = 1764
Output: 48000 Hz, 2 ch, 's16_le' (0x2): dummy = 0, period = 1920
Rates:  44100 --> 48000 (J: 0.00%, T: FFT, W: Vorbis)
Ok.
$ firefox 2>&1 rutube.ru/video/b54c962301787eb1f2758ac8ba97f5bf
Input:  44100 Hz, 2 ch, 's32_le' (0xa): dummy = 0, period = 1764
Output: 48000 Hz, 2 ch, 's16_le' (0x2): dummy = 0, period = 1920
Rates:  44100 --> 48000 (J: 0.00%, T: FFT, W: Vorbis)
Ok.

The same is for PreferredSampleRate = 44100
It does not change Firefox's playback with ALSA.
You may test it with apulse

apulse firefox 2>&1

What has changed is that you can now see Preferred Sample Rate 48000 in about:support

The statement "The deaf may try a blind test. The blind may try a deaf test" is a philosophical observation about perspective, not a literal one. It points to the idea that people with different life experiences and challenges can gain new understanding by experiencing things from another's point of view.

#150 Freedom Hacks » How to debug crappy resamplers of Chromium and Brave » 2025-10-23 00:02:12

igorzwx
Replies: 0

Media: View and debug media players information
_https://developer.chrome.com/docs/devtools/media-panel
Chromium: chrome://media-internals
Brave: brave://media-internals

Brave is a great browser. It has a resampler inside, a sort of low quality linear interpolation, perhaps, because it is faster than "medium crap".

The brave://media-internals page is an official debugging tool

    1. Open a new tab and navigate to brave://media-internals
    2. Start playing an audio or video source in another tab.
    3. Go back to media-internals and click on the player entry for your media.
    4. Examine the kAudioTracks, etc.

NOTE: In YouTube and RuTube, "Hi-Res Music" means a sort of low quality mp3 (e.g., mp4a.40.2).

Reference media files:

Hi-Res Music 32 Bit - Greatest Audiophile Collection - Natural Beat Records
_https://rutube.ru/video/b54c962301787eb1f2758ac8ba97f5bf/

Best Audiophile Vocal 24 bit - Hi-Res Music 2025 - Audiophile Voices
_https://www.youtube.com/watch?v=uO6jfQ5tQHM
_https://youtu.be/uO6jfQ5tQHM

$ youtube-dl -F "https://youtu.be/uO6jfQ5tQHM" | grep "audio only"
249          webm       audio only audio_quality_low   54k , webm_dash container, opus  (48000Hz), 30.39MiB
250          webm       audio only audio_quality_low   71k , webm_dash container, opus  (48000Hz), 39.87MiB
140          m4a        audio only audio_quality_medium  129k , m4a_dash container, mp4a.40.2 (44100Hz), 72.39MiB
251          webm       audio only audio_quality_medium  137k , webm_dash container, opus  (48000Hz), 76.97MiB

RuTube: Hi-Res Music 32 Bit - Greatest Audiophile Collection - Natural Beat Records

brave://media-internals
kFrameTitle			"Hi-Res Music 32 Bit - Greatest Audiophile Collection - Natural Beat Records"
kFrameUrl			"https://rutube.ru/video/b54c962301787eb1f2758ac8ba97f5bf/"
kAudioTracks
[
  {
    "bytes per channel": 2,
    "bytes per frame": 4,
    "channel layout": "STEREO",
    "channels": 2,
    "codec": "aac",
    "codec delay": 0,
    "discard decoder delay": false,
    "encryption scheme": "Unencrypted",
    "has extra data": true,
    "profile": "unknown",
    "sample format": "Signed 16-bit",
    "samples per second": 44100,
    "seek preroll": "0us"
  }
]
"Selected FFmpegAudioDecoder for audio decoding, config: codec: aac, profile: unknown, bytes_per_channel: 2, channel_layout: STEREO, channels: 2, samples_per_second: 44100, sample_format: Signed 16-bit, bytes_per_frame: 4, seek_preroll: 0us, codec_delay: 0, has extra data: true, encryption scheme: Unencrypted, discard decoder delay: false, target_output_channel_layout: STEREO, target_output_sample_format: Unknown sample format"

[ALSA] Brave is upsampling (44100 → 48000 Hz) this particular "Hi-Res Music" of RuTube.

$ brave-browser-stable 2>&1 --audio-buffer-size=8192 rutube.ru/video/b54c962301787eb1f2758ac8ba97f5bf
Input:  48000 Hz, 2 ch, 's16_le' (0x2): dummy = 0, period = 1920
Output: 48000 Hz, 2 ch, 's16_le' (0x2): dummy = 0, period = 1920
Rates:  48000 --> 48000 (J: 0.00%, T: None, W: Planar)
Ok.

[apulse] Brave is not resampling (44100 → 44100 Hz) this particular "Hi-Res Music" of RuTube.

$ apulse brave-browser-stable 2>&1 rutube.ru/video/b54c962301787eb1f2758ac8ba97f5bf
Input:  44100 Hz, 2 ch, 's32_le' (0xa): dummy = 0, period = 1764
Output: 48000 Hz, 2 ch, 's16_le' (0x2): dummy = 0, period = 1920
Rates:  44100 --> 48000 (J: 0.00%, T: FFT, W: Vorbis)
Ok.

YouTube: Best Audiophile Vocal 24 bit - Hi-Res Music 2025 - Audiophile Voices

brave://media-internals
kFrameTitle		"YouTube"
kFrameUrl		"https://www.youtube.com/watch?v=uO6jfQ5tQHM"
kAudioDecoderName	"FFmpegAudioDecoder"
kAudioTracks	
[
  {
    "bytes per channel": 4,
    "bytes per frame": 8,
    "channel layout": "STEREO",
    "channels": 2,
    "codec": "opus",
    "codec delay": 312,
    "discard decoder delay": true,
    "encryption scheme": "Unencrypted",
    "has extra data": true,
    "profile": "unknown",
    "sample format": "Float 32-bit",
    "samples per second": 48000,
    "seek preroll": "80000us"
  }
]
"Selected FFmpegAudioDecoder for audio decoding, config: codec: opus, profile: unknown, bytes_per_channel: 4, channel_layout: STEREO, channels: 2, samples_per_second: 48000, sample_format: Float 32-bit, bytes_per_frame: 8, seek_preroll: 80000us, codec_delay: 312, has extra data: true, encryption scheme: Unencrypted, discard decoder delay: true, target_output_channel_layout: STEREO, target_output_sample_format: Unknown sample format"

[ALSA] Brave is not resampling (48000 → 48000 Hz) "Hi-Res Music" of YouTube.

$ brave-browser-stable 2>&1 --audio-buffer-size=8192 youtube.com/watch?v=uO6jfQ5tQHM
Input:  48000 Hz, 2 ch, 's16_le' (0x2): dummy = 0, period = 1920
Output: 48000 Hz, 2 ch, 's16_le' (0x2): dummy = 0, period = 1920
Rates:  48000 --> 48000 (J: 0.00%, T: None, W: Planar)
Ok.

[apulse] Brave is downsampling (48000 → 44100 Hz) "Hi-Res Music" of YouTube.

$ apulse brave-browser-stable 2>&1 youtube.com/watch?v=uO6jfQ5tQHM
Input:  44100 Hz, 2 ch, 's32_le' (0xa): dummy = 0, period = 1764
Output: 48000 Hz, 2 ch, 's16_le' (0x2): dummy = 0, period = 1920
Rates:  44100 --> 48000 (J: 0.00%, T: FFT, W: Vorbis)
Ok.
brave://media-internals
kFrameUrl		"https://www.youtube.com/watch?v=uO6jfQ5tQHM"
kFrameTitle		"Best Audiophile Vocal 24 bit - Hi-Res Music 2025 - Audiophile Voices - YouTube"
kAudioTracks	
[
  {
    "bytes per channel": 4,
    "bytes per frame": 8,
    "channel layout": "STEREO",
    "channels": 2,
    "codec": "opus",
    "codec delay": 312,
    "discard decoder delay": true,
    "encryption scheme": "Unencrypted",
    "has extra data": true,
    "profile": "unknown",
    "sample format": "Float 32-bit",
    "samples per second": 48000,
    "seek preroll": "80000us"
  }
]
"Selected FFmpegAudioDecoder for audio decoding, config: codec: opus, profile: unknown, bytes_per_channel: 4, channel_layout: STEREO, channels: 2, samples_per_second: 48000, sample_format: Float 32-bit, bytes_per_frame: 8, seek_preroll: 80000us, codec_delay: 312, has extra data: true, encryption scheme: Unencrypted, discard decoder delay: true, target_output_channel_layout: STEREO, target_output_sample_format: Unknown sample format"

CONCLUSION: Chromium developers are certainly deaf.

Board footer

Forum Software