You are not logged in.
Pages: 1
I thought to mention that I've started on a debian packaging of the fftrate ALSA plugin. This is initially aimed at Devuan's experimental repository and that packaging has its source residence in Devuan's git store, at https://git.devuan.org/devuan/fftrate.git
I will submit it to debian in due course.
Online
Well done on getting fftrate packaged — this is a meaningful step toward better, more independent audio on Linux.
I’d like to gently suggest a small improvement to ensure long-term compatibility: in debian/rules, consider adding a sed pre-build step to handle the min(/max( macro clashes, like so:
override_dh_auto_build:
find . -type f \( -name "*.cpp" -o -name "*.h" \) -exec sed -i -e 's/min(/MIN(/g' -e 's/max(/MAX(/g' {} +
dh_auto_buildThis is a proven, lightweight fix used in other ALSA modules and avoids C++ keyword conflicts without requiring source forks.
Also, if you haven’t already, do take a look at the packaging work already done in /debian/packets/ — the control, *.install, and *.postinst files there are excellent references. It’s great to see collaborative effort turning into real infrastructure.
Thank you again for making high-quality ALSA audio accessible to all.
Offline
Thanks. Yes it's now packaged and added to Devuan experimental.
It's using quilt packaging with a minor source touch-up patch to resolve compiler complaints, and a separate "packaging" patch that sets it up for gbp-buildpackage. Presently only the plugin package is built since the binaries lack man pages, and I'm looking into making a man page for the plugin.
Online
A first draft
File: fftrate.7
.TH FFTRATE 7 "November 2025" "1.6.3" "Miscellaneous"
.SH NAME
fftrate \- FFT-based high-quality ALSA sample rate converter
.SH DESCRIPTION
An ALSA plugin providing high-fidelity sample rate conversion via FFT resampling.
Enable via:
.IP
defaults.pcm.rate_converter "fftrate"
.PP
in ~/.asoundrc or use
.B arateconf
to generate it interactively.
.SH CONFIGURATION
See /etc/fftrate.conf for advanced settings.
.SH FILES
.TP
/etc/fftrate.conf
Global configuration.
.TP
~/.asoundrc
User-specific ALSA config.
.SH AUTHOR
Petrov S.E., https://github.com/PetrovSE/fftrate File: arateconf.1
.TH ARATECONF 1 "November 2025" "1.6.3" "User Commands"
.SH NAME
arateconf \- interactive ALSA configuration tool for fftrate
.SH DESCRIPTION
Generates ~/.asoundrc to use fftrate as the default sample rate converter.
Supports device selection, format setup, and hardware testing.
.SH OPTIONS
No command-line options. Runs interactively.
.SH INTERACTIVE COMMANDS
.TP
0, 1, ...
Select sound card.
.TP
F
Change sample format (bit depth, rate, channels).
.TP
T
Run hardware compatibility test.
.TP
S
Save configuration to ~/.asoundrc.
.TP
ESC
Exit without saving.
.SH FILES
~/.asoundrc \- generated ALSA configuration.
.SH SEE ALSO
fftrate(7), pcm_conv(1), asoundrc(5) File: pcm_conv.1
.TH PCM_CONV 1 "November 2025" "1.6.3" "User Commands"
.SH NAME
pcm_conv \- high-quality FFT/DCT-based audio resampler
.SH SYNOPSIS
.B pcm_conv
.I [input file] [output file]
.RB [ " -c " number ]
.RB [ " -m " mask ]
.RB [ " -n " on|off ]
.RB [ " -I " input_order ]
.RB [ " -O " output_order ]
.RB [ " -b " bits ]
.RB [ " -f " frequency ]
.RB [ " -T " trans ]
.RB [ " -W " win ]
.BR [ -v ]
.BR [ -h | --help | --help-all ]
.SH DESCRIPTION
Converts WAVE files with high-quality sample rate conversion using FFT or DCT transforms.
.SH OPTIONS
.TP
.B \-c
Number of output channels: 1 (mono), 2 (stereo), up to 6 (3/2+SW).
.TP
.B \-m
Channel mask (may conflict with \-c).
.TP
.B \-n
Normalize channel matrix (default: on).
.TP
.BI \-I " order", \-O " order"
Input/output channel order: MS, ALSA, or OSS layout.
.TP
.BI \-b " bits"
Output bit depth: 8, 16, 24, 32, 32f, or 64f.
.TP
.BI \-f " Hz"
Output sample rate (6000–192000 Hz).
.TP
.BI \-T " dct|fft"
Transform type (default: dct).
.TP
.BI \-W " vorbis|hanning|rect"
Windowing function (default: vorbis).
.TP
.B \-v
Verbose output.
.TP
.B \-\-help-all
Show full help.
.SH FILES
.TP
/etc/fftrate.conf
System-wide configuration.
.TP
~/.asoundrc
User ALSA configuration (used by fftrate plugin).
.SH SEE ALSO
arateconf(1), fftrate(7) Install Man Pages
sudo cp -v pcm_conv.1 /usr/share/man/man1/
sudo cp -v fftrate.7 /usr/share/man/man7/
sudo cp -v arateconf.1 /usr/share/man/man1/
sudo mandb # Rebuild man database Now you can view them:
man pcm_conv
man fftrate
man arateconfDescription: Wave PCM utils
This package contains simple utilities for the wave PCM processing.
.
The following utilities are included:
- pcm_info: information of the data format in 'wav' file
- pcm_conv: standalone PCM converter
- pcm_mse: computing of the Mean Squared Error (MSE) between two 'wav' files in PCM format
This package contains utilities for the ALSA configuration.
.
The following utilities are included:
- arateconf: ALSA configurator
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
.
Offline
File: pcm_mse.1
.TH PCM_MSE 1 "November 2025" "1.6.3" "User Commands"
.SH NAME
pcm_mse \- compute Mean Squared Error (MSE) between two PCM WAV files
.SH SYNOPSIS
.B pcm_mse
.I <file1.wav> <file2.wav> [resid.wav]
.RB [ " -b " samples ]
.RB [ " -e " samples ]
.BR [ -h | --help | --help-all ]
.SH DESCRIPTION
Computes the MSE between two WAV files, optionally saving the residual (difference) signal.
Ideal for evaluating audio resampling quality.
.SH OPTIONS
.TP
.I file1.wav
First input WAV file.
.TP
.I file2.wav
Second input WAV file.
.TP
.I resid.wav
Optional output file for residual signal.
.TP
.BI \-b " samples"
Start comparison at sample number (default: 0).
.TP
.BI \-e " samples"
End comparison at sample number (default: end of file).
.TP
.B \-\-help-all
Show full help.
.SH EXAMPLE
.B pcm_mse 1.wav 2.wav -b 10 -e 10000000000
.PP
Compares samples 10 to 10,000,000,000.
.SH SEE ALSO
pcm_conv(1), pcm_info(1) File: pcm_info.1
.TH PCM_INFO 1 "November 2025" "1.6.3" "User Commands"
.SH NAME
pcm_info \- display audio format and metadata of a WAV file
.SH SYNOPSIS
.B pcm_info
.I <file.wav>
.SH DESCRIPTION
Displays detailed format information of a WAV file:
.IP
- Sample rate (Hz)
.IP
- Number of channels
.IP
- Bit depth (and actual storage)
.IP
- Channel mask and layout
.IP
- Total samples and duration
.SH OUTPUT
Prints to stdout:
.PP
Parameters:
.br
Samples rate = 192000 Hz
.br
Channels = 2
.br
Bits per sample = 24 (actual: 24, fixed)
.br
Extensible format: ON
.br
Channel mask: 000003 hex, 3 dec
.br
Channels : FL, FR
.br
Samples : 42.080.131
.br
Duration: 3 min 39.167349 sec
.SH EXAMPLE
.B pcm_info HiRes.wav
.SH SEE ALSO
pcm_mse(1), pcm_conv(1) Install Man Pages
sudo cp -v pcm_conv.1 /usr/share/man/man1/
sudo cp -v fftrate.7 /usr/share/man/man7/
sudo cp -v arateconf.1 /usr/share/man/man1/
sudo cp -v pcm_mse.1 /usr/share/man/man1/
sudo cp -v pcm_info.1 /usr/share/man/man1/sudo mandb # Rebuild man database Now you can view them:
man pcm_conv
man fftrate
man arateconf
man pcm_mse
man pcm_info Offline
Great. Is that github project yours, or something you could add to? As of principle it's best when "upstream material" is added to upstream; otherwise it ends up as packaging patch(es) which is much less accessible for people.
In this case it would also be possible to make an upstream-based fork within the packaging project to include these things (and maybe some of the other good documentations you have written).
Or even better would be that you create your own project at, say, git.devuan.org (or codeberg.org) as a fork of the github upstream, and then add your documentations and man pages to that. My packaging project can track that instead.
Note that "side documentation", including man pages, may well reside at top level or perhaps a "doc" directory, without particular format constraints. Often it's plain text files or markup files that get gzipped in the packaging. In the packaging it's typically placed in /usr/share/doc/$package/ (except the man pages of course)
Online
fftrate is a project of Sergei Petrov
_https://github.com/PetrovSE/fftrate
I created man pages to help you with packaging
Info from old pcm-conv:
Short name: FFT-DCT4-MDCT
Long name : FFT, DCT4 and MDCT by Cooley-Tukey, Good-Thomas and Winograd algorithms
Version : 2.0.0.2
Build : Feb 28 2012, 19:47:28, linux-x86_64It seems that the fftrate resampler was created in 2007.
Thank you very much for packaging fftrate.
Offline
There's now both the plugin package, with added manpage, and an fftrate-utils package, with binaries and man pages, in Devuan's experimental repository.
The next step for that will be to get it into debian, which is a slower process.
Online
wuld like to contribute to make it happen also for experimental repository
irisc-v
arm64
sine am not a programmer would be willing to test the packages and help troubleshoot.
or in any way it be possible. ()
thank you very much.
Last edited by kapqa (Today 19:43:00)
Offline
In summary: version 1.6.3-3 has been built and will be available in a couple of days with the sources.list reference:
deb http://deb.devuan.org/devuan experimental mainNote that it is "/devuan" rather than "/merged", since the experimental repository is not merged. Further, I should warn that adding such sources.list lines willy-nilly can bring unplanned hair loss.
At the moment only the plugin package 1.6.3-1 is available.
The experimental building pipeline is for "all" architectures: amd64, arm64, armhf, i386, ppc64el and riscv64.
If you have another architecture, you may download the ".dsc", "tar.gz" and "tar.xz" files to a directory, cd into that and use the "debuild" schemata to build, like the following:
dpkg-source -x fftrate_1.6.3-3.dsc
cd fftrate-1.6.3
debuild -k0x12345678where "12345678" is replaced by your GPG key ID. That'll leave the build residue in the parent directory and the work tree fftrate-1.6.3 can be removed. Note that you may have to also install build dependencies; ideally it will tell you which to install. If it doesn't then please tell me (because then I have failed to declare that dependency)
Online
Pages: 1