Add comprehensive PipeWire audio configuration with noise suppression
- Add modules/sound/pipewire.nix with full PipeWire stack - Include RNNoise AI-powered noise suppression - Add EasyEffects with pre-configured presets for mic and speakers - Include multiple GUI applications (pavucontrol, helvum, qpwgraph, pwvucontrol) - Add helper scripts: audio-setup, microphone-test, validate-audio - Optimize for low-latency real-time audio processing - Enable auto-start and desktop integration - Remove duplicate PipeWire configs from hardware-co.nix and users/common.nix - Import sound module through desktop/common.nix for all desktop machines
This commit is contained in:
parent
54e80f5c13
commit
9c9dcdc196
8 changed files with 1416 additions and 13 deletions
546
modules/sound/easyeffects-presets.nix
Normal file
546
modules/sound/easyeffects-presets.nix
Normal file
|
@ -0,0 +1,546 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
# Create EasyEffects configuration directory and presets
|
||||
environment.etc = {
|
||||
# Input preset for microphone noise suppression
|
||||
"easyeffects/input/Microphone_Noise_Suppression.json".text = builtins.toJSON {
|
||||
input = {
|
||||
blocklist = [];
|
||||
equalizer = {
|
||||
balance = 0.0;
|
||||
bypass = false;
|
||||
input-gain = 0.0;
|
||||
left = {
|
||||
band0 = {
|
||||
frequency = 29.0;
|
||||
gain = 0.0;
|
||||
mode = "RLC (BT)";
|
||||
mute = false;
|
||||
q = 4.36;
|
||||
slope = "x1";
|
||||
solo = false;
|
||||
type = "Bell";
|
||||
};
|
||||
band1 = {
|
||||
frequency = 59.0;
|
||||
gain = 0.0;
|
||||
mode = "RLC (BT)";
|
||||
mute = false;
|
||||
q = 4.36;
|
||||
slope = "x1";
|
||||
solo = false;
|
||||
type = "Bell";
|
||||
};
|
||||
band2 = {
|
||||
frequency = 119.0;
|
||||
gain = 0.0;
|
||||
mode = "RLC (BT)";
|
||||
mute = false;
|
||||
q = 4.36;
|
||||
slope = "x1";
|
||||
solo = false;
|
||||
type = "Bell";
|
||||
};
|
||||
band3 = {
|
||||
frequency = 237.0;
|
||||
gain = 0.0;
|
||||
mode = "RLC (BT)";
|
||||
mute = false;
|
||||
q = 4.36;
|
||||
slope = "x1";
|
||||
solo = false;
|
||||
type = "Bell";
|
||||
};
|
||||
band4 = {
|
||||
frequency = 474.0;
|
||||
gain = 0.0;
|
||||
mode = "RLC (BT)";
|
||||
mute = false;
|
||||
q = 4.36;
|
||||
slope = "x1";
|
||||
solo = false;
|
||||
type = "Bell";
|
||||
};
|
||||
band5 = {
|
||||
frequency = 947.0;
|
||||
gain = 2.0;
|
||||
mode = "RLC (BT)";
|
||||
mute = false;
|
||||
q = 4.36;
|
||||
slope = "x1";
|
||||
solo = false;
|
||||
type = "Bell";
|
||||
};
|
||||
band6 = {
|
||||
frequency = 1889.0;
|
||||
gain = 1.5;
|
||||
mode = "RLC (BT)";
|
||||
mute = false;
|
||||
q = 4.36;
|
||||
slope = "x1";
|
||||
solo = false;
|
||||
type = "Bell";
|
||||
};
|
||||
band7 = {
|
||||
frequency = 3770.0;
|
||||
gain = 1.0;
|
||||
mode = "RLC (BT)";
|
||||
mute = false;
|
||||
q = 4.36;
|
||||
slope = "x1";
|
||||
solo = false;
|
||||
type = "Bell";
|
||||
};
|
||||
band8 = {
|
||||
frequency = 7523.0;
|
||||
gain = 0.5;
|
||||
mode = "RLC (BT)";
|
||||
mute = false;
|
||||
q = 4.36;
|
||||
slope = "x1";
|
||||
solo = false;
|
||||
type = "Bell";
|
||||
};
|
||||
band9 = {
|
||||
frequency = 15011.0;
|
||||
gain = 0.0;
|
||||
mode = "RLC (BT)";
|
||||
mute = false;
|
||||
q = 4.36;
|
||||
slope = "x1";
|
||||
solo = false;
|
||||
type = "Bell";
|
||||
};
|
||||
};
|
||||
mode = "IIR";
|
||||
num-bands = 10;
|
||||
output-gain = 0.0;
|
||||
pitch-left = 0.0;
|
||||
pitch-right = 0.0;
|
||||
right = {
|
||||
band0 = {
|
||||
frequency = 29.0;
|
||||
gain = 0.0;
|
||||
mode = "RLC (BT)";
|
||||
mute = false;
|
||||
q = 4.36;
|
||||
slope = "x1";
|
||||
solo = false;
|
||||
type = "Bell";
|
||||
};
|
||||
band1 = {
|
||||
frequency = 59.0;
|
||||
gain = 0.0;
|
||||
mode = "RLC (BT)";
|
||||
mute = false;
|
||||
q = 4.36;
|
||||
slope = "x1";
|
||||
solo = false;
|
||||
type = "Bell";
|
||||
};
|
||||
band2 = {
|
||||
frequency = 119.0;
|
||||
gain = 0.0;
|
||||
mode = "RLC (BT)";
|
||||
mute = false;
|
||||
q = 4.36;
|
||||
slope = "x1";
|
||||
solo = false;
|
||||
type = "Bell";
|
||||
};
|
||||
band3 = {
|
||||
frequency = 237.0;
|
||||
gain = 0.0;
|
||||
mode = "RLC (BT)";
|
||||
mute = false;
|
||||
q = 4.36;
|
||||
slope = "x1";
|
||||
solo = false;
|
||||
type = "Bell";
|
||||
};
|
||||
band4 = {
|
||||
frequency = 474.0;
|
||||
gain = 0.0;
|
||||
mode = "RLC (BT)";
|
||||
mute = false;
|
||||
q = 4.36;
|
||||
slope = "x1";
|
||||
solo = false;
|
||||
type = "Bell";
|
||||
};
|
||||
band5 = {
|
||||
frequency = 947.0;
|
||||
gain = 2.0;
|
||||
mode = "RLC (BT)";
|
||||
mute = false;
|
||||
q = 4.36;
|
||||
slope = "x1";
|
||||
solo = false;
|
||||
type = "Bell";
|
||||
};
|
||||
band6 = {
|
||||
frequency = 1889.0;
|
||||
gain = 1.5;
|
||||
mode = "RLC (BT)";
|
||||
mute = false;
|
||||
q = 4.36;
|
||||
slope = "x1";
|
||||
solo = false;
|
||||
type = "Bell";
|
||||
};
|
||||
band7 = {
|
||||
frequency = 3770.0;
|
||||
gain = 1.0;
|
||||
mode = "RLC (BT)";
|
||||
mute = false;
|
||||
q = 4.36;
|
||||
slope = "x1";
|
||||
solo = false;
|
||||
type = "Bell";
|
||||
};
|
||||
band8 = {
|
||||
frequency = 7523.0;
|
||||
gain = 0.5;
|
||||
mode = "RLC (BT)";
|
||||
mute = false;
|
||||
q = 4.36;
|
||||
slope = "x1";
|
||||
solo = false;
|
||||
type = "Bell";
|
||||
};
|
||||
band9 = {
|
||||
frequency = 15011.0;
|
||||
gain = 0.0;
|
||||
mode = "RLC (BT)";
|
||||
mute = false;
|
||||
q = 4.36;
|
||||
slope = "x1";
|
||||
solo = false;
|
||||
type = "Bell";
|
||||
};
|
||||
};
|
||||
split-channels = false;
|
||||
};
|
||||
filter = {
|
||||
balance = 0.0;
|
||||
bypass = false;
|
||||
frequency = 2000.0;
|
||||
gain = 0.0;
|
||||
mode = "12dB/oct Highpass";
|
||||
quality = 0.7071;
|
||||
slope = "x1";
|
||||
};
|
||||
gate = {
|
||||
attack = 20.0;
|
||||
bypass = false;
|
||||
curve-threshold = -24.0;
|
||||
curve-zone = 2.0;
|
||||
hpf-frequency = 10.0;
|
||||
hpf-mode = "12dB/oct Highpass";
|
||||
input-gain = 0.0;
|
||||
knee = 2.5;
|
||||
lpf-frequency = 20000.0;
|
||||
lpf-mode = "12dB/oct Lowpass";
|
||||
makeup = 0.0;
|
||||
ratio = 2.0;
|
||||
release = 250.0;
|
||||
sidechain = {
|
||||
lookahead = 0.0;
|
||||
mode = "RMS";
|
||||
preamp = 0.0;
|
||||
reactivity = 10.0;
|
||||
source = "Middle";
|
||||
};
|
||||
threshold = -18.0;
|
||||
};
|
||||
limiter = {
|
||||
alr = false;
|
||||
alr-attack = 5.0;
|
||||
alr-knee = 0.0;
|
||||
alr-release = 50.0;
|
||||
attack = 5.0;
|
||||
bypass = false;
|
||||
dithering = "None";
|
||||
external-sidechain = false;
|
||||
gain-boost = true;
|
||||
input-gain = 0.0;
|
||||
lookahead = 5.0;
|
||||
mode = "Herm Thin";
|
||||
output-gain = 0.0;
|
||||
oversampling = "None";
|
||||
release = 5.0;
|
||||
sidechain-preamp = 0.0;
|
||||
stereo-link = 100.0;
|
||||
threshold = 0.0;
|
||||
};
|
||||
plugins_order = [
|
||||
"filter"
|
||||
"gate"
|
||||
"equalizer"
|
||||
"rnnoise"
|
||||
"limiter"
|
||||
];
|
||||
rnnoise = {
|
||||
bypass = false;
|
||||
enable-vad = true;
|
||||
input-gain = 0.0;
|
||||
model-path = "";
|
||||
output-gain = 0.0;
|
||||
release = 20.0;
|
||||
vad-thres = 50.0;
|
||||
wet = 80.0;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
# Output preset for speakers/headphones
|
||||
"easyeffects/output/Speakers_Enhanced.json".text = builtins.toJSON {
|
||||
output = {
|
||||
blocklist = [];
|
||||
equalizer = {
|
||||
balance = 0.0;
|
||||
bypass = false;
|
||||
input-gain = 0.0;
|
||||
left = {
|
||||
band0 = {
|
||||
frequency = 29.0;
|
||||
gain = 0.0;
|
||||
mode = "RLC (BT)";
|
||||
mute = false;
|
||||
q = 4.36;
|
||||
slope = "x1";
|
||||
solo = false;
|
||||
type = "Bell";
|
||||
};
|
||||
band1 = {
|
||||
frequency = 59.0;
|
||||
gain = 1.0;
|
||||
mode = "RLC (BT)";
|
||||
mute = false;
|
||||
q = 4.36;
|
||||
slope = "x1";
|
||||
solo = false;
|
||||
type = "Bell";
|
||||
};
|
||||
band2 = {
|
||||
frequency = 119.0;
|
||||
gain = 0.5;
|
||||
mode = "RLC (BT)";
|
||||
mute = false;
|
||||
q = 4.36;
|
||||
slope = "x1";
|
||||
solo = false;
|
||||
type = "Bell";
|
||||
};
|
||||
band3 = {
|
||||
frequency = 237.0;
|
||||
gain = 0.0;
|
||||
mode = "RLC (BT)";
|
||||
mute = false;
|
||||
q = 4.36;
|
||||
slope = "x1";
|
||||
solo = false;
|
||||
type = "Bell";
|
||||
};
|
||||
band4 = {
|
||||
frequency = 474.0;
|
||||
gain = 0.0;
|
||||
mode = "RLC (BT)";
|
||||
mute = false;
|
||||
q = 4.36;
|
||||
slope = "x1";
|
||||
solo = false;
|
||||
type = "Bell";
|
||||
};
|
||||
band5 = {
|
||||
frequency = 947.0;
|
||||
gain = 0.0;
|
||||
mode = "RLC (BT)";
|
||||
mute = false;
|
||||
q = 4.36;
|
||||
slope = "x1";
|
||||
solo = false;
|
||||
type = "Bell";
|
||||
};
|
||||
band6 = {
|
||||
frequency = 1889.0;
|
||||
gain = 0.0;
|
||||
mode = "RLC (BT)";
|
||||
mute = false;
|
||||
q = 4.36;
|
||||
slope = "x1";
|
||||
solo = false;
|
||||
type = "Bell";
|
||||
};
|
||||
band7 = {
|
||||
frequency = 3770.0;
|
||||
gain = 1.0;
|
||||
mode = "RLC (BT)";
|
||||
mute = false;
|
||||
q = 4.36;
|
||||
slope = "x1";
|
||||
solo = false;
|
||||
type = "Bell";
|
||||
};
|
||||
band8 = {
|
||||
frequency = 7523.0;
|
||||
gain = 2.0;
|
||||
mode = "RLC (BT)";
|
||||
mute = false;
|
||||
q = 4.36;
|
||||
slope = "x1";
|
||||
solo = false;
|
||||
type = "Bell";
|
||||
};
|
||||
band9 = {
|
||||
frequency = 15011.0;
|
||||
gain = 1.0;
|
||||
mode = "RLC (BT)";
|
||||
mute = false;
|
||||
q = 4.36;
|
||||
slope = "x1";
|
||||
solo = false;
|
||||
type = "Bell";
|
||||
};
|
||||
};
|
||||
mode = "IIR";
|
||||
num-bands = 10;
|
||||
output-gain = 0.0;
|
||||
pitch-left = 0.0;
|
||||
pitch-right = 0.0;
|
||||
right = {
|
||||
band0 = {
|
||||
frequency = 29.0;
|
||||
gain = 0.0;
|
||||
mode = "RLC (BT)";
|
||||
mute = false;
|
||||
q = 4.36;
|
||||
slope = "x1";
|
||||
solo = false;
|
||||
type = "Bell";
|
||||
};
|
||||
band1 = {
|
||||
frequency = 59.0;
|
||||
gain = 1.0;
|
||||
mode = "RLC (BT)";
|
||||
mute = false;
|
||||
q = 4.36;
|
||||
slope = "x1";
|
||||
solo = false;
|
||||
type = "Bell";
|
||||
};
|
||||
band2 = {
|
||||
frequency = 119.0;
|
||||
gain = 0.5;
|
||||
mode = "RLC (BT)";
|
||||
mute = false;
|
||||
q = 4.36;
|
||||
slope = "x1";
|
||||
solo = false;
|
||||
type = "Bell";
|
||||
};
|
||||
band3 = {
|
||||
frequency = 237.0;
|
||||
gain = 0.0;
|
||||
mode = "RLC (BT)";
|
||||
mute = false;
|
||||
q = 4.36;
|
||||
slope = "x1";
|
||||
solo = false;
|
||||
type = "Bell";
|
||||
};
|
||||
band4 = {
|
||||
frequency = 474.0;
|
||||
gain = 0.0;
|
||||
mode = "RLC (BT)";
|
||||
mute = false;
|
||||
q = 4.36;
|
||||
slope = "x1";
|
||||
solo = false;
|
||||
type = "Bell";
|
||||
};
|
||||
band5 = {
|
||||
frequency = 947.0;
|
||||
gain = 0.0;
|
||||
mode = "RLC (BT)";
|
||||
mute = false;
|
||||
q = 4.36;
|
||||
slope = "x1";
|
||||
solo = false;
|
||||
type = "Bell";
|
||||
};
|
||||
band6 = {
|
||||
frequency = 1889.0;
|
||||
gain = 0.0;
|
||||
mode = "RLC (BT)";
|
||||
mute = false;
|
||||
q = 4.36;
|
||||
slope = "x1";
|
||||
solo = false;
|
||||
type = "Bell";
|
||||
};
|
||||
band7 = {
|
||||
frequency = 3770.0;
|
||||
gain = 1.0;
|
||||
mode = "RLC (BT)";
|
||||
mute = false;
|
||||
q = 4.36;
|
||||
slope = "x1";
|
||||
solo = false;
|
||||
type = "Bell";
|
||||
};
|
||||
band8 = {
|
||||
frequency = 7523.0;
|
||||
gain = 2.0;
|
||||
mode = "RLC (BT)";
|
||||
mute = false;
|
||||
q = 4.36;
|
||||
slope = "x1";
|
||||
solo = false;
|
||||
type = "Bell";
|
||||
};
|
||||
band9 = {
|
||||
frequency = 15011.0;
|
||||
gain = 1.0;
|
||||
mode = "RLC (BT)";
|
||||
mute = false;
|
||||
q = 4.36;
|
||||
slope = "x1";
|
||||
solo = false;
|
||||
type = "Bell";
|
||||
};
|
||||
};
|
||||
split-channels = false;
|
||||
};
|
||||
limiter = {
|
||||
alr = false;
|
||||
alr-attack = 5.0;
|
||||
alr-knee = 0.0;
|
||||
alr-release = 50.0;
|
||||
attack = 5.0;
|
||||
bypass = false;
|
||||
dithering = "None";
|
||||
external-sidechain = false;
|
||||
gain-boost = true;
|
||||
input-gain = 0.0;
|
||||
lookahead = 5.0;
|
||||
mode = "Herm Thin";
|
||||
output-gain = 0.0;
|
||||
oversampling = "None";
|
||||
release = 5.0;
|
||||
sidechain-preamp = 0.0;
|
||||
stereo-link = 100.0;
|
||||
threshold = -1.0;
|
||||
};
|
||||
plugins_order = [
|
||||
"equalizer"
|
||||
"limiter"
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue